[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] xwidget_mvp e6f6513: Merge remote-tracking branch 'origin/
From: |
Joakim Verona |
Subject: |
[Emacs-diffs] xwidget_mvp e6f6513: Merge remote-tracking branch 'origin/master' into xwidget_mvp |
Date: |
Wed, 13 May 2015 13:20:40 +0000 |
branch: xwidget_mvp
commit e6f6513fc9a1beae5a48de93fb23372eada7dd85
Merge: 11456f9 a314016
Author: Joakim Verona <address@hidden>
Commit: Joakim Verona <address@hidden>
Merge remote-tracking branch 'origin/master' into xwidget_mvp
---
.gitignore | 10 +-
ChangeLog.2 | 1156 +++
Makefile.in | 25 +-
build-aux/gitlog-to-changelog | 5 +-
build-aux/gitlog-to-emacslog | 55 +-
configure.ac | 11 +-
doc/emacs/emacs.texi | 2 +-
doc/emacs/maintaining.texi | 36 +-
doc/emacs/mule.texi | 4 +-
doc/lispref/sequences.texi | 2 +-
doc/misc/texinfo.tex | 34 +-
etc/NEWS | 22 +
lib-src/etags.c | 22 +-
lisp/calc/calc.el | 1 +
lisp/cedet/semantic/symref.el | 8 +-
lisp/cedet/semantic/symref/grep.el | 22 +-
lisp/cedet/semantic/symref/list.el | 10 +-
lisp/cedet/srecode/dictionary.el | 4 +-
lisp/cedet/srecode/insert.el | 52 +-
lisp/dired-aux.el | 3 +
lisp/dired.el | 2 +-
lisp/emacs-lisp/chart.el | 4 +-
lisp/emacs-lisp/cl-generic.el | 244 +-
lisp/emacs-lisp/eieio-opt.el | 3 +
lisp/emacs-lisp/eieio.el | 2 +-
lisp/emacs-lisp/package-x.el | 1 +
lisp/emacs-lisp/package.el | 7 +-
lisp/emacs-lisp/seq.el | 95 +-
lisp/emacs-lisp/subr-x.el | 3 +-
lisp/ffap.el | 2 +-
lisp/frame.el | 1 +
lisp/gnus/gnus-util.el | 1 +
lisp/help.el | 3 +-
lisp/international/iso-transl.el | 31 +-
lisp/linum.el | 3 +
lisp/mail/rmail.el | 2 +-
lisp/mail/rmailmm.el | 14 +-
lisp/net/nsm.el | 5 +
lisp/net/shr.el | 3 +
lisp/play/dunnet.el | 2 +-
lisp/progmodes/elisp-mode.el | 14 +-
lisp/progmodes/etags.el | 25 +-
lisp/progmodes/python.el | 3 +-
lisp/progmodes/tcl.el | 3 +-
lisp/progmodes/xref.el | 59 +-
lisp/simple.el | 6 +-
lisp/term/common-win.el | 2 +
lisp/term/ns-win.el | 2 +-
lisp/term/rxvt.el | 142 +-
lisp/term/x-win.el | 12 +
lisp/term/xterm.el | 148 +-
lisp/textmodes/sgml-mode.el | 43 +-
lisp/url/url-handlers.el | 4 +-
lisp/url/url-http.el | 2 +
lisp/vc/log-edit.el | 32 +-
lisp/vc/vc-bzr.el | 44 +-
lisp/vc/vc-dir.el | 10 +-
lisp/vc/vc-git.el | 28 +-
lisp/vc/vc-hg.el | 81 +-
lisp/vc/vc-hooks.el | 6 +
lisp/vc/vc.el | 16 +
lisp/window.el | 6 +
make-dist | 18 +-
src/Makefile.in | 4 +-
src/editfns.c | 6 +-
src/filelock.c | 49 +-
src/keyboard.c | 10 +-
src/nsterm.m | 103 +-
test/automated/cl-generic-tests.el | 10 +
test/etags/CTAGS.good | 6013 ++++++++++++++++
test/etags/ETAGS.good_1 | 5214 ++++++++++++++
test/etags/ETAGS.good_2 | 6440 +++++++++++++++++
test/etags/ETAGS.good_3 | 6118 ++++++++++++++++
test/etags/ETAGS.good_4 | 5378 ++++++++++++++
test/etags/ETAGS.good_5 | 7508 ++++++++++++++++++++
test/etags/Makefile | 79 +
test/etags/ada-src/2ataspri.adb | 665 ++
test/etags/ada-src/2ataspri.ads | 298 +
test/etags/ada-src/etags-test-for.ada | 193 +
test/etags/ada-src/waroquiers.ada | 153 +
test/etags/c-src/a/b/b.c | 5 +
test/etags/c-src/abbrev.c | 616 ++
test/etags/c-src/c.c | 169 +
test/etags/c-src/dostorture.c | 107 +
test/etags/c-src/emacs/src/gmalloc.c | 2040 ++++++
{src => test/etags/c-src/emacs/src}/keyboard.c | 29 +-
test/etags/c-src/emacs/src/lisp.h | 4817 +++++++++++++
test/etags/c-src/emacs/src/regex.h | 630 ++
{lib-src => test/etags/c-src}/etags.c | 22 +-
test/etags/c-src/exit.c | 77 +
test/etags/c-src/exit.strange_suffix | 77 +
test/etags/c-src/fail.c | 1 +
test/etags/c-src/getopt.h | 125 +
test/etags/c-src/h.h | 119 +
test/etags/c-src/machsyscalls.c | 10 +
test/etags/c-src/machsyscalls.h | 31 +
test/etags/c-src/sysdep.h | 57 +
test/etags/c-src/tab.c | 112 +
test/etags/c-src/torture.c | 107 +
test/etags/cp-src/MDiagArray2.h | 163 +
test/etags/cp-src/Pctest.h | 99 +
test/etags/cp-src/Range.h | 96 +
test/etags/cp-src/abstract.C | 4840 +++++++++++++
test/etags/cp-src/abstract.H | 993 +++
test/etags/cp-src/burton.cpp | 14 +
test/etags/cp-src/c.C | 156 +
test/etags/cp-src/cfront.H | 836 +++
test/etags/cp-src/clheir.cpp.gz | Bin 0 -> 408 bytes
test/etags/cp-src/clheir.hpp | 82 +
test/etags/cp-src/conway.cpp | 95 +
test/etags/cp-src/conway.hpp | 23 +
test/etags/cp-src/fail.C | 52 +
test/etags/cp-src/functions.cpp | 239 +
test/etags/cp-src/screen.cpp | 62 +
test/etags/cp-src/screen.hpp | 39 +
test/etags/el-src/TAGTEST.EL | 31 +
.../etags/el-src/emacs/lisp}/progmodes/etags.el | 0
test/etags/erl-src/gs_dialog.erl | 271 +
test/etags/erl-src/lines.erl | 297 +
test/etags/erl-src/lists.erl.gz | Bin 0 -> 2667 bytes
test/etags/f-src/entry.for | 581 ++
test/etags/f-src/entry.strange.gz | Bin 0 -> 3265 bytes
test/etags/f-src/entry.strange_suffix | 581 ++
test/etags/forth-src/test-forth.fth | 53 +
test/etags/html-src/algrthms.html | 519 ++
test/etags/html-src/index.shtml | 70 +
test/etags/html-src/software.html | 241 +
test/etags/html-src/softwarelibero.html | 313 +
test/etags/java-src/AWTEMul.java | 658 ++
test/etags/java-src/KeyEve.java | 440 ++
test/etags/java-src/SMan.java | 848 +++
test/etags/java-src/SysCol.java | 381 +
test/etags/java-src/TG.java | 840 +++
test/etags/lua-src/allegro.lua | 282 +
test/etags/make-src/Makefile | 226 +
test/etags/objc-src/PackInsp.h | 120 +
test/etags/objc-src/PackInsp.m | 505 ++
test/etags/objc-src/Subprocess.h | 81 +
test/etags/objc-src/Subprocess.m | 343 +
test/etags/objcpp-src/SimpleCalc.H | 49 +
test/etags/objcpp-src/SimpleCalc.M | 207 +
test/etags/pas-src/common.pas | 1545 ++++
test/etags/perl-src/htlmify-cystic | 382 +
test/etags/perl-src/kai-test.pl | 39 +
test/etags/perl-src/mirror.pl | 4149 +++++++++++
test/etags/perl-src/yagrip.pl | 54 +
test/etags/php-src/lce_functions.php | 699 ++
test/etags/php-src/ptest.php | 18 +
test/etags/php-src/sendmail.php | 527 ++
test/etags/prol-src/natded.prolog | 1545 ++++
test/etags/prol-src/ordsets.prolog | 337 +
test/etags/ps-src/rfc1245.ps | 2085 ++++++
test/etags/pyt-src/server.py | 819 +++
test/etags/tex-src/gzip.texi | 479 ++
test/etags/tex-src/nonewline.tex | 1 +
test/etags/tex-src/testenv.tex | 15 +
test/etags/tex-src/texinfo.tex | 3350 +++++++++
test/etags/y-src/atest.y | 5 +
test/etags/y-src/cccp.c | 2202 ++++++
test/etags/y-src/cccp.y | 1006 +++
test/etags/y-src/parse.c | 2236 ++++++
test/etags/y-src/parse.y | 875 +++
162 files changed, 87464 insertions(+), 640 deletions(-)
diff --git a/.gitignore b/.gitignore
index 9d32e6b..4e526be 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,11 +39,13 @@ src/config.in
Info.plist
InfoPlist.strings
Makefile
+makefile
!admin/charsets/Makefile
!etc/refcards/Makefile
!test/automated/data/flymake/Makefile
!test/indent/Makefile
-makefile
+!test/etags/Makefile
+!test/etags/make-src/Makefile
/*.cache
/confdefs.h
/config.status
@@ -145,6 +147,10 @@ src/*.map
# Tests.
test/indent/*.new
test/biditest.txt
+test/etags/srclist
+test/etags/regexfile
+test/etags/ETAGS
+test/etags/CTAGS
# ctags, etags.
TAGS
@@ -200,6 +206,7 @@ lisp/international/uni-*.el
*.fn
*.fns
*.html
+!test/etags/html-src/*.html
*.info
*.ky
*.kys
@@ -215,6 +222,7 @@ lisp/international/uni-*.el
*.pj
*.pjs
*.ps
+!test/etags/ps-src/*.ps
*.sc
*.scs
*.t2d/
diff --git a/ChangeLog.2 b/ChangeLog.2
index 188e3ff..d1c9477 100644
--- a/ChangeLog.2
+++ b/ChangeLog.2
@@ -1,3 +1,1159 @@
+2015-05-09 Eli Zaretskii <address@hidden>
+
+ Avoid infloop in ERC
+ * lisp/simple.el (line-move-to-column): Ignore field boundaries
+ while computing line beginning position. (Bug#20498)
+
+2015-05-08 Glenn Morris <address@hidden>
+
+ * Makefile.in (ChangeLog): No longer pass "srcprefix"; cd instead.
+ * build-aux/gitlog-to-emacslog: Check called from right directory.
+ (srcprefix): Remove.
+
+ * build-aux/gitlog-to-emacslog: Get rid of "distprefix".
+ * Makefile.in (ChangeLog): No longer pass "distprefix".
+ * make-dist: Update "make ChangeLog" syntax for the above change.
+
+ * build-aux/gitlog-to-emacslog: Don't hard-code "ChangeLog.2".
+ * Makefile.in (ChangeLog): Pass -n to gitlog-to-emacslog.
+
+ * build-aux/gitlog-to-emacslog: Add "for earlier changes" to footer.
+
+ Add command-line option-parsing to gitlog-to-emacslog.
+ * build-aux/gitlog-to-emacslog: Add command-line options.
+ By default, refuse to remove an existing output file.
+ * Makefile.in (CHANGELOG): Update default.
+ (ChangeLog): Do not test for existing file.
+ (change-history-nocommit): Ensure temp file does not exist.
+
+ Quieten --without-x compilation.
+ * lisp/term/common-win.el: Provide a feature.
+ * lisp/term/x-win.el (term/common-win): Require it.
+
+ * lisp/dired-aux.el (dired-do-print): Require lpr.
+
+ Quieten compilation, eg in --without-x builds.
+ * lisp/dired-aux.el (lpr-printer-switch):
+ * lisp/frame.el (tool-bar-height):
+ * lisp/linum.el (font-info):
+ * lisp/window.el (font-info, overflow-newline-into-fringe)
+ (tool-bar-height):
+ * lisp/emacs-lisp/package-x.el (tar-data-buffer):
+ * lisp/gnus/gnus-util.el (iswitchb-mode):
+ * lisp/mail/rmailmm.el (libxml-parse-html-region):
+ * lisp/net/nsm.el (gnutls-peer-status)
+ (gnutls-peer-status-warning-describe):
+ * lisp/net/shr.el (libxml-parse-xml-region):
+ * lisp/url/url-http.el (gnutls-peer-status): Declare.
+
+2015-05-08 Stefan Monnier <address@hidden>
+
+ CEDET (srecode-pop, srecode-peek): Don't use `subclass'
+ * lisp/cedet/srecode/insert.el (srecode-pop, srecode-peek): Don't use
+ `subclass' since they're never called with a class.
+ (srecode-insert-method, srecode-insert-subtemplate): Avoid obsolete
+ srecode-dictionary-child-p.
+
+2015-05-08 Nicolas Richard <address@hidden>
+
+ help--binding-locus: Document argument POSITION.
+ * lisp/help.el (help--binding-locus): Document argument POSITION.
(bug#20530)
+
+2015-05-08 Paul Eggert <address@hidden>
+
+ Merge from gnulib.
+ * doc/misc/texinfo.tex: Get latest version.
+
+2015-05-08 Oleh Krehel <address@hidden>
+
+ ffap.el (ffap-read-file-or-url): Fix completing-read call
+ * lisp/ffap.el (ffap-read-file-or-url): The HIST argument of
+ `completing-read' should be a symbol.
+
+2015-05-08 Eli Zaretskii <address@hidden>
+
+ Verify file modifications by other programs
+ * src/filelock.c (lock_file): Check whether the file was modified
+ since it was visited even if 'create-lockfiles' is nil. (Bug#18828)
+
+ Fix keyboard macros that include function keys
+ * src/keyboard.c (read_char_minibuf_menu_prompt): Record function
+ keys in the macro before returning. (Bug#20454)
+
+2015-05-08 Glenn Morris <address@hidden>
+
+ * build-aux/gitlog-to-changelog: Treat "Tiny-change" like
+ "Copyright-paperwork-exempt". (Bug#20324)
+
+ * lisp/vc/log-edit.el: Handle "(tiny change)". (Bug#20324)
+ (log-edit-rewrite-tiny-change): New variable.
+ (log-edit-insert-changelog): Maybe add "Copyright-paperwork-exempt".
+ (log-edit-changelog-ours-p): Set log-edit-author to a cons.
+ * etc/NEWS: Mention this.
+
+ * lisp/calc/calc.el (math-zerop): Declare.
+
+ * lisp/emacs-lisp/eieio-opt.el (help-fns-short-filename): Declare.
+
+2015-05-07 Artur Malabarba <address@hidden>
+
+ * lisp/emacs-lisp/subr-x.el (if-let): Fix debug spec
+ Support the case when BINDINGS is a single tuple. (Bug#20525)
+
+ * etc/NEWS: Fix typo in commit 14bb519
+
+2015-05-07 Jan D <address@hidden>
+
+ Warn for multiple display crash for all Gtk+ versions.
+ * configure.ac: Warn for multiple display crash for all Gtk+
+ versions. Output URL to Gtk+ bug (Bug#20452).
+
+ ns-win.el (ns-paste-secondary): Use gui-get-selection.
+ * ns-win.el (ns-paste-secondary): Use gui-get-selection.
+
+2015-05-07 Artur Malabarba <address@hidden>
+
+ * lisp/emacs-lisp/package.el: New "external" package status
+ An external package is any installed package that's not built-in
+ and not from `package-user-dir', which usually means it's from an
+ entry in `package-directory-list'. They are treated much like
+ built-in packages, in that they cannot be through the Package Menu
+ deleted and are not considered for upgrades.
+ (package-desc-status): Identify if a package is installed outside
+ `package-user-dir'.
+ (package-menu--print-info-simple)
+ (package-menu--status-predicate): Add support for it.
+ * etc/NEWS: Document it.
+
+2015-05-06 Stefan Monnier <address@hidden>
+
+ * lisp/mail/rmail.el: Use lexical-binding
+ (rmail-bury): Remove unused var `buffer-to-bury'.
+ (rmail-get-new-mail): Remove unused vars `opoint' and `success'.
+ (rmail-parse-url): Remove unused var `proto', `user', and `host'.
+ (rmail-unrmail-new-mail-maybe): Remove unused var `new-file'.
+ (rmail-insert-inbox-text): Remove unused var `movemail'.
+ (rmail-add-mbox-headers): Remove unused var `limit'.
+ (rmail-undelete-previous-message): Remove unused var `value'.
+ (rmail-reply): Remove unused vars `resent-to', `resent-cc',
+ `resent-reply-to'.
+ (rmail-mime-mbox-buffer, rmail-mime-view-buffer): Declare.
+ (rmail-restore-desktop-buffer): Rename arguments.
+
+2015-05-06 Glenn Morris <address@hidden>
+
+ * Makefile.in (change-history-commit): Add missing piece of previous.
+
+ Avoid unnecessary bumping of Makefile.in's timestamp.
+ * Makefile.in (gen_origin): Move to gitlog-to-emacslog.
+ (emacslog): New variable.
+ (ChangeLog): Use $emacslog. Don't pass $gen_origin.
+ (unchanged-history-files): Use $emacslog rather than Makefile.in.
+ (change-history-nocommit): Store hash in $emacslog.
+ * build-aux/gitlog-to-emacslog (gen_origin): Move default here.
+ * admin/update_autogen (changelog_files): Update for the above.
+
+ * Makefile.in: Don't always insist on removing existing "ChangeLog".
+ (CHANGELOG): New variable.
+ (no-ChangeLog): Remove.
+ (ChangeLog): Replace "no-ChangeLog"; pass output file to script.
+ (change-history-nocommit): Use a temp file rather than insisting
+ on deletion of any existing "ChangeLog".
+
+ * build-aux/gitlog-to-emacslog: Allow specification of output.
+
+ * admin/update_autogen: Add option to update ChangeLog.
+ (usage): Mention -H.
+ (changelog_flag, changelog_n, changelog_files): New variables.
+ (main): Check for -H, and maybe run change-history-nocommit.
+
+2015-05-06 Stefan Monnier <address@hidden>
+
+ * lisp/subr.el (delete-dups): Pre-size the hashtable.
+
+ (define-modify-macro): Make sure cl--arglist-args is defined
+ * lisp/emacs-lisp/cl.el (define-modify-macro): Make sure
+ cl--arglist-args is defined (bug#20517).
+
+2015-05-06 Glenn Morris <address@hidden>
+
+ * Makefile.in (change-history-nocommit): New.
+
+2015-05-06 Dmitry Gutov <address@hidden>
+
+ Only cancel timer when it is non-nil
+ * lisp/cedet/pulse.el (pulse-momentary-unhighlight): Only cancel
+ timer when it is non-nil
+ (http://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00223.html).
+
+2015-05-06 Glenn Morris <address@hidden>
+
+ Quieten cedet compilation
+ * lisp/cedet/semantic/db-el.el (semanticdb-elisp-sym->tag):
+ Invert fboundp test to quieten on current Emacs.
+ * lisp/cedet/ede/config.el (ede-shell-run-something)
+ (semanticdb-file-table-object, semanticdb-needs-refresh-p)
+ (semanticdb-refresh-table): Declare.
+ (ede-preprocessor-map): Require semantic/db.
+
+ Quieten cc-mode compilation
+ * lisp/progmodes/cc-awk.el (c-forward-sws):
+ * lisp/progmodes/cc-cmds.el (c-forward-subword, c-backward-subword):
+ Declare.
+
+2015-05-06 Oleh Krehel <address@hidden>
+
+ lisp/subr.el (delete-dups): Avoid nreverse.
+
+2015-05-06 Artur Malabarba <address@hidden>
+
+ * lisp/subr.el (delete-dups): Make it destructive again.
+
+2015-05-06 Paul Eggert <address@hidden>
+
+ * doc/lispref/sequences.texi (Sequence Functions): Fix quoting.
+
+2015-05-06 Stefan Monnier <address@hidden>
+
+ * lisp/emacs-lisp/testcover.el: Don't use edebug--read (bug#20487)
+ * lisp/emacs-lisp/testcover.el: Use lexical-binding.
+ (testcover--read): Rename from testcover-read. Change calling
convention.
+ Use edebug-read-and-maybe-wrap-form now that edebug-read is gone.
+ (testcover-start): Use add-function. Move edebug-all-defs binding to
+ testcover--read.
+ (testcover-this-defun): Tighten scope of edebug-all-defs binding.
+ (testcover-mark): Remove unused var `item'.
+ * src/lread.c (syms_of_lread): Default load-read-function to `read'.
+
+2015-05-06 Oleh Krehel <address@hidden>
+
+ lisp/subr.el (delete-dups): Use a hash table
+ * lisp/subr.el (delete-dups): When there are more than 100 candidates,
+ use a hash table. This can result in ~500 times speed-up for typical
+ collections of size 5000, like that of `load-library'.
+
+2015-05-06 Stefan Monnier <address@hidden>
+
+ CEDET: Avoid `oref' on classes in a few more cases
+ * lisp/cedet/ede/generic.el (ede-find-target):
+ * lisp/cedet/ede.el (ede-project-forms-menu): Avoid `oref' on classes.
+ * lisp/cedet/semantic/bovine/gcc.el (semantic-gcc-setup): Remove unused
+ var `prefix'.
+
+ * lisp/cedet/semantic/symref/grep.el: Fix unused var warnings
+ * lisp/cedet/semantic/symref/grep.el (grepflags, greppattern): Declare.
+ (semantic-symref-perform-search): Remove unused var `pat'.
+
+ CEDET (srecode-compile-inserter): Avoid `oref' on classes
+ * lisp/cedet/srecode/compile.el (srecode-compile-inserter):
+ Avoid `oref' on classes (bug#20491).
+ (srecode-compile-split-code): Remove unused var `key'.
+
+2015-05-06 Dmitry Gutov <address@hidden>
+
+ Clean up pulse.el a little
+ * lisp/cedet/pulse.el (pulse): Remove.
+ (pulse-momentary-timer): Save instead of the stop time.
+ (pulse-momentary-highlight-overlay): Call
+ pulse-momentary-unhighlight first thing. Treat
+ pulse-momentary-overlay as a single value, not a list. Save the
+ created timer. Only pass the stop time to the timer.
+ (pulse-tick): Update accordingly.
+ (pulse-momentary-unhighlight): Treat pulse-momentary-overlay as a
+ single value. Cancel the timer.
+
+2015-05-06 Tassilo Horn <address@hidden>
+
+ Support the biblatex journaltitle field
+ * lisp/textmodes/reftex-cite.el (reftex-format-bib-entry):
+ Support the biblatex journaltitle field.
+
+2015-05-05 Glenn Morris <address@hidden>
+
+ Minor declare-function improvement
+ * lisp/emacs-lisp/bytecomp.el
+ (byte-compile-macroexpand-declare-function):
+ Handle declarations after calls. (Bug#20509)
+
+ * lisp/progmodes/js.el (js--optimize-arglist): Remove declaration.
+
+ * lisp/w32-fns.el (w32-shell-name): Silence compiler.
+
+2015-05-05 Dmitry Gutov <address@hidden>
+
+ Pulse using a timer
+ * lisp/cedet/pulse.el (pulse-momentary-stop-time): New variable.
+ (pulse-momentary-highlight-overlay): Set up the timer instead of
+ calling `pulse'
+ (http://lists.gnu.org/archive/html/emacs-devel/2015-05/).
+ (pulse-tick): New function.
+ (pulse-momentary-unhighlight): Cut off the stop time.
+ (pulse-delay): Update the docstring WRT to not using sit-for.
+
+ Add semantic/symref/grep file patterns for ruby-mode
+ * lisp/cedet/semantic/symref/grep.el
+ (semantic-symref-filepattern-alist): Add patterns for
+ ruby-mode. Clarify the docstring.
+
+ Don't require match
+ * lisp/progmodes/xref.el (xref--read-identifier): Don't require
+ match. That doesn't work for every command, and some identifier
+ completion tables are bound to be imperfect anyway.
+
+2015-05-05 Stefan Monnier <address@hidden>
+
+ * lisp/cedet/semantic/grammar.el: Fix compiler warnings (bug#20505)
+ (semantic-grammar--template-expand): New function.
+ (semantic-grammar-header, semantic-grammar-footer): Use it.
+ (semantic-grammar--lex-block-specs): Remove unused var `block-spec'.
+ (semantic-grammar-file-regexp): Refine regexp.
+ (semantic-grammar-eldoc-get-macro-docstring):
+ Use elisp-get-fnsym-args-string when available.
+ (semantic-idle-summary-current-symbol-info): Use new elisp-* names
+ instead of the old eldoc-* names.
+ * lisp/emacs-lisp/eldoc.el (eldoc-docstring-format-sym-doc): Move back
+ from elisp-mode.el. Tweak calling convention.
+ * lisp/progmodes/elisp-mode.el (package-user-dir): Declare.
+ (elisp-get-fnsym-args-string): Add `prefix' argument. Rename from
+ elisp--get-fnsym-args-string.
+ (elisp--highlight-function-argument): Add `prefix' arg.
+ (elisp-get-var-docstring): Rename from elisp--get-var-docstring.
+ (elisp--docstring-format-sym-doc): Move back to eldoc.el.
+
+2015-05-05 Glenn Morris <address@hidden>
+
+ * lisp/help-fns.el (describe-function-1):
+ Handle builtins with advertised calling conventions. (Bug#20479)
+
+2015-05-05 Nicolas Petton <address@hidden>
+
+ Merge branch 'seq-let'
+
+ Update `seq-let' documentation
+ * doc/lispref/sequences.texi: Update the documentation of `seq-let'
+ with the support of `&rest'.
+
+ Add support for &rest in `seq-let'
+ * lisp/emacs-lisp/seq.el (seq--make-bindings): Add support for `&rest'
+ in the argument list.
+ * test/automated/seq-tests.el: Add a test for parsing and binding
+ `&rest' in `seq-let'.
+
+2015-05-05 Paul Eggert <address@hidden>
+
+ Spelling fixes
+
+2015-05-05 (tiny change) Pierre Lorenzon <address@hidden>
+
+ * eieio-custom.el (eieio-object-value-get): Add missing increment
+ (Bug#20467)
+
+ (eieio-object-value-create): Adjust to new slots representation
+ (Bug#20467)
+ * eieio-custom.el (eieio-object-value-create):
+ Fix missed adjustment to new representation of slots metadata.
+
+2015-05-05 Nicolas Petton <address@hidden>
+
+ * lisp/emacs-lisp/seq.el (seq--make-bindings): Improve the docstring.
+
+2015-05-05 Dmitry Gutov <address@hidden>
+
+ Work around "Attempt to modify read-only object"
+ * lisp/progmodes/elisp-mode.el (elisp--xref-format): Extract from
+ elisp--xref-find-definitions, to work around "Attempt to modify
+ read-only object" error.
+
+ Only skip some variables that have function counterparts
+ * lisp/progmodes/elisp-mode.el (elisp--xref-identifier-location):
+ Only skip minor-mode-named variable if it's defined in a Lisp
+ file, and it's in minor-mode-list (bug#20506).
+ * test/automated/elisp-mode-tests.el
+ (elisp-xref-finds-both-function-and-variable)
+ (elisp-xref-finds-only-function-for-minor-mode): New tests.
+
+2015-05-04 Dmitry Gutov <address@hidden>
+
+ Buttonize the whole line, including the number at the beginning
+ * lisp/progmodes/xref.el (xref--location-at-point): Revert the
+ previous change.
+ (xref--insert-xrefs): Buttonize the whole line, including the
+ number at the beginning.
+
+ Make sure we're inside the let bindings
+ * lisp/progmodes/elisp-mode.el (elisp-completion-at-point):
+ Make sure we're inside the let bindings.
+ * test/automated/elisp-mode-tests.el
+ (elisp-completes-functions-after-let-bindings): New test.
+
+2015-05-04 Glenn Morris <address@hidden>
+
+ * lisp/cedet/semantic/grammar.el (eldoc-function-argstring)
+ (eldoc-docstring-format-sym-doc, eldoc-last-data-store)
+ (eldoc-get-fnsym-args-string, eldoc-get-var-docstring):
+ Remove outdated declarations.
+
+ Replace instances of "(eval-when-compile (autoload ...))"
+ * lisp/gnus/gnus-art.el (nneething-get-file-name):
+ Declare rather than autoload.
+ * lisp/gnus/gnus-async.el (gnus-html-prefetch-images):
+ Remove pointless autoload.
+ * lisp/gnus/gnus-sync.el (gnus-group-topic): Autoload at run-time.
+ (gnus-topic-create-topic, gnus-topic-enter-dribble):
+ Declare rather than autoload.
+ * lisp/gnus/mm-archive.el (gnus-recursive-directory-files)
+ (mailcap-extension-to-mime): Autoload at run-time.
+ * lisp/gnus/mm-util.el (latin-unity-massage-name)
+ (latin-unity-maybe-remap, latin-unity-representations-feasible-region)
+ (latin-unity-representations-present-region):
+ Declare rather than autoload.
+ * lisp/gnus/mml-smime.el (epg-make-context)
+ (epg-passphrase-callback-function): Autoload at run-time.
+ (epg-context-set-signers, epg-context-result-for)
+ (epg-new-signature-digest-algorithm)
+ (epg-verify-result-to-string, epg-list-keys, epg-verify-string)
+ (epg-sign-string, epg-encrypt-string)
+ (epg-context-set-passphrase-callback, epg-sub-key-fingerprint)
+ (epg-configuration, epg-expand-group, epa-select-keys):
+ Declare rather than autoload.
+ * lisp/gnus/nnir.el (nnimap-change-group, nnimap-make-thread-query):
+ Autoload at run-time.
+ (gnus-group-topic-name, nnimap-buffer, nnimap-command)
+ (gnus-registry-get-id-key, gnus-registry-action):
+ Declare rather than autoload.
+ * lisp/gnus/nnmail.el (mail-send-and-exit): Autoload at run-time.
+ * lisp/gnus/spam.el (spam-stat-buffer-change-to-non-spam)
+ (spam-stat-buffer-change-to-spam, spam-stat-buffer-is-non-spam)
+ (spam-stat-buffer-is-spam, spam-stat-load, spam-stat-save)
+ (spam-stat-split-fancy): Remove pointless autoloads.
+ * lisp/net/mairix.el: Load gnus-util when compiling.
+ (gnus-group-read-ephemeral-group, gnus-summary-toggle-header)
+ (message-field-value): Declare rather than autoload.
+ (mairix-gnus-ephemeral-nndoc, mairix-gnus-fetch-field):
+ Check gnus-alive-p is fbound.
+ (vm-quit, vm-visit-folder, vm-select-folder-buffer)
+ (vm-check-for-killed-summary, vm-error-if-folder-empty)
+ (vm-get-header-contents, vm-select-marked-or-prefixed-messages):
+ Declare rather than autoload.
+
+ * lisp/gnus/mm-view.el (epg-decrypt-string): Autoload.
+
+ * lisp/gnus/mml-smime.el (epg-key-sub-key-list)
+ (epg-sub-key-capability, epg-sub-key-validity): Fix declarations.
+
+ * lisp/progmodes/elisp-mode.el (xref-collect-references): Declare.
+
+ * lisp/emacs-lisp/debug.el (help-xref-interned): Update declaration.
+
+ * lisp/allout.el (epg-user-id-string, epg-key-user-id-list):
+ * lisp/emacs-lisp/package.el (epg-signature-status):
+ Fix declarations.
+
+ * lisp/play/gametree.el (gametree-show-children-and-entry)
+ (gametree-apply-layout, gametree-mouse-show-subtree)
+ (gametree-mouse-hide-subtree): Replace obsolete outline aliases.
+
+ * lisp/emacs-lisp/check-declare.el (check-declare-verify):
+ Handle cl-defgeneric, cl-defmethod.
+
+2015-05-04 Dmitry Gutov <address@hidden>
+
+ Highlight both type and symbol name
+ * lisp/progmodes/elisp-mode.el (elisp--xref-find-definitions):
+ Highlight both type and symbol name.
+
+ Insert, highlight and align line numbers in xref output
+ * lisp/progmodes/etags.el (xref-location-line): Specialize for
+ xref-etags-location.
+ * lisp/progmodes/xref.el (xref-location-line): New generic method.
+ (xref-file-location): Add reader for the line slot.
+ (xref--location-at-point): Skip to the `xref-location' property.
+ (xref--collect-reference): Drop the line number from description.
+ (xref--insert-xrefs): Insert, highlight and align line numbers.
+
+2015-05-04 Daniel Colascione <address@hidden>
+
+ Fix previous commit
+
+2015-05-04 Dmitry Gutov <address@hidden>
+
+ Don't pulse the indentation, or the newline
+ * lisp/cedet/pulse.el (pulse-lighten-highlight)
+ (pulse-reset-face): Fall back to the inherited background
+ attribute in FACE.
+ (pulse-momentary-highlight-region): Add autoload cookie.
+ * lisp/progmodes/xref.el (xref--maybe-pulse): Don't highlight the
+ indentation, or the newline, if the line's non-empty
+ (http://lists.gnu.org/archive/html/emacs-devel/2015-05/msg00118.html).
+
+2015-05-04 Daniel Colascione <address@hidden>
+
+ Add `save-mark-and-excursion', which has the old `save-excursion'
behavior
+ * doc/lispref/positions.texi (Excursions): Document
+ `save-mark-and-excursion'.
+ * lisp/font-lock.el (font-lock-fontify-block): Use
+ `save-mark-and-excursion' instead of `save-excursion', restoring
+ Emacs 24 behavior.
+ * lisp/simple.el (save-mark-and-excursion--save)
+ (save-mark-and-excursion--restore): New functions.
+ (save-mark-and-excursion): New user macro.
+ * src/editfns.c (Fsave_excursion): Mention
+ `save-mark-and-excursion' in `save-excursion' documentation.
+
+2015-05-04 Dmitry Gutov <address@hidden>
+
+ Classify lone symbol inside let varlist as variable
+ * lisp/progmodes/elisp-mode.el (elisp-completion-at-point):
+ Classify lone symbol inside let varlist as variable.
+ * test/automated/elisp-mode-tests.el
(completest-variables-in-let-bindings):
+ New test.
+
+ Add xref-pulse-on-jump
+ * lisp/cedet/pulse.el (pulse-momentary-highlight-one-line):
+ Add autoload cookie.
+ * lisp/progmodes/xref.el (xref-pulse-on-jump): New option.
+ (xref--maybe-pulse): New function.
+ (xref-pop-marker-stack, xref--pop-to-location)
+ (xref--display-position): Use it.
+ (xref--location-at-point): Use back-to-indentation.
+
+2015-05-04 Stefan Monnier <address@hidden>
+
+ * lisp/org/org-{macs,list}.el: Fix lexical warnings
+ * lisp/org/org-list.el (org-list-struct): Remove unused var `ind'.
+ (org-list-get-next-item, org-list-get-prev-item)
+ (org-list-get-children): Mark unused arg `struct'.
+ (org-list-use-alpha-bul-p): Remove unused var `bul'.
+ (org-toggle-checkbox): Mark unused var.
+ (org-update-checkbox-count): Remove unused var `box-num'.
+ (org-adapt-indentation): Declare.
+ (org-list-parse-list): Declare var instead of adding a dummy duplicate.
+ (org-list-send-list): Remove unused var `txt'.
+ (org-list-to-latex, org-list-to-texinfo): Mark unused arg `params'.
+ (org-list-to-subtree): Add prefix to dyn-bind var, and declare them.
+ * lisp/org/org-macs.el: Use `declare'.
+ (org-with-limited-levels): Declare dyn-bound vars.
+
+2015-05-04 Eli Zaretskii <address@hidden>
+
+ Fix minor issues with CEDET on MS-Windows
+ * lisp/cedet/semantic/symref/idutils.el
+ (semantic-symref-parse-tool-output-one-line): Fix the search
+ regexp to match MS-Windows file names with drive letters.
+ (Bug#19468)
+ * lisp/cedet/semantic/symref/grep.el
+ (semantic-symref-grep-use-template): Remove "--color=always" from
+ Grep switches on MS-Windows.
+ (semantic-symref-grep-shell): Use shell-file-name as the default
+ value, so this works not only on Posix platforms.
+ (semantic-symref-perform-search): Use shell-quote-argument instead
+ of literal '..' for portable quoting of Grep command-line
+ argument. Use shell-command-switch instead of a literal "-c".
+ * lisp/cedet/semantic/bovine/gcc.el
+ (semantic-gcc-get-include-paths): Use file-name-absolute-p to test
+ for an absolute file name in a portable way.
+
+2015-05-04 Artur Malabarba <address@hidden>
+
+ * lisp/emacs-lisp/package.el: Remove `package--silence' variable
+ (package-import-keyring, package-refresh-contents)
+ (package-compute-transaction, package--save-selected-packages)
+ (package-install-from-archive, package-delete)
+ (package-menu--perform-transaction): Use `inhibit-message'
+ instead.
+ (package--compile): Set `warning-minimum-level' to :error.
+
+2015-05-03 Stefan Monnier <address@hidden>
+
+ * lisp/term/screen.el (xterm-screen-extra-capabilities): New custom
+ (terminal-init-screen): Use it (bug#20356).
+ * lisp/term/xterm.el: Provide `term/xterm' instead of `xterm'.
+ (xterm--extra-capabilities-type): New const.
+ (xterm-extra-capabilities): Use it.
+ (xterm--version-handler): Lower the pseudo-version for `screen'.
+
+2015-05-03 Dmitry Gutov <address@hidden>
+
+ xref--insert-xrefs: Tweak the faces
+ * lisp/progmodes/xref.el (xref--insert-xrefs): Tweak the faces.
+ Always insert a newline at the end (to avoid mouse-face background
+ tail at the last line).
+
+ elisp-completion-at-point: Prioritize being quoted over funpos
+ * lisp/progmodes/elisp-mode.el (elisp-completion-at-point):
+ Only consider function position when not inside quoted form
+ (bug#20425).
+ * test/automated/elisp-mode-tests.el: New file.
+
+ Stop vc-print-log from jumping to the top
+ * lisp/vc/vc.el (vc-print-log-internal): Pass nil
+ GOTO-LOCATION-FUNC to vc-log-internal-common when WORKING-REVISION
+ is not specified.
+ (vc-incoming-outgoing-internal): Always pass nil.
+ (vc-log-internal-common): When GOTO-LOCATION-FUNC is nil, don't
+ call it, and don't set vc-sentinel-movepoint (bug#15322).
+ (vc-print-root-log): Don't fetch the root working revision, nor
+ pass it to vc-print-log-internal.
+
+2015-05-02 Michael Vehrs <address@hidden>
+
+ Fix display of keyboard layouts for right-to-left scripts
+ * lisp/international/quail.el (quail-insert-kbd-layout): Force
+ left-to-right paragraph direction.
+
+2015-05-02 K. Handa <address@hidden>
+
+ Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
+
+ * cmds.c (internal_self_insert): When we insert spaces for
+ padding, set point before the padding spaces, not after them.
+
+2015-05-02 Nicolas Petton <address@hidden>
+
+ * lisp/emacs-lisp/seq.el (seq-p): New alias to `sequencep'.
+
+2015-05-02 Dmitry Gutov <address@hidden>
+
+ Fix etags-xref-find for references
+ * lisp/progmodes/elisp-mode.el (elisp--xref-find-references): Use
`cl-mapcan'.
+ * lisp/progmodes/etags.el (etags-xref-find): Ditto. Prompt for
+ directory if no tags tables are loaded (bug#19468).
+
+2015-05-02 Philipp Stephani <address@hidden>
+
+ Update the options in whitespace-style defcustom
+ * lisp/whitespace.el (whitespace-style): Use `set' instead of a
+ `repeat' because the option is really set-like. Add missing
+ options. Reorder options to match the order in the
+ documentation. (Bug#20346)
+
+2015-05-02 Eli Zaretskii <address@hidden>
+
+ Fix error diagnostics of c-macro-expand
+ * lisp/progmodes/cmacexp.el (c-macro-expansion): Don't bail out
+ too early if no start-marker string was found -- that generally
+ means cpp exited abnormally, and we still want to show its error
+ messages to the user.
+
+ Don't require Texinfo 5.0 for Emacs documentation
+ * doc/emacs/docstyle.texi: Use "@set txicodequoteundirected" and
+ "@set txicodequotebacktick" instead of "@codequotebacktick on" and
+ "@codequoteundirected on", respectively, to avoid requiring
+ Texinfo 5.x for Emacs documentation.
+
+2015-05-01 Simen Heggestøyl <address@hidden>
+
+ * lisp/files.el (pwd):
+ When called with a prefix argument, insert the current default
+ directory at point.
+
+2015-05-01 Stefan Monnier <address@hidden>
+
+ * lisp/isearch.el (isearch-mode-map): Allow backspace remapping
+ * lisp/isearch.el (isearch-mode-map): Don't inhibit
+ function-key-map remapping for backspace (bug#20466).
+
+2015-05-01 Dmitry Gutov <address@hidden>
+
+ Implement xref-find-references in etags and elisp-mode
+ * lisp/progmodes/elisp-mode.el (elisp--xref-find-references): New
function.
+ (elisp-xref-find): Use it.
+ * lisp/progmodes/etags.el (etags-xref-find): Use
`xref-collect-references'.
+ * lisp/progmodes/xref.el (xref-collect-references):
+ (xref--collect-reference): New functions.
+
+2015-05-01 Paul Eggert <address@hidden>
+
+ Prefer plain characters to Texinfo circumlocutions
+ For example, prefer 'François' to 'Fran\c{c}ois', 'Fran\c cois',
+ 'Fran@,{c}ois' or 'Francois' (all of which were used!) in Texinfo
sources.
+
+ Fix single-quoting style in PDF manuals
+ The PDF versions of the GNU manuals used curved single quotes to
+ represent grave accent and apostrophe, which made it a pain to cut
+ and paste code examples from them. Fix the PDF versions to use
+ grave accent and apostrophe for Lisp source code, keystrokes, etc.
+ This change does not affect the info files, nor does it affect
+ ordinary uses of curved single quotes in PDF.
+ * doc/emacs/docstyle.texi: New file, which specifies treatment for
+ grave accent and apostrophe, as well as the document encoding.
+ * doc/emacs/emacs-xtra.texi, doc/emacs/emacs.texi:
+ * doc/lispintro/emacs-lisp-intro.texi:
+ * doc/lispref/back.texi, doc/lispref/book-spine.texi:
+ * doc/lispref/elisp.texi, doc/lispref/lay-flat.texi:
+ * doc/misc/ada-mode.texi, doc/misc/auth.texi:
+ * doc/misc/autotype.texi, doc/misc/bovine.texi, doc/misc/calc.texi:
+ * doc/misc/cc-mode.texi, doc/misc/cl.texi, doc/misc/dbus.texi:
+ * doc/misc/dired-x.texi, doc/misc/ebrowse.texi, doc/misc/ede.texi:
+ * doc/misc/ediff.texi, doc/misc/edt.texi, doc/misc/efaq-w32.texi:
+ * doc/misc/efaq.texi, doc/misc/eieio.texi, doc/misc/emacs-gnutls.texi:
+ * doc/misc/emacs-mime.texi, doc/misc/epa.texi, doc/misc/erc.texi:
+ * doc/misc/ert.texi, doc/misc/eshell.texi, doc/misc/eudc.texi:
+ * doc/misc/eww.texi, doc/misc/flymake.texi, doc/misc/forms.texi:
+ * doc/misc/gnus-coding.texi, doc/misc/gnus-faq.texi:
+ * doc/misc/gnus.texi, doc/misc/htmlfontify.texi:
+ * doc/misc/idlwave.texi, doc/misc/ido.texi, doc/misc/info.texi:
+ * doc/misc/mairix-el.texi, doc/misc/message.texi, doc/misc/mh-e.texi:
+ * doc/misc/newsticker.texi, doc/misc/nxml-mode.texi:
+ * doc/misc/octave-mode.texi, doc/misc/org.texi, doc/misc/pcl-cvs.texi:
+ * doc/misc/pgg.texi, doc/misc/rcirc.texi, doc/misc/reftex.texi:
+ * doc/misc/remember.texi, doc/misc/sasl.texi, doc/misc/sc.texi:
+ * doc/misc/semantic.texi, doc/misc/ses.texi, doc/misc/sieve.texi:
+ * doc/misc/smtpmail.texi, doc/misc/speedbar.texi:
+ * doc/misc/srecode.texi, doc/misc/todo-mode.texi, doc/misc/tramp.texi:
+ * doc/misc/url.texi, doc/misc/vhdl-mode.texi, doc/misc/vip.texi:
+ * doc/misc/viper.texi, doc/misc/widget.texi, doc/misc/wisent.texi:
+ * doc/misc/woman.texi:
+ Use it instead of '@documentencoding UTF-8', to lessen the need for
+ global changes like this in the future.
+ * doc/emacs/Makefile.in (EMACS_XTRA):
+ * doc/lispintro/Makefile.in (srcs):
+ * doc/lispref/Makefile.in (srcs):
+ Add dependency on docstyle.texi.
+ * doc/misc/Makefile.in (style): New macro.
+ (${buildinfodir}/%.info, %.dvi, %.pdf, %.html)
+ (${buildinfodir}/ccmode.info, ${buildinfodir}/efaq%.info, gnus_deps):
+ Use it.
+
+2015-05-01 Glenn Morris <address@hidden>
+
+ * test/automated/cl-lib-tests.el (cl-lib-adjoin-test): Fix it.
+
+ * lisp/emacs-lisp/pcase.el (get-edebug-spec, edebug-match)
+ (help-fns--signature): Declare.
+
+ * lisp/emacs-lisp/pcase.el (pcase--make-docstring): Require help-fns.
+
+2015-05-01 Nicolas Petton <address@hidden>
+
+ New macro seq-let, providing destructuring support to seq.el
+ * lisp/emacs-lisp/seq.el (seq-let): New macro. `seq-let' is similar
+ to `cl-destructuring-bind' but works on all sequence types supported
+ by `seq.el'. Bump version number to 1.6.
+ * test/automated/seq-tests.el: Add tests for seq-let.
+ * doc/lispref/sequences.texi: Add documentation for seq-let.
+
+2015-05-01 Pontus Michael <address@hidden>
+
+ * lisp/simple.el (blink-matching-open): Better behavior in minibuffer
+
+2015-05-01 Glenn Morris <address@hidden>
+
+ * lisp/emacs-lisp/ert.el (ert--special-operator-p): Fix previous.
+
+2015-05-01 Artur Malabarba <address@hidden>
+
+ * lisp/emacs-lisp/bytecomp.el: Revert "Silence noninteractive
compilations"
+ This reverts commit 9a7ddde977378cb5276a81476ae458889c403267.
+ This reverts commit 3c0ea587daf8b17960b90603a70e3ac4057d883d.
+ With message: "* lisp/emacs-lisp/bytecomp.el: Use `inhibit-message'".
+ (Bug#20445).
+
+2015-05-01 K. Handa <address@hidden>
+
+ * mule-cmds.el (input-method-use-echo-area): Change :type to
+ 'boolean.
+
+2015-05-01 Lars Magne Ingebrigtsen <address@hidden>
+
+ Start using proportional fonts in eww by default
+ * lisp/net/shr.el (shr-use-fonts): Switch the default to t, since
+ it seems to work well.
+
+ Fix links in tables in shr
+ * lisp/net/shr.el: Remove `shr-inhibit-decoration', because that
+ makes (some) links in tables not work.
+
+2015-05-01 Jan D <address@hidden>
+
+ (ns-get-cut-buffer-internal): Remove this alias.
+ * lisp/term/ns-win.el (ns-get-cut-buffer-internal): Remove this alias.
+
+2015-04-30 Glenn Morris <address@hidden>
+
+ * lisp/emacs-lisp/ert.el (ert--special-operator-p):
+ Update for 2015-02-08 change to indirect-function.
+
+ * lisp/term/ns-win.el (ns-get-selection-internal):
+ Remove declaration for function deleted 2014-10-21.
+
+ * lisp/dom.el: Load subr-x when compiling, for when-let.
+
+ Silence some compilation warnings
+ * lisp/emacs-lisp/check-declare.el (compilation-forget-errors):
+ * lisp/emulation/cua-base.el (delete-active-region):
+ * lisp/net/net-utils.el (w32-get-console-output-codepage):
+ * lisp/term/ns-win.el (ns-own-selection-internal)
+ (ns-disown-selection-internal, ns-selection-owner-p)
+ (ns-selection-exists-p, ns-get-selection):
+ Declare for compiler..
+
+ Function declaration updates prompted by 'make check-declare'
+ * lisp/emacs-lisp/package.el (lm-homepage):
+ * lisp/gnus/gnus-util.el (iswitchb-read-buffer):
+ * lisp/gnus/mm-decode.el (libxml-parse-html-region):
+ * lisp/gnus/mml.el (libxml-parse-html-region):
+ * lisp/gnus/nnrss.el (libxml-parse-html-region):
+ * lisp/net/eww.el (libxml-parse-html-region):
+ * lisp/net/shr.el (libxml-parse-html-region):
+ * lisp/vc/vc-bzr.el (vc-annotate-convert-time):
+ * lisp/vc/vc-cvs.el (vc-annotate-convert-time):
+ * lisp/vc/vc-git.el (vc-annotate-convert-time):
+ * lisp/vc/vc-hg.el (vc-annotate-convert-time):
+ * lisp/vc/vc-mtn.el (vc-annotate-convert-time):
+ * lisp/vc/vc-rcs.el (vc-annotate-convert-time):
+ Update declaration.
+
+ Remove compatibility code for 20-year old function renaming
+ * lisp/progmodes/idlw-shell.el (idlwave-shell-comint-filter):
+ Make it an obsolete alias.
+ (idlwave-shell-filter): Change all uses to comint-output-filter.
+
+2015-04-30 Tassilo Horn <address@hidden>
+
+ Add ace-window face config
+ * etc/themes/tsdh-light-theme.el (tsdh-light): Add ace-window face
+ configuration.
+
+2015-04-30 Paul Eggert <address@hidden>
+
+ Unclutter 'make doc' output a bit
+ * Makefile.in ($(DOCS), $(INSTALL_DOC), $(UNINSTALL_DOC)):
+ Use make subst rather than sh IFS to split target string apart.
+ This makes 'make' output easier to follow.
+
+ Merge from gnulib
+ * doc/misc/texinfo.tex: Update from gnulib.
+
+2015-04-30 Artur Malabarba <address@hidden>
+
+ * lisp/emacs-lisp/package.el: Some speed optimizations on menu refresh
+ (package-menu--print-info): Obsolete.
+ (package-menu--print-info-simple): New function.
+ (package-menu--refresh): Use it, simplify code, and improve
+ performance.
+ * lisp/emacs-lisp/tabulated-list.el (tabulated-list-print-entry):
+ Tiny performance improvement.
+
+ * lisp/emacs-lisp/package.el (package--message): inhibit-message
+
+2015-04-29 Paul Eggert <address@hidden>
+
+ Omit -Wstrict-overflow workaround in GCC 5
+ * src/process.c: Remove workaround for GCC -Wstrict-overflow bug
+ if it's GCC 5 or later, as the bug appears to be fixed in GCC 5.1.
+
+ Merge from gnulib
+ This incorporates:
+ 2015-04-29 extern-inline: no need for workaround in GCC 5.1
+ 2015-04-26 file-has-acl: port to CentOS 6
+ * m4/acl.m4, m4/extern-inline.m4: Update from gnulib.
+
+2015-04-29 Helmut Eller <address@hidden>
+
+ Set next-error-* in xref--xref-buffer-mode
+ * xref.el (xref--xref-buffer-mode): Set `next-error-function' and
+ `next-error-last-buffer'.
+ (xref--next-error-function): New function.
+ (http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg01311.html)
+
+2015-04-29 Fabián Ezequiel Gallina <address@hidden>
+
+ python.el: Fix warnings on looking-back calls missing LIMIT
+ * lisp/progmodes/python.el (python-shell-accept-process-output):
+ Pass LIMIT arg to looking-back.
+
+2015-04-29 Artur Malabarba <address@hidden>
+
+ * lisp/emacs-lisp/package.el: Use pushnew for downloads in progress
+ (package--download-and-read-archives): Use pushnew instead of
+ append. If something terrible happened during a previous
+ download, simply refreshing should now make things work again.
+
+2015-04-29 Dmitry Gutov <address@hidden>
+
+ Introduce etags-xref-find-definitions-tag-order
+ * lisp/progmodes/etags.el (etags-xref-find-definitions-tag-order):
+ New variable.
+ (etags--xref-find-definitions): Use it (bug#19468).
+
+2015-04-29 Eli Zaretskii <address@hidden>
+
+ PATH- and completion-related fixes in Eshell on MS-Windows
+ * lisp/eshell/esh-ext.el (eshell-search-path): When running on
+ MS-Windows, prepend "." to list of directories produced from PATH,
+ as Windows always implicitly searches the current directory first.
+ (eshell-force-execution): Make it have a non-nil default value on
+ MS-Windows and MS-DOS.
+ * lisp/eshell/em-cmpl.el (eshell-complete-commands-list): If
+ eshell-force-execution is non-nil, complete on readable files and
+ directories, not only executables. When running on MS-Windows,
+ prepend "." to list of directories produced from PATH, as Windows
+ always implicitly searches the current directory first.
+
+2015-04-29 Sam Steingold <address@hidden>
+
+ bury RCIRC buffers when there is no activity
+ lisp/net/rcirc.el (rcirc-non-irc-buffer): remove
+ (rcirc-bury-buffers): new function
+ (rcirc-next-active-buffer): when there is no new activity, use
+ `rcirc-bury-buffers' to hide all RCIRC buffers
+
+2015-04-29 Michael Albinus <address@hidden>
+
+ Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
+
+2015-04-29 Krzysztof Jurewicz <address@hidden> (tiny change)
+
+ Fix DBUS query result parsing for secrets-search-items
+ * lisp/net/secrets.el (secrets-search-items): Fix DBUS query result
+ parsing. The function assumed that return value of the
+ SearchItems method called on a collection is a list of two lists,
+ however this is true only when no collection is specified. GNOME
+ had used to incorrectly return a list of two lists in both cases,
+ but this was already fixed:
+ https://bugzilla.gnome.org/show_bug.cgi?id=695115 . Also fix an
+ incorrect information in the secrets-search-items’ docstring.
+ (Bug#20449)
+
+2015-04-29 Artur Malabarba <address@hidden>
+
+ * lisp/emacs-lisp/bytecomp.el: Use `inhibit-message'
+ (byte-compile--message): Use `inhibit-message' instead of hiding
+ the previous message with (message nil).
+
+2015-04-29 Oleh Krehel <address@hidden>
+
+ Remove the deprecated INTERNAL_FIELD macro by expanding it
+ * src/lisp.h (INTERNAL_FIELD): Remove.
+ (DEFVAR_KBOARD): Modify accordingly.
+ * alloc.c, buffer.c, buffer.h, category.c, keyboard.c, keyboard.h:
+ * syntax.c: Adjust users.
+ * src/buffer.c (compact_buffer): Use BVAR.
+
+2015-04-29 Glenn Morris <address@hidden>
+
+ Replace an obsolete function alias
+ * lisp/isearch.el (isearch-yank-x-selection):
+ * lisp/mouse-copy.el (mouse-drag-secondary-pasting)
+ (mouse-drag-secondary-moving):
+ * lisp/obsolete/mouse-sel.el (mouse-sel-get-selection-function):
+ Replace obsolete alias x-get-selection with gui-get-selection.
+
+2015-04-29 Stefan Monnier <address@hidden>
+
+ * lisp/mail/rmailsum.el: Use lexical-binding.
+
+2015-04-29 Glenn Morris <address@hidden>
+
+ * test/automated/package-test.el (package-test-update-archives-async):
+ Skip test on hydra.nixos.org.
+
+2015-04-28 Glenn Morris <address@hidden>
+
+ * lisp/foldout.el: Update for 2015-01-30 outline.el changes.
+ (foldout-zoom-subtree, foldout-exit-fold, foldout-mouse-show)
+ (foldout-mouse-hide-or-exit): Use new names for outline functions.
+
+ * lisp/cedet/semantic/bovine/c.el (semantic-c-do-lex-if):
+ Update for 2014-06-26 hideif.el change.
+
+ * lisp/mail/rmailsum.el: Fix search for encoded subjects. (Bug#19088)
+ (rmail--decode-and-apply): New function.
+ (rmail-message-regexp-p-1, rmail-message-subject-p): Use it.
+
+ * lisp/mail/rmail.el (rmail-highlighted-headers): Fix :type.
+
+2015-04-28 Artur Malabarba <address@hidden>
+
+ * lisp/emacs-lisp/package.el: Fix priority-hiding corner case
+ (package-menu--refresh): Delegate obsolete-hiding to
+ `package--remove-hidden'.
+ (package--remove-hidden): Disregard high-priority package if it is
+ older than the installed one.
+
+2015-04-28 Paul Eggert <address@hidden>
+
+ Update source file encoding list
+ Update admin/notes/unicode, along with coding system cookies in
+ other files, so that the two match each other better.
+ * admin/notes/unicode: lisp/language/ethio-util.el and
+ lisp/language/ethiopic.el also use utf-8-emacs.
+ * admin/notes/hydra, doc/misc/dbus.texi, doc/misc/org.texi:
+ * doc/misc/remember.texi, etc/refcards/cs-dired-ref.tex:
+ * etc/refcards/cs-refcard.tex, etc/refcards/cs-survival.tex:
+ * etc/refcards/sk-dired-ref.tex, etc/refcards/sk-refcard.tex:
+ * etc/refcards/sk-survival.tex:
+ Add "coding: utf-8" so that this file is not mishandled in a
+ Latin-1 or Big-5 locale.
+ * lisp/international/robin.el, lisp/org/ox-ascii.el:
+ Specify utf-8, not utf-8-emacs, as these are plain UTF-8 files.
+ * lisp/language/ethio-util.el: Fix trailer.
+
+2015-04-28 Eli Zaretskii <address@hidden>
+
+ Fix synchronous invocation of Ispell
+ * lisp/textmodes/ispell.el (ispell-init-process): Assign a non-nil
+ value to ispell-process-directory before calling ispell-init-process.
+ Don't call set-process-coding-system if ispell-async-processp is nil.
+ (Bug#20448)
+
+2015-04-28 Artur Malabarba <address@hidden>
+
+ * lisp/emacs-lisp/package.el: Skip space and comments in init file
+ (package--ensure-init-file): Insert snippet at first
+ non-whitespace non-comments line. Respects local-vars at the top
+ of the file.
+
+2015-04-28 Glenn Morris <address@hidden>
+
+ * lisp/mail/rmail.el (rmail-copy-headers):
+ Handle rmail-nonignored-headers being nil. (Bug#18878)
+
+ * lisp/subr.el (delay-mode-hooks): Fix doc typo.
+
+ * lisp/vc/vc-bzr.el (vc-bzr-after-dir-status):
+ Don't get confused by a bzrlib version mismatch warning.
+
+2015-04-27 Thomas Fitzsimmons <address@hidden>
+
+ Change default location of EUDC options file
+ * NEWS: Document change to EUDC options file's default location.
+ * lisp/net/eudc-vars.el (eudc-options-file): Use
+ `locate-user-emacs-file' to change default options file location.
+
+2015-04-27 Glenn Morris <address@hidden>
+
+ * test/automated/package-test.el (package-test-update-archives-async):
+ Try to handle the test server script dying.
+
+2015-04-27 Stefan Monnier <address@hidden>
+
+ * lisp/saveplace.el (save-place-mode): New minor mode.
+ (save-place): Redefine as an obsolete alias.
+
+ * lisp/midnight.el: Make it a minor mode. Allow predicates.
+ * lisp/midnight.el: Use lexical-binding.
+ (midnight-mode): Make it a proper minor mode.
+ (midnight-buffer-display-time): Make arg non-optional.
+ (midnight-find): Remove.
+ (clean-buffer-list-kill-never-regexps)
+ (clean-buffer-list-kill-regexps): Tweak type for new function choice.
+ (clean-buffer-list-delay): Allow clean-buffer-list-kill-regexps to
+ contain functions.
+ (clean-buffer-list): Use cl-find.
+ Allow clean-buffer-list-kill-never-regexps to contain functions.
+
+2015-04-27 Nicolas Petton <address@hidden>
+
+ Bump version of seq.el to 1.5
+ * lisp/emacs-lisp/seq.el (seq-doseq): Remove undocumented return value
+ from seq-doseq. Bump version number of seq.el.
+
+2015-04-27 Glenn Morris <address@hidden>
+
+ * lisp/mail/rmail.el (rmail-reply):
+ Decode subject before matching "Re:" prefix. (Bug#20396)
+
+2015-04-27 Artur Malabarba <address@hidden>
+
+ * lisp/emacs-lisp/package.el: Small improvements
+ (package--with-work-buffer-async): More informative error.
+ (package-install-user-selected-packages): Rename to
+ `package-install-selected-packages'.
+
+2015-04-27 Stefan Monnier <address@hidden>
+
+ * lisp/emacs-lisp/eieio-core.el (eieio-defclass-internal): Fix last
+ * lisp/emacs-lisp/eieio-core.el (eieio-defclass-internal): Fix last
change.
+ (eieio--class-make): Remove leftover `tag'.
+
+2015-04-27 Glenn Morris <address@hidden>
+
+ * lisp/gnus/message.el (gnus-extract-address-components):
+ Remove bogus declaration that was masking previous problem.
+
+2015-04-27 Nicolas Graner <address@hidden> (tiny change)
+
+ * lisp/gnus/message.el (message-insert-formatted-citation-line):
+ Fix typo. (Bug#20318)
+
+2015-04-27 Stefan Monnier <address@hidden>
+
+ * lisp/emacs-lisp/eieio-core.el (eieio-defclass-internal): Reuse oldc.
+
+ * lisp/textmodes/reftex-toc.el: Improve multi-frame behavior
+ * lisp/textmodes/reftex-toc.el (reftex-toc-revert): Avoid displaying
+ the buffer in yet another frame.
+ (reftex-toc-visit-location): Make sure toc-window has focus at the end
+ when `final' is nil.
+ (reftex--rebuilding-toc): Defvar to avoid `boundp' and
+ silence warnings. Use `--' to clarify that it's internal.
+ (reftex-toc-next, reftex-toc-previous, reftex-toc-demote)
+ (reftex-toc-promote): Clarify unused argument.
+ (reftex--pro-or-de, reftex--start-line, reftex--mark-line):
+ Add `reftex--' prefix. Fix all users.
+ (reftex-toc-promote-prepare): Use _ for dummy variable.
+ (reftex-toc-restore-region): Rename `m
+
+2015-04-27 Eli Zaretskii <address@hidden>
+
+ Fix a typo in bibtex.el
+ * lisp/textmodes/bibtex.el (bibtex-insert-kill): Fix a typo from
+ last change. (Bug#20429)
+
+ Fix redisplay of frame after loading new fonts
+ * src/xdisp.c (redisplay_internal): When retrying redisplay of a
+ frame because new fonts were loaded, disable all redisplay
+ optimizations on that frame by calling SET_FRAME_GARBAGED.
+ (Bug#20410)
+
+2015-04-27 Stefan Monnier <address@hidden>
+
+ * lisp/info.el (Info-menu): Properly provide the `default'
+ (Bug#20391)
+
+ * elisp-mode.el: Catch errors from `documentation'
+ (Bug#20418)
+ * lisp/progmodes/elisp-mode.el (elisp--get-fnsym-args-string):
+ Catch errors from documentation.
+ (emacs-lisp-mode-abbrev-table): Remove redundant defvar.
+
+2015-04-26 Stefan Monnier <address@hidden>
+
+ lisp/emacs-lisp/package.el: Move variables to silence byte-compiler
+ Remove redundant ":group 'package".
+
+2015-04-26 Eli Zaretskii <address@hidden>
+
+ Fix a typo in rmail.el
+ * lisp/mail/rmail.el (rmail-ensure-blank-line): Fix a typo in the
+ last commit. (Bug#20429)
+
+2015-04-26 Dmitry Gutov <address@hidden>
+
+ Introduce xref-prompt-for-identifier
+ * lisp/progmodes/xref.el (xref-prompt-for-identifier): New option.
+ (xref--read-identifier): Use it
+ (http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg01205.html).
+
+2015-04-26 João Távora <address@hidden>
+
+ `tex-insert-quote' after single `'' opens quotes instead of closing
+ Without this, it's very hard to precede double quotes with the
+ apostrophe character, i.e. insert the sequence '``
+ (quote-backquote-backquote), commonly useful in portuguese, for
+ instance.
+ * tex-mode.el (tex-insert-quote): Add ?' to the list of preceding
+ chars making `tex-insert-quote' be in the "opening" context.
+
+2015-04-25 Dmitry Gutov <address@hidden>
+
+ Pass `id' to `completing-read' as def instead of initial input
+ * xref.el (xref--read-identifier): Pass `id' to `completing-read'
+ as the default value instead of initial input
+ (http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg01182.html).
+
2015-04-25 Paul Eggert <address@hidden>
Don't freeze with unreadable processes
diff --git a/Makefile.in b/Makefile.in
index e8780c2..a02f074 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1091,24 +1091,20 @@ bootstrap: bootstrap-clean
.PHONY: ChangeLog change-history change-history-commit change-history-nocommit
.PHONY: master-branch-is-current unchanged-history-files
-CHANGELOG =
-emacslog = $(srcdir)/build-aux/gitlog-to-emacslog
-
-# Convert git commit log to ChangeLog file. make-dist uses this.
-# I guess this is PHONY because it generates in distprefix (which is
-# non-nil when called from make-dist)?
-# FIXME: test -f does not respect distprefix.
-ChangeLog:
- @[ -n "${CHANGELOG}" ] || test ! -f ChangeLog
- $(AM_V_GEN)distprefix=$(distprefix) srcprefix=$(srcdir)/ \
- $(emacslog) . $(CHANGELOG)
-
+CHANGELOG = ChangeLog
+emacslog = build-aux/gitlog-to-emacslog
# The ChangeLog history files are called ChangeLog.1, ChangeLog.2, ...,
# ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX). $(CHANGELOG_N) stands for
# the newest (highest-numbered) ChangeLog history file.
CHANGELOG_HISTORY_INDEX_MAX = 2
CHANGELOG_N = ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX)
+# Convert git commit log to ChangeLog file. make-dist uses this.
+# I guess this is PHONY so it always updates?
+ChangeLog:
+ $(AM_V_GEN)cd $(srcdir) && \
+ ./$(emacslog) -o $(CHANGELOG) -n $(CHANGELOG_HISTORY_INDEX_MAX)
+
# Check that we are in a good state for changing history.
master-branch-is-current:
git branch | grep -q '^\* master$$'
@@ -1119,13 +1115,14 @@ unchanged-history-files:
# Copy newer commit messages to the start of the ChangeLog history file,
# and consider them to be older.
change-history-nocommit: master-branch-is-current unchanged-history-files
+ -rm -f ChangeLog.tmp
$(MAKE) ChangeLog CHANGELOG=ChangeLog.tmp
- (sed '/^;; [L]ocal Variables:/,$$d' <ChangeLog.tmp && cat
$(CHANGELOG_N)) \
+ (sed '/^See ChangeLog.[0-9]* for earlier/,$$d' <ChangeLog.tmp && cat
$(CHANGELOG_N)) \
>$(CHANGELOG_N).tmp
rm ChangeLog.tmp
new_origin=$$(git log --pretty=format:%H HEAD^!) && \
sed 's/^\(gen_origin=\).*/\1'"$$new_origin/" \
- < $(emacslog) > $(emacslog).tmp
+ < $(emacslog) > $(emacslog).tmp && chmod +x $(emacslog).tmp
mv $(CHANGELOG_N).tmp $(CHANGELOG_N)
mv $(emacslog).tmp $(emacslog)
diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog
index 3f4b06a..ad7c273 100755
--- a/build-aux/gitlog-to-changelog
+++ b/build-aux/gitlog-to-changelog
@@ -3,7 +3,7 @@ eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
if 0;
# Convert git log output to ChangeLog format.
-my $VERSION = '2015-04-09 16:03'; # UTC
+my $VERSION = '2015-05-08 06:05'; # UTC
# The definition above must lie within the first 8 lines in order
# for the Emacs time-stamp write hook (at end) to update it.
# If you change this file with Emacs, please let the write hook
@@ -324,7 +324,7 @@ sub git_dir_option($)
# Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog
# `(tiny change)' annotation.
- my $tiny = (grep (/^Copyright-paperwork-exempt:\s+[Yy]es$/, @line)
+ my $tiny = (grep
(/^(?:Copyright-paperwork-exempt|Tiny-change):\s+[Yy]es$/, @line)
? ' (tiny change)' : '');
my $date_line = sprintf "%s %s$tiny\n",
@@ -335,6 +335,7 @@ sub git_dir_option($)
@line = grep !/^(?:Signed-off-by:[ ].*>$
|Co-authored-by:[ ]
|Copyright-paperwork-exempt:[ ]
+ |Tiny-change:[ ]
)/x, @line;
# Remove leading and trailing blank lines.
diff --git a/build-aux/gitlog-to-emacslog b/build-aux/gitlog-to-emacslog
index a657cce..e38f896 100755
--- a/build-aux/gitlog-to-emacslog
+++ b/build-aux/gitlog-to-emacslog
@@ -23,39 +23,58 @@ LC_ALL=C
export LC_ALL
# The newest revision that should not appear in the generated ChangeLog.
-gen_origin=2c1b8604946efbcd8ec5dd6c6dda7541ce4fc3c0
-test -n "$1" && test "$1" != "." && gen_origin=$1
+gen_origin=d2c7e14ac3bd2b517d35a86255c28d5b6d779451
+force=
+output=ChangeLog
+nmax=2
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -g|--gen-origin) gen_origin="$2" ; shift ;;
+ -f|--force) force=1 ;;
+ -n|--nmax) nmax="$2"; shift ;;
+ -o|--output) output="$2" ; shift ;;
+ *) echo "Unrecognized argument: $1" >&2; exit 1 ;;
+ esac
+ shift
+done
+
+if [ ! -f ChangeLog.$nmax ]; then
+ echo "Can't find ChangeLog.$nmax" >&2
+ echo "Must be run from the top source directory" >&2
+ exit 1
+fi
-output=$2
-test -n "$output" || output=ChangeLog
+if [ -f "$output" ]; then
+ [ ! "$force" ] && echo "$output exists" >&2 && exit 1
+ rm -f "$output" || exit 1
+fi
# If this is not a Git repository, just generate an empty ChangeLog.
-test -d ${srcprefix}.git || {
- # Remove any old ChangeLog, in case it is a vc-dwim symlink.
- rm -f "${distprefix}$output" || exit
- >"${distprefix}$output"
+test -d .git || {
+ >"$output"
exit
}
# Use Gnulib's packaged ChangeLog generator.
-${srcprefix}build-aux/gitlog-to-changelog --ignore-matching='^; ' \
+./build-aux/gitlog-to-changelog --ignore-matching='^; ' \
--format='%B' \
- "$gen_origin.." >"${distprefix}ChangeLog.tmp" || exit
+ "$gen_origin.." >"ChangeLog.tmp" || exit
-if test -s "${distprefix}ChangeLog.tmp"; then
+if test -s "ChangeLog.tmp"; then
# Fix up bug references.
# This would be better as eg a --transform option to gitlog-to-changelog,
# but... effort. FIXME does not handle rare cases like:
# Fixes: debbugs:19434 debbugs:19519
sed 's/ Fixes: \(debbugs:\|bug#\)\([0-9][0-9]*\)/ (Bug#\2)/' \
- "${distprefix}ChangeLog.tmp" > "${distprefix}ChangeLog.tmp2"
- mv "${distprefix}ChangeLog.tmp2" "${distprefix}ChangeLog.tmp"
+ "ChangeLog.tmp" > "ChangeLog.tmp2"
+ mv "ChangeLog.tmp2" "ChangeLog.tmp"
# Find the years covered by the generated ChangeLog, so that
# a proper copyright notice can be output.
years=`
- sed -n 's/^\([0-9][0-9]*\).*/\1/p' "${distprefix}ChangeLog.tmp" |
+ sed -n 's/^\([0-9][0-9]*\).*/\1/p' "ChangeLog.tmp" |
sort -nu
`
start_year=
@@ -75,13 +94,13 @@ if test -s "${distprefix}ChangeLog.tmp"; then
sed -n '
1i\
- /^;; Local Variables:/,${
+ /^See ChangeLog.[0-9]* for earlier/,${
+ s/ChangeLog\.[0-9]*/ChangeLog.'$nmax'/
s/\(Copyright[ (C)]*\)[0-9]*-[0-9]*/\1'"$year_range"'/
p
}
- ' <ChangeLog.2 >>"${distprefix}ChangeLog.tmp" || exit
+ ' <ChangeLog.$nmax >>"ChangeLog.tmp" || exit
fi
# Install the generated ChangeLog.
-test "$output" = "ChangeLog.tmp" || \
- mv -i "${distprefix}ChangeLog.tmp" "${distprefix}$output"
+test "$output" = "ChangeLog.tmp" || mv "ChangeLog.tmp" "$output"
diff --git a/configure.ac b/configure.ac
index 86b5e7e..a8f292c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2499,15 +2499,12 @@ if test x"$pkg_check_gtk" = xyes; then
GTK_OBJ="gtkutil.o $GTK_OBJ"
term_header=$gtk_term_header
USE_X_TOOLKIT=none
- if "$PKG_CONFIG" --atleast-version=2.10 gtk+-2.0; then
- :
- else
- AC_MSG_WARN([[Your version of Gtk+ will have problems with
+ AC_MSG_WARN([[Your version of Gtk+ will have problems with
closing open displays. This is no problem if you just use
one display, but if you use more than one and close one of them
- Emacs may crash.]])
- sleep 3
- fi
+ Emacs may crash.
+ See http://bugzilla.gnome.org/show_bug.cgi?id=85715]])
+ sleep 3
fi
fi
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 30c35a0..21f645e 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -831,7 +831,7 @@ VC Directory Mode
Version Control Branches
* Switching Branches:: How to get to another existing branch.
-* VC Pull:: Updating the contents of a branch.
+* Pulling / Pushing:: Receiving/sending changes from/to elsewhere.
* Merging:: Transferring changes between branches.
* Creating Branches:: How to start a new branch.
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index a129886..8ec1cd2 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -491,10 +491,10 @@ commit. @xref{Log Buffer}.
If committing to a shared repository, the commit may fail if the
repository that has been changed since your last update. In that
case, you must perform an update before trying again. On a
-decentralized version control system, use @kbd{C-x v +} (@pxref{VC
-Pull}) or @kbd{C-x v m} (@pxref{Merging}). On a centralized version
-control system, type @kbd{C-x v v} again to merge in the repository
-changes.
+decentralized version control system, use @kbd{C-x v +}
+(@pxref{Pulling / Pushing}) or @kbd{C-x v m} (@pxref{Merging}).
+On a centralized version control system, type @kbd{C-x v v} again to
+merge in the repository changes.
@item
Finally, if you are using a centralized version control system, check
@@ -942,7 +942,7 @@ revision at point. A second @key{RET} hides it again.
(@code{vc-log-incoming}) command displays a log buffer showing the
changes that will be applied, the next time you run the version
control system's ``pull'' command to get new revisions from another
-repository (@pxref{VC Pull}). This other repository is the default
+repository (@pxref{Pulling / Pushing}). This other repository is the default
one from which changes are pulled, as defined by the version control
system; with a prefix argument, @code{vc-log-incoming} prompts for a
specific repository. Similarly, @kbd{C-x v O}
@@ -1305,7 +1305,7 @@ different branches.
@menu
* Switching Branches:: How to get to another existing branch.
-* VC Pull:: Updating the contents of a branch.
+* Pulling / Pushing:: Receiving/sending changes from/to elsewhere.
* Merging:: Transferring changes between branches.
* Creating Branches:: How to start a new branch.
@end menu
@@ -1349,8 +1349,8 @@ unlocks (write-protects) the working tree.
branch until you switch away; for instance, any VC filesets that you
commit will be committed to that specific branch.
address@hidden VC Pull
address@hidden Pulling Changes into a Branch
address@hidden Pulling / Pushing
address@hidden Pulling/Pushing Changes into/from a Branch
@table @kbd
@item C-x v +
@@ -1359,6 +1359,11 @@ by ``pulling in'' changes from another location.
On a centralized version control system, update the current VC
fileset.
+
address@hidden C-x v P
+On a decentralized version control system, ``push'' changes from the
+current branch to another location. This concept does not exist
+for centralized version control systems.
@end table
@kindex C-x v +
@@ -1388,6 +1393,21 @@ Log}.
On a centralized version control system like CVS, @kbd{C-x v +}
updates the current VC fileset from the repository.
address@hidden C-x v P
address@hidden vc-push
+ On a decentralized version control system, the command @kbd{C-x v P}
+(@code{vc-push}) sends changes from your current branch to another location.
+With a prefix argument, the command prompts for the exact
+version control command to use, which lets you specify where to push
+changes. Otherwise, it pushes to a default location determined
+by the version control system.
+
+ Prior to pushing, you can use @kbd{C-x v O} (@code{vc-log-outgoing})
+to view a log buffer of the changes to be sent. @xref{VC Change Log}.
+
+This command is currently supported only by Bazaar, Git, and Mercurial.
+It signals an error for centralized version control systems.
+
@node Merging
@subsubsection Merging Branches
@cindex merging changes
diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi
index de381df..d929e09 100644
--- a/doc/emacs/mule.texi
+++ b/doc/emacs/mule.texi
@@ -1660,8 +1660,8 @@ characters present directly on the keyboard or using
@key{Compose} or
@cindex compose character
@cindex dead character
@item
-For Latin-1 only, you can use the key @kbd{C-x 8} as a ``compose
-character'' prefix for entry of address@hidden Latin-1 printing
+You can use the key @kbd{C-x 8} as a ``compose character'' prefix for
+entry of address@hidden Latin-1 and a few other printing
characters. @kbd{C-x 8} is good for insertion (in the minibuffer as
well as other buffers), for searching, and in any other context where
a key sequence is allowed.
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index 9bce155..72976b1 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -797,7 +797,7 @@ vector or string (@pxref{Iteration} for more information
about the
@code{dolist} macro). This is primarily useful for side-effects.
@end defmac
address@hidden seq-let arguments sequense address@hidden
address@hidden seq-let arguments sequence address@hidden
@cindex sequence destructuring
This macro binds the variables in defined in the sequence
@var{arguments} to the elements of the sequence @var{sequence}.
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index dc53be8..152e985 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2015-04-29.11}
+\def\texinfoversion{2015-05-06.11}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -3022,11 +3022,16 @@ end
\TeX
}
-% Some math mode symbols.
-\def\bullet{$\ptexbullet$}
-\def\geq{\ifmmode \ge\else $\ge$\fi}
-\def\leq{\ifmmode \le\else $\le$\fi}
-\def\minus{\ifmmode -\else $-$\fi}
+% Some math mode symbols. Define \ensuremath to switch into math mode
+% unless we are already there. Expansion tricks may not be needed here,
+% but safer, and can't hurt.
+\def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi}
+\def\ensuredmath#1{$\relax#1$}
+%
+\def\bullet{\ensuremath\ptexbullet}
+\def\geq{\ensuremath\ge}
+\def\leq{\ensuremath\le}
+\def\minus{\ensuremath-}
% @dots{} outputs an ellipsis using the current font.
% We do .5em per period so that it has the same spacing in the cm
@@ -9038,7 +9043,7 @@ directory should work if nowhere else does.}
\gdef^^b4{\'{}}
\gdef^^b5{$\mu$}
\gdef^^b6{\P}
- \gdef^^b7{\ifmmode\cdot\else $\cdot$\fi}
+ \gdef^^b7{\ensuremath\cdot}
\gdef^^b8{\cedilla\ }
\gdef^^b9{$^1$}
\gdef^^ba{\ordm}
@@ -9397,19 +9402,19 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{00A9}{\copyright}
\DeclareUnicodeCharacter{00AA}{\ordf}
\DeclareUnicodeCharacter{00AB}{\guillemetleft}
- \DeclareUnicodeCharacter{00AC}{\ifmmode\lnot\else $\lnot$\fi}
+ \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot}
\DeclareUnicodeCharacter{00AD}{\-}
\DeclareUnicodeCharacter{00AE}{\registeredsymbol}
\DeclareUnicodeCharacter{00AF}{\={ }}
\DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
- \DeclareUnicodeCharacter{00B1}{\ifmmode\pm\else $\pm$\fi}
+ \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}
\DeclareUnicodeCharacter{00B2}{$^2$}
\DeclareUnicodeCharacter{00B3}{$^3$}
\DeclareUnicodeCharacter{00B4}{\'{ }}
\DeclareUnicodeCharacter{00B5}{$\mu$}
\DeclareUnicodeCharacter{00B6}{\P}
- \DeclareUnicodeCharacter{00B7}{\ifmmode\cdot\else $\cdot$\fi}
+ \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot}
\DeclareUnicodeCharacter{00B8}{\cedilla{ }}
\DeclareUnicodeCharacter{00B9}{$^1$}
\DeclareUnicodeCharacter{00BA}{\ordm}
@@ -9443,7 +9448,7 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{00D4}{\^O}
\DeclareUnicodeCharacter{00D5}{\~O}
\DeclareUnicodeCharacter{00D6}{\"O}
- \DeclareUnicodeCharacter{00D7}{\ifmmode\times\else $\times$\fi}
+ \DeclareUnicodeCharacter{00D7}{\ensuremath\times}
\DeclareUnicodeCharacter{00D8}{\O}
\DeclareUnicodeCharacter{00D9}{\`U}
\DeclareUnicodeCharacter{00DA}{\'U}
@@ -9477,7 +9482,7 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{00F4}{\^o}
\DeclareUnicodeCharacter{00F5}{\~o}
\DeclareUnicodeCharacter{00F6}{\"o}
- \DeclareUnicodeCharacter{00F7}{\ifmmode\div\else $\div$\fi}
+ \DeclareUnicodeCharacter{00F7}{\ensuremath\div}
\DeclareUnicodeCharacter{00F8}{\o}
\DeclareUnicodeCharacter{00F9}{\`u}
\DeclareUnicodeCharacter{00FA}{\'u}
@@ -9546,7 +9551,7 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
\DeclareUnicodeCharacter{0136}{\cedilla{K}}
\DeclareUnicodeCharacter{0137}{\cedilla{k}}
- \DeclareUnicodeCharacter{0138}{\ifmmode\kappa\else $\kappa$\fi}
+ \DeclareUnicodeCharacter{0138}{\ensuremath\kappa}
\DeclareUnicodeCharacter{0139}{\'L}
\DeclareUnicodeCharacter{013A}{\'l}
\DeclareUnicodeCharacter{013B}{\cedilla{L}}
@@ -9813,6 +9818,8 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{201C}{\quotedblleft}
\DeclareUnicodeCharacter{201D}{\quotedblright}
\DeclareUnicodeCharacter{201E}{\quotedblbase}
+ \DeclareUnicodeCharacter{2020}{\ensuremath\dagger}
+ \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}
\DeclareUnicodeCharacter{2022}{\bullet}
\DeclareUnicodeCharacter{2026}{\dots}
\DeclareUnicodeCharacter{2039}{\guilsinglleft}
@@ -9824,6 +9831,7 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{2212}{\minus}
\DeclareUnicodeCharacter{2217}{\point}
+ \DeclareUnicodeCharacter{2225}{\ensuremath\parallel}
\DeclareUnicodeCharacter{2261}{\equiv}
}% end of \utfeightchardefs
diff --git a/etc/NEWS b/etc/NEWS
index 3ab1f4b..3f907db 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -213,6 +213,9 @@ successive char insertions.
** Unicode names entered via C-x 8 RET now use substring completion by default.
+** C-x 8 now has shorthands for these chars: ‐ ‑ ‒ – — ― ‘ ’ “ ” † ‡ • ′ ″
+€ № ← → ↔ − ≈ ≠ ≤ ≥. As before, you can type C-x 8 C-h to list shorthands.
+
** New minor mode global-eldoc-mode is enabled by default.
** Emacs now supports "bracketed paste mode" when running on a terminal
@@ -255,6 +258,17 @@ by default at least in Debian, for security reasons).
** package.el
+*** New "external" package status.
+An external package is any installed package that's not built-in and
+not from `package-user-dir', which usually means it's from an entry in
+`package-directory-list'. They are treated much like built-in
+packages, in that they cannot be deleted through the package menu and
+are not considered for upgrades.
+
+The effect, is that a user can manually place a specific version of a
+package inside `package-directory-list' and the package menu will
+always respect that.
+
*** If a package is available on multiple archives and one has higher
priority (as per `package-archive-priorities') only that one is
listed. This can be configured with `package-menu-hide-low-priority'.
@@ -539,6 +553,9 @@ and comments.
** VC and related modes
+*** Basic push support, via `vc-push', bound to `C-x v P'.
+Implemented for Bzr, Git, Hg.
+
*** The new command vc-region-history shows the log+diff of the active region.
*** New option `vc-annotate-background-mode' controls whether
@@ -552,6 +569,11 @@ allows to customize this.
*** Two new faces `compare-windows-removed' and `compare-windows-added'
replace the obsolete face `compare-windows'.
+---
+*** `log-edit-insert-changelog' converts "(tiny change)" to
+"Copyright-paperwork-exempt: yes". Set `log-edit-rewrite-tiny-change'
+nil to disable this.
+
** VHDL mode supports VHDL'08.
** Calculator: decimal display mode uses "," groups, so it's more
diff --git a/lib-src/etags.c b/lib-src/etags.c
index b1361db..f243821 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -2862,7 +2862,10 @@ consider_token (char *str, int len, int c, int *c_extp,
case st_none:
if (constantypedefs
&& structdef == snone
- && structtype == st_C_enum && bracelev > structbracelev)
+ && structtype == st_C_enum && bracelev > structbracelev
+ /* Don't tag tokens in expressions that assign values to enum
+ constants. */
+ && fvdef != vignore)
return true; /* enum constant */
switch (fvdef)
{
@@ -3176,7 +3179,19 @@ C_entries (int c_ext, FILE *inf)
cpptoken = false;
}
if (cpptoken)
- definedef = dsharpseen;
+ {
+ definedef = dsharpseen;
+ /* This is needed for tagging enum values: when there are
+ preprocessor conditionals inside the enum, we need to
+ reset the value of fvdef so that the next enum value is
+ tagged even though the one before it did not end in a
+ comma. */
+ if (fvdef == vignore && instruct && parlev == 0)
+ {
+ if (strneq (cp, "#if", 3) || strneq (cp, "#el", 3))
+ fvdef = fvnone;
+ }
+ }
} /* if (definedef == dnone) */
continue;
case '[':
@@ -3507,7 +3522,10 @@ C_entries (int c_ext, FILE *inf)
case fstartlist:
case finlist:
case fignore:
+ break;
case vignore:
+ if (instruct && parlev == 0)
+ fvdef = fvnone;
break;
case fdefunname:
fvdef = fignore;
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index 58bbdb8..1cc11b4 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -154,6 +154,7 @@
(declare-function math-parse-date "calc-forms" (math-pd-str))
(declare-function math-lessp "calc-ext" (a b))
(declare-function math-compare "calc-ext" (a b))
+(declare-function math-zerop "calc-misc" (a))
(declare-function calc-embedded-finish-command "calc-embed" ())
(declare-function calc-embedded-select-buffer "calc-embed" ())
(declare-function calc-embedded-mode-line-change "calc-embed" ())
diff --git a/lisp/cedet/semantic/symref.el b/lisp/cedet/semantic/symref.el
index 10293d9..2c5e3ba 100644
--- a/lisp/cedet/semantic/symref.el
+++ b/lisp/cedet/semantic/symref.el
@@ -472,8 +472,12 @@ buffers that were opened."
(goto-char (point-min))
(forward-line (1- line))
- ;; Search forward for the matching text
- (when (re-search-forward (regexp-quote searchtxt)
+ ;; Search forward for the matching text.
+ ;; FIXME: This still fails if the regexp uses something specific
+ ;; to the extended syntax, like grouping.
+ (when (re-search-forward (if (memq searchtype '(regexp tagregexp))
+ searchtxt
+ (regexp-quote searchtxt))
(point-at-eol)
t)
(goto-char (match-beginning 0))
diff --git a/lisp/cedet/semantic/symref/grep.el
b/lisp/cedet/semantic/symref/grep.el
index 3fa1c5f..6325eb4 100644
--- a/lisp/cedet/semantic/symref/grep.el
+++ b/lisp/cedet/semantic/symref/grep.el
@@ -141,7 +141,7 @@ This shell should support pipe redirect syntax."
"Perform a search with Grep."
;; Grep doesn't support some types of searches.
(let ((st (oref tool :searchtype)))
- (when (not (eq st 'symbol))
+ (when (not (memq st '(symbol regexp)))
(error "Symref impl GREP does not support searchtype of %s" st))
)
;; Find the root of the project, and do a find-grep...
@@ -150,13 +150,19 @@ This shell should support pipe redirect syntax."
(filepattern (semantic-symref-derive-find-filepatterns))
;; Grep based flags.
(grepflags (cond ((eq (oref tool :resulttype) 'file)
- "-l ")
- (t "-n ")))
- (greppat (cond ((eq (oref tool :searchtype) 'regexp)
- (oref tool searchfor))
- (t
- (shell-quote-argument
- (concat "\\<" (oref tool searchfor) "\\>")))))
+ "-l ")
+ ((eq (oref tool :searchtype) 'regexp)
+ "-nE ")
+ (t "-n ")))
+ (greppat (shell-quote-argument
+ (cond ((eq (oref tool :searchtype) 'regexp)
+ (oref tool searchfor))
+ (t
+ ;; Can't use the word boundaries: Grep
+ ;; doesn't always agrees with the language
+ ;; syntax on those.
+ (format "\\(^\\|\\W\\)%s\\(\\W\\|$\\)"
+ (oref tool searchfor))))))
;; Misc
(b (get-buffer-create "*Semantic SymRef*"))
(ans nil)
diff --git a/lisp/cedet/semantic/symref/list.el
b/lisp/cedet/semantic/symref/list.el
index c99fc5f..f72499b 100644
--- a/lisp/cedet/semantic/symref/list.el
+++ b/lisp/cedet/semantic/symref/list.el
@@ -84,9 +84,13 @@ This command uses the currently configured references tool
within the
current project to find references to the input SYM. The
references are the organized by file and the name of the function
they are used in.
-Display the references in`semantic-symref-results-mode'."
- (interactive (list (semantic-tag-name (semantic-complete-read-tag-buffer-deep
- "Symrefs for: "))))
+Display the references in `semantic-symref-results-mode'."
+ (interactive (list (let ((tag (semantic-current-tag)))
+ (read-string " Symrefs for: " nil nil
+ (when tag
+ (regexp-quote (semantic-tag-name
tag)))))))
+ ;; FIXME: Shouldn't the input be in Emacs regexp format, for
+ ;; consistency? Converting it to extended is not hard.
(semantic-fetch-tags)
(message "Gathering References...")
;; Gather results and tags
diff --git a/lisp/cedet/srecode/dictionary.el b/lisp/cedet/srecode/dictionary.el
index 97d3310..27e730f 100644
--- a/lisp/cedet/srecode/dictionary.el
+++ b/lisp/cedet/srecode/dictionary.el
@@ -195,8 +195,8 @@ associated with a buffer or parent."
initfrombuff t)))
;; Create the new dictionary object.
- (let ((dict (srecode-dictionary
- major-mode
+ (let ((dict (make-instance
+ 'srecode-dictionary
:buffer buffer
:parent parent
:namehash (make-hash-table :test 'equal
diff --git a/lisp/cedet/srecode/insert.el b/lisp/cedet/srecode/insert.el
index 0c13ee5..c2a70fe 100644
--- a/lisp/cedet/srecode/insert.el
+++ b/lisp/cedet/srecode/insert.el
@@ -35,7 +35,6 @@
(require 'srecode/args)
(require 'srecode/filters)
-(defvar srecode-template-inserter-point)
(declare-function srecode-overlaid-activate "srecode/fields")
(declare-function srecode-template-inserted-region "srecode/fields")
@@ -145,7 +144,7 @@ has set everything up already."
)
(set-buffer standard-output)
(setq end-mark (point-marker))
- (goto-char (oref srecode-template-inserter-point point)))
+ (goto-char (oref-default 'srecode-template-inserter-point point)))
(oset-default 'srecode-template-inserter-point point eieio-unbound)
;; Return the end-mark.
@@ -264,13 +263,12 @@ Optional argument TEMP is the template that is getting
its arguments resolved."
"Push the srecoder template ST onto the active stack."
(oset st active (cons st (oref st active))))
-(cl-defmethod srecode-pop ((st (subclass srecode-template)))
- "Pop the srecoder template ST onto the active stack.
-ST can be a class, or an object."
+(cl-defmethod srecode-pop ((st srecode-template))
+ "Pop the srecoder template ST onto the active stack."
(oset st active (cdr (oref st active))))
-(cl-defmethod srecode-peek ((st (subclass srecode-template)))
- "Fetch the topmost active template record. ST can be a class."
+(cl-defmethod srecode-peek ((st srecode-template))
+ "Fetch the topmost active template record."
(car (oref st active)))
(cl-defmethod srecode-insert-method ((st srecode-template) dictionary)
@@ -363,7 +361,7 @@ occur in your template.")
((stringp i)
(princ i))))))
-(cl-defmethod srecode-dump ((ins srecode-template-inserter-newline) indent)
+(cl-defmethod srecode-dump ((ins srecode-template-inserter-newline) _indent)
"Dump the state of the SRecode template inserter INS."
(cl-call-next-method)
(when (oref ins hard)
@@ -425,8 +423,8 @@ Specify the :blank argument to enable this inserter.")
)
"Allow comments within template coding. This inserts nothing.")
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass
srecode-template-inserter-comment))
- escape-start escape-end)
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass
srecode-template-inserter-comment))
+ escape-start escape-end)
"Insert an example using inserter INS.
Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
(princ " ")
@@ -436,8 +434,8 @@ Arguments ESCAPE-START and ESCAPE-END are the current
escape sequences in use."
(terpri)
)
-(cl-defmethod srecode-insert-method ((sti srecode-template-inserter-comment)
- dictionary)
+(cl-defmethod srecode-insert-method ((_sti srecode-template-inserter-comment)
+ _dictionary)
"Don't insert anything for comment macros in STI."
nil)
@@ -491,7 +489,7 @@ If SECONDNAME is nil, return VALUE."
(setq val (srecode-insert-variable-secondname-handler
sti dictionary val fcnpart)))
;; Compound data value
- ((srecode-dictionary-compound-value-child-p val)
+ ((cl-typep val 'srecode-dictionary-compound-value)
;; Force FCN to be a symbol
(when fcnpart (setq fcnpart (read fcnpart)))
;; Convert compound value to a string with the fcn.
@@ -502,7 +500,7 @@ If SECONDNAME is nil, return VALUE."
(setq do-princ nil)))
;; Dictionaries... not allowed in this style
- ((srecode-dictionary-child-p val)
+ ((cl-typep val 'srecode-dictionary)
(srecode-insert-report-error
dictionary
"Macro %s cannot insert a dictionary - use section macros instead"
@@ -661,7 +659,7 @@ Use DICTIONARY to resolve values."
;; across multiple locations.
compound-value))
-(cl-defmethod srecode-dump ((ins srecode-template-inserter-ask) indent)
+(cl-defmethod srecode-dump ((ins srecode-template-inserter-ask) _indent)
"Dump the state of the SRecode template inserter INS."
(cl-call-next-method)
(princ " : \"")
@@ -682,7 +680,7 @@ to 10 characters, with spaces added to the left. Use
`right' for adding
spaces to the right.")
(cl-defmethod srecode-insert-variable-secondname-handler
- ((sti srecode-template-inserter-width) dictionary value width)
+ ((_sti srecode-template-inserter-width) dictionary value width)
"For VALUE handle WIDTH behaviors for this variable inserter.
Return the result as a string.
By default, treat as a function name."
@@ -714,8 +712,8 @@ By default, treat as a function name."
(concat padchars value)
(concat value padchars))))))
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass
srecode-template-inserter-width))
- escape-start escape-end)
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass
srecode-template-inserter-width))
+ escape-start escape-end)
"Insert an example using inserter INS.
Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
(princ " ")
@@ -750,8 +748,8 @@ The cursor is placed at the ^ macro after insertion.
Some inserter macros, such as `srecode-template-inserter-include-wrap'
will place text at the ^ macro from the included macro.")
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass
srecode-template-inserter-point))
- escape-start escape-end)
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass
srecode-template-inserter-point))
+ escape-start escape-end)
"Insert an example using inserter INS.
Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
(princ " ")
@@ -787,8 +785,8 @@ generalized marker will do something else. See
"Wrap a section of a template under the control of a macro."
:abstract t)
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass
srecode-template-inserter-subtemplate))
- escape-start escape-end)
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass
srecode-template-inserter-subtemplate))
+ escape-start escape-end)
"Insert an example using inserter INS.
Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
(cl-call-next-method)
@@ -805,7 +803,7 @@ Arguments ESCAPE-START and ESCAPE-END are the current
escape sequences in use."
dict slot)
"Insert a subtemplate for the inserter STI with dictionary DICT."
;; Make sure that only dictionaries are used.
- (unless (srecode-dictionary-child-p dict)
+ (unless (cl-typep dict 'srecode-dictionary)
(srecode-insert-report-error
dict
"Only section dictionaries allowed for `%s'"
@@ -889,8 +887,8 @@ Return the remains of INPUT."
"All template segments between the section-start and section-end
are treated specially.")
-(cl-defmethod srecode-insert-method ((sti
srecode-template-inserter-section-end)
- dictionary)
+(cl-defmethod srecode-insert-method ((_sti
srecode-template-inserter-section-end)
+ _dictionary)
"Insert the STI inserter."
)
@@ -912,7 +910,7 @@ are treated specially.")
The included template will have additional dictionary entries from the
subdictionary
stored specified by this macro.")
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass
srecode-template-inserter-include))
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass
srecode-template-inserter-include))
escape-start escape-end)
"Insert an example using inserter INS.
Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
@@ -1017,7 +1015,7 @@ stored specified by this macro. If the included macro
includes a ^ macro,
then the text between this macro and the end macro will be inserted at
the ^ macro.")
-(cl-defmethod srecode-inserter-prin-example ((ins (subclass
srecode-template-inserter-include-wrap))
+(cl-defmethod srecode-inserter-prin-example ((_ins (subclass
srecode-template-inserter-include-wrap))
escape-start escape-end)
"Insert an example using inserter INS.
Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index b4e2dc0..4dcb519 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -413,12 +413,15 @@ into the minibuffer."
;; Now the original list FILES has been put back as it was.
(nconc past pending))))
+(defvar lpr-printer-switch)
+
;;;###autoload
(defun dired-do-print (&optional arg)
"Print the marked (or next ARG) files.
Uses the shell command coming from variables `lpr-command' and
`lpr-switches' as default."
(interactive "P")
+ (require 'lpr)
(let* ((file-list (dired-get-marked-files t arg))
(lpr-switches
(if (and (stringp printer-name)
diff --git a/lisp/dired.el b/lisp/dired.el
index cc16c8c..ca13900 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3889,7 +3889,7 @@ Ask means pop up a menu for the user to select one of
copy, move or link."
;;; Start of automatically extracted autoloads.
-;;;### (autoloads nil "dired-aux" "dired-aux.el"
"65f8aa57ace423283926d92dff903ca7")
+;;;### (autoloads nil "dired-aux" "dired-aux.el"
"8820677763cb69eef827e38b86d35f47")
;;; Generated autoloads from dired-aux.el
(autoload 'dired-diff "dired-aux" "\
diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el
index 851b3bf..0660125 100644
--- a/lisp/emacs-lisp/chart.el
+++ b/lisp/emacs-lisp/chart.el
@@ -280,7 +280,7 @@ START and END represent the boundary."
"Draw axis information based upon a range to be spread along the edge.
A is the chart to draw. DIR is the direction.
MARGIN, ZONE, START, and END specify restrictions in chart space."
- (call-next-method)
+ (cl-call-next-method)
;; We prefer about 5 spaces between each value
(let* ((i (car (oref a bounds)))
(e (cdr (oref a bounds)))
@@ -333,7 +333,7 @@ Automatically compensates for direction."
"Draw axis information based upon A range to be spread along the edge.
Optional argument DIR is the direction of the chart.
Optional arguments MARGIN, ZONE, START and END specify boundaries of the
drawing."
- (call-next-method)
+ (cl-call-next-method)
;; We prefer about 5 spaces between each value
(let* ((i 0)
(s (oref a items))
diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
index fb11a3e..f6595d3 100644
--- a/lisp/emacs-lisp/cl-generic.el
+++ b/lisp/emacs-lisp/cl-generic.el
@@ -54,6 +54,15 @@
;; - The standard method combination supports ":extra STRING" qualifiers
;; which simply allows adding more methods for the same
;; specializers&qualifiers.
+;; - Methods can dispatch on the context. For that, a method needs to specify
+;; context arguments, introduced by `&context' (which need to come right
+;; after the mandatory arguments and before anything like
+;; &optional/&rest/&key). Each context argument is given as (EXP
SPECIALIZER)
+;; which means that EXP is taken as an expression which computes some context
+;; and this value is then used to dispatch.
+;; E.g. (foo &context (major-mode (eql c-mode))) is an arglist specifying
+;; that this method will only be applicable when `major-mode' has value
+;; `c-mode'.
;; Efficiency considerations: overall, I've made an effort to make this fairly
;; efficient for the expected case (e.g. no constant redefinition of methods).
@@ -222,17 +231,12 @@ BODY, if present, is used as the body of a default method.
,@(mapcar (lambda (method) `(cl-defmethod ,name ,@method))
(nreverse methods)))))
-(defun cl--generic-mandatory-args (args)
- (let ((res ()))
- (while (not (memq (car args) '(nil &rest &optional &key)))
- (push (pop args) res))
- (nreverse res)))
-
;;;###autoload
(defun cl-generic-define (name args options)
- (let ((generic (cl-generic-ensure-function name))
- (mandatory (cl--generic-mandatory-args args))
- (apo (assq :argument-precedence-order options)))
+ (pcase-let* ((generic (cl-generic-ensure-function name))
+ (`(,spec-args . ,_) (cl--generic-split-args args))
+ (mandatory (mapcar #'car spec-args))
+ (apo (assq :argument-precedence-order options)))
(setf (cl--generic-dispatches generic) nil)
(when apo
(dolist (arg (cdr apo))
@@ -259,52 +263,70 @@ This macro can only be used within the lexical scope of a
cl-generic method."
(and (memq sexp vars) (not (memq sexp res)) (push sexp res))
res))
- (defun cl--generic-lambda (args body)
- "Make the lambda expression for a method with ARGS and BODY."
+ (defun cl--generic-split-args (args)
+ "Return (SPEC-ARGS . PLAIN-ARGS)."
(let ((plain-args ())
(specializers nil)
(mandatory t))
(dolist (arg args)
(push (pcase arg
((or '&optional '&rest '&key) (setq mandatory nil) arg)
- ((and `(,name . ,type) (guard mandatory))
+ ('&context
+ (unless mandatory
+ (error "&context not immediately after mandatory args"))
+ (setq mandatory 'context) nil)
+ ((let 'nil mandatory) arg)
+ ((let 'context mandatory)
+ (unless (consp arg)
+ (error "Invalid &context arg: %S" arg))
+ (push `((&context . ,(car arg)) . ,(cadr arg)) specializers)
+ nil)
+ (`(,name . ,type)
(push (cons name (car type)) specializers)
name)
- (_ arg))
+ (_
+ (push (cons arg t) specializers)
+ arg))
plain-args))
- (setq plain-args (nreverse plain-args))
- (let ((fun `(cl-function (lambda ,plain-args ,@body)))
- (macroenv (cons `(cl-generic-current-method-specializers
- . ,(lambda () specializers))
- macroexpand-all-environment)))
- (require 'cl-lib) ;Needed to expand `cl-flet' and `cl-function'.
- ;; First macroexpand away the cl-function stuff (e.g. &key and
- ;; destructuring args, `declare' and whatnot).
- (pcase (macroexpand fun macroenv)
- (`#'(lambda ,args . ,body)
- (let* ((parsed-body (macroexp-parse-body body))
- (cnm (make-symbol "cl--cnm"))
- (nmp (make-symbol "cl--nmp"))
- (nbody (macroexpand-all
- `(cl-flet ((cl-call-next-method ,cnm)
- (cl-next-method-p ,nmp))
- ,@(cdr parsed-body))
- macroenv))
- ;; FIXME: Rather than `grep' after the fact, the
- ;; macroexpansion should directly set some flag when cnm
- ;; is used.
- ;; FIXME: Also, optimize the case where call-next-method is
- ;; only called with explicit arguments.
- (uses-cnm (cl--generic-fgrep (list cnm nmp) nbody)))
- (cons (not (not uses-cnm))
- `#'(lambda (,@(if uses-cnm (list cnm)) ,@args)
- ,@(car parsed-body)
- ,(if (not (memq nmp uses-cnm))
- nbody
- `(let ((,nmp (lambda ()
- (cl--generic-isnot-nnm-p ,cnm))))
- ,nbody))))))
- (f (error "Unexpected macroexpansion result: %S" f)))))))
+ (cons (nreverse specializers)
+ (nreverse (delq nil plain-args)))))
+
+ (defun cl--generic-lambda (args body)
+ "Make the lambda expression for a method with ARGS and BODY."
+ (pcase-let* ((`(,spec-args . ,plain-args)
+ (cl--generic-split-args args))
+ (fun `(cl-function (lambda ,plain-args ,@body)))
+ (macroenv (cons `(cl-generic-current-method-specializers
+ . ,(lambda () spec-args))
+ macroexpand-all-environment)))
+ (require 'cl-lib) ;Needed to expand `cl-flet' and `cl-function'.
+ ;; First macroexpand away the cl-function stuff (e.g. &key and
+ ;; destructuring args, `declare' and whatnot).
+ (pcase (macroexpand fun macroenv)
+ (`#'(lambda ,args . ,body)
+ (let* ((parsed-body (macroexp-parse-body body))
+ (cnm (make-symbol "cl--cnm"))
+ (nmp (make-symbol "cl--nmp"))
+ (nbody (macroexpand-all
+ `(cl-flet ((cl-call-next-method ,cnm)
+ (cl-next-method-p ,nmp))
+ ,@(cdr parsed-body))
+ macroenv))
+ ;; FIXME: Rather than `grep' after the fact, the
+ ;; macroexpansion should directly set some flag when cnm
+ ;; is used.
+ ;; FIXME: Also, optimize the case where call-next-method is
+ ;; only called with explicit arguments.
+ (uses-cnm (cl--generic-fgrep (list cnm nmp) nbody)))
+ (cons (not (not uses-cnm))
+ `#'(lambda (,@(if uses-cnm (list cnm)) ,@args)
+ ,@(car parsed-body)
+ ,(if (not (memq nmp uses-cnm))
+ nbody
+ `(let ((,nmp (lambda ()
+ (cl--generic-isnot-nnm-p ,cnm))))
+ ,nbody))))))
+ (f (error "Unexpected macroexpansion result: %S" f))))))
;;;###autoload
@@ -375,21 +397,26 @@ which case this method will be invoked when the argument
is `eql' to VAL.
;;;###autoload
(defun cl-generic-define-method (name qualifiers args uses-cnm function)
- (let* ((generic (cl-generic-ensure-function name))
- (mandatory (cl--generic-mandatory-args args))
- (specializers
- (mapcar (lambda (arg) (if (consp arg) (cadr arg) t)) mandatory))
- (method (cl--generic-make-method
- specializers qualifiers uses-cnm function))
- (mt (cl--generic-method-table generic))
- (me (cl--generic-member-method specializers qualifiers mt))
- (dispatches (cl--generic-dispatches generic))
- (i 0))
- (dolist (specializer specializers)
- (let* ((generalizers (cl-generic-generalizers specializer))
- (x (assq i dispatches)))
+ (pcase-let*
+ ((generic (cl-generic-ensure-function name))
+ (`(,spec-args . ,_) (cl--generic-split-args args))
+ (specializers (mapcar (lambda (spec-arg)
+ (if (eq '&context (car-safe (car spec-arg)))
+ spec-arg (cdr spec-arg)))
+ spec-args))
+ (method (cl--generic-make-method
+ specializers qualifiers uses-cnm function))
+ (mt (cl--generic-method-table generic))
+ (me (cl--generic-member-method specializers qualifiers mt))
+ (dispatches (cl--generic-dispatches generic))
+ (i 0))
+ (dolist (spec-arg spec-args)
+ (let* ((key (if (eq '&context (car-safe (car spec-arg)))
+ (car spec-arg) i))
+ (generalizers (cl-generic-generalizers (cdr spec-arg)))
+ (x (assoc key dispatches)))
(unless x
- (setq x (cons i (cl-generic-generalizers t)))
+ (setq x (cons key (cl-generic-generalizers t)))
(setf (cl--generic-dispatches generic)
(setq dispatches (cons x dispatches))))
(dolist (generalizer generalizers)
@@ -427,6 +454,7 @@ which case this method will be invoked when the argument is
`eql' to VAL.
(defun cl--generic-get-dispatcher (dispatch)
(cl--generic-with-memoization
(gethash dispatch cl--generic-dispatchers)
+ ;; (message "cl--generic-get-dispatcher (%S)" dispatch)
(let* ((dispatch-arg (car dispatch))
(generalizers (cdr dispatch))
(lexical-binding t)
@@ -437,13 +465,14 @@ which case this method will be invoked when the argument
is `eql' to VAL.
'arg))
generalizers))
(typescodes
- (mapcar (lambda (generalizer)
- `(funcall
',(cl--generic-generalizer-specializers-function
- generalizer)
- ,(funcall
(cl--generic-generalizer-tagcode-function
- generalizer)
- 'arg)))
- generalizers))
+ (mapcar
+ (lambda (generalizer)
+ `(funcall ',(cl--generic-generalizer-specializers-function
+ generalizer)
+ ,(funcall (cl--generic-generalizer-tagcode-function
+ generalizer)
+ 'arg)))
+ generalizers))
(tag-exp
;; Minor optimization: since this tag-exp is
;; only used to lookup the method-cache, it
@@ -452,23 +481,30 @@ which case this method will be invoked when the argument
is `eql' to VAL.
`(or ,@(if (macroexp-const-p (car (last tagcodes)))
(butlast tagcodes)
tagcodes)))
- (extraargs ()))
- (dotimes (_ dispatch-arg)
- (push (make-symbol "arg") extraargs))
+ (fixedargs '(arg))
+ (dispatch-idx dispatch-arg)
+ (bindings nil))
+ (when (eq '&context (car-safe dispatch-arg))
+ (setq bindings `((arg ,(cdr dispatch-arg))))
+ (setq fixedargs nil)
+ (setq dispatch-idx 0))
+ (dotimes (i dispatch-idx)
+ (push (make-symbol (format "arg%d" (- dispatch-idx i 1))) fixedargs))
;; FIXME: For generic functions with a single method (or with 2 methods,
;; one of which always matches), using a tagcode + hash-table is
;; overkill: better just use a `cl-typep' test.
(byte-compile
`(lambda (generic dispatches-left methods)
(let ((method-cache (make-hash-table :test #'eql)))
- (lambda (,@extraargs arg &rest args)
- (apply (cl--generic-with-memoization
- (gethash ,tag-exp method-cache)
- (cl--generic-cache-miss
- generic ',dispatch-arg dispatches-left methods
- ,(if (cdr typescodes)
- `(append ,@typescodes) (car typescodes))))
- ,@extraargs arg args))))))))
+ (lambda (,@fixedargs &rest args)
+ (let ,bindings
+ (apply (cl--generic-with-memoization
+ (gethash ,tag-exp method-cache)
+ (cl--generic-cache-miss
+ generic ',dispatch-arg dispatches-left methods
+ ,(if (cdr typescodes)
+ `(append ,@typescodes) (car typescodes))))
+ ,@fixedargs args)))))))))
(defun cl--generic-make-function (generic)
(cl--generic-make-next-function generic
@@ -593,8 +629,11 @@ FUN is the function that should be called when METHOD calls
dispatch-arg dispatches-left methods-left types)
(let ((methods '()))
(dolist (method methods-left)
- (let* ((specializer (or (nth dispatch-arg
- (cl--generic-method-specializers method))
+ (let* ((specializer (or (if (integerp dispatch-arg)
+ (nth dispatch-arg
+ (cl--generic-method-specializers
method))
+ (cdr (assoc dispatch-arg
+ (cl--generic-method-specializers
method))))
t))
(m (member specializer types)))
(when m
@@ -830,6 +869,17 @@ Can only be used from within the lexical body of a primary
or around method."
80 (lambda (name) `(gethash (car-safe ,name) cl--generic-head-used))
(lambda (tag) (if (eq (car-safe tag) 'head) (list tag)))))
+;; Pre-fill the cl--generic-dispatchers table.
+;; We have two copies of `(0 ...)' but we can't share them via `let' because
+;; they're not used at the same time (one is compile-time, one is run-time).
+(puthash `(0 ,cl--generic-head-generalizer ,cl--generic-t-generalizer)
+ (eval-when-compile
+ (unless (fboundp 'cl--generic-get-dispatcher)
+ (require 'cl-generic))
+ (cl--generic-get-dispatcher
+ `(0 ,cl--generic-head-generalizer ,cl--generic-t-generalizer)))
+ cl--generic-dispatchers)
+
(cl-defmethod cl-generic-generalizers :extra "head" (specializer)
"Support for the `(head VAL)' specializers."
;; We have to implement `head' here using the :extra qualifier,
@@ -948,40 +998,6 @@ Can only be used from within the lexical body of a primary
or around method."
(list cl--generic-typeof-generalizer)))
(cl-call-next-method)))
-;;; Just for kicks: dispatch on major-mode
-;;
-;; Here's how you'd use it:
-;; (cl-defmethod foo ((x (major-mode text-mode)) y z) ...)
-;; And then
-;; (foo 'major-mode toto titi)
-;;
-;; FIXME: Better would be to do that via dispatch on an "implicit argument".
-;; E.g. (cl-defmethod foo (y z &context (major-mode text-mode)) ...)
-
-;; (defvar cl--generic-major-modes (make-hash-table :test #'eq))
-;;
-;; (add-function :before-until cl-generic-generalizer-function
-;; #'cl--generic-major-mode-tagcode)
-;; (defun cl--generic-major-mode-tagcode (type name)
-;; (if (eq 'major-mode (car-safe type))
-;; `(50 . (if (eq ,name 'major-mode)
-;; (cl--generic-with-memoization
-;; (gethash major-mode cl--generic-major-modes)
-;; `(cl--generic-major-mode . ,major-mode))))))
-;;
-;; (add-function :before-until cl-generic-tag-types-function
-;; #'cl--generic-major-mode-types)
-;; (defun cl--generic-major-mode-types (tag)
-;; (when (eq (car-safe tag) 'cl--generic-major-mode)
-;; (if (eq tag 'fundamental-mode) '(fundamental-mode t)
-;; (let ((types `((major-mode ,(cdr tag)))))
-;; (while (get (car types) 'derived-mode-parent)
-;; (push (list 'major-mode (get (car types) 'derived-mode-parent))
-;; types))
-;; (unless (eq 'fundamental-mode (car types))
-;; (push '(major-mode fundamental-mode) types))
-;; (nreverse types)))))
-
;; Local variables:
;; generated-autoload-file: "cl-loaddefs.el"
;; End:
diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el
index 7f98730..02b89e0 100644
--- a/lisp/emacs-lisp/eieio-opt.el
+++ b/lisp/emacs-lisp/eieio-opt.el
@@ -74,6 +74,9 @@ Argument CH-PREFIX is another character prefix to display."
;;; CLASS COMPLETION / DOCUMENTATION
+;; Called via help-fns-describe-function-functions.
+(declare-function help-fns-short-filename "help-fns" (filename))
+
;;;###autoload
(defun eieio-help-class (class)
"Print help description for CLASS.
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index 26418e9..f6ffa3d 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -978,7 +978,7 @@ Optional argument GROUP is the sub-group of slots to
display.
;;;***
-;;;### (autoloads nil "eieio-opt" "eieio-opt.el"
"3005b815c6b30eccbf0642170b3f82a5")
+;;;### (autoloads nil "eieio-opt" "eieio-opt.el"
"59cee62a4829ace9bb4a6526442d2b3c")
;;; Generated autoloads from eieio-opt.el
(autoload 'eieio-browse "eieio-opt" "\
diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el
index 6955ce8..81d0b83 100644
--- a/lisp/emacs-lisp/package-x.el
+++ b/lisp/emacs-lisp/package-x.el
@@ -156,6 +156,7 @@ DESCRIPTION is the text of the news item."
archive-url))
(declare-function lm-commentary "lisp-mnt" (&optional file))
+(defvar tar-data-buffer)
(defun package-upload-buffer-internal (pkg-desc extension &optional
archive-url)
"Upload a package whose contents are in the current buffer.
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 7968ecd..6156313 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -2457,7 +2457,9 @@ of these dependencies, similar to the list returned by
(t "disabled"))))
(dir ;One of the installed packages.
(cond
- ((not (file-exists-p (package-desc-dir pkg-desc))) "deleted")
+ ((not (file-exists-p dir)) "deleted")
+ ;; Not inside `package-user-dir'.
+ ((not (file-in-directory-p dir package-user-dir)) "external")
((eq pkg-desc (cadr (assq name package-alist)))
(if (not signed) "unsigned"
(if (package--user-selected-p name)
@@ -2662,6 +2664,7 @@ Return (PKG-DESC [NAME VERSION STATUS DOC])."
(let* ((status (package-desc-status pkg))
(face (pcase status
(`"built-in" 'font-lock-builtin-face)
+ (`"external" 'font-lock-builtin-face)
(`"available" 'default)
(`"avail-obso" 'font-lock-comment-face)
(`"new" 'bold)
@@ -2977,6 +2980,8 @@ Optional argument NOQUERY non-nil means do not ask the
user to confirm."
((string= sB "unsigned") nil)
((string= sA "held") t)
((string= sB "held") nil)
+ ((string= sA "external") t)
+ ((string= sB "external") nil)
((string= sA "built-in") t)
((string= sB "built-in") nil)
((string= sA "obsolete") t)
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index f1633ce..5553de6 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -4,7 +4,7 @@
;; Author: Nicolas Petton <address@hidden>
;; Keywords: sequences
-;; Version: 1.6
+;; Version: 1.7
;; Package: seq
;; Maintainer: address@hidden
@@ -40,11 +40,6 @@
;;
;; All functions are tested in test/automated/seq-tests.el
-;;; TODO:
-
-;; - Add a pcase macro named using `pcase-defmacro' that `seq-let'
-;; - could wrap.
-
;;; Code:
(defmacro seq-doseq (spec &rest body)
@@ -70,13 +65,38 @@ Evaluate BODY with VAR bound to each element of SEQ, in
turn.
(pop ,index))))
,@body)))))
-(defmacro seq-let (args seq &rest body)
- "Bind the variables in ARGS to the elements of SEQ then evaluate BODY."
- (declare (indent 2) (debug t))
- (let ((seq-var (make-symbol "seq")))
- `(let* ((,seq-var ,seq)
- ,@(seq--make-bindings args seq-var))
- ,@body)))
+(if (fboundp 'pcase-defmacro)
+ ;; Implementation of `seq-let' based on a `pcase'
+ ;; pattern. Requires Emacs>=25.1.
+ (progn
+ (pcase-defmacro seq (&rest args)
+ "pcase pattern matching sequence elements.
+Matches if the object is a sequence (list, string or vector), and
+binds each element of ARGS to the corresponding element of the
+sequence."
+ `(and (pred seq-p)
+ ,@(seq--make-pcase-bindings args)))
+
+ (defmacro seq-let (args seq &rest body)
+ "Bind the variables in ARGS to the elements of SEQ then evaluate BODY.
+
+ARGS can also include the `&rest' marker followed by a variable
+name to be bound to the rest of SEQ."
+ (declare (indent 2) (debug t))
+ `(pcase-let ((,(seq--make-pcase-patterns args) ,seq))
+ ,@body)))
+
+ ;; Implementation of `seq-let' compatible with Emacs<25.1.
+ (defmacro seq-let (args seq &rest body)
+ "Bind the variables in ARGS to the elements of SEQ then evaluate BODY.
+
+ARGS can also include the `&rest' marker followed by a variable
+name to be bound to the rest of SEQ."
+ (declare (indent 2) (debug t))
+ (let ((seq-var (make-symbol "seq")))
+ `(let* ((,seq-var ,seq)
+ ,@(seq--make-bindings args seq-var))
+ ,@body))))
(defun seq-drop (seq n)
"Return a subsequence of SEQ without its first N elements.
@@ -346,19 +366,43 @@ This is an optimization for lists in `seq-take-while'."
(setq n (+ 1 n)))
n))
-(defun seq--activate-font-lock-keywords ()
- "Activate font-lock keywords for some symbols defined in seq."
- (font-lock-add-keywords 'emacs-lisp-mode
- '("\\<seq-doseq\\>" "\\<seq-let\\>")))
+(defun seq--make-pcase-bindings (args)
+ "Return a list of bindings of the variables in ARGS to the elements of a
sequence."
+ (let ((bindings '())
+ (index 0)
+ (rest-marker nil))
+ (seq-doseq (name args)
+ (unless rest-marker
+ (pcase name
+ (`&rest
+ (progn (push `(app (pcase--flip seq-drop ,index)
+ ,(seq--elt-safe args (1+ index)))
+ bindings)
+ (setq rest-marker t)))
+ (t
+ (push `(app (pcase--flip seq--elt-safe ,index) ,name) bindings))))
+ (setq index (1+ index)))
+ bindings))
+(defun seq--make-pcase-patterns (args)
+ "Return a list of `(seq ...)' pcase patterns from the argument list ARGS."
+ (cons 'seq
+ (seq-map (lambda (elt)
+ (if (seq-p elt)
+ (seq--make-pcase-patterns elt)
+ elt))
+ args)))
+
+;; Helper function for the Backward-compatible version of `seq-let'
+;; for Emacs<25.1.
(defun seq--make-bindings (args seq &optional bindings)
- "Return a list of bindings of the variables in ARGS to the elements of SEQ.
-if BINDINGS is non-nil, append new bindings to it, and
-return BINDINGS."
+ "Return a list of bindings of the variables in ARGS to the elements of a
sequence.
+if BINDINGS is non-nil, append new bindings to it, and return
+BINDINGS."
(let ((index 0)
- (rest-bound nil))
+ (rest-marker nil))
(seq-doseq (name args)
- (unless rest-bound
+ (unless rest-marker
(pcase name
((pred seq-p)
(setq bindings (seq--make-bindings (seq--elt-safe args index)
@@ -368,7 +412,7 @@ return BINDINGS."
(progn (push `(,(seq--elt-safe args (1+ index))
(seq-drop ,seq ,index))
bindings)
- (setq rest-bound t)))
+ (setq rest-marker t)))
(t
(push `(,name (seq--elt-safe ,seq ,index)) bindings))))
(setq index (1+ index)))
@@ -382,6 +426,11 @@ If no element is found, return nil."
(> (seq-length seq) n)))
(seq-elt seq n)))
+(defun seq--activate-font-lock-keywords ()
+ "Activate font-lock keywords for some symbols defined in seq."
+ (font-lock-add-keywords 'emacs-lisp-mode
+ '("\\<seq-doseq\\>" "\\<seq-let\\>")))
+
(defalias 'seq-copy #'copy-sequence)
(defalias 'seq-elt #'elt)
(defalias 'seq-length #'length)
diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el
index 78a6dc9..bd178fa 100644
--- a/lisp/emacs-lisp/subr-x.el
+++ b/lisp/emacs-lisp/subr-x.el
@@ -120,7 +120,8 @@ Argument BINDINGS is a list of tuples whose car is a symbol
to be
bound and (optionally) used in THEN, and its cadr is a sexp to be
evalled to set symbol's value. In the special case you only want
to bind a single value, BINDINGS can just be a plain tuple."
- (declare (indent 2) (debug ((&rest (symbolp form)) form body)))
+ (declare (indent 2)
+ (debug ([&or (&rest (symbolp form)) (symbolp form)] form body)))
(when (and (<= (length bindings) 2)
(not (listp (car bindings))))
;; Adjust the single binding case
diff --git a/lisp/ffap.el b/lisp/ffap.el
index 452275a..d78fd4c 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -1288,7 +1288,7 @@ which may actually result in an URL rather than a
filename."
nil
nil
(if dir (cons guess (length dir)) guess)
- (list 'file-name-history)
+ 'file-name-history
(and buffer-file-name
(abbreviate-file-name buffer-file-name)))))
;; Remove the special handler manually. We used to just let-bind
diff --git a/lisp/frame.el b/lisp/frame.el
index e8a8982..0c1fb38 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -217,6 +217,7 @@ This function runs the hook `focus-out-hook'."
"Non-nil means function `frame-notice-user-settings' wasn't run yet.")
(declare-function tool-bar-mode "tool-bar" (&optional arg))
+(declare-function tool-bar-height "xdisp.c" (&optional frame pixelwise))
(defalias 'tool-bar-lines-needed 'tool-bar-height)
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 4b06cc0..b75d9ef 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1578,6 +1578,7 @@ SPEC is a predicate specifier that contains stuff like
`or', `and',
(prompt &optional default require-match
_predicate start matches-set))
(defvar iswitchb-temp-buflist)
+(defvar iswitchb-mode)
(defun gnus-iswitchb-completing-read (prompt collection &optional require-match
initial-input history def)
diff --git a/lisp/help.el b/lisp/help.el
index fb1719a..2b8f642 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -691,7 +691,8 @@ POSITION is as documented in the function `key-binding'."
(defun help--binding-locus (key position)
"Describe in which keymap KEY is defined.
Return a symbol pointing to that keymap if one exists ; otherwise
-return nil."
+return nil. The argument POSITION is as documented in the
+function `key-binding'."
(let ((map (help--key-binding-keymap key t nil position)))
(when map
(catch 'found
diff --git a/lisp/international/iso-transl.el b/lisp/international/iso-transl.el
index 73bcae0..e9fb009 100644
--- a/lisp/international/iso-transl.el
+++ b/lisp/international/iso-transl.el
@@ -1,4 +1,4 @@
-;;; iso-transl.el --- keyboard input definitions for ISO 8859-1 -*- coding:
utf-8 -*-
+;;; iso-transl.el --- keyboard input for ISO 10646 chars -*- coding: utf-8 -*-
;; Copyright (C) 1987, 1993-1999, 2001-2015 Free Software Foundation,
;; Inc.
@@ -36,6 +36,10 @@
;; to make all of the Alt keys autoload, and it is not clear
;; that the dead accent keys SHOULD autoload this package.
+;; This package supports all characters defined by ISO 8859-1, along
+;; with a few other ISO 10646 characters commonly used in English and
+;; basic math.
+
;;; Code:
;;; Provide some binding for startup:
@@ -192,6 +196,31 @@
("~o" . [?õ])
("~t" . [?þ])
("~~" . [?¬])
+ ("_h" . [?‐])
+ ("_H" . [?‑])
+ ("_f" . [?‒])
+ ("_n" . [?–])
+ ("_m" . [?—])
+ ("_q" . [?―])
+ ("[" . [?‘])
+ ("]" . [?’])
+ ("{" . [?“])
+ ("}" . [?”])
+ ("1+" . [?†])
+ ("2+" . [?‡])
+ ("**" . [?•])
+ ("*'" . [?′])
+ ("*\"" . [?″])
+ ("*E" . [?€])
+ ("No" . [?№])
+ ("a<" . [?←])
+ ("a>" . [?→])
+ ("a=" . [?↔])
+ ("_-" . [?−])
+ ("~=" . [?≈])
+ ("/=" . [?≠])
+ ("_<" . [?≤])
+ ("_>" . [?≥])
("' " . "'")
("` " . "`")
("\" " . "\"")
diff --git a/lisp/linum.el b/lisp/linum.el
index de15274..2aac13a 100644
--- a/lisp/linum.el
+++ b/lisp/linum.el
@@ -138,6 +138,9 @@ Linum mode is a buffer-local minor mode."
(mapc #'delete-overlay linum-available)
(setq linum-available nil))))
+;; Behind display-graphic-p test.
+(declare-function font-info "font.c" (name &optional frame))
+
(defun linum--face-width (face)
(let ((info (font-info (face-font face)))
width)
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 1572712..f0c6d87 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -4746,7 +4746,7 @@ With prefix argument N moves forward N messages with
these labels.
;;;***
-;;;### (autoloads nil "rmailmm" "rmailmm.el"
"a17df5ef8968113c8f6a78cf85c82da4")
+;;;### (autoloads nil "rmailmm" "rmailmm.el"
"e5b89eed8afb278cc8881f2208382c7c")
;;; Generated autoloads from rmailmm.el
(autoload 'rmail-mime "rmailmm" "\
diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el
index 00fc25d..3dd57b9 100644
--- a/lisp/mail/rmailmm.el
+++ b/lisp/mail/rmailmm.el
@@ -135,9 +135,10 @@ automatically display the image in the buffer."
(cond ((fboundp 'libxml-parse-html-region) 'rmail-mime-render-html-shr)
((executable-find "lynx") 'rmail-mime-render-html-lynx)
(t nil))
- "Function to convert HTML to text. Called with buffer containing HTML
-extracted from message in a temporary buffer. Converts to text in current
-buffer. If NIL, display HTML source."
+ "Function to convert HTML to text.
+Called with buffer containing HTML extracted from message in a
+temporary buffer. Converts to text in current buffer. If nil,
+display HTML source."
:group 'rmail
:version "25.1"
:type '(choice function (const nil)))
@@ -705,6 +706,9 @@ HEADER is a header component of a MIME-entity object (see
(insert-buffer-substring source-buffer))
(rmail-mime-fix-inserted-faces start)))))))
+(declare-function libxml-parse-html-region "xml.c"
+ (start end &optional base-url discard-comments))
+
(defun rmail-mime-render-html-shr (source-buffer)
(let ((dom (with-current-buffer source-buffer
(libxml-parse-html-region (point-min) (point-max))))
@@ -732,12 +736,12 @@ HEADER is a header component of a MIME-entity object (see
(defun rmail-mime-fix-inserted-faces (start)
(while (< start (point))
(let ((face (get-text-property start 'face))
- (next (next-single-property-change
+ (next (next-single-property-change
start 'face (current-buffer) (point))))
(if face ; anything to do?
(put-text-property start next 'font-lock-face face))
(setq start next))))
-
+
(defun rmail-mime-toggle-button (button)
"Hide or show the body of the MIME-entity associated with BUTTON."
(save-excursion
diff --git a/lisp/net/nsm.el b/lisp/net/nsm.el
index 28253e5..261e5a1 100644
--- a/lisp/net/nsm.el
+++ b/lisp/net/nsm.el
@@ -76,6 +76,8 @@ stored in plain text."
"If non-nil, the connection is opened in a non-interactive context.
This means that no queries should be performed.")
+(declare-function gnutls-peer-status "gnutls.c" (proc))
+
(defun nsm-verify-connection (process host port &optional
save-fingerprint warn-unencrypted)
"Verify the security status of PROCESS that's connected to HOST:PORT.
@@ -122,6 +124,9 @@ unencrypted."
(nsm-check-protocol process host port status settings)
process)))
+(declare-function gnutls-peer-status-warning-describe "gnutls.c"
+ (status-symbol))
+
(defun nsm-check-certificate (process host port status settings)
(let ((warnings (plist-get status :warnings)))
(cond
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index f17ef8e..0ce77b9 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -949,6 +949,9 @@ Return a string with image data."
(search-forward "\r\n\r\n" nil t))
(shr-parse-image-data)))))
+(declare-function libxml-parse-xml-region "xml.c"
+ (start end &optional base-url discard-comments))
+
(defun shr-parse-image-data ()
(let ((data (buffer-substring (point) (point-max)))
(content-type
diff --git a/lisp/play/dunnet.el b/lisp/play/dunnet.el
index 2f4536c..877e5db 100644
--- a/lisp/play/dunnet.el
+++ b/lisp/play/dunnet.el
@@ -3099,7 +3099,7 @@ File not found")))
(defun dun-dos-boot-msg ()
(sleep-for 3)
(dun-mprinc "Current time is ")
- (dun-mprincl (substring (current-time-string) 12 20))
+ (dun-mprincl (format-time-string "%H:%M:%S"))
(dun-mprinc "Enter new time: ")
(dun-read-line)
(if (not dun-batch-mode)
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index 7bc7798..e06b920 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -581,7 +581,7 @@ It can be quoted, or be inside a quoted form."
(declare-function xref-make-elisp-location "xref" (symbol type file))
(declare-function xref-make-bogus-location "xref" (message))
(declare-function xref-make "xref" (description location))
-(declare-function xref-collect-references "xref" (name dir))
+(declare-function xref-collect-matches "xref" (input dir &optional kind))
(defun elisp-xref-find (action id)
(require 'find-func)
@@ -591,7 +591,9 @@ It can be quoted, or be inside a quoted form."
(when sym
(elisp--xref-find-definitions sym))))
(`references
- (elisp--xref-find-references id))
+ (elisp--xref-find-matches id 'symbol))
+ (`matches
+ (elisp--xref-find-matches id 'regexp))
(`apropos
(elisp--xref-find-apropos id))))
@@ -652,12 +654,14 @@ It can be quoted, or be inside a quoted form."
(defvar package-user-dir)
-(defun elisp--xref-find-references (symbol)
+(defun elisp--xref-find-matches (symbol kind)
(let* ((dirs (sort
(mapcar
(lambda (dir)
(file-name-as-directory (expand-file-name dir)))
- ;; FIXME: Why add package-user-dir?
+ ;; It's one level above a number of `load-path'
+ ;; elements (one for each installed package).
+ ;; Save us some process calls.
(cons package-user-dir load-path))
#'string<))
(ref dirs))
@@ -669,7 +673,7 @@ It can be quoted, or be inside a quoted form."
(cl-mapcan
(lambda (dir)
(and (file-exists-p dir)
- (xref-collect-references symbol dir)))
+ (xref-collect-matches symbol dir kind)))
dirs)))
(defun elisp--xref-find-apropos (regexp)
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 6acafdb..7a87377 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -947,6 +947,7 @@ onto a ring and may be popped back to with \\[pop-tag-mark].
Contrast this with the ring of marks gone to by the command.
See documentation of variable `tags-file-name'."
+ (declare (obsolete xref-find-definitions "25.1"))
(interactive (find-tag-interactive "Find tag: "))
(let* ((buf (find-tag-noselect tagname next-p regexp-p))
(pos (with-current-buffer buf (point))))
@@ -2074,25 +2075,27 @@ for \\[find-tag] (which see)."
(defconst etags--xref-limit 1000)
(defvar etags-xref-find-definitions-tag-order '(tag-exact-match-p
- tag-implicit-name-match-p
- tag-symbol-match-p)
+ tag-implicit-name-match-p)
"Tag order used in `etags-xref-find' to look for definitions.")
;;;###autoload
(defun etags-xref-find (action id)
(pcase action
(`definitions (etags--xref-find-definitions id))
- (`references
- (let ((dirs (if tags-table-list
- (mapcar #'file-name-directory tags-table-list)
- ;; If no tags files are loaded, prompt for the dir.
- (list (read-directory-name "In directory: " nil nil t)))))
- (cl-mapcan
- (lambda (dir)
- (xref-collect-references id dir))
- dirs)))
+ (`references (etags--xref-find-matches id 'symbol))
+ (`matches (etags--xref-find-matches id 'regexp))
(`apropos (etags--xref-find-definitions id t))))
+(defun etags--xref-find-matches (input kind)
+ (let ((dirs (if tags-table-list
+ (mapcar #'file-name-directory tags-table-list)
+ ;; If no tags files are loaded, prompt for the dir.
+ (list (read-directory-name "In directory: " nil nil t)))))
+ (cl-mapcan
+ (lambda (dir)
+ (xref-collect-matches input dir kind))
+ dirs)))
+
(defun etags--xref-find-definitions (pattern &optional regexp?)
;; This emulates the behaviour of `find-tag-in-order' but instead of
;; returning one match at a time all matches are returned as list.
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 2e7410a..4b0a028 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -2268,7 +2268,8 @@ banner and the initial prompt are received separately."
(while t
(when (not (accept-process-output process timeout))
(throw 'found nil))
- (when (looking-back regexp (point-min))
+ (when (looking-back
+ regexp (car (python-util-comint-last-prompt)))
(throw 'found t))))))
(defun python-shell-comint-end-of-output-p (output)
diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el
index 8f7705b..e4e9655 100644
--- a/lisp/progmodes/tcl.el
+++ b/lisp/progmodes/tcl.el
@@ -1028,7 +1028,8 @@ Returns nil if line starts inside a string, t if in a
comment."
(with-current-buffer (process-buffer proc)
;; Delete prompt if requested.
(when (marker-buffer inferior-tcl-delete-prompt-marker)
- (delete-region (process-mark proc) inferior-tcl-delete-prompt-marker)
+ (let ((inhibit-read-only t))
+ (delete-region (process-mark proc) inferior-tcl-delete-prompt-marker))
(set-marker inferior-tcl-delete-prompt-marker nil))))
(comint-output-filter proc string))
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index f6faaf6..ef46e34 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -207,6 +207,9 @@ found, return nil.
(apropos PATTERN): Find all symbols that match PATTERN. PATTERN
is a regexp.
+ (matches REGEXP): Find all matches for REGEXP in the related
+files. REGEXP is an Emacs regular expression.
+
IDENTIFIER can be any string returned by
`xref-identifier-at-point-function', or from the table returned
by `xref-identifier-completion-table-function'.
@@ -661,6 +664,12 @@ With prefix argument, prompt for the identifier."
(interactive (list (xref--read-identifier "Find references of: ")))
(xref--show-xrefs identifier 'references identifier nil))
+;;;###autoload
+(defun xref-find-regexp (regexp)
+ "Find all matches for REGEXP."
+ (interactive (list (xref--read-identifier "Find regexp: ")))
+ (xref--show-xrefs regexp 'matches regexp nil))
+
(declare-function apropos-parse-pattern "apropos" (pattern))
;;;###autoload
@@ -713,38 +722,64 @@ and just use etags."
(cdr xref-etags-mode--saved))))
(declare-function semantic-symref-find-references-by-name "semantic/symref")
+(declare-function semantic-symref-find-text "semantic/symref")
(declare-function semantic-find-file-noselect "semantic/fw")
-(defun xref-collect-references (name dir)
- "Collect mentions of NAME inside DIR.
-Uses the Semantic Symbol Reference API, see
-`semantic-symref-find-references-by-name' for details on which
-tools are used, and when."
+(defun xref-collect-matches (input dir &optional kind)
+ "Collect KIND matches for INPUT inside DIR according.
+KIND can be `symbol', `regexp' or nil, the last of which means
+literal matches. This function uses the Semantic Symbol
+Reference API, see `semantic-symref-find-references-by-name' for
+details on which tools are used, and when."
(require 'semantic/symref)
(defvar semantic-symref-tool)
(cl-assert (directory-name-p dir))
+ (when (null kind)
+ (setq input (regexp-quote input)))
(let* ((default-directory dir)
(semantic-symref-tool 'detect)
- (res (semantic-symref-find-references-by-name name 'subdirs))
+ (res (if (eq kind 'symbol)
+ (semantic-symref-find-references-by-name input 'subdirs)
+ (semantic-symref-find-text (xref--regexp-to-extended input)
+ 'subdirs)))
(hits (and res (oref res :hit-lines)))
(orig-buffers (buffer-list)))
(unwind-protect
(delq nil
- (mapcar (lambda (hit) (xref--collect-reference hit name)) hits))
+ (mapcar (lambda (hit) (xref--collect-match hit input kind))
hits))
(mapc #'kill-buffer
(cl-set-difference (buffer-list) orig-buffers)))))
-(defun xref--collect-reference (hit name)
+(defun xref--regexp-to-extended (str)
+ (replace-regexp-in-string
+ ;; FIXME: Add tests. Move to subr.el, make a public function.
+ ;; Maybe error on Emacs-only constructs.
+ "\\(?:\\\\\\\\\\)*\\(?:\\\\[][]\\)?\\(?:\\[.+?\\]\\|\\(\\\\?[(){}|]\\)\\)"
+ (lambda (str)
+ (cond
+ ((not (match-beginning 1))
+ str)
+ ((eq (length (match-string 1 str)) 2)
+ (concat (substring str 0 (match-beginning 1))
+ (substring (match-string 1 str) 1 2)))
+ (t
+ (concat (substring str 0 (match-beginning 1))
+ "\\"
+ (match-string 1 str)))))
+ str t t))
+
+(defun xref--collect-match (hit input kind)
(pcase-let* ((`(,line . ,file) hit)
(buf (or (find-buffer-visiting file)
- (semantic-find-file-noselect file))))
+ (semantic-find-file-noselect file)))
+ (input (if (eq kind 'symbol)
+ (format "\\_<%s\\_>" (regexp-quote input))
+ input)))
(with-current-buffer buf
(save-excursion
(goto-char (point-min))
(forward-line (1- line))
- (when (re-search-forward (format "\\_<%s\\_>"
- (regexp-quote name))
- (line-end-position) t)
+ (when (re-search-forward input (line-end-position) t)
(goto-char (match-beginning 0))
(xref-make (buffer-substring
(line-beginning-position)
diff --git a/lisp/simple.el b/lisp/simple.el
index 47c9cd3..dfd92dc 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -6000,7 +6000,11 @@ and `current-column' to be able to ignore invisible
text."
;; that will get us to the same place on the screen
;; but with a more reasonable buffer position.
(goto-char normal-location)
- (let ((line-beg (line-beginning-position)))
+ (let ((line-beg
+ ;; We want the real line beginning, so it's consistent
+ ;; with bolp below, otherwise we might infloop.
+ (let ((inhibit-field-text-motion t))
+ (line-beginning-position))))
(while (and (not (bolp)) (invisible-p (1- (point))))
(goto-char (previous-char-property-change (point) line-beg))))))))
diff --git a/lisp/term/common-win.el b/lisp/term/common-win.el
index 6445935..98ad5ac 100644
--- a/lisp/term/common-win.el
+++ b/lisp/term/common-win.el
@@ -419,4 +419,6 @@ the operating system.")
(setq defined-colors (cons this-color defined-colors))))
defined-colors)))
+(provide 'term/common-win)
+
;;; common-win.el ends here
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index a87352e..e642ab5 100644
--- a/lisp/term/ns-win.el
+++ b/lisp/term/ns-win.el
@@ -728,7 +728,7 @@ See the documentation of `create-fontset-from-fontset-spec'
for the format.")
(defun ns-paste-secondary ()
(interactive)
- (insert (ns-get-selection-internal 'SECONDARY)))
+ (insert (gui-get-selection 'SECONDARY)))
;;;; Scrollbar handling.
diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el
index fa981c6..c205508 100644
--- a/lisp/term/rxvt.el
+++ b/lisp/term/rxvt.el
@@ -24,36 +24,21 @@
;;; Code:
+(require 'term/xterm)
+
(defvar rxvt-function-map
(let ((map (make-sparse-keymap)))
+ (set-keymap-parent map xterm-rxvt-function-map)
;; Set up input-decode-map entries that termcap and terminfo don't know.
- (define-key map "\e[A" [up])
- (define-key map "\e[B" [down])
- (define-key map "\e[C" [right])
- (define-key map "\e[D" [left])
- (define-key map "\e[2~" [insert])
- (define-key map "\e[3~" [delete])
- (define-key map "\e[4~" [select])
- (define-key map "\e[5~" [prior])
- (define-key map "\e[6~" [next])
(define-key map "\e[7~" [home])
(define-key map "\e[8~" [end])
- (define-key map "\e[11~" [f1])
- (define-key map "\e[12~" [f2])
- (define-key map "\e[13~" [f3])
- (define-key map "\e[14~" [f4])
- (define-key map "\e[15~" [f5])
- (define-key map "\e[17~" [f6])
- (define-key map "\e[18~" [f7])
- (define-key map "\e[19~" [f8])
- (define-key map "\e[20~" [f9])
- (define-key map "\e[21~" [f10])
;; The strings emitted by f11 and f12 are the same as the strings
;; emitted by S-f1 and S-f2, so don't define f11 and f12.
;; (define-key rxvt-function-map "\e[23~" [f11])
;; (define-key rxvt-function-map "\e[24~" [f12])
- (define-key map "\e[29~" [print])
+ (define-key map "\e[23~" [S-f1])
+ (define-key map "\e[24~" [S-f2])
(define-key map "\e[11^" [C-f1])
(define-key map "\e[12^" [C-f2])
@@ -66,8 +51,6 @@
(define-key map "\e[20^" [C-f9])
(define-key map "\e[21^" [C-f10])
- (define-key map "\e[23~" [S-f1])
- (define-key map "\e[24~" [S-f2])
(define-key map "\e[25~" [S-f3])
(define-key map "\e[26~" [S-f4])
(define-key map "\e[28~" [S-f5])
@@ -99,7 +82,6 @@
(define-key map "\eOa" [C-up])
(define-key map "\eOb" [C-down])
- (define-key map "\e[2;2~" [S-insert])
(define-key map "\e[3$" [S-delete])
(define-key map "\e[5$" [S-prior])
(define-key map "\e[6$" [S-next])
@@ -157,26 +139,6 @@
map)
"Keymap of possible alternative meanings for some keys.")
-(defun terminal-init-rxvt ()
- "Terminal initialization function for rxvt."
-
- (let ((map (copy-keymap rxvt-alternatives-map)))
- (set-keymap-parent map (keymap-parent local-function-key-map))
- (set-keymap-parent local-function-key-map map))
-
- ;; Use inheritance to let the main keymap override those defaults.
- ;; This way we don't override terminfo-derived settings or settings
- ;; made in the init file.
- (let ((m (copy-keymap rxvt-function-map)))
- (set-keymap-parent m (keymap-parent input-decode-map))
- (set-keymap-parent input-decode-map m))
-
- ;; Initialize colors and background mode.
- (rxvt-register-default-colors)
- (rxvt-set-background-mode)
- ;; This recomputes all the default faces given the colors we've just set up.
- (tty-set-up-initial-frame-faces))
-
;; Set up colors, for those versions of rxvt that support it.
(defvar rxvt-standard-colors
;; The names of the colors in the comments taken from the rxvt.1 man
@@ -199,93 +161,17 @@
("brightwhite" 15 (255 255 255))) ; white
"Names of 16 standard rxvt colors, their numbers, and RGB values.")
-(defun rxvt-rgb-convert-to-16bit (prim)
- "Convert an 8-bit primary color value PRIM to a corresponding 16-bit value."
- (logior prim (lsh prim 8)))
-
-(defun rxvt-register-default-colors ()
- "Register the default set of colors for rxvt or compatible emulator.
+(defun terminal-init-rxvt ()
+ "Terminal initialization function for rxvt."
-This function registers the number of colors returned by `display-color-cells'
-for the currently selected frame."
- (let* ((ncolors (display-color-cells))
- (colors rxvt-standard-colors)
- (color (car colors)))
- (if (> ncolors 0)
- ;; Clear the 8 default tty colors registered by startup.el
- (tty-color-clear))
- ;; Only register as many colors as are supported by the display.
- (while (and (> ncolors 0) colors)
- (tty-color-define (car color) (cadr color)
- (mapcar 'rxvt-rgb-convert-to-16bit
- (car (cddr color))))
- (setq colors (cdr colors)
- color (car colors)
- ncolors (1- ncolors)))
- (when (> ncolors 0)
- (cond
- ((= ncolors 240) ; 256-color rxvt
- ;; 216 non-gray colors first
- (let ((r 0) (g 0) (b 0))
- (while (> ncolors 24)
- ;; This and other formulas taken from 256colres.pl and
- ;; 88colres.pl in the xterm distribution.
- (tty-color-define (format "color-%d" (- 256 ncolors))
- (- 256 ncolors)
- (mapcar 'rxvt-rgb-convert-to-16bit
- (list (if (zerop r) 0 (+ (* r 40) 55))
- (if (zerop g) 0 (+ (* g 40) 55))
- (if (zerop b) 0 (+ (* b 40) 55)))))
- (setq b (1+ b))
- (if (> b 5)
- (setq g (1+ g)
- b 0))
- (if (> g 5)
- (setq r (1+ r)
- g 0))
- (setq ncolors (1- ncolors))))
- ;; Now the 24 gray colors
- (while (> ncolors 0)
- (setq color (rxvt-rgb-convert-to-16bit (+ 8 (* (- 24 ncolors) 10))))
- (tty-color-define (format "color-%d" (- 256 ncolors))
- (- 256 ncolors)
- (list color color color))
- (setq ncolors (1- ncolors))))
+ (xterm--push-map rxvt-alternatives-map local-function-key-map)
+ (xterm--push-map rxvt-function-map input-decode-map)
- ((= ncolors 72) ; rxvt-unicode
- ;; 64 non-gray colors
- (let ((levels '(0 139 205 255))
- (r 0) (g 0) (b 0))
- (while (> ncolors 8)
- (tty-color-define (format "color-%d" (- 88 ncolors))
- (- 88 ncolors)
- (mapcar 'rxvt-rgb-convert-to-16bit
- (list (nth r levels)
- (nth g levels)
- (nth b levels))))
- (setq b (1+ b))
- (if (> b 3)
- (setq g (1+ g)
- b 0))
- (if (> g 3)
- (setq r (1+ r)
- g 0))
- (setq ncolors (1- ncolors))))
- ;; Now the 8 gray colors
- (while (> ncolors 0)
- (setq color (rxvt-rgb-convert-to-16bit
- (floor
- (if (= ncolors 8)
- 46.36363636
- (+ (* (- 8 ncolors) 23.18181818) 69.54545454)))))
- (tty-color-define (format "color-%d" (- 88 ncolors))
- (- 88 ncolors)
- (list color color color))
- (setq ncolors (1- ncolors))))
- (t (error "Unsupported number of rxvt colors (%d)" (+ 16 ncolors)))))
- ;; Modifying color mappings means realized faces don't use the
- ;; right colors, so clear them.
- (clear-face-cache)))
+ ;; Initialize colors and background mode.
+ (xterm-register-default-colors rxvt-standard-colors)
+ (rxvt-set-background-mode)
+ ;; This recomputes all the default faces given the colors we've just set up.
+ (tty-set-up-initial-frame-faces))
;; rxvt puts the default colors into an environment variable
;; COLORFGBG. We use this to set the background mode in a more
diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el
index b090294..f929288 100644
--- a/lisp/term/x-win.el
+++ b/lisp/term/x-win.el
@@ -72,6 +72,7 @@
(if (not (fboundp 'x-create-frame))
(error "%s: Loading x-win.el but not compiled for X" (invocation-name)))
+(require 'term/common-win)
(require 'frame)
(require 'mouse)
(require 'scroll-bar)
@@ -1322,6 +1323,17 @@ This returns an error if any Emacs frames are X frames."
(x-apply-session-resources)
(setq x-initialized t))
+(declare-function x-own-selection-internal "xselect.c"
+ (selection value &optional frame))
+(declare-function x-disown-selection-internal "xselect.c"
+ (selection &optional time-object terminal))
+(declare-function x-selection-owner-p "xselect.c"
+ (&optional selection terminal))
+(declare-function x-selection-exists-p "xselect.c"
+ (&optional selection terminal))
+(declare-function x-get-selection-internal "xselect.c"
+ (selection-symbol target-type &optional time-stamp terminal))
+
(add-to-list 'display-format-alist '("\\`[^:]*:[0-9]+\\(\\.[0-9]+\\)?\\'" . x))
(gui-method-define handle-args-function x #'x-handle-args)
(gui-method-define frame-creation-function x #'x-create-frame-with-faces)
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 79699c6..667e4ce 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -95,20 +95,50 @@ string bytes that can be copied is 3/4 of this value."
(define-key global-map [xterm-paste] #'xterm-paste)
-(defvar xterm-function-map
+(defvar xterm-rxvt-function-map
(let ((map (make-sparse-keymap)))
+ (define-key map "\e[2~" [insert])
+ (define-key map "\e[3~" [delete])
+ (define-key map "\e[4~" [select])
+ (define-key map "\e[5~" [prior])
+ (define-key map "\e[6~" [next])
- ;; xterm from X.org 6.8.2 uses these key definitions.
- (define-key map "\eOP" [f1])
- (define-key map "\eOQ" [f2])
- (define-key map "\eOR" [f3])
- (define-key map "\eOS" [f4])
(define-key map "\e[15~" [f5])
(define-key map "\e[17~" [f6])
(define-key map "\e[18~" [f7])
(define-key map "\e[19~" [f8])
(define-key map "\e[20~" [f9])
(define-key map "\e[21~" [f10])
+
+ (define-key map "\e[2;2~" [S-insert])
+
+ ;; Other versions of xterm might emit these.
+ (define-key map "\e[A" [up])
+ (define-key map "\e[B" [down])
+ (define-key map "\e[C" [right])
+ (define-key map "\e[D" [left])
+
+ (define-key map "\e[11~" [f1])
+ (define-key map "\e[12~" [f2])
+ (define-key map "\e[13~" [f3])
+ (define-key map "\e[14~" [f4])
+
+ ;; Recognize the start of a bracketed paste sequence. The handler
+ ;; internally recognizes the end.
+ (define-key map "\e[200~" [xterm-paste])
+
+ map)
+ "Keymap of escape sequences, shared between xterm and rxvt support.")
+
+(defvar xterm-function-map
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map xterm-rxvt-function-map)
+
+ ;; xterm from X.org 6.8.2 uses these key definitions.
+ (define-key map "\eOP" [f1])
+ (define-key map "\eOQ" [f2])
+ (define-key map "\eOR" [f3])
+ (define-key map "\eOS" [f4])
(define-key map "\e[23~" [f11])
(define-key map "\e[24~" [f12])
@@ -237,12 +267,6 @@ string bytes that can be copied is 3/4 of this value."
(define-key map "\e[1;3F" [M-end])
(define-key map "\e[1;3H" [M-home])
- (define-key map "\e[2~" [insert])
- (define-key map "\e[3~" [delete])
- (define-key map "\e[5~" [prior])
- (define-key map "\e[6~" [next])
-
- (define-key map "\e[2;2~" [S-insert])
(define-key map "\e[3;2~" [S-delete])
(define-key map "\e[5;2~" [S-prior])
(define-key map "\e[6;2~" [S-next])
@@ -277,7 +301,6 @@ string bytes that can be copied is 3/4 of this value."
(define-key map "\e[5;3~" [M-prior])
(define-key map "\e[6;3~" [M-next])
- (define-key map "\e[4~" [select])
(define-key map "\e[29~" [print])
(define-key map "\eOj" [kp-multiply])
@@ -482,10 +505,6 @@ string bytes that can be copied is 3/4 of this value."
(format "\e[%d;%du" (nth 1 bind) (nth 0 bind)) (nth 2 bind)))
;; Other versions of xterm might emit these.
- (define-key map "\e[A" [up])
- (define-key map "\e[B" [down])
- (define-key map "\e[C" [right])
- (define-key map "\e[D" [left])
(define-key map "\e[1~" [home])
(define-key map "\eO2A" [S-up])
@@ -502,15 +521,6 @@ string bytes that can be copied is 3/4 of this value."
(define-key map "\eO5F" [C-end])
(define-key map "\eO5H" [C-home])
- (define-key map "\e[11~" [f1])
- (define-key map "\e[12~" [f2])
- (define-key map "\e[13~" [f3])
- (define-key map "\e[14~" [f4])
-
- ;; Recognize the start of a bracketed paste sequence. The handler
- ;; internally recognizes the end.
- (define-key map "\e[200~" [xterm-paste])
-
map)
"Function key map overrides for xterm.")
@@ -580,6 +590,29 @@ string bytes that can be copied is 3/4 of this value."
map)
"Keymap of possible alternative meanings for some keys.")
+;; Set up colors, for those versions of xterm that support it.
+(defvar xterm-standard-colors
+ ;; The names in the comments taken from XTerm-col.ad in the xterm
+ ;; distribution, see ftp://dickey.his.com/xterm/. RGB values are
+ ;; from rgb.txt.
+ '(("black" 0 ( 0 0 0)) ; black
+ ("red" 1 (205 0 0)) ; red3
+ ("green" 2 ( 0 205 0)) ; green3
+ ("yellow" 3 (205 205 0)) ; yellow3
+ ("blue" 4 ( 0 0 238)) ; blue2
+ ("magenta" 5 (205 0 205)) ; magenta3
+ ("cyan" 6 ( 0 205 205)) ; cyan3
+ ("white" 7 (229 229 229)) ; gray90
+ ("brightblack" 8 (127 127 127)) ; gray50
+ ("brightred" 9 (255 0 0)) ; red
+ ("brightgreen" 10 ( 0 255 0)) ; green
+ ("brightyellow" 11 (255 255 0)) ; yellow
+ ("brightblue" 12 (92 92 255)) ; rgb:5c/5c/ff
+ ("brightmagenta" 13 (255 0 255)) ; magenta
+ ("brightcyan" 14 ( 0 255 255)) ; cyan
+ ("brightwhite" 15 (255 255 255))) ; white
+ "Names of 16 standard xterm/aixterm colors, their numbers, and RGB values.")
+
(defun xterm--report-background-handler ()
(let ((str "")
chr)
@@ -687,6 +720,14 @@ We run the first FUNCTION whose STRING matches the input
events."
(push (aref (car handler) (setq i (1- i)))
unread-command-events)))))))
+(defun xterm--push-map (map basemap)
+ ;; Use inheritance to let the main keymaps override those defaults.
+ ;; This way we don't override terminfo-derived settings or settings
+ ;; made in the init file.
+ (set-keymap-parent
+ basemap
+ (make-composed-keymap map (keymap-parent basemap))))
+
(defun terminal-init-xterm ()
"Terminal initialization function for xterm."
;; rxvt terminals sometimes set the TERM variable to "xterm", but
@@ -696,19 +737,10 @@ We run the first FUNCTION whose STRING matches the input
events."
(string-match "\\`rxvt" (getenv "COLORTERM" (selected-frame))))
(tty-run-terminal-initialization (selected-frame) "rxvt")
- (let ((map (copy-keymap xterm-alternatives-map)))
- (set-keymap-parent map (keymap-parent local-function-key-map))
- (set-keymap-parent local-function-key-map map))
-
- (let ((map (copy-keymap xterm-function-map)))
+ (xterm--push-map xterm-alternatives-map local-function-key-map)
+ (xterm--push-map xterm-function-map input-decode-map))
- ;; Use inheritance to let the main keymap override those defaults.
- ;; This way we don't override terminfo-derived settings or settings
- ;; made in the init file.
- (set-keymap-parent map (keymap-parent input-decode-map))
- (set-keymap-parent input-decode-map map)))
-
- (xterm-register-default-colors)
+ (xterm-register-default-colors xterm-standard-colors)
(tty-set-up-initial-frame-faces)
(if (eq xterm-extra-capabilities 'check)
@@ -807,43 +839,19 @@ hitting screen's max DCS length."
"\a"
(when screen "\e\\"))))))))
-;; Set up colors, for those versions of xterm that support it.
-(defvar xterm-standard-colors
- ;; The names in the comments taken from XTerm-col.ad in the xterm
- ;; distribution, see ftp://dickey.his.com/xterm/. RGB values are
- ;; from rgb.txt.
- '(("black" 0 ( 0 0 0)) ; black
- ("red" 1 (205 0 0)) ; red3
- ("green" 2 ( 0 205 0)) ; green3
- ("yellow" 3 (205 205 0)) ; yellow3
- ("blue" 4 ( 0 0 238)) ; blue2
- ("magenta" 5 (205 0 205)) ; magenta3
- ("cyan" 6 ( 0 205 205)) ; cyan3
- ("white" 7 (229 229 229)) ; gray90
- ("brightblack" 8 (127 127 127)) ; gray50
- ("brightred" 9 (255 0 0)) ; red
- ("brightgreen" 10 ( 0 255 0)) ; green
- ("brightyellow" 11 (255 255 0)) ; yellow
- ("brightblue" 12 (92 92 255)) ; rgb:5c/5c/ff
- ("brightmagenta" 13 (255 0 255)) ; magenta
- ("brightcyan" 14 ( 0 255 255)) ; cyan
- ("brightwhite" 15 (255 255 255))) ; white
- "Names of 16 standard xterm/aixterm colors, their numbers, and RGB values.")
-
(defun xterm-rgb-convert-to-16bit (prim)
"Convert an 8-bit primary color value PRIM to a corresponding 16-bit value."
(logior prim (lsh prim 8)))
-(defun xterm-register-default-colors ()
+(defun xterm-register-default-colors (colors)
"Register the default set of colors for xterm or compatible emulator.
This function registers the number of colors returned by `display-color-cells'
-for the currently selected frame. The first 16 colors are taken from
-`xterm-standard-colors', which see, while the rest are computed assuming
+for the currently selected frame. The first (16) colors are taken from
+COLORS, which see, while the rest are computed assuming
either the 88- or 256-color standard color scheme supported by latest
versions of xterm."
- (let* ((ncolors (display-color-cells (selected-frame)))
- (colors xterm-standard-colors)
+ (let* ((ncolors (display-color-cells))
(color (car colors)))
(if (> ncolors 0)
;; Clear the 8 default tty colors registered by startup.el
@@ -851,12 +859,12 @@ versions of xterm."
;; Only register as many colors as are supported by the display.
(while (and (> ncolors 0) colors)
(tty-color-define (car color) (cadr color)
- (mapcar 'xterm-rgb-convert-to-16bit
+ (mapcar #'xterm-rgb-convert-to-16bit
(car (cddr color))))
(setq colors (cdr colors)
color (car colors)
ncolors (1- ncolors)))
- ;; We've exhausted the colors from `xterm-standard-colors'. If there
+ ;; We've exhausted the colors from `colors'. If there
;; are more colors to support, compute them now.
(when (> ncolors 0)
(cond
@@ -868,7 +876,7 @@ versions of xterm."
;; 88colres.pl in the xterm distribution.
(tty-color-define (format "color-%d" (- 256 ncolors))
(- 256 ncolors)
- (mapcar 'xterm-rgb-convert-to-16bit
+ (mapcar #'xterm-rgb-convert-to-16bit
(list (if (zerop r) 0 (+ (* r 40) 55))
(if (zerop g) 0 (+ (* g 40) 55))
(if (zerop b) 0 (+ (* b 40) 55)))))
@@ -895,7 +903,7 @@ versions of xterm."
(while (> ncolors 8)
(tty-color-define (format "color-%d" (- 88 ncolors))
(- 88 ncolors)
- (mapcar 'xterm-rgb-convert-to-16bit
+ (mapcar #'xterm-rgb-convert-to-16bit
(list (nth r levels)
(nth g levels)
(nth b levels))))
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index c71ecb4..2ffe9c1 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -1828,6 +1828,8 @@ This takes effect when first loading the library.")
("array" (nil \n
("Item: " "<item>" str (if sgml-xml-mode "</item>") \n))
"align")
+ ("article" \n)
+ ("aside" \n)
("au")
("b")
("big")
@@ -1853,7 +1855,10 @@ This takes effect when first loading the library.")
"<dd>" (if sgml-xml-mode "</dd>") \n))
("em")
("fn" "id" "fn") ;; Footnotes were deprecated in HTML 3.2
+ ("footer" \n)
("head" \n)
+ ("header" \n)
+ ("hgroup" \n)
("html" (\n
"<head>\n"
"<title>" (setq str (read-input "Title: ")) "</title>\n"
@@ -1871,6 +1876,7 @@ This takes effect when first loading the library.")
("lang")
("li" ,(not sgml-xml-mode))
("math" \n)
+ ("nav" \n)
("nobr")
("option" t ("value") ("label") ("selected" t))
("over" t)
@@ -1880,6 +1886,7 @@ This takes effect when first loading the library.")
("rev")
("s")
("samp")
+ ("section" \n)
("small")
("span" nil
("class"
@@ -1910,6 +1917,8 @@ This takes effect when first loading the library.")
("acronym" . "Acronym")
("address" . "Formatted mail address")
("array" . "Math array")
+ ("article" . "An independent part of document or site")
+ ("aside" . "Secondary content related to surrounding content (e.g. page or
article)")
("au" . "Author")
("b" . "Bold face")
("base" . "Base address for URLs")
@@ -1939,6 +1948,7 @@ This takes effect when first loading the library.")
("figt" . "Figure text")
("fn" . "Footnote") ;; No one supports special footnote rendering.
("font" . "Font size")
+ ("footer" . "Footer of a section")
("form" . "Form with input fields")
("group" . "Document grouping")
("h1" . "Most important section headline")
@@ -1948,6 +1958,8 @@ This takes effect when first loading the library.")
("h5" . "Unimportant section headline")
("h6" . "Least important section headline")
("head" . "Document header")
+ ("header" . "Header of a section")
+ ("hgroup" . "Group of headings - h1-h6 elements")
("hr" . "Horizontal rule")
("html" . "HTML Document")
("i" . "Italic face")
@@ -1960,8 +1972,9 @@ This takes effect when first loading the library.")
("li" . "List item")
("link" . "Link relationship")
("math" . "Math formula")
- ("menu" . "Menu list (obsolete)")
+ ("menu" . "List of commands")
("mh" . "Form mail header")
+ ("nav" . "Group of navigational links")
("nextid" . "Allocate new id")
("nobr" . "Text without line break")
("ol" . "Ordered list")
@@ -1975,6 +1988,7 @@ This takes effect when first loading the library.")
("rev" . "Reverse video")
("s" . "Strikeout")
("samp" . "Sample text")
+ ("section" . "Section of a document")
("select" . "Selection list")
("small" . "Font size")
("sp" . "Nobreak space")
@@ -2242,6 +2256,33 @@ HTML Autoview mode is a buffer-local minor mode for use
with
"")))
\n))
+(define-skeleton html-navigational-links
+ "Group of navigational links."
+ nil
+ "<nav>" \n
+ "<ul>" \n
+ "<li><a href=\"" (skeleton-read "URL: " "#") "\">"
+ (skeleton-read "Title: ") "</a>"
+ (if sgml-xml-mode (if sgml-xml-mode "</li>")) \n
+ "</ul>" \n
+ "</nav>")
+
+(define-skeleton html-html5-template
+ "Initial HTML5 template"
+ nil
+ "<!DOCTYPE html>" \n
+ "<html lang=\"en\">" \n
+ "<head>" \n
+ "<meta charset=\"utf-8\">" \n
+ "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">" \n
+ "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">" \n
+ "<title>" (skeleton-read "Page Title: ") "</title>" \n
+ "</head>" \n
+ "<body>" \n
+ "<div id=\"app\"></div>" \n
+ "</body>" \n
+ "</html>")
+
(provide 'sgml-mode)
;;; sgml-mode.el ends here
diff --git a/lisp/url/url-handlers.el b/lisp/url/url-handlers.el
index ff3eafd..001a783 100644
--- a/lisp/url/url-handlers.el
+++ b/lisp/url/url-handlers.el
@@ -344,14 +344,14 @@ They count bytes from the beginning of the body."
(put 'insert-file-contents 'url-file-handlers 'url-insert-file-contents)
-(defun url-file-name-completion (url directory &optional predicate)
+(defun url-file-name-completion (url _directory &optional _predicate)
;; Even if it's not implemented, it's not an error to ask for completion,
;; in case it's available (bug#14806).
;; (error "Unimplemented")
url)
(put 'file-name-completion 'url-file-handlers 'url-file-name-completion)
-(defun url-file-name-all-completions (file directory)
+(defun url-file-name-all-completions (_file _directory)
;; Even if it's not implemented, it's not an error to ask for completion,
;; in case it's available (bug#14806).
;; (error "Unimplemented")
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index d766952..6a7d8e2 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -485,6 +485,8 @@ work correctly."
)
)
+(declare-function gnutls-peer-status "gnutls.c" (proc))
+
(defun url-http-parse-headers ()
"Parse and handle HTTP specific headers.
Return t if and only if the current buffer is still active and
diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el
index f82c7e9..08ae998 100644
--- a/lisp/vc/log-edit.el
+++ b/lisp/vc/log-edit.el
@@ -717,6 +717,9 @@ can thus take some time."
(defvar log-edit-changelog-use-first nil)
+(defvar log-edit-rewrite-tiny-change t
+ "Non-nil means rewrite (tiny change).")
+
(defvar log-edit-rewrite-fixes nil
"Rule to rewrite bug numbers into Fixes: headers.
The value should be of the form (REGEXP . REPLACEMENT)
@@ -761,7 +764,7 @@ regardless of user name or time."
(log-edit-insert-changelog-entries (log-edit-files)))))
(log-edit-set-common-indentation)
;; Add an Author: field if appropriate.
- (when author (log-edit-add-field "Author" author))
+ (when author (log-edit-add-field "Author" (car author)))
;; Add a Fixes: field if applicable.
(when (consp log-edit-rewrite-fixes)
(rfc822-goto-eoh)
@@ -782,7 +785,13 @@ regardless of user name or time."
(goto-char start)
(skip-chars-forward "^():")
(skip-chars-forward ": ")
- (delete-region start (point))))))))
+ (delete-region start (point)))))
+ ;; FIXME also add "Co-authored-by" when appropriate.
+ ;; Bzr accepts multiple --author arguments, others (?) don't.
+ (and log-edit-rewrite-tiny-change
+ (eq 'tiny (cdr author))
+ (goto-char (point-max))
+ (insert "\nCopyright-paperwork-exempt: yes\n")))))
;;;;
;;;; functions for getting commit message from ChangeLog a file...
@@ -868,19 +877,26 @@ Return non-nil if it is."
(if (null log-edit-changelog-use-first)
(looking-at (regexp-quote (format "%s %s <%s>" time name mail)))
;; Check the author, to potentially add it as a "Author: " header.
+ ;; FIXME This accumulates multiple authors, but only when there
+ ;; are multiple ChangeLog files. It should also check for
+ ;; multiple authors in each individual entry.
(when (looking-at "[^ \t]")
(when (and (boundp 'log-edit-author)
(not (looking-at (format ".+ .+ <%s>"
(regexp-quote mail))))
- (looking-at ".+ \\(.+ <.+>\\)"))
+ (looking-at ".+ \\(.+ <.+>\\) *\\((tiny change)\\)?"))
(let ((author (replace-regexp-in-string " " " "
(match-string 1))))
(unless (and log-edit-author
- (string-match (regexp-quote author) log-edit-author))
- (setq log-edit-author
- (if log-edit-author
- (concat log-edit-author ", " author)
- author)))))
+ (string-match (regexp-quote author)
+ (car log-edit-author)))
+ (if (not log-edit-author)
+ (setq log-edit-author
+ (cons author (if (match-string 2) 'tiny)))
+ (setcar log-edit-author
+ (concat (car log-edit-author) ", " author))
+ (and (match-string 2) (not (cdr log-edit-author))
+ (setcdr log-edit-author 'tiny))))))
t))))
(defun log-edit-changelog-entries (file)
diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el
index a1f6bab..c950825 100644
--- a/lisp/vc/vc-bzr.el
+++ b/lisp/vc/vc-bzr.el
@@ -335,29 +335,31 @@ in the repository root directory of FILE."
(declare-function vc-set-async-update "vc-dispatcher" (process-buffer))
(declare-function vc-compilation-mode "vc-dispatcher" (backend))
-(defun vc-bzr-pull (prompt)
- "Pull changes into the current Bzr branch.
-Normally, this runs \"bzr pull\". However, if the branch is a
-bound branch, run \"bzr update\" instead. If there is no default
-location from which to pull or update, or if PROMPT is non-nil,
-prompt for the Bzr command to run."
+(defun vc-bzr--pushpull (command prompt)
+ "Run COMMAND (a string; either push or pull) on the current Bzr branch.
+If PROMPT is non-nil, prompt for the Bzr command to run."
(let* ((vc-bzr-program vc-bzr-program)
(branch-conf (vc-bzr-branch-conf default-directory))
;; Check whether the branch is bound.
(bound (assoc "bound" branch-conf))
(bound (and bound (equal "true" (downcase (cdr bound)))))
- ;; If we need to do a "bzr pull", check for a parent. If it
- ;; does not exist, bzr will need a pull location.
- (has-parent (unless bound
- (assoc "parent_location" branch-conf)))
- (command (if bound "update" "pull"))
+ (has-loc (assoc (if (equal command "push")
+ "push_location"
+ "parent_location")
+ branch-conf))
args)
+ (when bound
+ (if (equal command "push")
+ (user-error "Cannot push a bound branch")
+ (setq command "update")))
;; If necessary, prompt for the exact command.
- (when (or prompt (not (or bound has-parent)))
+ (when (or prompt (if (equal command "push")
+ (not has-loc)
+ (not (or bound has-loc))))
(setq args (split-string
(read-shell-command
- "Bzr pull command: "
- (concat vc-bzr-program " " command)
+ (format "Bzr %s command: " command)
+ (format "%s %s" vc-bzr-program command)
'vc-bzr-history)
" " t))
(setq vc-bzr-program (car args)
@@ -368,6 +370,20 @@ prompt for the Bzr command to run."
(with-current-buffer buf (vc-run-delayed (vc-compilation-mode 'bzr)))
(vc-set-async-update buf))))
+(defun vc-bzr-pull (prompt)
+ "Pull changes into the current Bzr branch.
+Normally, this runs \"bzr pull\". However, if the branch is a
+bound branch, run \"bzr update\" instead. If there is no default
+location from which to pull or update, or if PROMPT is non-nil,
+prompt for the Bzr command to run."
+ (vc-bzr--pushpull "pull" prompt))
+
+(defun vc-bzr-push (prompt)
+ "Push changes from the current Bzr branch.
+Normally, this runs \"bzr push\". If there is no push location,
+or if PROMPT is non-nil, prompt for the Bzr command to run."
+ (vc-bzr--pushpull "push" prompt))
+
(defun vc-bzr-merge-branch ()
"Merge another Bzr branch into the current one.
Prompt for the Bzr command to run, providing a pre-defined merge
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index e050c94..eb03a8b 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -111,7 +111,7 @@ See `run-hooks'."
(current-buffer)))))
(defvar vc-dir-menu-map
- (let ((map (make-sparse-keymap "VC-dir")))
+ (let ((map (make-sparse-keymap "VC-Dir")))
(define-key map [quit]
'(menu-item "Quit" quit-window
:help "Quit"))
@@ -204,6 +204,10 @@ See `run-hooks'."
:help "List the change log for the current tree in a window"))
;; VC commands.
(define-key map [sepvccmd] '("--"))
+ (define-key map [push]
+ '(menu-item "Push Changes" vc-push
+ :enable (vc-find-backend-function vc-dir-backend 'push)
+ :help "Push the current branch's changes"))
(define-key map [update]
'(menu-item "Update to Latest Version" vc-update
:help "Update the current fileset's files to their tip
revisions"))
@@ -246,6 +250,8 @@ See `run-hooks'."
(define-key map "D" 'vc-root-diff) ;; C-x v D
(define-key map "i" 'vc-register) ;; C-x v i
(define-key map "+" 'vc-update) ;; C-x v +
+ ;; I'd prefer some kind of symmetry with vc-update:
+ (define-key map "P" 'vc-push) ;; C-x v P
(define-key map "l" 'vc-print-log) ;; C-x v l
(define-key map "L" 'vc-print-root-log) ;; C-x v L
(define-key map "I" 'vc-log-incoming) ;; C-x v I
@@ -294,7 +300,7 @@ See `run-hooks'."
`(menu-item
;; VC backends can use this to add mode-specific menu items to
;; vc-dir-menu-map.
- "VC-dir" ,vc-dir-menu-map :filter vc-dir-menu-map-filter))
+ "VC-Dir" ,vc-dir-menu-map :filter vc-dir-menu-map-filter))
map)
"Keymap for directory buffer.")
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 2bca723..20f2101 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -721,21 +721,21 @@ It is based on `log-edit-mode', and has Git-specific
extensions.")
;; To be called via vc-pull from vc.el, which requires vc-dispatcher.
(declare-function vc-compilation-mode "vc-dispatcher" (backend))
-(defun vc-git-pull (prompt)
- "Pull changes into the current Git branch.
-Normally, this runs \"git pull\". If PROMPT is non-nil, prompt
-for the Git command to run."
+(defun vc-git--pushpull (command prompt)
+ "Run COMMAND (a string; either push or pull) on the current Git branch.
+If PROMPT is non-nil, prompt for the Git command to run."
(let* ((root (vc-git-root default-directory))
(buffer (format "*vc-git : %s*" (expand-file-name root)))
- (command "pull")
(git-program vc-git-program)
args)
;; If necessary, prompt for the exact command.
+ ;; TODO if pushing, prompt if no default push location - cf bzr.
(when prompt
(setq args (split-string
- (read-shell-command "Git pull command: "
- (format "%s pull" git-program)
- 'vc-git-history)
+ (read-shell-command
+ (format "Git %s command: " command)
+ (format "%s %s" git-program command)
+ 'vc-git-history)
" " t))
(setq git-program (car args)
command (cadr args)
@@ -745,6 +745,18 @@ for the Git command to run."
(with-current-buffer buffer (vc-run-delayed (vc-compilation-mode 'git)))
(vc-set-async-update buffer)))
+(defun vc-git-pull (prompt)
+ "Pull changes into the current Git branch.
+Normally, this runs \"git pull\". If PROMPT is non-nil, prompt
+for the Git command to run."
+ (vc-git--pushpull "pull" prompt))
+
+(defun vc-git-push (prompt)
+ "Push changes from the current Git branch.
+Normally, this runs \"git push\". If PROMPT is non-nil, prompt
+for the Git command to run."
+ (vc-git--pushpull "push" prompt))
+
(defun vc-git-merge-branch ()
"Merge changes into the current Git branch.
This prompts for a branch to merge from."
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index c302436..556174a 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -659,20 +659,6 @@ REV is the revision to check out into WORKFILE."
(vc-hg-command buffer 1 nil "outgoing" "-n" (unless (string= remote-location
"")
remote-location)))
-(declare-function log-view-get-marked "log-view" ())
-
-;; XXX maybe also add key bindings for these functions.
-(defun vc-hg-push ()
- (interactive)
- (let ((marked-list (log-view-get-marked)))
- (if marked-list
- (apply #'vc-hg-command
- nil 0 nil
- "push"
- (apply 'nconc
- (mapcar (lambda (arg) (list "-r" arg)) marked-list)))
- (error "No log entries selected for push"))))
-
(defvar vc-hg-error-regexp-alist nil
;; 'hg pull' does not list modified files, so, for now, the only
;; benefit of `vc-compilation-mode' is that one can get rid of
@@ -682,51 +668,70 @@ REV is the revision to check out into WORKFILE."
"Value of `compilation-error-regexp-alist' in *vc-hg* buffers.")
(autoload 'vc-do-async-command "vc-dispatcher")
+(autoload 'log-view-get-marked "log-view")
-(defun vc-hg-pull (prompt)
- "Issue a Mercurial pull command.
-If called interactively with a set of marked Log View buffers,
-call \"hg pull -r REVS\" to pull in the specified revisions REVS.
-
-With a prefix argument or if PROMPT is non-nil, prompt for a
-specific Mercurial pull command. The default is \"hg pull -u\",
-which fetches changesets from the default remote repository and
-then attempts to update the working directory."
- (interactive "P")
+(defun vc-hg--pushpull (command prompt &optional obsolete)
+ "Run COMMAND (a string; either push or pull) on the current Hg branch.
+If PROMPT is non-nil, prompt for the Hg command to run.
+If OBSOLETE is non-nil, behave like the old versions of the Hg push/pull
+commands, which only operated on marked files."
(let (marked-list)
- ;; The `vc-hg-pull' command existed before the `pull' VC action
- ;; was implemented. Keep it for backward compatibility.
- (if (and (called-interactively-p 'interactive)
- (setq marked-list (log-view-get-marked)))
+ ;; The `vc-hg-pull' and `vc-hg-push' commands existed before the
+ ;; `pull'/`push' VC actions were implemented.
+ ;; The following is for backwards compatibility.
+ (if (and obsolete (setq marked-list (log-view-get-marked)))
(apply #'vc-hg-command
nil 0 nil
- "pull"
+ command
(apply 'nconc
- (mapcar (lambda (arg) (list "-r" arg))
- marked-list)))
+ (mapcar (lambda (arg) (list "-r" arg)) marked-list)))
(let* ((root (vc-hg-root default-directory))
(buffer (format "*vc-hg : %s*" (expand-file-name root)))
- (command "pull")
(hg-program vc-hg-program)
;; Fixme: before updating the working copy to the latest
;; state, should check if it's visiting an old revision.
- (args '("-u")))
+ (args (if (equal command "pull") '("-u"))))
;; If necessary, prompt for the exact command.
+ ;; TODO if pushing, prompt if no default push location - cf bzr.
(when prompt
(setq args (split-string
- (read-shell-command "Run Hg (like this): "
- (format "%s pull -u" hg-program)
- 'vc-hg-history)
+ (read-shell-command
+ (format "Hg %s command: " command)
+ (format "%s %s%s" hg-program command
+ (if (not args) ""
+ (concat " " (mapconcat 'identity args " "))))
+ 'vc-hg-history)
" " t))
(setq hg-program (car args)
command (cadr args)
args (cddr args)))
- (apply 'vc-do-async-command buffer root hg-program
- command args)
+ (apply 'vc-do-async-command buffer root hg-program command args)
(with-current-buffer buffer
(vc-run-delayed (vc-compilation-mode 'hg)))
(vc-set-async-update buffer)))))
+(defun vc-hg-pull (prompt)
+ "Issue a Mercurial pull command.
+If called interactively with a set of marked Log View buffers,
+call \"hg pull -r REVS\" to pull in the specified revisions REVS.
+
+With a prefix argument or if PROMPT is non-nil, prompt for a
+specific Mercurial pull command. The default is \"hg pull -u\",
+which fetches changesets from the default remote repository and
+then attempts to update the working directory."
+ (interactive "P")
+ (vc-hg--pushpull "pull" prompt (called-interactively-p 'interactive)))
+
+(defun vc-hg-push (prompt)
+ "Push changes from the current Mercurial branch.
+Normally, this runs \"hg push\". If PROMPT is non-nil, prompt
+for the Hg command to run.
+
+If called interactively with a set of marked Log View buffers,
+call \"hg push -r REVS\" to push the specified revisions REVS."
+ (interactive "P")
+ (vc-hg--pushpull "push" prompt (called-interactively-p 'interactive)))
+
(defun vc-hg-merge-branch ()
"Merge incoming changes into the current working directory.
This runs the command \"hg merge\"."
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index 251fecb..bae9919 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -883,6 +883,8 @@ current, and kill the buffer that visits the link."
(define-key map "u" 'vc-revert)
(define-key map "v" 'vc-next-action)
(define-key map "+" 'vc-update)
+ ;; I'd prefer some kind of symmetry with vc-update:
+ (define-key map "P" 'vc-push)
(define-key map "=" 'vc-diff)
(define-key map "D" 'vc-root-diff)
(define-key map "~" 'vc-revision-other-window)
@@ -940,6 +942,10 @@ current, and kill the buffer that visits the link."
(bindings--define-key map [vc-revert]
'(menu-item "Revert to Base Version" vc-revert
:help "Revert working copies of the selected file set to
their repository contents"))
+ ;; TODO Only :enable if (vc-find-backend-function backend 'push)
+ (bindings--define-key map [vc-push]
+ '(menu-item "Push Changes" vc-push
+ :help "Push the current branch's changes"))
(bindings--define-key map [vc-update]
'(menu-item "Update to Latest Version" vc-update
:help "Update the current fileset's files to their tip
revisions"))
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 1a997a4..d5d0abe 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -2484,6 +2484,22 @@ tip revision are merged into the working file."
;;;###autoload
(defalias 'vc-update 'vc-pull)
+;;;###autoload
+(defun vc-push (&optional arg)
+ "Push the current branch.
+You must be visiting a version controlled file, or in a `vc-dir' buffer.
+On a distributed version control system, this runs a \"push\"
+operation on the current branch, prompting for the precise command
+if required. Optional prefix ARG non-nil forces a prompt.
+On a non-distributed version control system, this signals an error."
+ (interactive "P")
+ (let* ((vc-fileset (vc-deduce-fileset t))
+ (backend (car vc-fileset)))
+;;; (files (cadr vc-fileset)))
+ (if (vc-find-backend-function backend 'push)
+ (vc-call-backend backend 'push arg)
+ (user-error "VC push is unsupported for `%s'" backend))))
+
(defun vc-version-backup-file (file &optional rev)
"Return name of backup file for revision REV of FILE.
If version backups should be used for FILE, and there exists
diff --git a/lisp/window.el b/lisp/window.el
index a6c60e9..49b7e2c 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -1835,6 +1835,8 @@ optional argument PIXELWISE is passed to the functions."
(window-body-width window pixelwise)
(window-body-height window pixelwise)))
+(declare-function font-info "font.c" (name &optional frame))
+
(defun window-font-width (&optional window face)
"Return average character width for the font of FACE used in WINDOW.
WINDOW must be a live window and defaults to the selected one.
@@ -1866,6 +1868,8 @@ information for the remapped face."
(aref info 3))
(frame-char-height))))
+(defvar overflow-newline-into-fringe)
+
(defun window-max-chars-per-line (&optional window face)
"Return the number of characters that can be displayed on one line in WINDOW.
WINDOW must be a live window and defaults to the selected one.
@@ -7187,6 +7191,8 @@ See also `fit-frame-to-buffer-margins'."
(<= left (- right margin)) (<= margin right))
margin))
+(declare-function tool-bar-height "xdisp.c" (&optional frame pixelwise))
+
(defun fit-frame-to-buffer (&optional frame max-height min-height max-width
min-width only)
"Adjust size of FRAME to display the contents of its buffer exactly.
FRAME can be any live frame and defaults to the selected one.
diff --git a/make-dist b/make-dist
index 441070f..bc5874e 100755
--- a/make-dist
+++ b/make-dist
@@ -52,6 +52,7 @@ make_tar=no
default_gzip=gzip
newer=""
with_tests=no
+changelog=yes
while [ $# -gt 0 ]; do
case "$1" in
@@ -72,6 +73,9 @@ while [ $# -gt 0 ]; do
"--no-check" )
check=no
;;
+ "--no-changelog" )
+ changelog=no
+ ;;
## This option tells make-dist to make the distribution normally, then
## remove all files older than the given timestamp file. This is useful
## for creating incremental or patch distributions.
@@ -115,6 +119,7 @@ while [ $# -gt 0 ]; do
echo " --newer=TIME don't include files older than TIME"
echo " --no-check don't check for bad file names etc."
echo " --no-update don't recompile or do analogous things"
+ echo " --no-changelog don't generate the top-level ChangeLog"
echo " --snapshot same as --clean-up --no-update --tar --no-check"
echo " --tar make a tar file"
echo " --tests include the test/ directory"
@@ -277,11 +282,14 @@ fi
echo "Creating top directory: '${tempdir}'"
mkdir ${tempdir}
-if test -d .git; then
- echo "Making top-level ChangeLog"
- make distprefix=${tempdir}/ ChangeLog
-else
- echo "No repository, so omitting top-level ChangeLog"
+if [ "$changelog" = yes ]; then
+ if test -d .git; then
+ echo "Making top-level ChangeLog"
+ make ChangeLog CHANGELOG=${tempdir}/ChangeLog || \
+ { x=$?; echo "make ChangeLog FAILED (try --no-changelog?)" >&2; exit $x;
}
+ else
+ echo "No repository, so omitting top-level ChangeLog"
+ fi
fi
### We copy in the top-level files before creating the subdirectories in
diff --git a/src/Makefile.in b/src/Makefile.in
index f92849f..b7e776e 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -615,9 +615,9 @@ ctagsfiles3 = [a-zA-Z]*.m
## rather than the file contents.
TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2)
$(srcdir)/$(ctagsfiles3)
"$(ETAGS)" --include=../lisp/TAGS --include=$(lwlibdir)/TAGS \
- --regex='{c}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \
+ --regex='{c}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/\1/' \
$(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) \
- --regex='{objc}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \
+ --regex='{objc}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/\1/' \
$(srcdir)/$(ctagsfiles3)
## Arrange to make tags tables for ../lisp and ../lwlib,
diff --git a/src/editfns.c b/src/editfns.c
index 1686fbf..cddb0d4 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -4390,9 +4390,6 @@ usage: (format STRING &rest OBJECTS) */)
nchars = multibyte_chars_in_text ((unsigned char *) buf, p - buf);
val = make_specified_string (buf, nchars, p - buf, multibyte);
- /* If we allocated BUF with malloc, free it too. */
- SAFE_FREE ();
-
/* If the format string has text properties, or any of the string
arguments has text properties, set up text properties of the
result string. */
@@ -4498,6 +4495,9 @@ usage: (format STRING &rest OBJECTS) */)
UNGCPRO;
}
+ /* If we allocated BUF or INFO with malloc, free it too. */
+ SAFE_FREE ();
+
return val;
}
diff --git a/src/filelock.c b/src/filelock.c
index 89d3e35..4ee7a01 100644
--- a/src/filelock.c
+++ b/src/filelock.c
@@ -669,10 +669,6 @@ lock_file (Lisp_Object fn)
struct gcpro gcpro1;
USE_SAFE_ALLOCA;
- /* Don't do locking if the user has opted out. */
- if (! create_lockfiles)
- return;
-
/* Don't do locking while dumping Emacs.
Uncompressing wtmp files uses call-process, which does not work
in an uninitialized Emacs. */
@@ -690,9 +686,6 @@ lock_file (Lisp_Object fn)
#endif
encoded_fn = ENCODE_FILE (fn);
- /* Create the name of the lock-file for file fn */
- MAKE_LOCK_NAME (lfname, encoded_fn);
-
/* See if this file is visited and has changed on disk since it was
visited. */
{
@@ -707,27 +700,35 @@ lock_file (Lisp_Object fn)
}
- /* Try to lock the lock. */
- if (0 < lock_if_free (&lock_info, lfname))
+ /* Don't do locking if the user has opted out. */
+ if (create_lockfiles)
{
- /* Someone else has the lock. Consider breaking it. */
- Lisp_Object attack;
- char *dot = lock_info.dot;
- ptrdiff_t pidlen = lock_info.colon - (dot + 1);
- static char const replacement[] = " (pid ";
- int replacementlen = sizeof replacement - 1;
- memmove (dot + replacementlen, dot + 1, pidlen);
- strcpy (dot + replacementlen + pidlen, ")");
- memcpy (dot, replacement, replacementlen);
- attack = call2 (intern ("ask-user-about-lock"), fn,
- build_string (lock_info.user));
- /* Take the lock if the user said so. */
- if (!NILP (attack))
- lock_file_1 (lfname, 1);
+
+ /* Create the name of the lock-file for file fn */
+ MAKE_LOCK_NAME (lfname, encoded_fn);
+
+ /* Try to lock the lock. */
+ if (0 < lock_if_free (&lock_info, lfname))
+ {
+ /* Someone else has the lock. Consider breaking it. */
+ Lisp_Object attack;
+ char *dot = lock_info.dot;
+ ptrdiff_t pidlen = lock_info.colon - (dot + 1);
+ static char const replacement[] = " (pid ";
+ int replacementlen = sizeof replacement - 1;
+ memmove (dot + replacementlen, dot + 1, pidlen);
+ strcpy (dot + replacementlen + pidlen, ")");
+ memcpy (dot, replacement, replacementlen);
+ attack = call2 (intern ("ask-user-about-lock"), fn,
+ build_string (lock_info.user));
+ /* Take the lock if the user said so. */
+ if (!NILP (attack))
+ lock_file_1 (lfname, 1);
+ }
+ SAFE_FREE ();
}
UNGCPRO;
- SAFE_FREE ();
}
void
diff --git a/src/keyboard.c b/src/keyboard.c
index 392cea1..8dc96be 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -8722,12 +8722,10 @@ read_char_minibuf_menu_prompt (int commandflag,
while (BUFFERP (obj));
kset_defining_kbd_macro (current_kboard, orig_defn_macro);
- if (!INTEGERP (obj) || XINT (obj) == -2)
- return obj;
-
- if (! EQ (obj, menu_prompt_more_char)
- && (!INTEGERP (menu_prompt_more_char)
- || ! EQ (obj, make_number (Ctl (XINT (menu_prompt_more_char))))))
+ if (!INTEGERP (obj) || XINT (obj) == -2
+ || (! EQ (obj, menu_prompt_more_char)
+ && (!INTEGERP (menu_prompt_more_char)
+ || ! EQ (obj, make_number (Ctl (XINT
(menu_prompt_more_char)))))))
{
if (!NILP (KVAR (current_kboard, defining_kbd_macro)))
store_kbd_macro_char (obj);
diff --git a/src/nsterm.m b/src/nsterm.m
index e90c3d7..187086c 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -3188,6 +3188,96 @@ ns_dumpglyphs_stretch (struct glyph_string *s)
static void
+ns_draw_composite_glyph_string_foreground (struct glyph_string *s)
+{
+ int i, j, x;
+ struct font *font = s->font;
+
+ /* If first glyph of S has a left box line, start drawing the text
+ of S to the right of that box line. */
+ if (s->face && s->face->box != FACE_NO_BOX
+ && s->first_glyph->left_box_line_p)
+ x = s->x + eabs (s->face->box_line_width);
+ else
+ x = s->x;
+
+ /* S is a glyph string for a composition. S->cmp_from is the index
+ of the first character drawn for glyphs of this composition.
+ S->cmp_from == 0 means we are drawing the very first character of
+ this composition. */
+
+ /* Draw a rectangle for the composition if the font for the very
+ first character of the composition could not be loaded. */
+ if (s->font_not_found_p)
+ {
+ if (s->cmp_from == 0)
+ {
+ NSRect r = NSMakeRect (s->x, s->y, s->width-1, s->height -1);
+ ns_draw_box (r, 1, FRAME_CURSOR_COLOR (s->f), 1, 1);
+ }
+ }
+ else if (! s->first_glyph->u.cmp.automatic)
+ {
+ int y = s->ybase;
+
+ for (i = 0, j = s->cmp_from; i < s->nchars; i++, j++)
+ /* TAB in a composition means display glyphs with padding
+ space on the left or right. */
+ if (COMPOSITION_GLYPH (s->cmp, j) != '\t')
+ {
+ int xx = x + s->cmp->offsets[j * 2];
+ int yy = y - s->cmp->offsets[j * 2 + 1];
+
+ font->driver->draw (s, j, j + 1, xx, yy, false);
+ if (s->face->overstrike)
+ font->driver->draw (s, j, j + 1, xx + 1, yy, false);
+ }
+ }
+ else
+ {
+ Lisp_Object gstring = composition_gstring_from_id (s->cmp_id);
+ Lisp_Object glyph;
+ int y = s->ybase;
+ int width = 0;
+
+ for (i = j = s->cmp_from; i < s->cmp_to; i++)
+ {
+ glyph = LGSTRING_GLYPH (gstring, i);
+ if (NILP (LGLYPH_ADJUSTMENT (glyph)))
+ width += LGLYPH_WIDTH (glyph);
+ else
+ {
+ int xoff, yoff, wadjust;
+
+ if (j < i)
+ {
+ font->driver->draw (s, j, i, x, y, false);
+ if (s->face->overstrike)
+ font->driver->draw (s, j, i, x + 1, y, false);
+ x += width;
+ }
+ xoff = LGLYPH_XOFF (glyph);
+ yoff = LGLYPH_YOFF (glyph);
+ wadjust = LGLYPH_WADJUST (glyph);
+ font->driver->draw (s, i, i + 1, x + xoff, y + yoff, false);
+ if (s->face->overstrike)
+ font->driver->draw (s, i, i + 1, x + xoff + 1, y + yoff,
+ false);
+ x += wadjust;
+ j = i + 1;
+ width = 0;
+ }
+ }
+ if (j < i)
+ {
+ font->driver->draw (s, j, i, x, y, false);
+ if (s->face->overstrike)
+ font->driver->draw (s, j, i, x + 1, y, false);
+ }
+ }
+}
+
+static void
ns_draw_glyph_string (struct glyph_string *s)
/* --------------------------------------------------------------------------
External (RIF): Main draw-text call.
@@ -3279,13 +3369,14 @@ ns_draw_glyph_string (struct glyph_string *s)
{
BOOL isComposite = s->first_glyph->type == COMPOSITE_GLYPH;
- int end = isComposite ? s->cmp_to : s->nchars;
-
- font->driver->draw
- (s, s->cmp_from, end, s->x, s->ybase,
- (flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p)
- || flags == NS_DUMPGLYPH_MOUSEFACE);
+ if (isComposite)
+ ns_draw_composite_glyph_string_foreground (s);
+ else
+ font->driver->draw
+ (s, s->cmp_from, s->nchars, s->x, s->ybase,
+ (flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p)
+ || flags == NS_DUMPGLYPH_MOUSEFACE);
}
{
diff --git a/test/automated/cl-generic-tests.el
b/test/automated/cl-generic-tests.el
index 5194802..a6035d1 100644
--- a/test/automated/cl-generic-tests.el
+++ b/test/automated/cl-generic-tests.el
@@ -179,5 +179,15 @@
(cl-list* "quatre" (cl-next-method-p) (cl-call-next-method)))
(should (equal (cl--generic-1 4 5) '("quatre" t 4 5 nil))))
+(ert-deftest sm-generic-test-12-context ()
+ (cl-defgeneric cl--generic-1 ())
+ (cl-defmethod cl--generic-1 (&context (overwrite-mode (eql t))) 'is-t)
+ (cl-defmethod cl--generic-1 (&context (overwrite-mode (eql nil))) 'is-nil)
+ (cl-defmethod cl--generic-1 () 'other)
+ (should (equal (list (let ((overwrite-mode t)) (cl--generic-1))
+ (let ((overwrite-mode nil)) (cl--generic-1))
+ (let ((overwrite-mode 1)) (cl--generic-1)))
+ '(is-t is-nil other))))
+
(provide 'cl-generic-tests)
;;; cl-generic-tests.el ends here
diff --git a/test/etags/CTAGS.good b/test/etags/CTAGS.good
new file mode 100644
index 0000000..ee5b3f4
--- /dev/null
+++ b/test/etags/CTAGS.good
@@ -0,0 +1,6013 @@
+#a-defer-word forth-src/test-forth.fth /^defer #a-defer-word$/
+#some-storage forth-src/test-forth.fth /^2000 buffer: #some-storage$/
+$ make-src/Makefile /^ @-$(MAKE) OPTIONS='--no-members'
${LATEST}ediff$/
+$ make-src/Makefile /^ @-$(MAKE) OPTIONS='--declarations
--no-members' $/
+$ make-src/Makefile /^ @-$(MAKE) OPTIONS='--members'
${LATEST}ediff$/
+$ make-src/Makefile /^ @-$(MAKE) OPTIONS='address@hidden
--no-member/
+$ make-src/Makefile /^ @-$(MAKE) OPTIONS='nonexistent
--members --declar/
+$ make-src/Makefile /^ @-$(MAKE) ${LATEST}cdiff$/
+$ make-src/Makefile /^ $(CC) ${FASTCFLAGS} -c $?$/
+$ make-src/Makefile /^ $(CC) ${FASTCFLAGS} -c $?$/
+$ make-src/Makefile /^ $(CC) ${FASTCFLAGS} -c $?$/
+$ make-src/Makefile /^ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
-o etags e/
+$ make-src/Makefile /^ $(CC) $(CFLAGS) $(CPPFLAGS) -DCTAGS
$(LDFLAGS) -o/
+$$i make-src/Makefile 140
+$0x80 c-src/sysdep.h 32
+$SYS_##syscall_na c-src/sysdep.h 31
+$domain php-src/lce_functions.php 175
+$filename php-src/lce_functions.php 174
+$ignore_ws php-src/lce_functions.php 171
+$memassign php-src/ptest.php 9
+$memassign_space php-src/ptest.php 10
+$member php-src/ptest.php 8
+$msgid php-src/lce_functions.php 107
+$msgid php-src/lce_functions.php 165
+$msgid_lc php-src/lce_functions.php 113
+$msgstr php-src/lce_functions.php 108
+$msgstr php-src/lce_functions.php 166
+$msgstr_lc php-src/lce_functions.php 114
+$po_entries php-src/lce_functions.php 172
+$poe_num php-src/lce_functions.php 173
+$por_a php-src/lce_functions.php 500
+$prefix php-src/lce_functions.php 72
+$state php-src/lce_functions.php 170
+$sys_comment php-src/lce_functions.php 110
+$sys_comment php-src/lce_functions.php 168
+$sys_comment_lc php-src/lce_functions.php 116
+$test php-src/ptest.php 12
+$unk_comment php-src/lce_functions.php 111
+$unk_comment php-src/lce_functions.php 169
+$unk_comment_lc php-src/lce_functions.php 117
+$user_comment php-src/lce_functions.php 109
+$user_comment php-src/lce_functions.php 167
+$user_comment_lc php-src/lce_functions.php 115
+( $arg perl-src/mirror.pl 468
+( $arg perl-src/mirror.pl 1506
+( $as perl-src/mirror.pl 3046
+( $atime, $mtime, $path perl-src/mirror.pl 4118
+( $attempts perl-src/mirror.pl 1548
+( $buffer, $in, $sofar perl-src/mirror.pl 3686
+( $bufsiz perl-src/mirror.pl 3685
+( $c perl-src/mirror.pl 634
+( $c perl-src/mirror.pl 706
+( $changed perl-src/mirror.pl 3916
+( $com perl-src/mirror.pl 3741
+( $comp perl-src/mirror.pl 2998
+( $comptemp perl-src/mirror.pl 2916
+( $con perl-src/mirror.pl 1241
+( $cont perl-src/mirror.pl 830
+( $count perl-src/mirror.pl 2353
+( $count perl-src/mirror.pl 3920
+( $d perl-src/mirror.pl 3691
+( $del, $kind perl-src/mirror.pl 3322
+( $del_patt perl-src/mirror.pl 3135
+( $dest, $existing perl-src/mirror.pl 2745
+( $dest_dir perl-src/mirror.pl 3684
+( $dest_path perl-src/mirror.pl 3066
+( $dest_path, $attribs perl-src/mirror.pl 2809
+( $dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime perl-src/mirror.pl
2685
+( $dest_path, $existing_path perl-src/mirror.pl 3400
+( $desti, $srci, $compress, $srciZ, $srcigz, $split, $dest_path_real
perl-src/mirror.pl 2299
+( $dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize, perl-src/mirror.pl
1694
+( $diff perl-src/mirror.pl 3638
+( $dir perl-src/mirror.pl 3306
+( $dir perl-src/mirror.pl 3459
+( $dir perl-src/mirror.pl 3530
+( $dir perl-src/mirror.pl 3784
+( $dir, $file perl-src/mirror.pl 3064
+( $dir, $file, $temp, $compress, $split, $restart, $mesg, $got_mesg
perl-src/mirror.pl 2872
+( $dir, $mode perl-src/mirror.pl 3499
+( $dir, $mp perl-src/mirror.pl 723
+( $dir, $rest perl-src/mirror.pl 3873
+( $dir_level perl-src/mirror.pl 1691
+( $dirname perl-src/mirror.pl 3284
+( $dirpart perl-src/mirror.pl 2746
+( $dirpart perl-src/mirror.pl 3905
+( $dirtmp perl-src/mirror.pl 1830
+( $dirtmp perl-src/mirror.pl 1859
+( $dl perl-src/mirror.pl 2788
+( $done perl-src/mirror.pl 2239
+( $dpp, $dps perl-src/mirror.pl 2509
+( $eqpl perl-src/mirror.pl 829
+( $err perl-src/mirror.pl 1601
+( $exit_status perl-src/mirror.pl 1030
+( $f perl-src/mirror.pl 725
+( $f perl-src/mirror.pl 1840
+( $f perl-src/mirror.pl 2770
+( $f perl-src/mirror.pl 2921
+( $f perl-src/mirror.pl 2997
+( $f, $fr, $flb, $flt, $flp, $flz, $frb, $frt perl-src/mirror.pl 1990
+( $f, $uf perl-src/mirror.pl 1878
+( $file perl-src/mirror.pl 3673
+( $file, $kind perl-src/mirror.pl 3991
+( $files_to_go, $dirs_to_go perl-src/mirror.pl 3125
+( $filesize perl-src/mirror.pl 3015
+( $flag, $p perl-src/mirror.pl 480
+( $flags perl-src/mirror.pl 1912
+( $fname perl-src/mirror.pl 758
+( $fname perl-src/mirror.pl 3379
+( $ft perl-src/mirror.pl 2747
+( $get_one_package perl-src/mirror.pl 1009
+( $i perl-src/mirror.pl 1692
+( $i perl-src/mirror.pl 2129
+( $i perl-src/mirror.pl 3917
+( $in perl-src/mirror.pl 3932
+( $index perl-src/mirror.pl 3697
+( $key perl-src/mirror.pl 964
+( $key, $val perl-src/mirror.pl 896
+( $key, $val, $overrides perl-src/mirror.pl 870
+( $key, $val, $str perl-src/mirror.pl 975
+( $key_val perl-src/mirror.pl 578
+( $last_prodded perl-src/mirror.pl 1643
+( $last_prodded perl-src/mirror.pl 2294
+( $lcwd perl-src/mirror.pl 4137
+( $locali perl-src/mirror.pl 3054
+( $locali perl-src/mirror.pl 3714
+( $map perl-src/mirror.pl 3645
+( $map perl-src/mirror.pl 3659
+( $mapi perl-src/mirror.pl 1763
+( $mapi perl-src/mirror.pl 2214
+( $mode perl-src/mirror.pl 3556
+( $msg perl-src/mirror.pl 972
+( $msg perl-src/mirror.pl 1963
+( $msg perl-src/mirror.pl 3417
+( $msg perl-src/mirror.pl 3431
+( $msg perl-src/mirror.pl 4030
+( $name perl-src/mirror.pl 2653
+( $newpath perl-src/mirror.pl 2838
+( $nle perl-src/mirror.pl 973
+( $now perl-src/mirror.pl 1493
+( $old perl-src/mirror.pl 2421
+( $old_dest_path perl-src/mirror.pl 2432
+( $old_dest_path, $existing_path, $tmp, $restart perl-src/mirror.pl
2300
+( $old_mode perl-src/mirror.pl 4124
+( $old_name perl-src/mirror.pl 2656
+( $old_path perl-src/mirror.pl 2130
+( $old_path perl-src/mirror.pl 2143
+( $old_sig perl-src/mirror.pl 2098
+( $orig_do_deletes perl-src/mirror.pl 3132
+( $orig_path perl-src/mirror.pl 3921
+( $orig_path, $points_to perl-src/mirror.pl 3904
+( $orig_save_deletes perl-src/mirror.pl 3133
+( $out perl-src/mirror.pl 974
+( $p perl-src/mirror.pl 2762
+( $p, $s, $trz, $t, $m perl-src/mirror.pl 2030
+( $package perl-src/mirror.pl 3965
+( $package, $filename, $line perl-src/mirror.pl 4031
+( $parse_state perl-src/mirror.pl 1946
+( $part perl-src/mirror.pl 3698
+( $pass perl-src/mirror.pl 3609
+( $path perl-src/mirror.pl 3763
+( $path perl-src/mirror.pl 3766
+( $path perl-src/mirror.pl 3888
+( $path perl-src/mirror.pl 3915
+( $path, $size, $time, $type, $mode, $rdir, $rcwd perl-src/mirror.pl
2127
+( $path, $src_path, $type perl-src/mirror.pl 3555
+( $path, $time perl-src/mirror.pl 2701
+( $path, $time, $size, $type, $mode, $name, $isdir, $value, $follow
perl-src/mirror.pl 1693
+( $pathi perl-src/mirror.pl 3564
+( $pathi perl-src/mirror.pl 3568
+( $pathi, $path, *keep, *keep_totals, *keep_map, $kind
perl-src/mirror.pl 4071
+( $per perl-src/mirror.pl 3162
+( $per perl-src/mirror.pl 3184
+( $pr_time perl-src/mirror.pl 2703
+( $prog perl-src/mirror.pl 3762
+( $program perl-src/mirror.pl 3782
+( $readme perl-src/mirror.pl 3730
+( $real perl-src/mirror.pl 2409
+( $real, $reali, $reali1 perl-src/mirror.pl 2352
+( $real_save_dir, $save_dest perl-src/mirror.pl 3249
+( $reali perl-src/mirror.pl 2410
+( $res perl-src/mirror.pl 1549
+( $ret perl-src/mirror.pl 1587
+( $ret perl-src/mirror.pl 2097
+( $ret perl-src/mirror.pl 4126
+( $ri perl-src/mirror.pl 2203
+( $rls perl-src/mirror.pl 1825
+( $rooted perl-src/mirror.pl 3919
+( $save, $kind perl-src/mirror.pl 3247
+( $save_dir_tail perl-src/mirror.pl 3226
+( $sec,$min,$hour,$mday,$mon,$year, perl-src/mirror.pl 678
+( $sig perl-src/mirror.pl 4029
+( $sig perl-src/mirror.pl 4038
+( $site, $path perl-src/mirror.pl 539
+( $site_path perl-src/mirror.pl 525
+( $size perl-src/mirror.pl 3840
+( $sizemsg perl-src/mirror.pl 3016
+( $sp, $dp perl-src/mirror.pl 2301
+( $src_file perl-src/mirror.pl 2915
+( $src_path perl-src/mirror.pl 2677
+( $src_path perl-src/mirror.pl 2808
+( $src_path, $dest_path, $attribs, $timestamp perl-src/mirror.pl 2871
+( $src_path, $dest_path, $got_mesg, $size perl-src/mirror.pl 3092
+( $src_path, $dest_path, $i perl-src/mirror.pl 2293
+( $src_path, $i perl-src/mirror.pl 3131
+( $srci perl-src/mirror.pl 2810
+( $srcsize perl-src/mirror.pl 3017
+( $status perl-src/mirror.pl 3442
+( $storename perl-src/mirror.pl 1793
+( $t perl-src/mirror.pl 1589
+( $t1, $t2 perl-src/mirror.pl 3637
+( $temp, $dest_path, $time perl-src/mirror.pl 3683
+( $thing perl-src/mirror.pl 2721
+( $thing perl-src/mirror.pl 2738
+( $ti perl-src/mirror.pl 2975
+( $time perl-src/mirror.pl 3029
+( $time_to_sig perl-src/mirror.pl 4106
+( $tlb perl-src/mirror.pl 1995
+( $tlz perl-src/mirror.pl 2037
+( $tmp perl-src/mirror.pl 2666
+( $tmp_mode perl-src/mirror.pl 4125
+( $to , $tn perl-src/mirror.pl 1991
+( $todo, $msg perl-src/mirror.pl 3809
+( $type_changed perl-src/mirror.pl 1791
+( $udirtmp perl-src/mirror.pl 1792
+( $uid, $gid, $path perl-src/mirror.pl 4112
+( $unsquish perl-src/mirror.pl 1832
+( $unsquish perl-src/mirror.pl 1870
+( $update perl-src/mirror.pl 2534
+( $user perl-src/mirror.pl 595
+( $user perl-src/mirror.pl 3608
+( $v perl-src/mirror.pl 839
+( $v, $kind perl-src/mirror.pl 3860
+( $val perl-src/mirror.pl 953
+( $val perl-src/mirror.pl 1597
+( $val perl-src/mirror.pl 3392
+( $val perl-src/mirror.pl 3500
+( $val perl-src/mirror.pl 3531
+( $val_name perl-src/mirror.pl 902
+( $value perl-src/mirror.pl 2408
+( $| perl-src/mirror.pl 3610
+( *src_paths, perl-src/mirror.pl 2286
+( *src_paths, perl-src/mirror.pl 3121
+( *things perl-src/mirror.pl 3754
+( @dir, $d, $path perl-src/mirror.pl 3460
+( @dir_list perl-src/mirror.pl 2128
+( @dirs, $dir perl-src/mirror.pl 1642
+( @parts perl-src/mirror.pl 3933
+( @prog_path perl-src/mirror.pl 3783
+( @rhelp perl-src/mirror.pl 1289
+( @sub_dirs perl-src/mirror.pl 1329
+( @t perl-src/mirror.pl 1154
+( @t perl-src/mirror.pl 4006
+($_,$flag,$opt,$f,$r,@temp perl-src/yagrip.pl 8
+($filesize perl-src/mirror.pl 2944
+($old_dir perl-src/mirror.pl 3539
+($prog,$_,@list perl-src/yagrip.pl 39
+($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst perl-src/mirror.pl
4013
+($string,$flag,@string,@temp,@last perl-src/yagrip.pl 40
+(a-forth-constant forth-src/test-forth.fth /^constant
(a-forth-constant$/
+(another-forth-word forth-src/test-forth.fth /^:
(another-forth-word) ( -- )$/
++ tex-src/texinfo.tex /^\\def+{{\\tt \\char 43}}$/
+.PRECIOUS Makefile /^.PRECIOUS: ETAGS.good CTAGS.good$/
+/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef
\/.notdef \/.notdef \/.not/
+/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef
\/.notdef \/.notdef \/.not/
+/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef
\/.notdef \/.notdef \/.not/
+/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef
\/.notdef \/.notdef \/.not/
+/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef
\/.notdef \/space \/exclam/
+/A ps-src/rfc1245.ps /^\/A { $/
+/Acircumflex ps-src/rfc1245.ps /^\/Acircumflex \/Ecircumflex \/Aacute
\/Edieresis \/Egra/
+/B ps-src/rfc1245.ps /^\/B { $/
+/BEGINBITMAP2BIT ps-src/rfc1245.ps /^\/BEGINBITMAP2BIT { $/
+/BEGINBITMAP2BITc ps-src/rfc1245.ps /^\/BEGINBITMAP2BITc { $/
+/BEGINBITMAPBW ps-src/rfc1245.ps /^\/BEGINBITMAPBW { $/
+/BEGINBITMAPBWc ps-src/rfc1245.ps /^\/BEGINBITMAPBWc { $/
+/BEGINBITMAPGRAY ps-src/rfc1245.ps /^\/BEGINBITMAPGRAY { $/
+/BEGINBITMAPGRAYc ps-src/rfc1245.ps /^\/BEGINBITMAPGRAYc { $/
+/BEGINPRINTCODE ps-src/rfc1245.ps /^\/BEGINPRINTCODE { $/
+/BF ps-src/rfc1245.ps /^\/BF { $/
+/BITMAPCOLOR ps-src/rfc1245.ps /^\/BITMAPCOLOR { $/
+/BITMAPCOLORc ps-src/rfc1245.ps /^\/BITMAPCOLORc { $/
+/BITMAPGRAY ps-src/rfc1245.ps /^\/BITMAPGRAY { $/
+/BITMAPGRAYc ps-src/rfc1245.ps /^\/BITMAPGRAYc { $/
+/C ps-src/rfc1245.ps /^\/C { $/
+/COMMONBITMAP ps-src/rfc1245.ps /^\/COMMONBITMAP { $/
+/COMMONBITMAPc ps-src/rfc1245.ps /^\/COMMONBITMAPc { $/
+/D ps-src/rfc1245.ps /^\/D {curveto} bind def$/
+/DiacriticEncoding ps-src/rfc1245.ps /^\/DiacriticEncoding [$/
+/E ps-src/rfc1245.ps /^\/E {lineto} bind def$/
+/ENDBITMAP ps-src/rfc1245.ps /^\/ENDBITMAP {$/
+/ENDPRINTCODE ps-src/rfc1245.ps /^\/ENDPRINTCODE {$/
+/F ps-src/rfc1245.ps /^\/F { $/
+/FMBEGINEPSF ps-src/rfc1245.ps /^\/FMBEGINEPSF { $/
+/FMBEGINPAGE ps-src/rfc1245.ps /^\/FMBEGINPAGE { $/
+/FMDEFINEFONT ps-src/rfc1245.ps /^\/FMDEFINEFONT { $/
+/FMDOCUMENT ps-src/rfc1245.ps /^\/FMDOCUMENT { $/
+/FMENDEPSF ps-src/rfc1245.ps /^\/FMENDEPSF {$/
+/FMENDPAGE ps-src/rfc1245.ps /^\/FMENDPAGE {$/
+/FMLOCAL ps-src/rfc1245.ps /^\/FMLOCAL {$/
+/FMNORMALIZEGRAPHICS ps-src/rfc1245.ps /^\/FMNORMALIZEGRAPHICS { $/
+/FMVERSION ps-src/rfc1245.ps /^\/FMVERSION {$/
+/FMversion ps-src/rfc1245.ps /^\/FMversion (2.0) def $/
+/Fmcc ps-src/rfc1245.ps /^\/Fmcc {$/
+/FrameDict ps-src/rfc1245.ps /^\/FrameDict 190 dict def $/
+/G ps-src/rfc1245.ps /^\/G { $/
+/H ps-src/rfc1245.ps /^\/H { $/
+/Icircumflex ps-src/rfc1245.ps /^\/Icircumflex \/Idieresis \/Igrave
\/Oacute \/Ocircumfl/
+/L ps-src/rfc1245.ps /^\/L \/M \/N \/O \/P \/Q \/R \/S \/T \/U \/V
\/W \/X \/Y \/Z \/brac/
+/L ps-src/rfc1245.ps /^\/L { $/
+/M ps-src/rfc1245.ps /^\/M {newpath moveto} bind def$/
+/N ps-src/rfc1245.ps /^\/N { $/
+/Ntilde ps-src/rfc1245.ps /^\/Ntilde \/Odieresis \/Udieresis
\/aacute \/agrave \/aci/
+/O ps-src/rfc1245.ps /^\/O {closepath} bind def$/
+/Otilde ps-src/rfc1245.ps /^\/Otilde \/OE \/oe \/endash \/emdash
\/quotedblleft \/quo/
+/P ps-src/rfc1245.ps /^\/P { $/
+/PF ps-src/rfc1245.ps /^\/PF { $/
+/R ps-src/rfc1245.ps /^\/R { $/
+/RF ps-src/rfc1245.ps /^\/RF { $/
+/RR ps-src/rfc1245.ps /^\/RR { $/
+/ReEncode ps-src/rfc1245.ps /^\/ReEncode { $/
+/S ps-src/rfc1245.ps /^\/S { $/
+/SF ps-src/rfc1245.ps /^\/SF { $/
+/T ps-src/rfc1245.ps /^\/T { $/
+/TF ps-src/rfc1245.ps /^\/TF { $/
+/U ps-src/rfc1245.ps /^\/U { $/
+/Uacute ps-src/rfc1245.ps /^\/Uacute \/Ucircumflex \/Ugrave
\/dotlessi \/circumflex/
+/V ps-src/rfc1245.ps /^\/V { $/
+/W ps-src/rfc1245.ps /^\/W { $/
+/X ps-src/rfc1245.ps /^\/X { $/
+/Y ps-src/rfc1245.ps /^\/Y { $/
+/Z ps-src/rfc1245.ps /^\/Z {$/
+/atilde ps-src/rfc1245.ps /^\/atilde \/aring \/ccedilla \/eacute
\/egrave \/ecircumf/
+/bl ps-src/rfc1245.ps /^\/bl { $/
+/braceright ps-src/rfc1245.ps /^\/braceright \/asciitilde \/.notdef
\/Adieresis \/Aring/
+/bracketright ps-src/rfc1245.ps /^\/bracketright \/asciicircum
\/underscore \/grave \/a \//
+/breve ps-src/rfc1245.ps /^\/breve \/dotaccent \/ring \/cedilla
\/hungarumlaut \/og/
+/cfs ps-src/rfc1245.ps /^\/cfs { $/
+/colorsetup ps-src/rfc1245.ps /^\/colorsetup {$/
+/desperatepapersize ps-src/rfc1245.ps /^\/desperatepapersize {$/
+/dieresis ps-src/rfc1245.ps /^\/dieresis \/.notdef \/AE \/Oslash
\/.notdef \/.notdef \//
+/dmatrix ps-src/rfc1245.ps /^\/dmatrix matrix def$/
+/dnormalize ps-src/rfc1245.ps /^\/dnormalize {$/
+/dpi ps-src/rfc1245.ps /^\/dpi 72 0 dmatrix defaultmatrix
dtransform$/
+/exclamdown ps-src/rfc1245.ps /^\/exclamdown \/logicalnot \/.notdef
\/florin \/.notdef /
+/fakecolorsetup ps-src/rfc1245.ps /^\/fakecolorsetup {$/
+/fillprocs ps-src/rfc1245.ps /^\/fillprocs 32 array def$/
+/fl ps-src/rfc1245.ps /^\/fl { $/
+/fraction ps-src/rfc1245.ps /^\/fraction \/currency \/guilsinglleft
\/guilsinglright/
+/freq ps-src/rfc1245.ps /^\/freq dpi 18.75 div 8 div round dup 0 eq
{pop 1} i/
+/gn ps-src/rfc1245.ps /^\/gn { $/
+/graymode ps-src/rfc1245.ps /^\/graymode true def$/
+/grayness ps-src/rfc1245.ps /^\/grayness {$/
+/guillemotleft ps-src/rfc1245.ps /^\/guillemotleft \/guillemotright
\/ellipsis \/.notdef /
+/hx ps-src/rfc1245.ps /^\/hx { $/
+/i ps-src/rfc1245.ps /^\/i \/j \/k \/l \/m \/n \/o \/p \/q \/r \/s
\/t \/u \/v \/w \/x \/y/
+/iacute ps-src/rfc1245.ps /^\/iacute \/igrave \/icircumflex
\/idieresis \/ntilde \/o/
+/ic ps-src/rfc1245.ps /^\/ic [ $/
+/inch ps-src/rfc1245.ps /^\/inch {72 mul} def$/
+/ip ps-src/rfc1245.ps /^\/ip { $/
+/less ps-src/rfc1245.ps /^\/less \/equal \/greater \/question \/at \/A
\/B \/C \/D \/E/
+/lnormalize ps-src/rfc1245.ps /^\/lnormalize { $/
+/manualpapersize ps-src/rfc1245.ps /^\/manualpapersize {$/
+/max ps-src/rfc1245.ps /^\/max {2 copy lt {exch} if pop} bind def$/
+/min ps-src/rfc1245.ps /^\/min {2 copy gt {exch} if pop} bind def$/
+/ms ps-src/rfc1245.ps /^\/ms { $/
+/nbluet ps-src/rfc1245.ps /^\/nbluet 256 array def$/
+/ngrayt ps-src/rfc1245.ps /^\/ngrayt 256 array def$/
+/ngreent ps-src/rfc1245.ps /^\/ngreent 256 array def$/
+/normalize ps-src/rfc1245.ps /^\/normalize {$/
+/nredt ps-src/rfc1245.ps /^\/nredt 256 array def$/
+/numbersign ps-src/rfc1245.ps /^\/numbersign \/dollar \/percent
\/ampersand \/quotesing/
+/ocircumflex ps-src/rfc1245.ps /^\/ocircumflex \/odieresis \/otilde
\/uacute \/ugrave \/u/
+/ordfeminine ps-src/rfc1245.ps /^\/ordfeminine \/ordmasculine
\/.notdef \/ae \/oslash \/q/
+/pagedimen ps-src/rfc1245.ps /^\/pagedimen { $/
+/papersize ps-src/rfc1245.ps /^\/papersize {$/
+/paragraph ps-src/rfc1245.ps /^\/paragraph \/germandbls \/registered
\/copyright \/tra/
+/parenright ps-src/rfc1245.ps /^\/parenright \/asterisk \/plus
\/comma \/hyphen \/period/
+/periodcentered ps-src/rfc1245.ps /^\/periodcentered
\/quotesinglbase \/quotedblbase \/per/
+/quoteleft ps-src/rfc1245.ps /^\/quoteleft \/quoteright \/.notdef
\/.notdef \/ydieresi/
+/restorematrix ps-src/rfc1245.ps /^\/restorematrix {$/
+/s1 ps-src/rfc1245.ps /^\/s1 1 string def$/
+/sangle ps-src/rfc1245.ps /^\/sangle 1 0 dmatrix defaultmatrix
dtransform exch /
+/savematrix ps-src/rfc1245.ps /^\/savematrix {$/
+/setmanualfeed ps-src/rfc1245.ps /^\/setmanualfeed {$/
+/setpapername ps-src/rfc1245.ps /^\/setpapername { $/
+/setpattern ps-src/rfc1245.ps /^\/setpattern {$/
+/two ps-src/rfc1245.ps /^\/two \/three \/four \/five \/six \/seven
\/eight \/nine \//
+/udieresis ps-src/rfc1245.ps /^\/udieresis \/dagger \/.notdef \/cent
\/sterling \/secti/
+/wbytes ps-src/rfc1245.ps /^\/wbytes { $/
+/wh ps-src/rfc1245.ps /^\/wh { $/
+/yen ps-src/rfc1245.ps /^\/yen \/.notdef \/.notdef \/.notdef \/.notdef
\/.notdef /
+::PctestActionAbort cp-src/Pctest.h 53
+::PctestActionFiltered cp-src/Pctest.h 51
+::PctestActionValid cp-src/Pctest.h 47
+::PctestActionValidLasthop cp-src/Pctest.h 49
+::cat cp-src/c.C 126
+::dog cp-src/c.C 126
+::f cp-src/c.C /^ void f() {}$/
+::teats cp-src/c.C 127
+:a-forth-dictionary-entry forth-src/test-forth.fth /^create
:a-forth-dictionary-entry$/
+< tex-src/texinfo.tex /^\\def<{{\\tt \\less}}$/
+= tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsubsection =
\\numberedsubsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsubsection =
\\appendixsubsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\section = \\unnumberedsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsection =
\\unnumberedsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsubsection =
\\unnumberedsubsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
+= tex-src/texinfo.tex /^\\global\\let\\subsubsection =
\\numberedsubsubsec$/
+= tex-src/texinfo.tex /^\\global\\def={{\\tt \\char 61}}}$/
+=/f ada-src/etags-test-for.ada /^ function "=" (L, R :
System.Address) return Boo/
+=\indexdummyfont tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/
+=\relax tex-src/texinfo.tex /^\\let\\chapter=\\relax$/
+=\relax tex-src/texinfo.tex /^\\let\\section=\\relax$/
+=\relax tex-src/texinfo.tex /^\\let\\subsection=\\relax$/
+=\relax tex-src/texinfo.tex /^\\let\\subsubsection=\\relax$/
+=\relax tex-src/texinfo.tex /^\\let\\appendix=\\relax$/
+=\smartitalic tex-src/texinfo.tex /^\\let\\cite=\\smartitalic$/
+> tex-src/texinfo.tex /^\\def>{{\\tt \\gtr}}$/
+>field1 forth-src/test-forth.fth /^ 9 field >field1$/
+>field2 forth-src/test-forth.fth /^ 5 field >field2$/
address@hidden make-src/Makefile /^ @$(MAKE) OPTIONS='--no-members'
${LATEST}ediff$/
address@hidden make-src/Makefile /^ @$(MAKE)
OPTIONS='--declarations --no-members' ${/
address@hidden make-src/Makefile /^ @$(MAKE) OPTIONS='--members'
${LATEST}ediff$/
address@hidden make-src/Makefile /^ @$(MAKE)
OPTIONS='address@hidden --no-members/
address@hidden make-src/Makefile /^ @$(MAKE) OPTIONS='nonexistent
--members --declara/
address@hidden make-src/Makefile /^ @$(MAKE) ${LATEST}cdiff$/
address@hidden make-src/Makefile /^ @$(MAKE) etags
"CPPFLAGS=-UVERSION"$/
address@hidden make-src/Makefile /^ @$(MAKE) CHECKOBJS= CHECKFLAGS=
etags "CFLAGS=-an/
address@hidden make-src/Makefile /^ @$(MAKE) CHECKOBJS= CHECKFLAGS=
ctags "CFLAGS=-an/
address@hidden make-src/Makefile /^ @$(MAKE) etags CHECKOBJS=
CHECKFLAGS= REGEXOBJS= /
+A c.c 162
+A cp-src/c.C 39
+A cp-src/c.C 56
+A cp-src/c.C 57
+A cp-src/c.C 73
+A cp-src/c.C 117
+A cp-src/fail.C 7
+A cp-src/fail.C 23
+A::A cp-src/c.C /^void A::A() {}$/
+A::B cp-src/c.C 56
+A::B cp-src/fail.C 8
+A::B cp-src/fail.C 24
+A::B::C cp-src/fail.C 9
+A::B::C cp-src/fail.C 25
+A::B::C::C cp-src/fail.C /^ C(int i) {x = i;}$/
+A::B::C::operator int cp-src/fail.C /^ operator
int() const {return x;}$/
+A::B::C::x cp-src/fail.C 10
+A::B::T cp-src/fail.C 14
+A::B::f cp-src/fail.C /^ int f() { return 5; }$/
+A::B::f cp-src/fail.C /^int A::B::f() { return 2; }$/
+A::T2 cp-src/fail.C 16
+A::colori cp-src/c.C 40
+A::giallo cp-src/c.C 40
+A::operator+ cp-src/c.C /^const A& A::operator+(const A&) { }$/
+A::operator+ cp-src/c.C /^ A operator+(A& a) {};$/
+A::rosso cp-src/c.C 40
+A::verde cp-src/c.C 40
+A::~A cp-src/c.C /^A::~A() {}$/
+ADASRC Makefile /^ADASRC=$(addprefix .\/ada-src\/,etags-test-for.ada 2/
+ADDRESS c-src/emacs/src/gmalloc.c /^#define ADDRESS(B) ((void
*) (((B) - 1) * BLOCKSIZ/
+ALIGNOF_STRUCT_LISP_VECTOR c-src/emacs/src/lisp.h 1378
+ALLOCATED_BEFORE_DUMPING c-src/emacs/src/gmalloc.c /^#define
ALLOCATED_BEFORE_DUMPING(P) \\$/
+ALLOCATE_PSEUDOVECTOR c-src/emacs/src/lisp.h /^#define
ALLOCATE_PSEUDOVECTOR(type, field, tag) /
+ALLOCATE_ZEROED_PSEUDOVECTOR c-src/emacs/src/lisp.h /^#define
ALLOCATE_ZEROED_PSEUDOVECTOR(type, field, /
+AND y-src/cccp.c 11
+ANSIC c-src/h.h 84
+ANSIC c-src/h.h 85
+AREF c-src/emacs/src/lisp.h /^AREF (Lisp_Object array, ptrdiff_t idx)$/
+ARGS Makefile /^ARGS=- < srclist$/
+ARITH_EQUAL c-src/emacs/src/lisp.h 3498
+ARITH_GRTR c-src/emacs/src/lisp.h 3501
+ARITH_GRTR_OR_EQUAL c-src/emacs/src/lisp.h 3503
+ARITH_LESS c-src/emacs/src/lisp.h 3500
+ARITH_LESS_OR_EQUAL c-src/emacs/src/lisp.h 3502
+ARITH_NOTEQUAL c-src/emacs/src/lisp.h 3499
+ARRAYELTS c-src/emacs/src/lisp.h /^#define ARRAYELTS(arr) (sizeof (arr)
\/ sizeof (arr/
+ARRAYP c-src/emacs/src/lisp.h /^ARRAYP (Lisp_Object x)$/
+ARRAY_MARK_FLAG c-src/emacs/src/lisp.h 768
+ASCII_CHAR_P c-src/emacs/src/lisp.h /^#define ASCII_CHAR_P(c) UNSIGNED_CMP
(c, <, 0x80)$/
+ASET c-src/emacs/src/lisp.h /^ASET (Lisp_Object array, ptrdiff_t idx,
Lisp_Objec/
+ASIZE c-src/emacs/src/lisp.h /^ASIZE (Lisp_Object array)$/
+ASRC Makefile /^ASRC=$(addprefix .\/a-src\/,empty.zz empty.zz.gz)$/
+AST_Array::AST_Array cp-src/c.C /^AST_Array::AST_Array(UTL_ScopedName
*n, unsigned l/
+AST_ConcreteType::AST_ConcreteType cp-src/c.C
/^AST_ConcreteType::AST_ConcreteType(AST_Decl::NodeT/
+AST_Root cp-src/c.C 92
+AT cp-src/c.C 52
+AT::t cp-src/c.C 52
+AU cp-src/c.C 53
+AU::x cp-src/c.C 53
+AUTOLOADP c-src/emacs/src/lisp.h /^AUTOLOADP (Lisp_Object x)$/
+AUTO_CONS c-src/emacs/src/lisp.h /^#define AUTO_CONS(name, a, b)
Lisp_Object name = A/
+AUTO_CONS_EXPR c-src/emacs/src/lisp.h /^#define AUTO_CONS_EXPR(a, b) \\$/
+AUTO_LIST1 c-src/emacs/src/lisp.h /^#define AUTO_LIST1(name, a)
\\$/
+AUTO_LIST2 c-src/emacs/src/lisp.h /^#define AUTO_LIST2(name, a, b)
\\$/
+AUTO_LIST3 c-src/emacs/src/lisp.h /^#define AUTO_LIST3(name, a, b, c)
\\$/
+AUTO_LIST4 c-src/emacs/src/lisp.h /^#define AUTO_LIST4(name, a, b, c, d)
\\$/
+AUTO_STRING c-src/emacs/src/lisp.h /^#define AUTO_STRING(name, str)
\\$/
+AVAIL_ALLOCA c-src/emacs/src/lisp.h /^#define AVAIL_ALLOCA(size) (sa_avail
-= (size), al/
+AWTEventMulticaster java-src/AWTEMul.java 63
+AWTEventMulticaster.AWTEventMulticaster java-src/AWTEMul.java /^
protected AWTEventMulticaster(EventListener a,/
+AWTEventMulticaster.a java-src/AWTEMul.java 69
+AWTEventMulticaster.actionPerformed java-src/AWTEMul.java /^ public
void actionPerformed(ActionEvent e) {$/
+AWTEventMulticaster.add java-src/AWTEMul.java /^ public static
ComponentListener add(ComponentL/
+AWTEventMulticaster.add java-src/AWTEMul.java /^ public static
ContainerListener add(ContainerL/
+AWTEventMulticaster.add java-src/AWTEMul.java /^ public static
FocusListener add(FocusListener /
+AWTEventMulticaster.add java-src/AWTEMul.java /^ public static
KeyListener add(KeyListener a, K/
+AWTEventMulticaster.add java-src/AWTEMul.java /^ public static
MouseListener add(MouseListener /
+AWTEventMulticaster.add java-src/AWTEMul.java /^ public static
MouseMotionListener add(MouseMot/
+AWTEventMulticaster.add java-src/AWTEMul.java /^ public static
WindowListener add(WindowListene/
+AWTEventMulticaster.add java-src/AWTEMul.java /^ public static
ActionListener add(ActionListene/
+AWTEventMulticaster.add java-src/AWTEMul.java /^ public static
ItemListener add(ItemListener a,/
+AWTEventMulticaster.add java-src/AWTEMul.java /^ public static
AdjustmentListener add(Adjustmen/
+AWTEventMulticaster.add java-src/AWTEMul.java /^ public static
TextListener add(TextListener a,/
+AWTEventMulticaster.addInternal java-src/AWTEMul.java /^ protected
static EventListener addInternal(Eve/
+AWTEventMulticaster.adjustmentValueChanged java-src/AWTEMul.java /^
public void adjustmentValueChanged(AdjustmentE/
+AWTEventMulticaster.b java-src/AWTEMul.java 69
+AWTEventMulticaster.componentAdded java-src/AWTEMul.java /^ public
void componentAdded(ContainerEvent e) {/
+AWTEventMulticaster.componentHidden java-src/AWTEMul.java /^ public
void componentHidden(ComponentEvent e) /
+AWTEventMulticaster.componentMoved java-src/AWTEMul.java /^ public
void componentMoved(ComponentEvent e) {/
+AWTEventMulticaster.componentRemoved java-src/AWTEMul.java /^ public
void componentRemoved(ContainerEvent e)/
+AWTEventMulticaster.componentResized java-src/AWTEMul.java /^ public
void componentResized(ComponentEvent e)/
+AWTEventMulticaster.componentShown java-src/AWTEMul.java /^ public
void componentShown(ComponentEvent e) {/
+AWTEventMulticaster.focusGained java-src/AWTEMul.java /^ public
void focusGained(FocusEvent e) {$/
+AWTEventMulticaster.focusLost java-src/AWTEMul.java /^ public void
focusLost(FocusEvent e) {$/
+AWTEventMulticaster.itemStateChanged java-src/AWTEMul.java /^ public
void itemStateChanged(ItemEvent e) {$/
+AWTEventMulticaster.keyPressed java-src/AWTEMul.java /^ public void
keyPressed(KeyEvent e) {$/
+AWTEventMulticaster.keyReleased java-src/AWTEMul.java /^ public
void keyReleased(KeyEvent e) {$/
+AWTEventMulticaster.keyTyped java-src/AWTEMul.java /^ public void
keyTyped(KeyEvent e) {$/
+AWTEventMulticaster.mouseClicked java-src/AWTEMul.java /^ public
void mouseClicked(MouseEvent e) {$/
+AWTEventMulticaster.mouseDragged java-src/AWTEMul.java /^ public
void mouseDragged(MouseEvent e) {$/
+AWTEventMulticaster.mouseEntered java-src/AWTEMul.java /^ public
void mouseEntered(MouseEvent e) {$/
+AWTEventMulticaster.mouseExited java-src/AWTEMul.java /^ public
void mouseExited(MouseEvent e) {$/
+AWTEventMulticaster.mouseMoved java-src/AWTEMul.java /^ public void
mouseMoved(MouseEvent e) {$/
+AWTEventMulticaster.mousePressed java-src/AWTEMul.java /^ public
void mousePressed(MouseEvent e) {$/
+AWTEventMulticaster.mouseReleased java-src/AWTEMul.java /^ public
void mouseReleased(MouseEvent e) {$/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ protected
EventListener remove(EventListener o/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ public static
ComponentListener remove(Compone/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ public static
ContainerListener remove(Contain/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ public static
FocusListener remove(FocusListen/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ public static
KeyListener remove(KeyListener l/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ public static
MouseListener remove(MouseListen/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ public static
MouseMotionListener remove(Mouse/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ public static
WindowListener remove(WindowList/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ public static
ActionListener remove(ActionList/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ public static
ItemListener remove(ItemListener/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ public static
AdjustmentListener remove(Adjust/
+AWTEventMulticaster.remove java-src/AWTEMul.java /^ public static
TextListener remove(TextListener/
+AWTEventMulticaster.removeInternal java-src/AWTEMul.java /^ protected
static EventListener removeInternal(/
+AWTEventMulticaster.save java-src/AWTEMul.java /^ static void
save(ObjectOutputStream s, String /
+AWTEventMulticaster.saveInternal java-src/AWTEMul.java /^ protected
void saveInternal(ObjectOutputStream/
+AWTEventMulticaster.textValueChanged java-src/AWTEMul.java /^ public
void textValueChanged(TextEvent e) {$/
+AWTEventMulticaster.windowActivated java-src/AWTEMul.java /^ public
void windowActivated(WindowEvent e) {$/
+AWTEventMulticaster.windowClosed java-src/AWTEMul.java /^ public
void windowClosed(WindowEvent e) {$/
+AWTEventMulticaster.windowClosing java-src/AWTEMul.java /^ public
void windowClosing(WindowEvent e) {$/
+AWTEventMulticaster.windowDeactivated java-src/AWTEMul.java /^ public
void windowDeactivated(WindowEvent e) {/
+AWTEventMulticaster.windowDeiconified java-src/AWTEMul.java /^ public
void windowDeiconified(WindowEvent e) {/
+AWTEventMulticaster.windowIconified java-src/AWTEMul.java /^ public
void windowIconified(WindowEvent e) {$/
+AWTEventMulticaster.windowOpened java-src/AWTEMul.java /^ public
void windowOpened(WindowEvent e) {$/
+Abort_Handler_Pointer/t ada-src/2ataspri.ads /^ type
Abort_Handler_Pointer is access procedure /
+Abort_Task/p ada-src/2ataspri.adb /^ procedure Abort_Task (T : TCB_Ptr)
is$/
+Abort_Task/p ada-src/2ataspri.ads /^ procedure Abort_Task (T :
TCB_Ptr);$/
+Abort_Wrapper/p ada-src/2ataspri.adb /^ procedure Abort_Wrapper$/
+Abort_Wrapper/p ada-src/2ataspri.adb /^ procedure Abort_Wrapper$/
+Action_Pref cp-src/abstract.H 704
+Action_Pref::Action_Pref cp-src/abstract.C
/^Action_Pref::Action_Pref(Tree_Node *a_d, Tree_Node/
+Action_Pref::SetCollapsed cp-src/abstract.C /^void
Action_Pref::SetCollapsed(char t)$/
+Action_Pref::SetDimensions cp-src/abstract.C /^void
Action_Pref::SetDimensions(void)$/
+Action_Pref::SetFather cp-src/abstract.C /^void
Action_Pref::SetFather(Tree_Node *f)$/
+Action_Pref::SetPosition cp-src/abstract.C /^void
Action_Pref::SetPosition(Coord xx, Coord yy)$/
+Action_Pref::SetTextual cp-src/abstract.C /^void
Action_Pref::SetTextual(char t, char s)$/
+Action_Pref::action_den cp-src/abstract.H 706
+Action_Pref::bex cp-src/abstract.H 707
+Action_Pref::border cp-src/abstract.H 709
+Action_Pref::havebox cp-src/abstract.H 708
+Ada_funcs c-src/etags.c /^Ada_funcs (FILE *inf)$/
+Ada_getit c-src/etags.c /^Ada_getit (FILE *inf, const char
*name_qualifier)$/
+Ada_help c-src/etags.c 475
+Ada_suffixes c-src/etags.c 473
+AddNullToNmStr pas-src/common.pas /^function AddNullToNmStr; (*($/
+Address_To_Call_State/f ada-src/2ataspri.adb /^ function
Address_To_Call_State is new$/
+Address_To_TCB_Ptr/f ada-src/2ataspri.ads /^ function
Address_To_TCB_Ptr is new$/
+Advanced usage tex-src/gzip.texi /address@hidden Advanced usage,
Environment, Invoking gzip, /
+Aligned_Cons c-src/emacs/src/lisp.h 4670
+Aligned_String c-src/emacs/src/lisp.h 4676
+AppendTextString pas-src/common.pas /^function
AppendTextString;(*($/
+Arith_Comparison c-src/emacs/src/lisp.h 3497
+Asm_help c-src/etags.c 504
+Asm_labels c-src/etags.c /^Asm_labels (FILE *inf)$/
+Asm_suffixes c-src/etags.c 493
+B cp-src/c.C 54
+B cp-src/c.C 74
+B cp-src/c.C 122
+B::B cp-src/c.C /^void B::B() {}$/
+B::f cp-src/c.C /^class B<int> { void f() {} };$/
+B::~B cp-src/c.C /^ ~B() {};$/
+BE_Node cp-src/c.C 77
+BE_Node::BE_Node cp-src/c.C /^void BE_Node::BE_Node() {}$/
+BITS_PER_BITS_WORD c-src/emacs/src/lisp.h 125
+BITS_PER_BITS_WORD c-src/emacs/src/lisp.h 129
+BITS_PER_CHAR c-src/emacs/src/lisp.h 136
+BITS_PER_EMACS_INT c-src/emacs/src/lisp.h 139
+BITS_PER_LONG c-src/emacs/src/lisp.h 138
+BITS_PER_SHORT c-src/emacs/src/lisp.h 137
+BITS_WORD_MAX c-src/emacs/src/lisp.h 124
+BITS_WORD_MAX c-src/emacs/src/lisp.h 128
+BLOCK c-src/emacs/src/gmalloc.c /^#define BLOCK(A) (((char *) (A)
- _heapbase) \/ BLO/
+BLOCKIFY c-src/emacs/src/gmalloc.c /^#define BLOCKIFY(SIZE)
(((SIZE) + BLOCKSIZE - 1) \//
+BLOCKLOG c-src/emacs/src/gmalloc.c 125
+BLOCKSIZE c-src/emacs/src/gmalloc.c 126
+BOOL_VECTOR_BITS_PER_CHAR c-src/emacs/src/lisp.h 114
+BOOL_VECTOR_BITS_PER_CHAR c-src/emacs/src/lisp.h 115
+BOOL_VECTOR_P c-src/emacs/src/lisp.h /^BOOL_VECTOR_P (Lisp_Object a)$/
+BREAK erl-src/lines.erl /^-define(BREAK, 10). % how many lines to
store in e/
+BUFFERP c-src/emacs/src/lisp.h /^BUFFERP (Lisp_Object a)$/
+BUFFERSIZE objc-src/Subprocess.h 43
+BUFFER_OBJFWDP c-src/emacs/src/lisp.h /^BUFFER_OBJFWDP (union Lisp_Fwd *a)$/
+BYTE_MARK_STACK c-src/emacs/src/lisp.h 3181
+Bar perl-src/kai-test.pl /^package Bar;$/
+Bar::f4 perl-src/kai-test.pl /^sub Bar::f4 {$/
+Bar::f5 perl-src/kai-test.pl /^sub f5 {$/
+Barrier_Function_Pointer/t ada-src/etags-test-for.ada /^ type
Barrier_Function_Pointer is access$/
+Bidule/b ada-src/etags-test-for.ada /^ protected body Bidule is$/
+Bidule/b ada-src/waroquiers.ada /^ protected body Bidule is$/
+Bidule/t ada-src/etags-test-for.ada /^ protected Bidule is$/
+Bidule/t ada-src/waroquiers.ada /^ protected Bidule is$/
+Body_Required/f ada-src/etags-test-for.ada /^ function
Body_Required$/
+Boo cp-src/c.C 129
+Boo::Boo cp-src/c.C /^ Boo(int _i, int _a, int _b) : i(_i),
a(_a), b(/
+Boo::Boo cp-src/c.C /^Boo::Boo(Boo) :$/
+Boo::a cp-src/c.C 132
+Boo::animals cp-src/c.C 130
+Boo::b cp-src/c.C 132
+Boo::cat cp-src/c.C 130
+Boo::cow cp-src/c.C 131
+Boo::dog cp-src/c.C 130
+Boo::foo cp-src/c.C /^ foo() {$/
+Boo::i cp-src/c.C 132
+Boo::treats cp-src/c.C 131
+ButtonBar pyt-src/server.py /^def ButtonBar(frame, legend, ref,
alternatives, co/
+CALLMANY c-src/emacs/src/lisp.h /^#define CALLMANY(f, array) (f)
(ARRAYELTS (array),/
+CALLN c-src/emacs/src/lisp.h /^#define CALLN(f, ...) CALLMANY (f,
((Lisp_Object [/
+CAR c-src/emacs/src/lisp.h /^CAR (Lisp_Object c)$/
+CAR_SAFE c-src/emacs/src/lisp.h /^CAR_SAFE (Lisp_Object c)$/
+CATCHER c-src/emacs/src/lisp.h 3021
+CDR c-src/emacs/src/lisp.h /^CDR (Lisp_Object c)$/
+CDR_SAFE c-src/emacs/src/lisp.h /^CDR_SAFE (Lisp_Object c)$/
+CFLAGS make-src/Makefile 88
+CHAR c-src/etags.c /^#define CHAR(x) ((unsigned int)(x) &
(CHARS - 1))/
+CHAR y-src/cccp.c 7
+CHARACTERBITS c-src/emacs/src/lisp.h 2457
+CHARS c-src/etags.c 157
+CHARTAB_SIZE_BITS c-src/emacs/src/lisp.h 1565
+CHARTAB_SIZE_BITS_0 c-src/emacs/src/lisp.h 1567
+CHARTAB_SIZE_BITS_1 c-src/emacs/src/lisp.h 1568
+CHARTAB_SIZE_BITS_2 c-src/emacs/src/lisp.h 1569
+CHARTAB_SIZE_BITS_3 c-src/emacs/src/lisp.h 1570
+CHAR_ALT c-src/emacs/src/lisp.h 2445
+CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 593
+CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 597
+CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 605
+CHAR_CTL c-src/emacs/src/lisp.h 2449
+CHAR_HYPER c-src/emacs/src/lisp.h 2447
+CHAR_META c-src/emacs/src/lisp.h 2450
+CHAR_MODIFIER_MASK c-src/emacs/src/lisp.h 2452
+CHAR_SHIFT c-src/emacs/src/lisp.h 2448
+CHAR_SUPER c-src/emacs/src/lisp.h 2446
+CHAR_TABLE_EXTRA_SLOTS c-src/emacs/src/lisp.h /^CHAR_TABLE_EXTRA_SLOTS
(struct Lisp_Char_Table *ct/
+CHAR_TABLE_P c-src/emacs/src/lisp.h /^CHAR_TABLE_P (Lisp_Object a)$/
+CHAR_TABLE_REF c-src/emacs/src/lisp.h /^CHAR_TABLE_REF (Lisp_Object ct, int
idx)$/
+CHAR_TABLE_REF_ASCII c-src/emacs/src/lisp.h /^CHAR_TABLE_REF_ASCII
(Lisp_Object ct, ptrdiff_t id/
+CHAR_TABLE_SET c-src/emacs/src/lisp.h /^CHAR_TABLE_SET (Lisp_Object ct, int
idx, Lisp_Obje/
+CHAR_TABLE_STANDARD_SLOTS c-src/emacs/src/lisp.h 1697
+CHAR_TYPE_SIZE cccp.y 87
+CHAR_TYPE_SIZE y-src/cccp.y 87
+CHECKEROPTS make-src/Makefile 92
+CHECK_ARRAY c-src/emacs/src/lisp.h /^CHECK_ARRAY (Lisp_Object x,
Lisp_Object predicate)/
+CHECK_BOOL_VECTOR c-src/emacs/src/lisp.h /^CHECK_BOOL_VECTOR
(Lisp_Object x)$/
+CHECK_BUFFER c-src/emacs/src/lisp.h /^CHECK_BUFFER (Lisp_Object x)$/
+CHECK_CONS c-src/emacs/src/lisp.h /^CHECK_CONS (Lisp_Object x)$/
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 571
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 572
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 572
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 579
+CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 579
+CHECK_LIST c-src/emacs/src/lisp.h /^CHECK_LIST (Lisp_Object x)$/
+CHECK_LIST_CONS c-src/emacs/src/lisp.h /^# define CHECK_LIST_CONS(x,
y) lisp_h_CHECK_LIST_C/
+CHECK_NATNUM c-src/emacs/src/lisp.h /^CHECK_NATNUM (Lisp_Object x)$/
+CHECK_NUMBER c-src/emacs/src/lisp.h /^# define CHECK_NUMBER(x)
lisp_h_CHECK_NUMBER (x)$/
+CHECK_NUMBER_CAR c-src/emacs/src/lisp.h /^CHECK_NUMBER_CAR (Lisp_Object
x)$/
+CHECK_NUMBER_CDR c-src/emacs/src/lisp.h /^CHECK_NUMBER_CDR (Lisp_Object
x)$/
+CHECK_NUMBER_COERCE_MARKER c-src/emacs/src/lisp.h /^#define
CHECK_NUMBER_COERCE_MARKER(x) \\$/
+CHECK_NUMBER_OR_FLOAT c-src/emacs/src/lisp.h /^CHECK_NUMBER_OR_FLOAT
(Lisp_Object x)$/
+CHECK_NUMBER_OR_FLOAT_COERCE_MARKER c-src/emacs/src/lisp.h /^#define
CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x) /
+CHECK_PROCESS c-src/emacs/src/lisp.h /^CHECK_PROCESS (Lisp_Object x)$/
+CHECK_RANGED_INTEGER c-src/emacs/src/lisp.h /^#define
CHECK_RANGED_INTEGER(x, lo, hi) \\$/
+CHECK_STRING_CAR c-src/emacs/src/lisp.h /^CHECK_STRING_CAR (Lisp_Object
x)$/
+CHECK_SYMBOL c-src/emacs/src/lisp.h /^# define CHECK_SYMBOL(x)
lisp_h_CHECK_SYMBOL (x)$/
+CHECK_TYPE c-src/emacs/src/lisp.h /^# define CHECK_TYPE(ok, predicate, x)
lisp_h_CHECK/
+CHECK_TYPE_RANGED_INTEGER c-src/emacs/src/lisp.h /^#define
CHECK_TYPE_RANGED_INTEGER(type, x) \\$/
+CHECK_VECTOR c-src/emacs/src/lisp.h /^CHECK_VECTOR (Lisp_Object x)$/
+CHECK_VECTOR_OR_STRING c-src/emacs/src/lisp.h /^CHECK_VECTOR_OR_STRING
(Lisp_Object x)$/
+CHECK_WINDOW c-src/emacs/src/lisp.h /^CHECK_WINDOW (Lisp_Object x)$/
+CK_ABS_C y-src/parse.y /^#define CK_ABS_C(x) if((x)<MIN_COL ||
(x)>MAX_COL)/
+CK_ABS_C parse.y /^#define CK_ABS_C(x) if((x)<MIN_COL || (x)>MAX_COL)/
+CK_ABS_R y-src/parse.y /^#define CK_ABS_R(x) if((x)<MIN_ROW ||
(x)>MAX_ROW)/
+CK_ABS_R parse.y /^#define CK_ABS_R(x) if((x)<MIN_ROW || (x)>MAX_ROW)/
+CK_REL_C y-src/parse.y /^#define CK_REL_C(x) if( ((x)>0 &&
MAX_COL-(x)<cu/
+CK_REL_C parse.y /^#define CK_REL_C(x) if( ((x)>0 && MAX_COL-(x)<cu/
+CK_REL_R y-src/parse.y /^#define CK_REL_R(x) if( ((x)>0 &&
MAX_ROW-(x)<cu/
+CK_REL_R parse.y /^#define CK_REL_R(x) if( ((x)>0 && MAX_ROW-(x)<cu/
+CMultiChannelCSC19_3D cp-src/c.C 2
+CMultiChannelCSC19_3D::cscInitTime cp-src/c.C 7
+CMultiChannelCSC19_3D::cscSegmentationTime cp-src/c.C 8
+CMultiChannelCSC19_3D::execute cp-src/c.C /^ void
execute(CPluginCSCState& p, int w, in/
+CMultiChannelCSC19_3D::ipc3dCSC19 cp-src/c.C 6
+CMultiChannelCSC19_3D::mcCSC cp-src/c.C 6
+CMultiChannelCSC19_3D::outputTime cp-src/c.C 9
+CMultiChannelCSC19_3D::setup cp-src/c.C 5
+CNL c-src/etags.c /^#define CNL()
\\$/
+CNL_SAVE_DEFINEDEF c-src/etags.c /^#define CNL_SAVE_DEFINEDEF()
\\$/
+COLORS cp-src/screen.hpp 11
+COLORS::BLACK cp-src/screen.hpp 12
+COLORS::BLUE cp-src/screen.hpp 13
+COLORS::BROWN cp-src/screen.hpp 18
+COLORS::CYAN cp-src/screen.hpp 15
+COLORS::DARKGRAY cp-src/screen.hpp 20
+COLORS::GREEN cp-src/screen.hpp 14
+COLORS::LIGHTBLUE cp-src/screen.hpp 21
+COLORS::LIGHTCYAN cp-src/screen.hpp 23
+COLORS::LIGHTGRAY cp-src/screen.hpp 19
+COLORS::LIGHTGREEN cp-src/screen.hpp 22
+COLORS::LIGHTMAGENTA cp-src/screen.hpp 25
+COLORS::LIGHTRED cp-src/screen.hpp 24
+COLORS::MAGENTA cp-src/screen.hpp 17
+COLORS::RED cp-src/screen.hpp 16
+COLORS::WHITE cp-src/screen.hpp 27
+COLORS::YELLOW cp-src/screen.hpp 26
+COMPILEDP c-src/emacs/src/lisp.h /^COMPILEDP (Lisp_Object a)$/
+COMPILED_ARGLIST c-src/emacs/src/lisp.h 2431
+COMPILED_BYTECODE c-src/emacs/src/lisp.h 2432
+COMPILED_CONSTANTS c-src/emacs/src/lisp.h 2433
+COMPILED_DOC_STRING c-src/emacs/src/lisp.h 2435
+COMPILED_INTERACTIVE c-src/emacs/src/lisp.h 2436
+COMPILED_STACK_DEPTH c-src/emacs/src/lisp.h 2434
+CONDITION_CASE c-src/emacs/src/lisp.h 3021
+CONSP c-src/emacs/src/lisp.h /^# define CONSP(x) lisp_h_CONSP (x)$/
+CONSTYPE_HEAP c-src/emacs/src/lisp.h 3739
+CONSTYPE_PURE c-src/emacs/src/lisp.h 3739
+CONS_TO_INTEGER c-src/emacs/src/lisp.h /^#define CONS_TO_INTEGER(cons,
type, var) \\$/
+CONVERT_CHARSTRING_TO_VALUE pas-src/common.pas /^procedure
CONVERT_CHARSTRING_TO_VALUE;(*($/
+CPPFLAGS make-src/Makefile 49
+CPSRC Makefile /^CPSRC=$(addprefix .\/cp-src\/,c.C abstract.C abstrac/
+CSRC Makefile /^CSRC=$(addprefix .\/c-src\/,abbrev.c .\/\/c.c
torture./
+CTAGS Makefile /^CTAGS: FRC ${infiles}$/
+CTAGS c-src/etags.c 146
+CTAGS c-src/etags.c 147
+CTAGS c-src/etags.c 149
+CTAGS_PROG Makefile /^CTAGS_PROG=..\/..\/lib-src\/ctags$/
+C_AUTO c-src/etags.c 2198
+C_EXT c-src/etags.c 2193
+C_JAVA c-src/etags.c 2197
+C_PLAIN c-src/etags.c 2194
+C_PLPL c-src/etags.c 2195
+C_STAR c-src/etags.c 2196
+C_entries c-src/etags.c /^C_entries (int c_ext, FILE *inf)$/
+C_stab_entry c-src/etags.c 2271
+C_symtype c-src/etags.c /^C_symtype (char *str, int len, int c_ext)$/
+ChangeFileType pas-src/common.pas /^function ChangeFileType; (*(FileName
: NameString;/
+Choice cp-src/abstract.H 768
+Choice::ChangeH cp-src/abstract.C /^void Choice::ChangeH(int nh)$/
+Choice::ChangeW cp-src/abstract.C /^void Choice::ChangeW(int nw)$/
+Choice::Choice cp-src/abstract.C /^Choice::Choice(Tree_Node *b1,
Tree_Node *b2)$/
+Choice::Get_Textual_H cp-src/abstract.C /^int Choice::Get_Textual_H()$/
+Choice::Get_Textual_W cp-src/abstract.C /^int Choice::Get_Textual_W()$/
+Choice::SetCollapsed cp-src/abstract.C /^void
Choice::SetCollapsed(char t)$/
+Choice::SetDimensions cp-src/abstract.C /^void
Choice::SetDimensions(void)$/
+Choice::SetFather cp-src/abstract.C /^void
Choice::SetFather(Tree_Node *f)$/
+Choice::SetPosition cp-src/abstract.C /^void
Choice::SetPosition(Coord xx, Coord yy)$/
+Choice::SetTerminalPos cp-src/abstract.C /^void
Choice::SetTerminalPos()$/
+Choice::SetTextual cp-src/abstract.C /^void Choice::SetTextual(char
t, char s)$/
+Choice::bex1 cp-src/abstract.H 770
+Choice::bex2 cp-src/abstract.H 770
+Choice::border cp-src/abstract.H 774
+Choice::delta cp-src/abstract.H 773
+Choice::havebox cp-src/abstract.H 772
+Choice::xl cp-src/abstract.H 771
+Choice::yl cp-src/abstract.H 771
+Choice::yl1 cp-src/abstract.H 771
+Cjava_entries c-src/etags.c /^Cjava_entries (FILE *inf)$/
+Cjava_help c-src/etags.c 551
+Cjava_suffixes c-src/etags.c 549
+Clear/p ada-src/2ataspri.adb /^ procedure Clear (Cell : in out
TAS_Cell) is$/
+Clear/p ada-src/2ataspri.ads /^ procedure Clear (Cell : in
out TAS_Cell)/
+Cobol_help c-src/etags.c 558
+Cobol_paragraphs c-src/etags.c /^Cobol_paragraphs (FILE *inf)$/
+Cobol_suffixes c-src/etags.c 556
+Comment cp-src/abstract.H 105
+Comment::Comment cp-src/abstract.C /^Comment::Comment()$/
+Comment::SetComment cp-src/abstract.C /^void Comment::SetComment(char
*comment)$/
+Comment::SetDimensions cp-src/abstract.C /^void
Comment::SetDimensions(void)$/
+Comment::SetFather cp-src/abstract.C /^void
Comment::SetFather(Tree_Node *f)$/
+Comment::SetPosition cp-src/abstract.C /^void
Comment::SetPosition(Coord xx, Coord yy)$/
+Comment::comm cp-src/abstract.H 107
+Comment::~Comment cp-src/abstract.C /^Comment::~Comment()$/
+CommentAD php-src/lce_functions.php 70
+CommentAD php-src/lce_functions.php /^ function CommentAD($/
+Comment_List cp-src/abstract.H 122
+Comment_List::Comment_List cp-src/abstract.C
/^Comment_List::Comment_List(Comment *el, Comment_Li/
+Comment_List::SetDimensions cp-src/abstract.C /^void
Comment_List::SetDimensions(void)$/
+Comment_List::SetFather cp-src/abstract.C /^void
Comment_List::SetFather(Tree_Node *f)$/
+Comment_List::SetPosition cp-src/abstract.C /^void
Comment_List::SetPosition(Coord xx, Coord yy)/
+Comment_List::elem cp-src/abstract.H 124
+Comment_List::next cp-src/abstract.H 125
+Communication cp-src/abstract.H 627
+Communication::Communication cp-src/abstract.C
/^Communication::Communication(ID_Place *i, Tree_Nod/
+Communication::SetCollapsed cp-src/abstract.C /^void
Communication::SetCollapsed(char t)$/
+Communication::SetDimensions cp-src/abstract.C /^void
Communication::SetDimensions(void)$/
+Communication::SetFather cp-src/abstract.C /^void
Communication::SetFather(Tree_Node *f)$/
+Communication::SetPosition cp-src/abstract.C /^void
Communication::SetPosition(Coord xx, Coord yy/
+Communication::SetTextual cp-src/abstract.C /^void
Communication::SetTextual(char t, char)$/
+Communication::experiment_option cp-src/abstract.H 630
+Communication::gate_identifier cp-src/abstract.H 629
+Communication::hr cp-src/abstract.H 632
+Communication::xl cp-src/abstract.H 631
+Communication::yl cp-src/abstract.H 631
+ConcatT pas-src/common.pas /^function ConcatT;(*($/
+Concept Index tex-src/gzip.texi /address@hidden Concept Index, ,
Problems, Top$/
+Cond_Signal/p ada-src/2ataspri.adb /^ procedure Cond_Signal (Cond : in
out Condition_/
+Cond_Signal/p ada-src/2ataspri.ads /^ procedure Cond_Signal (Cond : in
out Condition_/
+Cond_Timed_Wait/p ada-src/2ataspri.adb /^ procedure Cond_Timed_Wait$/
+Cond_Timed_Wait/p ada-src/2ataspri.ads /^ procedure Cond_Timed_Wait$/
+Cond_Wait/p ada-src/2ataspri.adb /^ procedure Cond_Wait (Cond : in out
Condition_Va/
+Cond_Wait/p ada-src/2ataspri.ads /^ procedure Cond_Wait (Cond : in out
Condition_Va/
+Condition_Variable/t ada-src/2ataspri.ads /^ type Condition_Variable is
private;$/
+Condition_Variable/t ada-src/2ataspri.ads /^ type Condition_Variable
is$/
+Configure pyt-src/server.py /^class Configure(Frame, ControlEdit):$/
+ConfirmQuit pyt-src/server.py /^def ConfirmQuit(frame, context):$/
+ControlEdit pyt-src/server.py /^class ControlEdit(Frame):$/
+Controls pyt-src/server.py /^class Controls:$/
+CopyTextString pas-src/common.pas /^function CopyTextString;(*($/
+Copying tex-src/gzip.texi /address@hidden Copying, Overview, ,
Top$/
+Cplusplus_entries c-src/etags.c /^Cplusplus_entries (FILE *inf)$/
+Cplusplus_help c-src/etags.c 540
+Cplusplus_suffixes c-src/etags.c 535
+Create_LL_Task/p ada-src/2ataspri.adb /^ procedure Create_LL_Task$/
+Create_LL_Task/p ada-src/2ataspri.ads /^ procedure Create_LL_Task$/
+Cstar_entries c-src/etags.c /^Cstar_entries (FILE *inf)$/
+Cstar_suffixes c-src/etags.c 562
+D cp-src/fail.C 41
+D::D cp-src/fail.C /^ D() : ::A::T2::T(97), x(1066) {}$/
+D::x cp-src/fail.C 44
+DAEMON_RUNNING c-src/emacs/src/lisp.h 4258
+DAEMON_RUNNING c-src/emacs/src/lisp.h 4262
+DB cp-src/cfront.H /^#define DB(a) fprintf a$/
+DB cp-src/cfront.H /^#define DB(a) \/**\/$/
+DEAFUN c.c /^DEAFUN ("expand-file-name", Fexpand_file_name, Sex/
+DEBUG c-src/etags.c 84
+DEBUG c-src/etags.c 85
+DEBUG c-src/etags.c 87
+DEBUG objc-src/PackInsp.m 37
+DECLARE_GDB_SYM c-src/emacs/src/lisp.h /^#define DECLARE_GDB_SYM(type,
id) type const id EX/
+DEFAULT_HASH_SIZE c-src/emacs/src/lisp.h 1940
+DEFAULT_HASH_SIZE c-src/emacs/src/lisp.h 1940
+DEFAULT_REHASH_SIZE c-src/emacs/src/lisp.h 1950
+DEFAULT_REHASH_THRESHOLD c-src/emacs/src/lisp.h 1946
+DEFINED cp-src/cfront.H 230
+DEFINE_GDB_SYMBOL_BEGIN c-src/emacs/src/lisp.h /^# define
DEFINE_GDB_SYMBOL_BEGIN(type, id) DECLARE/
+DEFINE_GDB_SYMBOL_BEGIN c-src/emacs/src/lisp.h /^# define
DEFINE_GDB_SYMBOL_BEGIN(type, id) extern /
+DEFINE_GDB_SYMBOL_END c-src/emacs/src/lisp.h /^# define
DEFINE_GDB_SYMBOL_END(id) = id;$/
+DEFINE_GDB_SYMBOL_END c-src/emacs/src/lisp.h /^# define
DEFINE_GDB_SYMBOL_END(val) ;$/
+DEFINE_LISP_SYMBOL c-src/emacs/src/lisp.h /^#define
DEFINE_LISP_SYMBOL(name) \\$/
+DEFINE_NON_NIL_Q_SYMBOL_MACROS c-src/emacs/src/lisp.h 755
+DEFSYM c-src/emacs/src/lisp.h /^#define DEFSYM(sym, name) \/* empty *\/$/
+DEFSYM c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (SYMBOL_CONSTANT_P, int,
(Lisp_Ob/
+DEFUN c-src/emacs/src/lisp.h /^#define DEFUN(lname, fnname, sname, minargs,
maxar/
+DEFUN c-src/emacs/src/lisp.h /^#define DEFUN(lname, fnname, sname, minargs,
maxar/
+DEFUN_ARGS_0 c-src/emacs/src/lisp.h 714
+DEFUN_ARGS_1 c-src/emacs/src/lisp.h 715
+DEFUN_ARGS_2 c-src/emacs/src/lisp.h 716
+DEFUN_ARGS_3 c-src/emacs/src/lisp.h 717
+DEFUN_ARGS_4 c-src/emacs/src/lisp.h 718
+DEFUN_ARGS_5 c-src/emacs/src/lisp.h 719
+DEFUN_ARGS_6 c-src/emacs/src/lisp.h 721
+DEFUN_ARGS_7 c-src/emacs/src/lisp.h 723
+DEFUN_ARGS_8 c-src/emacs/src/lisp.h 725
+DEFUN_ARGS_MANY c-src/emacs/src/lisp.h 712
+DEFUN_ARGS_UNEVALLED c-src/emacs/src/lisp.h 713
+DEFUN_func2 c.c /^DEFUN_func2()$/
+DEFVAR_BOOL c-src/emacs/src/lisp.h /^#define DEFVAR_BOOL(lname, vname,
doc) \\$/
+DEFVAR_BUFFER_DEFAULTS c-src/emacs/src/lisp.h /^#define
DEFVAR_BUFFER_DEFAULTS(lname, vname, doc) /
+DEFVAR_INT c-src/emacs/src/lisp.h /^#define DEFVAR_INT(lname, vname, doc)
\\$/
+DEFVAR_KBOARD c-src/emacs/src/lisp.h /^#define DEFVAR_KBOARD(lname, vname,
doc) \\$/
+DEFVAR_LISP c-src/emacs/src/lisp.h /^#define DEFVAR_LISP(lname, vname,
doc) \\$/
+DEFVAR_LISP_NOPRO c-src/emacs/src/lisp.h /^#define
DEFVAR_LISP_NOPRO(lname, vname, doc) \\$/
+DEF_SEEN cp-src/cfront.H 232
+DEL cp-src/cfront.H /^#define DEL(p) if (p && (p->permanent==0)) p->del(/
+DEVICE_LAST c-src/h.h 24
+DEVICE_SWP c-src/h.h 23
+DOS_NT c-src/etags.c 117
+DOS_NT c-src/etags.c 118
+DUMPED c-src/emacs/src/gmalloc.c 80
+Date::minus cp-src/functions.cpp /^void Date::minus ( int days , int
month , int year/
+Date::operator ++ cp-src/functions.cpp /^Date & Date::operator ++ (
void ){$/
+Date::operator += cp-src/functions.cpp /^Date & Date::operator += (
int days ){$/
+Date::operator - cp-src/functions.cpp /^int Date::operator - ( Date d
){$/
+Date::operator -- cp-src/functions.cpp /^Date & Date::operator -- (
void ){$/
+Date::operator -= cp-src/functions.cpp /^Date & Date::operator -= (
int days ){$/
+Date::operator < cp-src/functions.cpp /^int Date::operator < ( Date d
) {$/
+Date::operator = cp-src/functions.cpp /^Date & Date::operator = (
Date d ){$/
+Date::operator == cp-src/functions.cpp /^int Date::operator == ( Date
d ) {$/
+Date::operator > cp-src/functions.cpp /^int Date::operator > ( Date d
) {$/
+Date::plus cp-src/functions.cpp /^void Date::plus ( int days , int
month , int year /
+Date::setDate cp-src/functions.cpp /^void Date::setDate ( int d , int m ,
int y ){$/
+Date::shift cp-src/functions.cpp /^void Date::shift ( void ){\/\/Shift
this date to pre/
+Debug cp-src/functions.cpp /^void Debug ( int lineno, int level, char*
func , c/
+Definition cp-src/abstract.H 382
+Definition::Definition cp-src/abstract.C
/^Definition::Definition(Tree_Node *b, Proc_List *p,/
+Definition::GetPath cp-src/abstract.H /^ char *GetPath() {
return(path);};$/
+Definition::SetDimensions cp-src/abstract.C /^void
Definition::SetDimensions(void)$/
+Definition::SetFather cp-src/abstract.C /^void
Definition::SetFather(Tree_Node *f)$/
+Definition::SetPath cp-src/abstract.C /^void Definition::SetPath(char
*p, char n, int& np,/
+Definition::SetPosition cp-src/abstract.C /^void
Definition::SetPosition(Coord xx, Coord yy)$/
+Definition::bex cp-src/abstract.H 384
+Definition::data_list cp-src/abstract.H 386
+Definition::path cp-src/abstract.H 387
+Definition::process_list cp-src/abstract.H 385
+Disable cp-src/abstract.H 746
+Disable::Disable cp-src/abstract.C /^Disable::Disable(Tree_Node
*b1, Tree_Node *b2)$/
+Disable::Get_Textual_H cp-src/abstract.C /^int Disable::Get_Textual_H()$/
+Disable::Get_Textual_W cp-src/abstract.C /^int Disable::Get_Textual_W()$/
+Disable::SetCollapsed cp-src/abstract.C /^void
Disable::SetCollapsed(char t)$/
+Disable::SetDimensions cp-src/abstract.C /^void
Disable::SetDimensions(void)$/
+Disable::SetFather cp-src/abstract.C /^void
Disable::SetFather(Tree_Node *f)$/
+Disable::SetPosition cp-src/abstract.C /^void
Disable::SetPosition(Coord xx, Coord yy)$/
+Disable::SetTerminalPos cp-src/abstract.C /^void
Disable::SetTerminalPos()$/
+Disable::SetTextual cp-src/abstract.C /^void Disable::SetTextual(char
t, char s)$/
+Disable::bex1 cp-src/abstract.H 748
+Disable::bex2 cp-src/abstract.H 748
+Disable::border cp-src/abstract.H 751
+Disable::havebox cp-src/abstract.H 750
+Disable::xl cp-src/abstract.H 749
+Disable::yl cp-src/abstract.H 749
+Disable::yl2 cp-src/abstract.H 749
+DisposeANameList pas-src/common.pas /^procedure DisposeANameList( $/
+DisposeNameList pas-src/common.pas /^procedure DisposeNameList;$/
+ELEM_I c-src/h.h 3
+ELSRC Makefile /^ELSRC=$(addprefix .\/el-src\/,TAGTEST.EL
emacs\/lisp\//
+EMACS_INT c-src/emacs/src/lisp.h 91
+EMACS_INT c-src/emacs/src/lisp.h 96
+EMACS_INT c-src/emacs/src/lisp.h 103
+EMACS_INT_MAX c-src/emacs/src/lisp.h 93
+EMACS_INT_MAX c-src/emacs/src/lisp.h 98
+EMACS_INT_MAX c-src/emacs/src/lisp.h 105
+EMACS_LISP_H c-src/emacs/src/lisp.h 22
+EMACS_NAME c-src/etags.c 786
+EMACS_UINT c-src/emacs/src/lisp.h 92
+EMACS_UINT c-src/emacs/src/lisp.h 97
+EMACS_UINT c-src/emacs/src/lisp.h 104
+ENTRY c-src/sysdep.h /^#define ENTRY(name)
\\$/
+ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) unsigned int$/
+ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) enum TYPE$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (symbol_redirect) redirect
: 3;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (Lisp_Misc_Type) type : 16;
\/* = Lisp_M/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (Lisp_Misc_Type) type : 16;
\/* = Lisp_M/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (Lisp_Misc_Type) type :
16; \/* = Lisp_/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (Lisp_Misc_Type) type :
16; \/* = Lisp_/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (Lisp_Misc_Type) type :
16; \/* = Lisp_/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind :
CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind :
CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind :
CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind :
CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind :
CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind :
CHAR_BIT;$/
+ENUM_BF c-src/emacs/src/lisp.h /^ ENUM_BF (specbind_tag) kind :
CHAR_BIT;$/
+EQ c-src/emacs/src/lisp.h /^# define EQ(x, y) lisp_h_EQ (x, y)$/
+EQUAL y-src/cccp.c 12
+ERLSRC Makefile /^ERLSRC=$(addprefix .\/erl-src\/,gs_dialog.erl lines./
+ERROR y-src/parse.y 303
+ERROR parse.y 303
+ERROR y-src/cccp.c 9
+ETAGS Makefile /^ETAGS: FRC ${infiles}$/
+ETAGS_PROG Makefile /^ETAGS_PROG=..\/..\/lib-src\/etags$/
+EXFUN c-src/emacs/src/lisp.h /^#define EXFUN(fnname, maxargs) \\$/
+EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 3497
+EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 4372
+EmptyNmStr pas-src/common.pas /^function EmptyNmStr(* :
NameString*);$/
+Enable cp-src/abstract.H 723
+Enable::Enable cp-src/abstract.C /^Enable::Enable(Tree_Node *b1, ID_List
*g_i_l, Tree/
+Enable::Get_Textual_H cp-src/abstract.C /^int Enable::Get_Textual_H()$/
+Enable::Get_Textual_W cp-src/abstract.C /^int Enable::Get_Textual_W()$/
+Enable::SetCollapsed cp-src/abstract.C /^void
Enable::SetCollapsed(char t)$/
+Enable::SetDimensions cp-src/abstract.C /^void
Enable::SetDimensions(void)$/
+Enable::SetFather cp-src/abstract.C /^void
Enable::SetFather(Tree_Node *f)$/
+Enable::SetPosition cp-src/abstract.C /^void
Enable::SetPosition(Coord xx, Coord yy)$/
+Enable::SetTerminalPos cp-src/abstract.C /^void
Enable::SetTerminalPos()$/
+Enable::SetTextual cp-src/abstract.C /^void Enable::SetTextual(char
t, char s)$/
+Enable::Yclose cp-src/abstract.H 727
+Enable::bex1 cp-src/abstract.H 725
+Enable::bex2 cp-src/abstract.H 725
+Enable::border cp-src/abstract.H 729
+Enable::gate_id_list cp-src/abstract.H 726
+Enable::havebox cp-src/abstract.H 728
+Enable::xid cp-src/abstract.H 727
+Enable::xl cp-src/abstract.H 727
+Enable::xl2 cp-src/abstract.H 727
+Enable::yid cp-src/abstract.H 727
+Enable::yl1 cp-src/abstract.H 727
+Enable::yl2 cp-src/abstract.H 727
+Environment tex-src/gzip.texi /address@hidden Environment, Tapes,
Advanced usage, Top$/
+Equality cp-src/abstract.H 473
+Equality::Equality cp-src/abstract.C /^Equality::Equality()$/
+Equality::Equality cp-src/abstract.C /^Equality::Equality(Tree_Node
*ex1, Tree_Node *ex2)/
+Equality::SetCollapsed cp-src/abstract.C /^void
Equality::SetCollapsed(char t)$/
+Equality::SetDimensions cp-src/abstract.C /^void
Equality::SetDimensions(void)$/
+Equality::SetFather cp-src/abstract.C /^void
Equality::SetFather(Tree_Node *f)$/
+Equality::SetPosition cp-src/abstract.C /^void
Equality::SetPosition(Coord xx, Coord yy)$/
+Equality::express1 cp-src/abstract.H 475
+Equality::express2 cp-src/abstract.H 476
+Erlang_functions c-src/etags.c /^Erlang_functions (FILE *inf)$/
+Erlang_help c-src/etags.c 567
+Erlang_suffixes c-src/etags.c 565
+ErrStrToNmStr pas-src/common.pas /^function ErrStrToNmStr;(*($/
+Error_Information/t ada-src/2ataspri.ads /^ type Error_Information is
new Interfaces.C.POSI/
+Exclam cp-src/abstract.H 578
+Exclam::Exclam cp-src/abstract.C /^Exclam::Exclam(Tree_Node *v_e)$/
+Exclam::SetCollapsed cp-src/abstract.C /^void
Exclam::SetCollapsed(char t)$/
+Exclam::SetDimensions cp-src/abstract.C /^void
Exclam::SetDimensions(void)$/
+Exclam::SetFather cp-src/abstract.C /^void
Exclam::SetFather(Tree_Node *f)$/
+Exclam::SetPosition cp-src/abstract.C /^void
Exclam::SetPosition(Coord xx, Coord yy)$/
+Exclam::value_exp cp-src/abstract.H 580
+Exit cp-src/abstract.H 407
+Exit::Exit cp-src/abstract.C /^Exit::Exit(ID_List *sl)$/
+Exit::SetDimensions cp-src/abstract.C /^void
Exit::SetDimensions(void)$/
+Exit::SetFather cp-src/abstract.C /^void
Exit::SetFather(Tree_Node *f)$/
+Exit::SetPosition cp-src/abstract.C /^void Exit::SetPosition(Coord
x1, Coord y1, Coord x/
+Exit::sort_list cp-src/abstract.H 409
+Exit_Bex cp-src/abstract.H 810
+Exit_Bex::Exit_Bex cp-src/abstract.C
/^Exit_Bex::Exit_Bex(Exit_Entry_List *l)$/
+Exit_Bex::SetCollapsed cp-src/abstract.C /^void
Exit_Bex::SetCollapsed(char t)$/
+Exit_Bex::SetDimensions cp-src/abstract.C /^void
Exit_Bex::SetDimensions(void)$/
+Exit_Bex::SetFather cp-src/abstract.C /^void
Exit_Bex::SetFather(Tree_Node *f)$/
+Exit_Bex::SetPosition cp-src/abstract.C /^void
Exit_Bex::SetPosition(Coord xx, Coord yy)$/
+Exit_Bex::SetTextual cp-src/abstract.C /^void
Exit_Bex::SetTextual(char t, char s)$/
+Exit_Bex::Xclose cp-src/abstract.H 813
+Exit_Bex::Xopen cp-src/abstract.H 813
+Exit_Bex::border cp-src/abstract.H 815
+Exit_Bex::entry_list cp-src/abstract.H 812
+Exit_Bex::havebox cp-src/abstract.H 814
+Exit_Entry cp-src/abstract.H 165
+Exit_Entry::Exit_Entry cp-src/abstract.C /^Exit_Entry::Exit_Entry() $/
+Exit_Entry::SetDimensions cp-src/abstract.C /^void
Exit_Entry::SetDimensions(void)$/
+Exit_Entry::SetFather cp-src/abstract.C /^void
Exit_Entry::SetFather(Tree_Node *f)$/
+Exit_Entry::SetPosition cp-src/abstract.C /^void
Exit_Entry::SetPosition(Coord xx, Coord yy)$/
+Exit_Entry_List cp-src/abstract.H 179
+Exit_Entry_List::Exit_Entry_List cp-src/abstract.C
/^Exit_Entry_List::Exit_Entry_List(Tree_Node *el, Ex/
+Exit_Entry_List::SetCollapsed cp-src/abstract.C /^void
Exit_Entry_List::SetCollapsed(char t)$/
+Exit_Entry_List::SetDimensions cp-src/abstract.C /^void
Exit_Entry_List::SetDimensions(void)$/
+Exit_Entry_List::SetFather cp-src/abstract.C /^void
Exit_Entry_List::SetFather(Tree_Node *f)$/
+Exit_Entry_List::SetPosition cp-src/abstract.C /^void
Exit_Entry_List::SetPosition(Coord xx, Coord /
+Exit_Entry_List::elem cp-src/abstract.H 181
+Exit_Entry_List::next cp-src/abstract.H 182
+Exit_LL_Task/p ada-src/2ataspri.adb /^ procedure Exit_LL_Task is$/
+Exit_LL_Task/p ada-src/2ataspri.ads /^ procedure Exit_LL_Task;$/
+Exper_Off cp-src/abstract.H 195
+Exper_Off::Exper_Off cp-src/abstract.C /^Exper_Off::Exper_Off()$/
+Exper_Off::SetDimensions cp-src/abstract.C /^void
Exper_Off::SetDimensions(void)$/
+Exper_Off::SetFather cp-src/abstract.C /^void
Exper_Off::SetFather(Tree_Node *f)$/
+Exper_Off::SetPosition cp-src/abstract.C /^void
Exper_Off::SetPosition(Coord xx, Coord yy)$/
+Exper_Off_List cp-src/abstract.H 207
+Exper_Off_List::Exper_Off_List cp-src/abstract.C
/^Exper_Off_List::Exper_Off_List(Exper_Off *el, Expe/
+Exper_Off_List::SetCollapsed cp-src/abstract.C /^void
Exper_Off_List::SetCollapsed(char t)$/
+Exper_Off_List::SetDimensions cp-src/abstract.C /^void
Exper_Off_List::SetDimensions(void)$/
+Exper_Off_List::SetFather cp-src/abstract.C /^void
Exper_Off_List::SetFather(Tree_Node *f)$/
+Exper_Off_List::SetPosition cp-src/abstract.C /^void
Exper_Off_List::SetPosition(Coord xx, Coord y/
+Exper_Off_List::elem cp-src/abstract.H 209
+Exper_Off_List::next cp-src/abstract.H 210
+Experiment cp-src/abstract.H 558
+Experiment::Experiment cp-src/abstract.C
/^Experiment::Experiment(Exper_Off_List *e_of_l, Tre/
+Experiment::GetGuard cp-src/abstract.H /^ Tree_Node *GetGuard(void) {
return(guard_option);/
+Experiment::SetCollapsed cp-src/abstract.C /^void
Experiment::SetCollapsed(char t)$/
+Experiment::SetDimensions cp-src/abstract.C /^void
Experiment::SetDimensions(void)$/
+Experiment::SetFather cp-src/abstract.C /^void
Experiment::SetFather(Tree_Node *f)$/
+Experiment::SetPosition cp-src/abstract.C /^void
Experiment::SetPosition(Coord xx, Coord yy)$/
+Experiment::SetTextual cp-src/abstract.C /^void
Experiment::SetTextual(char t, char)$/
+Experiment::exp_offer_list cp-src/abstract.H 560
+Experiment::guard_option cp-src/abstract.H 561
+ExtractCommentInfo pas-src/common.pas /^procedure ExtractCommentInfo;
(*($/
+FASTCFLAGS make-src/Makefile 55
+FILTER make-src/Makefile 58
+FINALIZERP c-src/emacs/src/lisp.h /^FINALIZERP (Lisp_Object x)$/
+FINAL_FREE_BLOCKS c-src/emacs/src/gmalloc.c 135
+FIXNUM_BITS c-src/emacs/src/lisp.h 252
+FIXNUM_OVERFLOW_P c-src/emacs/src/lisp.h /^#define FIXNUM_OVERFLOW_P(i)
\\$/
+FIXNUM_OVERFLOW_P c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (EQ, bool,
(Lisp_Object x, Lisp_O/
+FLOATP c-src/emacs/src/lisp.h /^# define FLOATP(x) lisp_h_FLOATP (x)$/
+FLOAT_TO_STRING_BUFSIZE c-src/emacs/src/lisp.h 3927
+FORTHSRC Makefile /^FORTHSRC=$(addprefix
.\/forth-src\/,test-forth.fth)$/
+FOR_EACH_ALIST_VALUE c-src/emacs/src/lisp.h /^#define
FOR_EACH_ALIST_VALUE(head_var, list_var, v/
+FOR_EACH_TAIL c-src/emacs/src/lisp.h /^#define FOR_EACH_TAIL(hare, list,
tortoise, n) \\$/
+FRAMEP c-src/emacs/src/lisp.h /^FRAMEP (Lisp_Object a)$/
+FRC Makefile /^FRC:;$/
+FREEFLOOD c-src/emacs/src/gmalloc.c 1858
+FSRC Makefile /^FSRC=$(addprefix .\/f-src\/,entry.for entry.strange_/
+FUDGE111 cp-src/cfront.H 791
+FUN0 y-src/parse.y /^yylex FUN0()$/
+FUN0 parse.y /^yylex FUN0()$/
+FUN1 y-src/parse.y /^yyerror FUN1(char *, s)$/
+FUN1 y-src/parse.y /^str_to_col FUN1(char **,str)$/
+FUN1 parse.y /^yyerror FUN1(char *, s)$/
+FUN1 parse.y /^str_to_col FUN1(char **,str)$/
+FUN2 y-src/parse.y /^make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)$/
+FUN2 y-src/parse.y /^parse_cell_or_range FUN2(char **,ptr, struct rng */
+FUN2 parse.y /^make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)$/
+FUN2 parse.y /^parse_cell_or_range FUN2(char **,ptr, struct rng */
+FUNCTIONP c-src/emacs/src/lisp.h /^FUNCTIONP (Lisp_Object obj)$/
+FUNCTION_KEY_OFFSET c-src/emacs/src/keyboard.c 4766
+FUNCTION_KEY_OFFSET c-src/emacs/src/keyboard.c 5061
+F_getit c-src/etags.c /^F_getit (FILE *inf)$/
+F_takeprec c-src/etags.c /^F_takeprec (void)$/
+Fails_t c-src/h.h 5
+Finalize_Cond/p ada-src/2ataspri.adb /^ procedure Finalize_Cond
(Cond : in out Conditio/
+Finalize_Cond/p ada-src/2ataspri.ads /^ procedure Finalize_Cond
(Cond : in out Conditio/
+Finalize_Lock/p ada-src/2ataspri.adb /^ procedure Finalize_Lock (L
: in out Lock) is$/
+Finalize_Lock/p ada-src/2ataspri.ads /^ procedure Finalize_Lock (L
: in out Lock);$/
+Finalize_TAS_Cell/p ada-src/2ataspri.adb /^ procedure
Finalize_TAS_Cell (Cell : in out TAS_/
+Finalize_TAS_Cell/p ada-src/2ataspri.ads /^ procedure
Finalize_TAS_Cell (Cell : in out TA/
+First100Chars pas-src/common.pas /^procedure First100Chars; (*($/
+Foo perl-src/kai-test.pl /^package Foo;$/
+Foo::Bar perl-src/kai-test.pl /^package Foo::Bar;$/
+Foo::Bar::f6 perl-src/kai-test.pl /^sub f6 {$/
+Foo::f3 perl-src/kai-test.pl /^sub f3 {$/
+Forth_help c-src/etags.c 573
+Forth_suffixes c-src/etags.c 571
+Forth_words c-src/etags.c /^Forth_words (FILE *inf)$/
+Fortran_functions c-src/etags.c /^Fortran_functions (FILE *inf)$/
+Fortran_help c-src/etags.c 579
+Fortran_suffixes c-src/etags.c 577
+GCALIGNED c-src/emacs/src/lisp.h 288
+GCALIGNED c-src/emacs/src/lisp.h 290
+GCALIGNMENT c-src/emacs/src/lisp.h 243
+GCPRO1 c-src/emacs/src/lisp.h /^#define GCPRO1(varname) ((void) gcpro1)$/
+GCPRO1 c-src/emacs/src/lisp.h /^#define GCPRO1(a)
\\$/
+GCPRO1 c-src/emacs/src/lisp.h /^#define GCPRO1(a)
\\$/
+GCPRO2 c-src/emacs/src/lisp.h /^#define GCPRO2(varname1, varname2) ((void)
gcpro2,/
+GCPRO2 c-src/emacs/src/lisp.h /^#define GCPRO2(a, b)
\\$/
+GCPRO2 c-src/emacs/src/lisp.h /^#define GCPRO2(a, b)
\\$/
+GCPRO3 c-src/emacs/src/lisp.h /^#define GCPRO3(varname1, varname2, varname3)
\\$/
+GCPRO3 c-src/emacs/src/lisp.h /^#define GCPRO3(a, b, c)
\\$/
+GCPRO3 c-src/emacs/src/lisp.h /^#define GCPRO3(a, b, c)
\\$/
+GCPRO4 c-src/emacs/src/lisp.h /^#define GCPRO4(varname1, varname2, varname3,
varna/
+GCPRO4 c-src/emacs/src/lisp.h /^#define GCPRO4(a, b, c, d)
\\$/
+GCPRO4 c-src/emacs/src/lisp.h /^#define GCPRO4(a, b, c, d)
\\$/
+GCPRO5 c-src/emacs/src/lisp.h /^#define GCPRO5(varname1, varname2, varname3,
varna/
+GCPRO5 c-src/emacs/src/lisp.h /^#define GCPRO5(a, b, c, d, e)
\\$/
+GCPRO5 c-src/emacs/src/lisp.h /^#define GCPRO5(a, b, c, d, e)
\\$/
+GCPRO6 c-src/emacs/src/lisp.h /^#define GCPRO6(varname1, varname2, varname3,
varna/
+GCPRO6 c-src/emacs/src/lisp.h /^#define GCPRO6(a, b, c, d, e, f)
\\$/
+GCPRO6 c-src/emacs/src/lisp.h /^#define GCPRO6(a, b, c, d, e, f)
\\$/
+GCPRO7 c-src/emacs/src/lisp.h /^#define GCPRO7(a, b, c, d, e, f, g) (GCPRO6
(a, b,/
+GCPRO7 c-src/emacs/src/lisp.h /^#define GCPRO7(a, b, c, d, e, f, g)
\\$/
+GCPRO7 c-src/emacs/src/lisp.h /^#define GCPRO7(a, b, c, d, e, f, g)
\\$/
+GCTYPEBITS c-src/emacs/src/lisp.h 67
+GCTYPEBITS c-src/emacs/src/lisp.h /^DEFINE_GDB_SYMBOL_BEGIN (int,
GCTYPEBITS)$/
+GC_MAKE_GCPROS_NOOPS c-src/emacs/src/lisp.h 3172
+GC_MARK_STACK c-src/emacs/src/lisp.h 3177
+GC_MARK_STACK_CHECK_GCPROS c-src/emacs/src/lisp.h 3173
+GC_USE_GCPROS_AS_BEFORE c-src/emacs/src/lisp.h 3171
+GC_USE_GCPROS_CHECK_ZOMBIES c-src/emacs/src/lisp.h 3174
+GE y-src/parse.c 8
+GENERIC_PTR cccp.y 56
+GENERIC_PTR cccp.y 58
+GENERIC_PTR y-src/cccp.y 56
+GENERIC_PTR y-src/cccp.y 58
+GEQ y-src/cccp.c 15
+GROW_RAW_KEYBUF c-src/emacs/src/keyboard.c 119
+Gate_Decl cp-src/abstract.H 223
+Gate_Decl::Gate_Decl cp-src/abstract.C /^Gate_Decl::Gate_Decl(ID_List
*g_id_l1, ID_List *g_/
+Gate_Decl::SetCollapsed cp-src/abstract.C /^void
Gate_Decl::SetCollapsed(char t)$/
+Gate_Decl::SetDimensions cp-src/abstract.C /^void
Gate_Decl::SetDimensions(void)$/
+Gate_Decl::SetFather cp-src/abstract.C /^void
Gate_Decl::SetFather(Tree_Node *f)$/
+Gate_Decl::SetPosition cp-src/abstract.C /^void
Gate_Decl::SetPosition(Coord xx, Coord yy)$/
+Gate_Decl::gate_id_list1 cp-src/abstract.H 225
+Gate_Decl::gate_id_list2 cp-src/abstract.H 226
+Gate_Decl_List cp-src/abstract.H 239
+Gate_Decl_List::Gate_Decl_List cp-src/abstract.C
/^Gate_Decl_List::Gate_Decl_List(Gate_Decl *el, Gate/
+Gate_Decl_List::SetCollapsed cp-src/abstract.C /^void
Gate_Decl_List::SetCollapsed(char t)$/
+Gate_Decl_List::SetDimensions cp-src/abstract.C /^void
Gate_Decl_List::SetDimensions(void)$/
+Gate_Decl_List::SetFather cp-src/abstract.C /^void
Gate_Decl_List::SetFather(Tree_Node *f)$/
+Gate_Decl_List::SetPosition cp-src/abstract.C /^void
Gate_Decl_List::SetPosition(Coord xx, Coord y/
+Gate_Decl_List::elem cp-src/abstract.H 241
+Gate_Decl_List::next cp-src/abstract.H 242
+GatherControls pyt-src/server.py /^ def GatherControls(self):$/
+Gen_Paral cp-src/abstract.H 652
+Gen_Paral::Gen_Paral cp-src/abstract.C /^Gen_Paral::Gen_Paral(ID_List
*g_i_l)$/
+Gen_Paral::HideGate cp-src/abstract.H /^ void HideGate() { ((ID_List
*)gate_id_list)->Hide/
+Gen_Paral::SetCollapsed cp-src/abstract.C /^void
Gen_Paral::SetCollapsed(char t)$/
+Gen_Paral::SetDimensions cp-src/abstract.C /^void
Gen_Paral::SetDimensions(void)$/
+Gen_Paral::SetFather cp-src/abstract.C /^void
Gen_Paral::SetFather(Tree_Node *f)$/
+Gen_Paral::SetPosition cp-src/abstract.C /^void
Gen_Paral::SetPosition(Coord xx, Coord yy)$/
+Gen_Paral::Xclose cp-src/abstract.H 655
+Gen_Paral::border cp-src/abstract.H 656
+Gen_Paral::gate_id_list cp-src/abstract.H 654
+GetLayerByName lua-src/allegro.lua /^function GetLayerByName (name)$/
+GetNameList pas-src/common.pas /^function GetNameList; (* :
BinNodePointer;*)$/
+GetNewNameListNode pas-src/common.pas /^function
GetNewNameListNode;(*($/
+GetTextRef pas-src/common.pas /^function GetTextRef;(*($/
+GetUniqueLayerName lua-src/allegro.lua /^function GetUniqueLayerName
()$/
+Get_Own_Priority/f ada-src/2ataspri.adb /^ function Get_Own_Priority
return System.Any_Pri/
+Get_Own_Priority/f ada-src/2ataspri.ads /^ function Get_Own_Priority
return System.Any_Pri/
+Get_Priority/f ada-src/2ataspri.adb /^ function Get_Priority (T :
TCB_Ptr) return Syst/
+Get_Priority/f ada-src/2ataspri.ads /^ function Get_Priority (T :
TCB_Ptr) return Syst/
+Guard cp-src/abstract.H 524
+Guard::Guard cp-src/abstract.C /^Guard::Guard(Equality *eq)$/
+Guard::SetCollapsed cp-src/abstract.C /^void Guard::SetCollapsed(char
t)$/
+Guard::SetDimensions cp-src/abstract.C /^void
Guard::SetDimensions(void)$/
+Guard::SetFather cp-src/abstract.C /^void
Guard::SetFather(Tree_Node *f)$/
+Guard::SetPosition cp-src/abstract.C /^void Guard::SetPosition(Coord
xx, Coord yy)$/
+Guard::equality cp-src/abstract.H 526
+Guarded cp-src/abstract.H 848
+Guarded::Guarded cp-src/abstract.C /^Guarded::Guarded(Equality
*eq, Tree_Node *b)$/
+Guarded::SetCollapsed cp-src/abstract.C /^void
Guarded::SetCollapsed(char t)$/
+Guarded::SetDimensions cp-src/abstract.C /^void
Guarded::SetDimensions(void)$/
+Guarded::SetFather cp-src/abstract.C /^void
Guarded::SetFather(Tree_Node *f)$/
+Guarded::SetPosition cp-src/abstract.C /^void
Guarded::SetPosition(Coord xx, Coord yy)$/
+Guarded::SetTextual cp-src/abstract.C /^void Guarded::SetTextual(char
t, char s)$/
+Guarded::Xclose cp-src/abstract.H 852
+Guarded::bex cp-src/abstract.H 851
+Guarded::border cp-src/abstract.H 853
+Guarded::equality cp-src/abstract.H 850
+HASH_HASH c-src/emacs/src/lisp.h /^HASH_HASH (struct Lisp_Hash_Table *h,
ptrdiff_t id/
+HASH_INDEX c-src/emacs/src/lisp.h /^HASH_INDEX (struct Lisp_Hash_Table
*h, ptrdiff_t i/
+HASH_KEY c-src/emacs/src/lisp.h /^HASH_KEY (struct Lisp_Hash_Table *h,
ptrdiff_t idx/
+HASH_NEXT c-src/emacs/src/lisp.h /^HASH_NEXT (struct Lisp_Hash_Table *h,
ptrdiff_t id/
+HASH_TABLE_P c-src/emacs/src/lisp.h /^HASH_TABLE_P (Lisp_Object a)$/
+HASH_TABLE_SIZE c-src/emacs/src/lisp.h /^HASH_TABLE_SIZE (struct
Lisp_Hash_Table *h)$/
+HASH_VALUE c-src/emacs/src/lisp.h /^HASH_VALUE (struct Lisp_Hash_Table
*h, ptrdiff_t i/
+HAVE_NTGUI c-src/etags.c 116
+HEAP c-src/emacs/src/gmalloc.c 131
+HTMLSRC Makefile /^HTMLSRC=$(addprefix
.\/html-src\/,softwarelibero.htm/
+HTML_help c-src/etags.c 584
+HTML_labels c-src/etags.c /^HTML_labels (FILE *inf)$/
+HTML_suffixes c-src/etags.c 582
+Half_Container cp-src/abstract.H 287
+Half_Container::Half_Container cp-src/abstract.C
/^Half_Container::Half_Container(ID_List *g_l)$/
+Half_Container::SetCollapsed cp-src/abstract.C /^void
Half_Container::SetCollapsed(char t)$/
+Half_Container::SetDimensions cp-src/abstract.C /^void
Half_Container::SetDimensions(void)$/
+Half_Container::SetFather cp-src/abstract.C /^void
Half_Container::SetFather(Tree_Node *f)$/
+Half_Container::SetPosition cp-src/abstract.C /^void
Half_Container::SetPosition(Coord xx, Coord y/
+Half_Container::gate_list cp-src/abstract.H 289
+Hide cp-src/abstract.H 829
+Hide::Hide cp-src/abstract.C /^Hide::Hide(ID_List *g_l, Tree_Node
*b)$/
+Hide::SetCollapsed cp-src/abstract.C /^void Hide::SetCollapsed(char
t)$/
+Hide::SetDimensions cp-src/abstract.C /^void
Hide::SetDimensions(void)$/
+Hide::SetFather cp-src/abstract.C /^void
Hide::SetFather(Tree_Node *f)$/
+Hide::SetPosition cp-src/abstract.C /^void Hide::SetPosition(Coord
xx, Coord yy)$/
+Hide::SetTextual cp-src/abstract.C /^void Hide::SetTextual(char t,
char s)$/
+Hide::bex cp-src/abstract.H 832
+Hide::border cp-src/abstract.H 833
+Hide::gate_list cp-src/abstract.H 831
+Hide::yl cp-src/abstract.H 834
+ID_List cp-src/abstract.H 47
+ID_List::BuildSigSorts cp-src/abstract.C /^void
ID_List::BuildSigSorts(char bubble, Signature/
+ID_List::ClearIDs cp-src/abstract.C /^void ID_List::ClearIDs(void)$/
+ID_List::GetCardinality cp-src/abstract.C /^int
ID_List::GetCardinality(int c)$/
+ID_List::HideMe cp-src/abstract.C /^void ID_List::HideMe(void)$/
+ID_List::ID_List cp-src/abstract.C /^ID_List::ID_List(ID_Place
*el, ID_List *nxt)$/
+ID_List::SetAlignement cp-src/abstract.C /^void
ID_List::SetAlignement(char a)$/
+ID_List::SetCollapsed cp-src/abstract.C /^void
ID_List::SetCollapsed(char t)$/
+ID_List::SetDimensions cp-src/abstract.C /^void
ID_List::SetDimensions(void)$/
+ID_List::SetFather cp-src/abstract.C /^void
ID_List::SetFather(Tree_Node *f)$/
+ID_List::SetPosition cp-src/abstract.C /^void
ID_List::SetPosition(Coord xx, Coord yy)$/
+ID_List::SetRBubble cp-src/abstract.C /^void ID_List::SetRBubble(char
r)$/
+ID_List::SetVisible cp-src/abstract.C /^void ID_List::SetVisible(char
v)$/
+ID_List::elem cp-src/abstract.H 49
+ID_List::next cp-src/abstract.H 50
+ID_Place cp-src/abstract.H 23
+ID_Place::ClearID cp-src/abstract.C /^void ID_Place::ClearID(void)$/
+ID_Place::GetIdent cp-src/abstract.H /^ char *GetIdent()
{return(str);};$/
+ID_Place::GetRBubble cp-src/abstract.H /^ char GetRBubble(void) {
return(RBubble); };$/
+ID_Place::ID_Place cp-src/abstract.C /^ID_Place::ID_Place()$/
+ID_Place::RBubble cp-src/abstract.H 26
+ID_Place::SetDimensions cp-src/abstract.C /^void
ID_Place::SetDimensions(void)$/
+ID_Place::SetFather cp-src/abstract.C /^void
ID_Place::SetFather(Tree_Node *f)$/
+ID_Place::SetIdent cp-src/abstract.C /^void ID_Place::SetIdent(char
*identifier)$/
+ID_Place::SetPosition cp-src/abstract.C /^void
ID_Place::SetPosition(Coord xx, Coord yy)$/
+ID_Place::SetRBubble cp-src/abstract.H /^ void SetRBubble(char r) {
RBubble = r; };$/
+ID_Place::SetVisible cp-src/abstract.C /^void
ID_Place::SetVisible(char v)$/
+ID_Place::str cp-src/abstract.H 25
+ID_Place::~ID_Place cp-src/abstract.C /^ID_Place::~ID_Place()$/
+IEEE_FLOATING_POINT c-src/emacs/src/lisp.h 2415
+IMAGEP c-src/emacs/src/lisp.h /^IMAGEP (Lisp_Object x)$/
+INPUT_EVENT_POS_MAX c-src/emacs/src/keyboard.c 3698
+INPUT_EVENT_POS_MIN c-src/emacs/src/keyboard.c 3701
+INSERT_TREE_NODE pas-src/common.pas /^procedure
INSERT_TREE_NODE;(*( $/
+INSTANTIATE_MDIAGARRAY_FRIENDS cp-src/MDiagArray2.h /^#define
INSTANTIATE_MDIAGARRAY_FRIENDS(T) \\$/
+INT c-src/h.h 32
+INT y-src/cccp.c 6
+INTEGERP c-src/emacs/src/lisp.h /^# define INTEGERP(x) lisp_h_INTEGERP
(x)$/
+INTEGER_TO_CONS c-src/emacs/src/lisp.h /^#define INTEGER_TO_CONS(i)
\\$/
+INTERVAL c-src/emacs/src/lisp.h 1149
+INTMASK c-src/emacs/src/lisp.h 437
+INTTYPEBITS c-src/emacs/src/lisp.h 249
+INT_BIT c-src/emacs/src/gmalloc.c 124
+INT_TYPE_SIZE cccp.y 91
+INT_TYPE_SIZE y-src/cccp.y 91
+IN_ERROR cp-src/cfront.H 234
+ISALNUM c-src/etags.c /^#define ISALNUM(c) isalnum (CHAR (c))$/
+ISALPHA c-src/etags.c /^#define ISALPHA(c) isalpha (CHAR (c))$/
+ISDIGIT c-src/etags.c /^#define ISDIGIT(c) isdigit (CHAR (c))$/
+ISLOWER c-src/etags.c /^#define ISLOWER(c) islower (CHAR (c))$/
+ISO_FUNCTION_KEY_OFFSET c-src/emacs/src/keyboard.c 5149
+ISUPPER c-src/etags.c /^# define ISUPPER(c) isupper (CHAR (c))$/
+IS_DAEMON c-src/emacs/src/lisp.h 4257
+IS_DAEMON c-src/emacs/src/lisp.h 4261
+Id_Decl cp-src/abstract.H 73
+Id_Decl::Id_Decl cp-src/abstract.C /^Id_Decl::Id_Decl(ID_List *l,
ID_Place *s)$/
+Id_Decl::SetCollapsed cp-src/abstract.C /^void
Id_Decl::SetCollapsed(char t)$/
+Id_Decl::SetDimensions cp-src/abstract.C /^void
Id_Decl::SetDimensions(void)$/
+Id_Decl::SetFather cp-src/abstract.C /^void
Id_Decl::SetFather(Tree_Node *f)$/
+Id_Decl::SetPosition cp-src/abstract.C /^void
Id_Decl::SetPosition(Coord xx, Coord yy)$/
+Id_Decl::id_list cp-src/abstract.H 75
+Id_Decl::sort_id cp-src/abstract.H 76
+Id_Decl_List cp-src/abstract.H 89
+Id_Decl_List::Id_Decl_List cp-src/abstract.C
/^Id_Decl_List::Id_Decl_List(Id_Decl *el, Id_Decl_Li/
+Id_Decl_List::SetCollapsed cp-src/abstract.C /^void
Id_Decl_List::SetCollapsed(char t)$/
+Id_Decl_List::SetDimensions cp-src/abstract.C /^void
Id_Decl_List::SetDimensions(void)$/
+Id_Decl_List::SetFather cp-src/abstract.C /^void
Id_Decl_List::SetFather(Tree_Node *f)$/
+Id_Decl_List::SetPosition cp-src/abstract.C /^void
Id_Decl_List::SetPosition(Coord xx, Coord yy)/
+Id_Decl_List::elem cp-src/abstract.H 91
+Id_Decl_List::next cp-src/abstract.H 92
+Ident_Eq cp-src/abstract.H 255
+Ident_Eq::Ident_Eq cp-src/abstract.C /^Ident_Eq::Ident_Eq(Id_Decl
*idd, Value_Expr *ex)$/
+Ident_Eq::SetCollapsed cp-src/abstract.C /^void
Ident_Eq::SetCollapsed(char t)$/
+Ident_Eq::SetDimensions cp-src/abstract.C /^void
Ident_Eq::SetDimensions(void)$/
+Ident_Eq::SetFather cp-src/abstract.C /^void
Ident_Eq::SetFather(Tree_Node *f)$/
+Ident_Eq::SetPosition cp-src/abstract.C /^void
Ident_Eq::SetPosition(Coord xx, Coord yy)$/
+Ident_Eq::expr cp-src/abstract.H 258
+Ident_Eq::iddecl cp-src/abstract.H 257
+Ident_Eq_List cp-src/abstract.H 271
+Ident_Eq_List::Ident_Eq_List cp-src/abstract.C
/^Ident_Eq_List::Ident_Eq_List(Ident_Eq *el, Ident_E/
+Ident_Eq_List::SetCollapsed cp-src/abstract.C /^void
Ident_Eq_List::SetCollapsed(char t)$/
+Ident_Eq_List::SetDimensions cp-src/abstract.C /^void
Ident_Eq_List::SetDimensions(void)$/
+Ident_Eq_List::SetFather cp-src/abstract.C /^void
Ident_Eq_List::SetFather(Tree_Node *f)$/
+Ident_Eq_List::SetPosition cp-src/abstract.C /^void
Ident_Eq_List::SetPosition(Coord xx, Coord yy/
+Ident_Eq_List::elem cp-src/abstract.H 273
+Ident_Eq_List::next cp-src/abstract.H 274
+InitNameList pas-src/common.pas /^procedure InitNameList;$/
+InitNameStringPool pas-src/common.pas /^procedure
InitNameStringPool;$/
+InitializeStringPackage pas-src/common.pas /^procedure
InitializeStringPackage;$/
+Initialize_Cond/p ada-src/2ataspri.adb /^ procedure Initialize_Cond
(Cond : in out Condit/
+Initialize_Cond/p ada-src/2ataspri.ads /^ procedure Initialize_Cond
(Cond : in out Condit/
+Initialize_LL_Tasks/p ada-src/2ataspri.adb /^ procedure
Initialize_LL_Tasks (T : TCB_Ptr) is$/
+Initialize_LL_Tasks/p ada-src/2ataspri.ads /^ procedure
Initialize_LL_Tasks (T : TCB_Ptr);$/
+Initialize_Lock/p ada-src/2ataspri.adb /^ procedure Initialize_Lock$/
+Initialize_Lock/p ada-src/2ataspri.ads /^ procedure Initialize_Lock
(Prio : System.Any_Pr/
+Initialize_TAS_Cell/p ada-src/2ataspri.adb /^ procedure
Initialize_TAS_Cell (Cell : out TAS_C/
+Initialize_TAS_Cell/p ada-src/2ataspri.ads /^ procedure
Initialize_TAS_Cell (Cell : out TA/
+Inner1/b ada-src/etags-test-for.ada /^ package body Inner1 is$/
+Inner1/b ada-src/waroquiers.ada /^ package body Inner1 is$/
+Inner1/s ada-src/etags-test-for.ada /^ package Inner1 is$/
+Inner1/s ada-src/waroquiers.ada /^ package Inner1 is$/
+Inner2/b ada-src/etags-test-for.ada /^ package body Inner2 is$/
+Inner2/b ada-src/waroquiers.ada /^ package body Inner2 is$/
+Inner2/s ada-src/etags-test-for.ada /^ package Inner2 is$/
+Inner2/s ada-src/waroquiers.ada /^ package Inner2 is$/
+Install_Abort_Handler/p ada-src/2ataspri.adb /^ procedure
Install_Abort_Handler (Handler : Abor/
+Install_Abort_Handler/p ada-src/2ataspri.ads /^ procedure
Install_Abort_Handler (Handler : Abor/
+Install_Error_Handler/p ada-src/2ataspri.adb /^ procedure
Install_Error_Handler (Handler : Syst/
+Install_Error_Handler/p ada-src/2ataspri.ads /^ procedure
Install_Error_Handler (Handler : Syst/
+Interl cp-src/abstract.H 672
+Interl::Interl cp-src/abstract.C /^Interl::Interl()$/
+Interl::SetDimensions cp-src/abstract.C /^void
Interl::SetDimensions(void)$/
+Interl::SetFather cp-src/abstract.C /^void
Interl::SetFather(Tree_Node *f)$/
+Interl::SetPosition cp-src/abstract.C /^void
Interl::SetPosition(Coord xx, Coord yy)$/
+Internal cp-src/abstract.H 614
+Internal::Internal cp-src/abstract.C /^Internal::Internal()$/
+Internal::SetDimensions cp-src/abstract.C /^void
Internal::SetDimensions(void)$/
+Internal::SetFather cp-src/abstract.C /^void
Internal::SetFather(Tree_Node *f)$/
+Internal::SetPosition cp-src/abstract.C /^void
Internal::SetPosition(Coord xx, Coord yy)$/
+Invoking gzip tex-src/gzip.texi /address@hidden Invoking gzip, Advanced
usage, Sample, Top$/
+IsControlChar pas-src/common.pas /^function IsControlChar; (*($/
+IsControlCharName pas-src/common.pas /^function IsControlCharName($/
+Is_Set/f ada-src/2ataspri.adb /^ function Is_Set (Cell : in
TAS_Cell) return Bo/
+Is_Set/f ada-src/2ataspri.ads /^ function Is_Set (Cell : in
TAS_Cell)/
+JAVASRC Makefile /^JAVASRC=$(addprefix
.\/java-src\/,AWTEMul.java KeyEv/
+KBD_BUFFER_SIZE c-src/emacs/src/keyboard.c 82
+KBYTES objc-src/PackInsp.m 58
+KEY_TO_CHAR c-src/emacs/src/keyboard.c /^#define KEY_TO_CHAR(k) (XINT
(k) & ((1 << CHARACTE/
+KeyEvent java-src/KeyEve.java 36
+KeyEvent.CHAR_UNDEFINED java-src/KeyEve.java 214
+KeyEvent.KEY_FIRST java-src/KeyEve.java 41
+KeyEvent.KEY_LAST java-src/KeyEve.java 46
+KeyEvent.KEY_PRESSED java-src/KeyEve.java 57
+KeyEvent.KEY_RELEASED java-src/KeyEve.java 62
+KeyEvent.KEY_TYPED java-src/KeyEve.java 52
+KeyEvent.KeyEvent java-src/KeyEve.java /^ public KeyEvent(Component
source, int id, long/
+KeyEvent.KeyEvent java-src/KeyEve.java /^ public KeyEvent(Component
source, int id, long/
+KeyEvent.VK_0 java-src/KeyEve.java 110
+KeyEvent.VK_1 java-src/KeyEve.java 111
+KeyEvent.VK_2 java-src/KeyEve.java 112
+KeyEvent.VK_3 java-src/KeyEve.java 113
+KeyEvent.VK_4 java-src/KeyEve.java 114
+KeyEvent.VK_5 java-src/KeyEve.java 115
+KeyEvent.VK_6 java-src/KeyEve.java 116
+KeyEvent.VK_7 java-src/KeyEve.java 117
+KeyEvent.VK_8 java-src/KeyEve.java 118
+KeyEvent.VK_9 java-src/KeyEve.java 119
+KeyEvent.VK_A java-src/KeyEve.java 125
+KeyEvent.VK_ACCEPT java-src/KeyEve.java 200
+KeyEvent.VK_ADD java-src/KeyEve.java 167
+KeyEvent.VK_ALT java-src/KeyEve.java 92
+KeyEvent.VK_B java-src/KeyEve.java 126
+KeyEvent.VK_BACK_QUOTE java-src/KeyEve.java 193
+KeyEvent.VK_BACK_SLASH java-src/KeyEve.java 153
+KeyEvent.VK_BACK_SPACE java-src/KeyEve.java 86
+KeyEvent.VK_C java-src/KeyEve.java 127
+KeyEvent.VK_CANCEL java-src/KeyEve.java 88
+KeyEvent.VK_CAPS_LOCK java-src/KeyEve.java 94
+KeyEvent.VK_CLEAR java-src/KeyEve.java 89
+KeyEvent.VK_CLOSE_BRACKET java-src/KeyEve.java 154
+KeyEvent.VK_COMMA java-src/KeyEve.java 105
+KeyEvent.VK_CONTROL java-src/KeyEve.java 91
+KeyEvent.VK_CONVERT java-src/KeyEve.java 198
+KeyEvent.VK_D java-src/KeyEve.java 128
+KeyEvent.VK_DECIMAL java-src/KeyEve.java 170
+KeyEvent.VK_DELETE java-src/KeyEve.java 184
+KeyEvent.VK_DIVIDE java-src/KeyEve.java 171
+KeyEvent.VK_DOWN java-src/KeyEve.java 104
+KeyEvent.VK_E java-src/KeyEve.java 129
+KeyEvent.VK_END java-src/KeyEve.java 99
+KeyEvent.VK_ENTER java-src/KeyEve.java 85
+KeyEvent.VK_EQUALS java-src/KeyEve.java 122
+KeyEvent.VK_ESCAPE java-src/KeyEve.java 95
+KeyEvent.VK_F java-src/KeyEve.java 130
+KeyEvent.VK_F1 java-src/KeyEve.java 172
+KeyEvent.VK_F10 java-src/KeyEve.java 181
+KeyEvent.VK_F11 java-src/KeyEve.java 182
+KeyEvent.VK_F12 java-src/KeyEve.java 183
+KeyEvent.VK_F2 java-src/KeyEve.java 173
+KeyEvent.VK_F3 java-src/KeyEve.java 174
+KeyEvent.VK_F4 java-src/KeyEve.java 175
+KeyEvent.VK_F5 java-src/KeyEve.java 176
+KeyEvent.VK_F6 java-src/KeyEve.java 177
+KeyEvent.VK_F7 java-src/KeyEve.java 178
+KeyEvent.VK_F8 java-src/KeyEve.java 179
+KeyEvent.VK_F9 java-src/KeyEve.java 180
+KeyEvent.VK_FINAL java-src/KeyEve.java 197
+KeyEvent.VK_G java-src/KeyEve.java 131
+KeyEvent.VK_H java-src/KeyEve.java 132
+KeyEvent.VK_HELP java-src/KeyEve.java 190
+KeyEvent.VK_HOME java-src/KeyEve.java 100
+KeyEvent.VK_I java-src/KeyEve.java 133
+KeyEvent.VK_INSERT java-src/KeyEve.java 189
+KeyEvent.VK_J java-src/KeyEve.java 134
+KeyEvent.VK_K java-src/KeyEve.java 135
+KeyEvent.VK_KANA java-src/KeyEve.java 202
+KeyEvent.VK_KANJI java-src/KeyEve.java 203
+KeyEvent.VK_L java-src/KeyEve.java 136
+KeyEvent.VK_LEFT java-src/KeyEve.java 101
+KeyEvent.VK_M java-src/KeyEve.java 137
+KeyEvent.VK_META java-src/KeyEve.java 191
+KeyEvent.VK_MODECHANGE java-src/KeyEve.java 201
+KeyEvent.VK_MULTIPLY java-src/KeyEve.java 166
+KeyEvent.VK_N java-src/KeyEve.java 138
+KeyEvent.VK_NONCONVERT java-src/KeyEve.java 199
+KeyEvent.VK_NUMPAD0 java-src/KeyEve.java 156
+KeyEvent.VK_NUMPAD1 java-src/KeyEve.java 157
+KeyEvent.VK_NUMPAD2 java-src/KeyEve.java 158
+KeyEvent.VK_NUMPAD3 java-src/KeyEve.java 159
+KeyEvent.VK_NUMPAD4 java-src/KeyEve.java 160
+KeyEvent.VK_NUMPAD5 java-src/KeyEve.java 161
+KeyEvent.VK_NUMPAD6 java-src/KeyEve.java 162
+KeyEvent.VK_NUMPAD7 java-src/KeyEve.java 163
+KeyEvent.VK_NUMPAD8 java-src/KeyEve.java 164
+KeyEvent.VK_NUMPAD9 java-src/KeyEve.java 165
+KeyEvent.VK_NUM_LOCK java-src/KeyEve.java 185
+KeyEvent.VK_O java-src/KeyEve.java 139
+KeyEvent.VK_OPEN_BRACKET java-src/KeyEve.java 152
+KeyEvent.VK_P java-src/KeyEve.java 140
+KeyEvent.VK_PAGE_DOWN java-src/KeyEve.java 98
+KeyEvent.VK_PAGE_UP java-src/KeyEve.java 97
+KeyEvent.VK_PAUSE java-src/KeyEve.java 93
+KeyEvent.VK_PERIOD java-src/KeyEve.java 106
+KeyEvent.VK_PRINTSCREEN java-src/KeyEve.java 188
+KeyEvent.VK_Q java-src/KeyEve.java 141
+KeyEvent.VK_QUOTE java-src/KeyEve.java 194
+KeyEvent.VK_R java-src/KeyEve.java 142
+KeyEvent.VK_RIGHT java-src/KeyEve.java 103
+KeyEvent.VK_S java-src/KeyEve.java 143
+KeyEvent.VK_SCROLL_LOCK java-src/KeyEve.java 186
+KeyEvent.VK_SEMICOLON java-src/KeyEve.java 121
+KeyEvent.VK_SEPARATER java-src/KeyEve.java 168
+KeyEvent.VK_SHIFT java-src/KeyEve.java 90
+KeyEvent.VK_SLASH java-src/KeyEve.java 107
+KeyEvent.VK_SPACE java-src/KeyEve.java 96
+KeyEvent.VK_SUBTRACT java-src/KeyEve.java 169
+KeyEvent.VK_T java-src/KeyEve.java 144
+KeyEvent.VK_TAB java-src/KeyEve.java 87
+KeyEvent.VK_U java-src/KeyEve.java 145
+KeyEvent.VK_UNDEFINED java-src/KeyEve.java 208
+KeyEvent.VK_UP java-src/KeyEve.java 102
+KeyEvent.VK_V java-src/KeyEve.java 146
+KeyEvent.VK_W java-src/KeyEve.java 147
+KeyEvent.VK_X java-src/KeyEve.java 148
+KeyEvent.VK_Y java-src/KeyEve.java 149
+KeyEvent.VK_Z java-src/KeyEve.java 150
+KeyEvent.getKeyChar java-src/KeyEve.java /^ public char getKeyChar()
{$/
+KeyEvent.getKeyCode java-src/KeyEve.java /^ public int getKeyCode()
{$/
+KeyEvent.getKeyModifiersText java-src/KeyEve.java /^ public static
String getKeyModifiersText(int m/
+KeyEvent.getKeyText java-src/KeyEve.java /^ public static String
getKeyText(int keyCode) {/
+KeyEvent.isActionKey java-src/KeyEve.java /^ public boolean
isActionKey() {$/
+KeyEvent.keyChar java-src/KeyEve.java 217
+KeyEvent.keyCode java-src/KeyEve.java 216
+KeyEvent.paramString java-src/KeyEve.java /^ public String
paramString() {$/
+KeyEvent.serialVersionUID java-src/KeyEve.java 222
+KeyEvent.setKeyChar java-src/KeyEve.java /^ public void
setKeyChar(char keyChar) {$/
+KeyEvent.setKeyCode java-src/KeyEve.java /^ public void
setKeyCode(int keyCode) {$/
+KeyEvent.setModifiers java-src/KeyEve.java /^ public void
setModifiers(int modifiers) {$/
+LATEST make-src/Makefile 1
+LCE_COMMENT php-src/lce_functions.php 13
+LCE_COMMENT_TOOL php-src/lce_functions.php 17
+LCE_COMMENT_USER php-src/lce_functions.php 15
+LCE_FUNCTIONS php-src/lce_functions.php 4
+LCE_MSGID php-src/lce_functions.php 19
+LCE_MSGSTR php-src/lce_functions.php 21
+LCE_TEXT php-src/lce_functions.php 23
+LCE_UNKNOWN php-src/lce_functions.php 9
+LCE_WS php-src/lce_functions.php 11
+LDFLAGS make-src/Makefile 50
+LE y-src/parse.c 7
+LEQ y-src/cccp.c 14
+LISP_INITIALLY c-src/emacs/src/lisp.h /^#define LISP_INITIALLY(i) {i}$/
+LISP_INITIALLY c-src/emacs/src/lisp.h /^#define LISP_INITIALLY(i) (i)$/
+LISP_INITIALLY_ZERO c-src/emacs/src/lisp.h 582
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^#define
LISP_MACRO_DEFUN(name, type, argdecls, arg/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XLI,
EMACS_INT, (Lisp_Object o),/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XPNTR, void
*, (Lisp_Object a), /
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XHASH,
EMACS_INT, (Lisp_Object a/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XCONS,
struct Lisp_Cons *, (Lisp/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XCAR,
Lisp_Object, (Lisp_Object /
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (SYMBOL_VAL,
Lisp_Object, (struct/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (NILP, bool,
(Lisp_Object x), (x)/
+LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (CONSP,
bool, (Lisp_Object x), (x/
+LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^#define
LISP_MACRO_DEFUN_VOID(name, argdecls, args/
+LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN_VOID
(CHECK_TYPE,$/
+LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN_VOID
(SET_SYMBOL_VAL,$/
+LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN_VOID
(CHECK_LIST_CONS, (Lisp_Obje/
+LISTCONTENTS objc-src/PackInsp.m 39
+LISTCONTENTSBUTTON objc-src/PackInsp.m 48
+LISTDESCRIPTIONBUTTON objc-src/PackInsp.m 49
+LL_Assert/p ada-src/2ataspri.adb /^ procedure LL_Assert (B : Boolean;
M : String) i/
+LL_Assert/p ada-src/2ataspri.ads /^ procedure LL_Assert (B : Boolean;
M : String);$/
+LL_Task_Procedure_Access/t ada-src/etags-test-for.ada /^ type
LL_Task_Procedure_Access is access procedu/
+LL_Task_Procedure_Access/t ada-src/2ataspri.ads /^ type
LL_Task_Procedure_Access is access procedu/
+LL_Wrapper/p ada-src/etags-test-for.ada /^ procedure LL_Wrapper (T :
TCB_Ptr);$/
+LL_Wrapper/p ada-src/2ataspri.adb /^ procedure LL_Wrapper (T :
TCB_Ptr);$/
+LL_Wrapper/p ada-src/2ataspri.adb /^ procedure LL_Wrapper (T : TCB_Ptr)
is$/
+LOCALIZE objc-src/PackInsp.m /^#define LOCALIZE(s)
NXLoadLocalizedStringFromTabl/
+LOCALIZE_ARCH objc-src/PackInsp.m /^#define LOCALIZE_ARCH(s)
NXLoadLocalizedStringFrom/
+LOCK c-src/emacs/src/gmalloc.c /^#define LOCK()
\\$/
+LOCK c-src/emacs/src/gmalloc.c /^#define LOCK()$/
+LOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define
LOCK_ALIGNED_BLOCKS() \\$/
+LOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define
LOCK_ALIGNED_BLOCKS()$/
+LONG_TYPE_SIZE cccp.y 95
+LONG_TYPE_SIZE y-src/cccp.y 95
+LOOKING_AT c-src/etags.c /^#define LOOKING_AT(cp, kw) \/* kw is the
keyword, /
+LOOKING_AT_NOCASE c-src/etags.c /^#define LOOKING_AT_NOCASE(cp, kw) \/*
the keyword i/
+LOOKUP objc-src/PackInsp.m /^#define LOOKUP(key, notfound) ([table
isKey:key] ?/
+LOOKUP objc-src/PackInsp.m 176
+LOOP_ON_INPUT_LINES c-src/etags.c /^#define
LOOP_ON_INPUT_LINES(file_pointer, line_buf/
+LSH y-src/cccp.c 16
+LTGT cp-src/MDiagArray2.h 35
+LTGT cp-src/MDiagArray2.h 39
+LTGT cp-src/MDiagArray2.h 42
+LTGT cp-src/MDiagArray2.h 144
+LUASRC Makefile /^LUASRC=$(addprefix .\/lua-src\/,allegro.lua)$/
+L_CELL y-src/parse.c 10
+L_CONST y-src/parse.c 13
+L_FN0 y-src/parse.c 14
+L_FN1 y-src/parse.c 15
+L_FN1R y-src/parse.c 20
+L_FN2 y-src/parse.c 16
+L_FN2R y-src/parse.c 21
+L_FN3 y-src/parse.c 17
+L_FN3R y-src/parse.c 22
+L_FN4 y-src/parse.c 18
+L_FN4R y-src/parse.c 23
+L_FNN y-src/parse.c 19
+L_FNNR y-src/parse.c 24
+L_GE y-src/parse.c 27
+L_LE y-src/parse.c 25
+L_NE y-src/parse.c 26
+L_RANGE y-src/parse.c 11
+L_VAR y-src/parse.c 12
+L_getit c-src/etags.c /^L_getit (void)$/
+LabeledEntry pyt-src/server.py /^class LabeledEntry(Frame):$/
+Lang_function c-src/etags.c 182
+Lang_function c-src/h.h 6
+Lisp_Bits c-src/emacs/src/lisp.h 239
+Lisp_Bool_Vector c-src/emacs/src/lisp.h 1384
+Lisp_Boolfwd c-src/emacs/src/lisp.h 2284
+Lisp_Buffer_Local_Value c-src/emacs/src/lisp.h 2334
+Lisp_Buffer_Objfwd c-src/emacs/src/lisp.h 2302
+Lisp_Char_Table c-src/emacs/src/lisp.h 1575
+Lisp_Compiled c-src/emacs/src/lisp.h 2429
+Lisp_Cons c-src/emacs/src/lisp.h 475
+Lisp_Finalizer c-src/emacs/src/lisp.h 2186
+Lisp_Float c-src/emacs/src/lisp.h 477
+Lisp_Float c-src/emacs/src/lisp.h 2391
+Lisp_Free c-src/emacs/src/lisp.h 2201
+Lisp_Fwd c-src/emacs/src/lisp.h 2368
+Lisp_Fwd_Bool c-src/emacs/src/lisp.h 505
+Lisp_Fwd_Buffer_Obj c-src/emacs/src/lisp.h 507
+Lisp_Fwd_Int c-src/emacs/src/lisp.h 504
+Lisp_Fwd_Kboard_Obj c-src/emacs/src/lisp.h 508
+Lisp_Fwd_Obj c-src/emacs/src/lisp.h 506
+Lisp_Fwd_Type c-src/emacs/src/lisp.h 502
+Lisp_Hash_Table c-src/emacs/src/lisp.h 1823
+Lisp_Int0 c-src/emacs/src/lisp.h 461
+Lisp_Int1 c-src/emacs/src/lisp.h 462
+Lisp_Intfwd c-src/emacs/src/lisp.h 2274
+Lisp_Kboard_Objfwd c-src/emacs/src/lisp.h 2362
+Lisp_Marker c-src/emacs/src/lisp.h 1978
+Lisp_Misc c-src/emacs/src/lisp.h 458
+Lisp_Misc c-src/emacs/src/lisp.h 2212
+Lisp_Misc_Any c-src/emacs/src/lisp.h 1971
+Lisp_Misc_Finalizer c-src/emacs/src/lisp.h 491
+Lisp_Misc_Float c-src/emacs/src/lisp.h 494
+Lisp_Misc_Free c-src/emacs/src/lisp.h 487
+Lisp_Misc_Limit c-src/emacs/src/lisp.h 496
+Lisp_Misc_Marker c-src/emacs/src/lisp.h 488
+Lisp_Misc_Overlay c-src/emacs/src/lisp.h 489
+Lisp_Misc_Save_Value c-src/emacs/src/lisp.h 490
+Lisp_Misc_Type c-src/emacs/src/lisp.h 485
+Lisp_Object c-src/emacs/src/lisp.h 567
+Lisp_Object c-src/emacs/src/lisp.h 577
+Lisp_Objfwd c-src/emacs/src/lisp.h 2294
+Lisp_Overlay c-src/emacs/src/lisp.h 2021
+Lisp_Save_Type c-src/emacs/src/lisp.h 2064
+Lisp_Save_Value c-src/emacs/src/lisp.h 2110
+Lisp_String c-src/emacs/src/lisp.h 466
+Lisp_Sub_Char_Table c-src/emacs/src/lisp.h 1606
+Lisp_Subr c-src/emacs/src/lisp.h 1670
+Lisp_Symbol c-src/emacs/src/lisp.h 454
+Lisp_Symbol c-src/emacs/src/lisp.h 654
+Lisp_Type c-src/emacs/src/lisp.h 451
+Lisp_Vector c-src/emacs/src/lisp.h 1369
+Lisp_Vectorlike c-src/emacs/src/lisp.h 472
+Lisp_functions c-src/etags.c /^Lisp_functions (FILE *inf)$/
+Lisp_help c-src/etags.c 591
+Lisp_suffixes c-src/etags.c 589
+ListEdit pyt-src/server.py /^class ListEdit(Frame):$/
+Local_Def cp-src/abstract.H 914
+Local_Def::Local_Def cp-src/abstract.C
/^Local_Def::Local_Def(Ident_Eq_List *e_l, Tree_Node/
+Local_Def::SetCollapsed cp-src/abstract.C /^void
Local_Def::SetCollapsed(char t)$/
+Local_Def::SetDimensions cp-src/abstract.C /^void
Local_Def::SetDimensions(void)$/
+Local_Def::SetFather cp-src/abstract.C /^void
Local_Def::SetFather(Tree_Node *f)$/
+Local_Def::SetPosition cp-src/abstract.C /^void
Local_Def::SetPosition(Coord xx, Coord yy)$/
+Local_Def::SetTextual cp-src/abstract.C /^void
Local_Def::SetTextual(char t, char s)$/
+Local_Def::bex cp-src/abstract.H 917
+Local_Def::border cp-src/abstract.H 919
+Local_Def::equa_list cp-src/abstract.H 916
+Local_Def::yl cp-src/abstract.H 918
+Locate pas-src/common.pas /^function Locate; (*($/
+Lock/t ada-src/2ataspri.ads /^ type Lock is private;$/
+Lock/t ada-src/2ataspri.ads /^ type Lock is$/
+LowerCaseNmStr pas-src/common.pas /^function LowerCaseNmStr; (*($/
+Lua_functions c-src/etags.c /^Lua_functions (FILE *inf)$/
+Lua_help c-src/etags.c 600
+Lua_suffixes c-src/etags.c 598
+MAGICBYTE c-src/emacs/src/gmalloc.c 1856
+MAGICFREE c-src/emacs/src/gmalloc.c 1855
+MAGICWORD c-src/emacs/src/gmalloc.c 1854
+MAKESRC Makefile /^MAKESRC=$(addprefix .\/make-src\/,Makefile)$/
+MALLOCFLOOD c-src/emacs/src/gmalloc.c 1857
+MANY c-src/emacs/src/lisp.h 2833
+MARKERP c-src/emacs/src/lisp.h /^# define MARKERP(x) lisp_h_MARKERP
(x)$/
+MAXCONT cp-src/cfront.H 751
+MAXPATHLEN c-src/etags.c 115
+MAX_ALLOCA c-src/emacs/src/lisp.h 4556
+MAX_ALLOCA c-src/emacs/src/lisp.h 4556
+MAX_ENCODED_BYTES c-src/emacs/src/keyboard.c 2254
+MAX_HASH_VALUE c-src/etags.c 2329
+MAX_WORD_LENGTH c-src/etags.c 2327
+MAYBEREL y-src/parse.y /^#define MAYBEREL(p) (*(p)=='[' &&
(isdigit((p)[1])/
+MAYBEREL parse.y /^#define MAYBEREL(p) (*(p)=='[' && (isdigit((p)[1])/
+MBYTES objc-src/PackInsp.m 59
+MCHECK_DISABLED c-src/emacs/src/gmalloc.c 285
+MCHECK_FREE c-src/emacs/src/gmalloc.c 287
+MCHECK_HEAD c-src/emacs/src/gmalloc.c 288
+MCHECK_OK c-src/emacs/src/gmalloc.c 286
+MCHECK_TAIL c-src/emacs/src/gmalloc.c 289
+MDiagArray2 cp-src/MDiagArray2.h 78
+MDiagArray2::MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (T *d,
int r, int c) : DiagArray2<T>/
+MDiagArray2::MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (void)
: DiagArray2<T> () { }$/
+MDiagArray2::MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (int r,
int c) : DiagArray2<T> (r, c/
+MDiagArray2::MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (int r,
int c, const T& val) : DiagA/
+MDiagArray2::MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const
Array<T>& a) : DiagArray2<T> /
+MDiagArray2::MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const
DiagArray2<T>& a) : DiagArray/
+MDiagArray2::MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const
MDiagArray2<T>& a) : DiagArra/
+MDiagArray2::operator = cp-src/MDiagArray2.h /^ MDiagArray2<T>&
operator = (const MDiagArray2<T>/
+MDiagArray2::operator MArray2<T> cp-src/MDiagArray2.h /^ operator
MArray2<T> () const$/
+MDiagArray2::~MDiagArray2 cp-src/MDiagArray2.h /^ ~MDiagArray2 (void)
{ }$/
+MIA cp-src/cfront.H 779
+MIN_HASH_VALUE c-src/etags.c 2328
+MIN_WORD_LENGTH c-src/etags.c 2326
+MISCP c-src/emacs/src/lisp.h /^# define MISCP(x) lisp_h_MISCP (x)$/
+MOST_NEGATIVE_FIXNUM c-src/emacs/src/lisp.h 835
+MOST_POSITIVE_FIXNUM c-src/emacs/src/lisp.h 834
+MOVE c-src/sysdep.h /^#define MOVE(x,y) movl x, y$/
+MSDOS c-src/etags.c 100
+MSDOS c-src/etags.c 106
+MSDOS c-src/etags.c 107
+MSDOS c-src/etags.c 110
+MSGSEL f-src/entry.for /^ ENTRY MSGSEL ( TYPE )$/
+MSGSEL f-src/entry.strange_suffix /^ ENTRY MSGSEL ( TYPE )$/
+MSGSEL f-src/entry.strange /^ ENTRY MSGSEL ( TYPE )$/
+MULTI_LETTER_MOD c-src/emacs/src/keyboard.c /^#define
MULTI_LETTER_MOD(BIT, NAME, LEN) \\$/
+MULTI_LETTER_MOD c-src/emacs/src/keyboard.c 6231
+MULTI_LETTER_MOD c-src/emacs/src/keyboard.c /^#define
MULTI_LETTER_MOD(BIT, NAME, LEN) \\$/
+MULTI_LETTER_MOD c-src/emacs/src/keyboard.c 6764
+Machin_T/b ada-src/waroquiers.ada /^ protected body Machin_T is$/
+Machin_T/t ada-src/etags-test-for.ada /^ protected type Machin_T is$/
+Machin_T/t ada-src/etags-test-for.ada /^ protected Machin_T is$/
+Machin_T/t ada-src/waroquiers.ada /^ protected type Machin_T is$/
+Machine_Exceptions/t ada-src/2ataspri.ads /^ type Machine_Exceptions is
new Interfaces.C.POS/
+MakeDispose pyt-src/server.py /^ def MakeDispose(self):$/
+MakeSitelist pyt-src/server.py /^ def MakeSitelist(self, master):$/
+Makefile_filenames c-src/etags.c 603
+Makefile_help c-src/etags.c 605
+Makefile_targets c-src/etags.c /^Makefile_targets (FILE *inf)$/
+Mc cp-src/c.C /^int main (void) { my_function0(0); my_function1(1)/
+Mcccp cccp.y /^main ()$/
+Mcccp y-src/cccp.y /^main ()$/
+Mconway.cpp cp-src/conway.cpp /^void main(void)$/
+Metags c-src/etags.c /^main (int argc, char **argv)$/
+Mfail cp-src/fail.C /^main()$/
+Mkai-test.pl perl-src/kai-test.pl /^package main;$/
+More_Lisp_Bits c-src/emacs/src/lisp.h 801
+MoveLayerAfter lua-src/allegro.lua /^function MoveLayerAfter (this_one)$/
+MoveLayerBefore lua-src/allegro.lua /^function MoveLayerBefore
(this_one)$/
+MoveLayerBottom lua-src/allegro.lua /^function MoveLayerBottom ()$/
+MoveLayerTop lua-src/allegro.lua /^function MoveLayerTop ()$/
+NAME y-src/cccp.c 8
+NATNUMP c-src/emacs/src/lisp.h /^NATNUMP (Lisp_Object x)$/
+NDEBUG c-src/etags.c 88
+NE y-src/parse.c 6
+NEG y-src/parse.c 9
+NEXT_ALMOST_PRIME_LIMIT c-src/emacs/src/lisp.h 3573
+NILP c-src/emacs/src/lisp.h /^# define NILP(x) lisp_h_NILP (x)$/
+NIL_IS_ZERO c-src/emacs/src/lisp.h 1515
+NONPOINTER_BITS c-src/emacs/src/lisp.h 78
+NONPOINTER_BITS c-src/emacs/src/lisp.h 80
+NONSRCS Makefile /^NONSRCS=.\/f-src\/entry.strange
.\/erl-src\/lists.erl /
+NONSRCS make-src/Makefile 35
+NOTEQUAL y-src/cccp.c 13
+NULL cccp.y 51
+NULL y-src/cccp.y 51
+NULL_PTR cccp.y 63
+NULL_PTR y-src/cccp.y 63
+NUMSTATS objc-src/PackInsp.h 36
+NUM_MOD_NAMES c-src/emacs/src/keyboard.c 6325
+NUM_RECENT_KEYS c-src/emacs/src/keyboard.c 91
+NameHasChar pas-src/common.pas /^function NameHasChar; (* (TheName :
NameString; Th/
+NameStringLess pas-src/common.pas /^function NameStringLess;(*(var
Name1,Name2 : NameS/
+NewLayer lua-src/allegro.lua /^function NewLayer (name, x, y, w, h)$/
+NewLayerSet lua-src/allegro.lua /^function NewLayerSet (name)$/
+NewNameString pas-src/common.pas /^procedure NewNameString; (* (var NSP:
NameStringPo/
+NmStrToErrStr pas-src/common.pas /^function NmStrToErrStr;(*($/
+NmStrToInteger pas-src/common.pas /^function NmStrToInteger; (* (Str :
NameString) : i/
+NoExit cp-src/abstract.H 421
+NoExit::NoExit cp-src/abstract.C /^NoExit::NoExit()$/
+NoExit::SetDimensions cp-src/abstract.C /^void
NoExit::SetDimensions(void)$/
+NoExit::SetFather cp-src/abstract.C /^void
NoExit::SetFather(Tree_Node *f)$/
+NoExit::SetPosition cp-src/abstract.C /^void
NoExit::SetPosition(Coord xx, Coord yy)$/
+NoExperiment cp-src/abstract.H 545
+NoExperiment::NoExperiment cp-src/abstract.C
/^NoExperiment::NoExperiment()$/
+NoExperiment::SetDimensions cp-src/abstract.C /^void
NoExperiment::SetDimensions(void)$/
+NoExperiment::SetFather cp-src/abstract.C /^void
NoExperiment::SetFather(Tree_Node *f)$/
+NoExperiment::SetPosition cp-src/abstract.C /^void
NoExperiment::SetPosition(Coord xx, Coord yy)/
+NoGuard cp-src/abstract.H 511
+NoGuard::NoGuard cp-src/abstract.C /^NoGuard::NoGuard()$/
+NoGuard::SetDimensions cp-src/abstract.C /^void
NoGuard::SetDimensions(void)$/
+NoGuard::SetFather cp-src/abstract.C /^void
NoGuard::SetFather(Tree_Node *f)$/
+NoGuard::SetPosition cp-src/abstract.C /^void
NoGuard::SetPosition(Coord xx, Coord yy)$/
+NullSecurityManager java-src/SMan.java 817
+NullSecurityManager.checkAccept java-src/SMan.java /^ public
void checkAccept(String host, int port)/
+NullSecurityManager.checkAccess java-src/SMan.java /^ public
void checkAccess(Thread g) { }$/
+NullSecurityManager.checkAccess java-src/SMan.java /^ public
void checkAccess(ThreadGroup g) { }$/
+NullSecurityManager.checkAwtEventQueueAccess java-src/SMan.java /^
public void checkAwtEventQueueAccess() { }$/
+NullSecurityManager.checkConnect java-src/SMan.java /^ public
void checkConnect(String host, int port/
+NullSecurityManager.checkConnect java-src/SMan.java /^ public
void checkConnect(String host, int port/
+NullSecurityManager.checkCreateClassLoader java-src/SMan.java /^
public void checkCreateClassLoader() { } $/
+NullSecurityManager.checkDelete java-src/SMan.java /^ public
void checkDelete(String file) { }$/
+NullSecurityManager.checkExec java-src/SMan.java /^ public void
checkExec(String cmd) { }$/
+NullSecurityManager.checkExit java-src/SMan.java /^ public void
checkExit(int status) { }$/
+NullSecurityManager.checkLink java-src/SMan.java /^ public void
checkLink(String lib) { }$/
+NullSecurityManager.checkListen java-src/SMan.java /^ public
void checkListen(int port) { }$/
+NullSecurityManager.checkMemberAccess java-src/SMan.java /^ public
void checkMemberAccess(Class clazz, int/
+NullSecurityManager.checkMulticast java-src/SMan.java /^ public
void checkMulticast(InetAddress maddr) /
+NullSecurityManager.checkMulticast java-src/SMan.java /^ public
void checkMulticast(InetAddress maddr, /
+NullSecurityManager.checkPackageAccess java-src/SMan.java /^ public
void checkPackageAccess(String pkg) { }/
+NullSecurityManager.checkPackageDefinition java-src/SMan.java /^
public void checkPackageDefinition(String pkg)/
+NullSecurityManager.checkPrintJobAccess java-src/SMan.java /^
public void checkPrintJobAccess() { }$/
+NullSecurityManager.checkPropertiesAccess java-src/SMan.java /^
public void checkPropertiesAccess() { }$/
+NullSecurityManager.checkPropertyAccess java-src/SMan.java /^
public void checkPropertyAccess(String key) { /
+NullSecurityManager.checkPropertyAccess java-src/SMan.java /^
public void checkPropertyAccess(String key, St/
+NullSecurityManager.checkRead java-src/SMan.java /^ public void
checkRead(FileDescriptor fd) { }$/
+NullSecurityManager.checkRead java-src/SMan.java /^ public void
checkRead(String file) { }$/
+NullSecurityManager.checkRead java-src/SMan.java /^ public void
checkRead(String file, Object cont/
+NullSecurityManager.checkSecurityAccess java-src/SMan.java /^
public void checkSecurityAccess(String provide/
+NullSecurityManager.checkSetFactory java-src/SMan.java /^ public
void checkSetFactory() { }$/
+NullSecurityManager.checkSystemClipboardAccess java-src/SMan.java /^
public void checkSystemClipboardAccess() { }$/
+NullSecurityManager.checkTopLevelWindow java-src/SMan.java /^
public boolean checkTopLevelWindow(Object wind/
+NullSecurityManager.checkWrite java-src/SMan.java /^ public void
checkWrite(FileDescriptor fd) { }$/
+NullSecurityManager.checkWrite java-src/SMan.java /^ public void
checkWrite(String file) { }$/
+OBJCPPSRC Makefile /^OBJCPPSRC=$(addprefix
.\/objcpp-src\/,SimpleCalc.H S/
+OBJCSRC Makefile /^OBJCSRC=$(addprefix
.\/objc-src\/,Subprocess.h Subpr/
+OPENBUTTON objc-src/PackInsp.m 47
+OPTIONS Makefile /^OPTIONS=--members --declarations
address@hidden/
+OR y-src/cccp.c 10
+OVERLAYP c-src/emacs/src/lisp.h /^OVERLAYP (Lisp_Object x)$/
+Objc_help c-src/etags.c 613
+Objc_suffixes c-src/etags.c 609
+OperatorFun c-src/h.h 88
+Overview tex-src/gzip.texi /address@hidden Overview, Sample,
Copying, Top$/
+PASSRC Makefile /^PASSRC=$(addprefix .\/pas-src\/,common.pas)$/
+PCTEST_H cp-src/Pctest.h 24
+PDT c-src/h.h /^ Date 04 May 87 235311 PDT (Mon)$/
+PERLSRC Makefile /^PERLSRC=$(addprefix
.\/perl-src\/,htlmify-cystic yag/
+PERM cp-src/cfront.H /^#define PERM(p) p->permanent=1$/
+PHPSRC Makefile /^PHPSRC=$(addprefix .\/php-src\/,lce_functions.php pt/
+PHP_functions c-src/etags.c /^PHP_functions (FILE *inf)$/
+PHP_help c-src/etags.c 639
+PHP_suffixes c-src/etags.c 637
+POEntry php-src/lce_functions.php 105
+POEntry php-src/lce_functions.php /^ function POEntry()$/
+POEntryAD php-src/lce_functions.php 29
+PORManager php-src/lce_functions.php 498
+PORManager php-src/lce_functions.php /^ function PORManager()$/
+POReader php-src/lce_functions.php 163
+POReader php-src/lce_functions.php /^ function
POReader($domain, $filename)$/
+PRINT_UNDOCUMENTED_OPTIONS_HELP c-src/etags.c 804
+PROCESSP c-src/emacs/src/lisp.h /^PROCESSP (Lisp_Object a)$/
+PROLSRC Makefile /^PROLSRC=$(addprefix
.\/prol-src\/,ordsets.prolog nat/
+PROP c-src/emacs/src/keyboard.c /^#define PROP(IDX) AREF
(tool_bar_item_properties, /
+PROP c-src/emacs/src/keyboard.c 8379
+PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define
PROTECT_MALLOC_STATE(PROT) protect_malloc_/
+PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define
PROTECT_MALLOC_STATE(PROT) \/* empty *\/$/
+PRTPKG f-src/entry.for /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/
+PRTPKG f-src/entry.strange_suffix /^ LOGICAL FUNCTION PRTPKG (
SHORT, LONG, EXPL,/
+PSEUDO c-src/sysdep.h /^#define PSEUDO(name, syscall_name, args)
/
+PSEUDOVECSIZE c-src/emacs/src/lisp.h /^#define PSEUDOVECSIZE(type,
nonlispfield) \\$/
+PSEUDOVECTORP c-src/emacs/src/lisp.h /^PSEUDOVECTORP (Lisp_Object a, int
code)$/
+PSEUDOVECTOR_AREA_BITS c-src/emacs/src/lisp.h 818
+PSEUDOVECTOR_FLAG c-src/emacs/src/lisp.h 774
+PSEUDOVECTOR_REST_BITS c-src/emacs/src/lisp.h 813
+PSEUDOVECTOR_REST_MASK c-src/emacs/src/lisp.h 814
+PSEUDOVECTOR_SIZE_BITS c-src/emacs/src/lisp.h 808
+PSEUDOVECTOR_SIZE_MASK c-src/emacs/src/lisp.h 809
+PSEUDOVECTOR_TYPEP c-src/emacs/src/lisp.h /^PSEUDOVECTOR_TYPEP (struct
vectorlike_header *a, i/
+PSSRC Makefile /^PSSRC=$(addprefix .\/ps-src\/,rfc1245.ps)$/
+PS_functions c-src/etags.c /^PS_functions (FILE *inf)$/
+PS_help c-src/etags.c 649
+PS_suffixes c-src/etags.c 647
+PTY_LENGTH objc-src/Subprocess.m 21
+PTY_TEMPLATE objc-src/Subprocess.m 20
+PUSH_C_STR c-src/emacs/src/keyboard.c /^#define PUSH_C_STR(str,
listvar) \\$/
+PUSH_HANDLER c-src/emacs/src/lisp.h /^#define PUSH_HANDLER(c, tag_ch_val,
handlertype) \\/
+PVEC_BOOL_VECTOR c-src/emacs/src/lisp.h 787
+PVEC_BUFFER c-src/emacs/src/lisp.h 788
+PVEC_CHAR_TABLE c-src/emacs/src/lisp.h 796
+PVEC_COMPILED c-src/emacs/src/lisp.h 795
+PVEC_FONT c-src/emacs/src/lisp.h 798
+PVEC_FRAME c-src/emacs/src/lisp.h 785
+PVEC_FREE c-src/emacs/src/lisp.h 783
+PVEC_HASH_TABLE c-src/emacs/src/lisp.h 789
+PVEC_NORMAL_VECTOR c-src/emacs/src/lisp.h 782
+PVEC_OTHER c-src/emacs/src/lisp.h 793
+PVEC_PROCESS c-src/emacs/src/lisp.h 784
+PVEC_SUBR c-src/emacs/src/lisp.h 792
+PVEC_SUB_CHAR_TABLE c-src/emacs/src/lisp.h 797
+PVEC_TERMINAL c-src/emacs/src/lisp.h 790
+PVEC_TYPE_MASK c-src/emacs/src/lisp.h 819
+PVEC_WINDOW c-src/emacs/src/lisp.h 786
+PVEC_WINDOW_CONFIGURATION c-src/emacs/src/lisp.h 791
+PYTSRC Makefile /^PYTSRC=$(addprefix .\/pyt-src\/,server.py)$/
+PackageInspector objc-src/PackInsp.h /address@hidden
PackageInspector:WMInspector$/
+Par cp-src/abstract.H 933
+Par::Par cp-src/abstract.C /^Par::Par(Gate_Decl_List *g_d_l,
Tree_Node *op, Tre/
+Par::SetCollapsed cp-src/abstract.C /^void Par::SetCollapsed(char
t)$/
+Par::SetDimensions cp-src/abstract.C /^void
Par::SetDimensions(void)$/
+Par::SetFather cp-src/abstract.C /^void Par::SetFather(Tree_Node *f)$/
+Par::SetPosition cp-src/abstract.C /^void Par::SetPosition(Coord
xx, Coord yy)$/
+Par::SetTextual cp-src/abstract.C /^void Par::SetTextual(char t,
char s)$/
+Par::bex cp-src/abstract.H 936
+Par::border cp-src/abstract.H 938
+Par::gate_decl_list cp-src/abstract.H 935
+Par::oper cp-src/abstract.H 936
+Par::xl cp-src/abstract.H 937
+Par::yl cp-src/abstract.H 937
+Parallel cp-src/abstract.H 888
+Parallel::GetOperType cp-src/abstract.H /^ char GetOperType(void) {
return(oper->GetType());/
+Parallel::Get_Textual_H cp-src/abstract.C /^int
Parallel::Get_Textual_H()$/
+Parallel::Get_Textual_W cp-src/abstract.C /^int
Parallel::Get_Textual_W()$/
+Parallel::Parallel cp-src/abstract.C /^Parallel::Parallel(Tree_Node
*b1, Tree_Node *op, T/
+Parallel::SetCollapsed cp-src/abstract.C /^void
Parallel::SetCollapsed(char t)$/
+Parallel::SetDimensions cp-src/abstract.C /^void
Parallel::SetDimensions(void)$/
+Parallel::SetFather cp-src/abstract.C /^void
Parallel::SetFather(Tree_Node *f)$/
+Parallel::SetPosition cp-src/abstract.C /^void
Parallel::SetPosition(Coord xx, Coord yy)$/
+Parallel::SetTerminalPos cp-src/abstract.C /^void
Parallel::SetTerminalPos()$/
+Parallel::SetTextual cp-src/abstract.C /^void
Parallel::SetTextual(char t, char s)$/
+Parallel::bex1 cp-src/abstract.H 890
+Parallel::bex2 cp-src/abstract.H 890
+Parallel::border cp-src/abstract.H 894
+Parallel::delta cp-src/abstract.H 893
+Parallel::havebox cp-src/abstract.H 892
+Parallel::oper cp-src/abstract.H 890
+Parallel::xl cp-src/abstract.H 891
+Parallel::yl cp-src/abstract.H 891
+Parallel::yl1 cp-src/abstract.H 891
+Pascal_functions c-src/etags.c /^Pascal_functions (FILE *inf)$/
+Pascal_help c-src/etags.c 621
+Pascal_suffixes c-src/etags.c 619
+Pctest cp-src/Pctest.h 56
+Pctest::GetAction cp-src/Pctest.h /^ virtual PctestActionType
GetAction(TestRecord /
+Pctest::GetTargetName cp-src/Pctest.h /^ virtual char *GetTargetName() {
return targetN/
+Pctest::Pctest cp-src/Pctest.h /^ Pctest() {$/
+Pctest::initialized cp-src/Pctest.h 93
+Pctest::syscallTime cp-src/Pctest.h 95
+Pctest::targetName cp-src/Pctest.h 94
+Pctest::~Pctest cp-src/Pctest.h /^ virtual ~Pctest() { };$/
+PctestActionType cp-src/Pctest.h 54
+Perl_functions c-src/etags.c /^Perl_functions (FILE *inf)$/
+Perl_help c-src/etags.c 630
+Perl_interpreters c-src/etags.c 628
+Perl_suffixes c-src/etags.c 626
+Pkg1/b ada-src/etags-test-for.ada /^package body Pkg1 is$/
+Pkg1/b ada-src/waroquiers.ada /^package body Pkg1 is$/
+Pkg1/s ada-src/etags-test-for.ada /^package Pkg1 is$/
+Pkg1/s ada-src/waroquiers.ada /^package Pkg1 is$/
+Pkg1_Func1/f ada-src/etags-test-for.ada /^ function Pkg1_Func1 return
Boolean;$/
+Pkg1_Func1/f ada-src/etags-test-for.ada /^ function Pkg1_Func1 return
Boolean is separate;$/
+Pkg1_Func1/f ada-src/etags-test-for.ada /^function Pkg1_Func1 return
Boolean is$/
+Pkg1_Func1/f ada-src/waroquiers.ada /^ function Pkg1_Func1 return
Boolean;$/
+Pkg1_Func1/f ada-src/waroquiers.ada /^ function Pkg1_Func1 return Boolean
is separate;$/
+Pkg1_Func1/f ada-src/waroquiers.ada /^function Pkg1_Func1 return Boolean
is$/
+Pkg1_Func2/f ada-src/etags-test-for.ada /^ function Pkg1_Func2 (Ijk :
Integer; Z : Integer)/
+Pkg1_Func2/f ada-src/etags-test-for.ada /^ function Pkg1_Func2 (Ijk :
Integer; Z : Integer)/
+Pkg1_Func2/f ada-src/waroquiers.ada /^ function Pkg1_Func2 (Ijk : Integer;
Z : Integer)/
+Pkg1_Func2/f ada-src/waroquiers.ada /^ function Pkg1_Func2 (Ijk : Integer;
Z : Integer)/
+Pkg1_Pkg1/b ada-src/etags-test-for.ada /^ package body Pkg1_Pkg1 is
separate;$/
+Pkg1_Pkg1/b ada-src/etags-test-for.ada /^package body Pkg1_Pkg1 is$/
+Pkg1_Pkg1/b ada-src/waroquiers.ada /^ package body Pkg1_Pkg1 is
separate;$/
+Pkg1_Pkg1/b ada-src/waroquiers.ada /^package body Pkg1_Pkg1 is$/
+Pkg1_Pkg1/s ada-src/etags-test-for.ada /^ package Pkg1_Pkg1 is$/
+Pkg1_Pkg1/s ada-src/waroquiers.ada /^ package Pkg1_Pkg1 is$/
+Pkg1_Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure
Pkg1_Pkg1_Proc1;$/
+Pkg1_Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure
Pkg1_Pkg1_Proc1 is$/
+Pkg1_Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure
Pkg1_Pkg1_Proc1;$/
+Pkg1_Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Pkg1_Proc1
is$/
+Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc1;$/
+Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc1 is$/
+Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc1;$/
+Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc1 is$/
+Pkg1_Proc2/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc2 (I :
Integer);$/
+Pkg1_Proc2/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc2 (I :
Integer) is$/
+Pkg1_Proc2/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc2 (I :
Integer);$/
+Pkg1_Proc2/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc2 (I : Integer)
is$/
+PostControls pyt-src/server.py /^ def PostControls(self):$/
+Pre_Call_State/t ada-src/2ataspri.ads /^ type Pre_Call_State is new
System.Address;$/
+Private_T/b ada-src/etags-test-for.ada /^ task body Private_T is$/
+Private_T/b ada-src/waroquiers.ada /^ task body Private_T is$/
+Private_T/k ada-src/etags-test-for.ada /^ task Private_T;$/
+Private_T/k ada-src/waroquiers.ada /^ task Private_T;$/
+Private_T/p ada-src/etags-test-for.ada /^ procedure Private_T;$/
+Private_T/p ada-src/etags-test-for.ada /^ procedure Private_T is$/
+Private_T/p ada-src/waroquiers.ada /^ procedure Private_T;$/
+Private_T/p ada-src/waroquiers.ada /^ procedure Private_T is$/
+Private_T/t ada-src/etags-test-for.ada /^ type Private_T is private;$/
+Private_T/t ada-src/etags-test-for.ada /^ type Private_T is$/
+Private_T/t ada-src/waroquiers.ada /^ type Private_T is private;$/
+Private_T/t ada-src/waroquiers.ada /^ type Private_T is$/
+Problems tex-src/gzip.texi /address@hidden Problems, Concept
Index, Tapes, Top$/
+Proc/t ada-src/2ataspri.ads /^ type Proc is access procedure (Addr :
System.Ad/
+Proc_Inst cp-src/abstract.H 867
+Proc_Inst::Proc_Inst cp-src/abstract.C /^Proc_Inst::Proc_Inst(ID_Place
*id, ID_List *g_i_l,/
+Proc_Inst::SetCollapsed cp-src/abstract.C /^void
Proc_Inst::SetCollapsed(char t)$/
+Proc_Inst::SetDimensions cp-src/abstract.C /^void
Proc_Inst::SetDimensions(void)$/
+Proc_Inst::SetFather cp-src/abstract.C /^void
Proc_Inst::SetFather(Tree_Node *f)$/
+Proc_Inst::SetPosition cp-src/abstract.C /^void
Proc_Inst::SetPosition(Coord xx, Coord yy)$/
+Proc_Inst::SetTextual cp-src/abstract.C /^void
Proc_Inst::SetTextual(char t, char s)$/
+Proc_Inst::Xclose cp-src/abstract.H 872
+Proc_Inst::Xopen cp-src/abstract.H 872
+Proc_Inst::border cp-src/abstract.H 874
+Proc_Inst::gate_list cp-src/abstract.H 869
+Proc_Inst::hp cp-src/abstract.H 873
+Proc_Inst::ident cp-src/abstract.H 870
+Proc_Inst::value_expr_list cp-src/abstract.H 871
+Proc_Inst::yl1 cp-src/abstract.H 872
+Proc_Inst::yp cp-src/abstract.H 872
+Proc_List cp-src/abstract.H 367
+Proc_List::GetPath cp-src/abstract.C /^char *Proc_List::GetPath()$/
+Proc_List::Proc_List cp-src/abstract.C /^Proc_List::Proc_List(Process
*el, Proc_List *nxt)$/
+Proc_List::SetDimensions cp-src/abstract.C /^void
Proc_List::SetDimensions(void)$/
+Proc_List::SetFather cp-src/abstract.C /^void
Proc_List::SetFather(Tree_Node *f)$/
+Proc_List::SetPath cp-src/abstract.C /^void Proc_List::SetPath(char
*p, char n, int& np, /
+Proc_List::SetPosition cp-src/abstract.C /^void
Proc_List::SetPosition(Coord xx, Coord yy)$/
+Proc_List::elem cp-src/abstract.H 369
+Proc_List::next cp-src/abstract.H 370
+Process cp-src/abstract.H 337
+Process::GetMaxX cp-src/abstract.C /^Coord Process::GetMaxX()$/
+Process::GetMaxY cp-src/abstract.C /^Coord Process::GetMaxY()$/
+Process::GetNesting cp-src/abstract.H /^ char GetNesting()
{return(nesting);};$/
+Process::MaxX cp-src/abstract.H 347
+Process::MaxY cp-src/abstract.H 347
+Process::Process cp-src/abstract.C /^Process::Process(Comment_List
*c_l, ID_Place *id, /
+Process::SetDimensions cp-src/abstract.C /^void
Process::SetDimensions(void)$/
+Process::SetFather cp-src/abstract.C /^void
Process::SetFather(Tree_Node *f)$/
+Process::SetPath cp-src/abstract.C /^void Process::SetPath(char
*p, char n, int& np, in/
+Process::SetPosition cp-src/abstract.C /^void
Process::SetPosition(Coord xx, Coord yy)$/
+Process::com_list cp-src/abstract.H 339
+Process::def cp-src/abstract.H 343
+Process::func cp-src/abstract.H 344
+Process::gate_list cp-src/abstract.H 341
+Process::id_decl_list cp-src/abstract.H 342
+Process::ident cp-src/abstract.H 340
+Process::nesting cp-src/abstract.H 345
+Process::yl1 cp-src/abstract.H 346
+Process::yl2 cp-src/abstract.H 346
+Process::yl3 cp-src/abstract.H 346
+Process::ypath cp-src/abstract.H 346
+Prolog_functions c-src/etags.c /^Prolog_functions (FILE *inf)$/
+Prolog_help c-src/etags.c 654
+Prolog_suffixes c-src/etags.c 652
+Public_T/t ada-src/etags-test-for.ada /^ type Public_T is$/
+Public_T/t ada-src/waroquiers.ada /^ type Public_T is$/
+Python_functions c-src/etags.c /^Python_functions (FILE *inf)$/
+Python_help c-src/etags.c 660
+Python_suffixes c-src/etags.c 658
+QUIT c-src/emacs/src/lisp.h 3101
+QUITP c-src/emacs/src/lisp.h 3112
+Qpre_abbrev_expand_hook c-src/abbrev.c 82
+Query cp-src/abstract.H 593
+Query::Query cp-src/abstract.C /^Query::Query(Id_Decl *i_d)$/
+Query::SetCollapsed cp-src/abstract.C /^void Query::SetCollapsed(char
t)$/
+Query::SetDimensions cp-src/abstract.C /^void
Query::SetDimensions(void)$/
+Query::SetFather cp-src/abstract.C /^void
Query::SetFather(Tree_Node *f)$/
+Query::SetPosition cp-src/abstract.C /^void Query::SetPosition(Coord
xx, Coord yy)$/
+Query::id_decl cp-src/abstract.H 595
+RANGED_INTEGERP c-src/emacs/src/lisp.h /^RANGED_INTEGERP (intmax_t lo,
Lisp_Object x, intma/
+RCSid objc-src/PackInsp.m 30
+READABLE_EVENTS_DO_TIMERS_NOW c-src/emacs/src/keyboard.c 346
+READABLE_EVENTS_FILTER_EVENTS c-src/emacs/src/keyboard.c 347
+READABLE_EVENTS_IGNORE_SQUEEZABLES c-src/emacs/src/keyboard.c 348
+RECC_ALNUM c-src/emacs/src/regex.h 610
+RECC_ALPHA c-src/emacs/src/regex.h 610
+RECC_ASCII c-src/emacs/src/regex.h 617
+RECC_BLANK c-src/emacs/src/regex.h 615
+RECC_CNTRL c-src/emacs/src/regex.h 613
+RECC_DIGIT c-src/emacs/src/regex.h 614
+RECC_ERROR c-src/emacs/src/regex.h 609
+RECC_GRAPH c-src/emacs/src/regex.h 611
+RECC_LOWER c-src/emacs/src/regex.h 612
+RECC_MULTIBYTE c-src/emacs/src/regex.h 616
+RECC_NONASCII c-src/emacs/src/regex.h 616
+RECC_PRINT c-src/emacs/src/regex.h 611
+RECC_PUNCT c-src/emacs/src/regex.h 613
+RECC_SPACE c-src/emacs/src/regex.h 615
+RECC_UNIBYTE c-src/emacs/src/regex.h 617
+RECC_UPPER c-src/emacs/src/regex.h 612
+RECC_WORD c-src/emacs/src/regex.h 610
+RECC_XDIGIT c-src/emacs/src/regex.h 614
+REGEX Makefile /^REGEX=\/[ \\t]*DEFVAR_[A-Z_ \\t\\n(]+"\\([^"]+\\)"\/$/
+REGS_FIXED c-src/emacs/src/regex.h 378
+REGS_REALLOCATE c-src/emacs/src/regex.h 377
+REGS_UNALLOCATED c-src/emacs/src/regex.h 376
+REG_BADBR c-src/emacs/src/regex.h 313
+REG_BADPAT c-src/emacs/src/regex.h 305
+REG_BADRPT c-src/emacs/src/regex.h 316
+REG_EBRACE c-src/emacs/src/regex.h 312
+REG_EBRACK c-src/emacs/src/regex.h 310
+REG_ECOLLATE c-src/emacs/src/regex.h 306
+REG_ECTYPE c-src/emacs/src/regex.h 307
+REG_EEND c-src/emacs/src/regex.h 319
+REG_EESCAPE c-src/emacs/src/regex.h 308
+REG_ENOSYS c.c 279
+REG_ENOSYS c-src/emacs/src/regex.h 297
+REG_EPAREN c-src/emacs/src/regex.h 311
+REG_ERANGE c-src/emacs/src/regex.h 314
+REG_ERANGEX c-src/emacs/src/regex.h 322
+REG_ERPAREN c-src/emacs/src/regex.h 321
+REG_ESIZE c-src/emacs/src/regex.h 320
+REG_ESPACE c-src/emacs/src/regex.h 315
+REG_ESUBREG c-src/emacs/src/regex.h 309
+REG_EXTENDED c-src/emacs/src/regex.h 263
+REG_ICASE c-src/emacs/src/regex.h 267
+REG_NEWLINE c-src/emacs/src/regex.h 272
+REG_NOERROR c-src/emacs/src/regex.h 300
+REG_NOMATCH c-src/emacs/src/regex.h 301
+REG_NOSUB c-src/emacs/src/regex.h 276
+REG_NOTBOL c-src/emacs/src/regex.h 286
+REG_NOTEOL c-src/emacs/src/regex.h 289
+RESUME_POLLING c-src/emacs/src/keyboard.c 2170
+RETURN_UNGCPRO c-src/emacs/src/lisp.h /^#define RETURN_UNGCPRO(expr)
\\$/
+RE_BACKSLASH_ESCAPE_IN_LISTS c-src/emacs/src/regex.h 47
+RE_BK_PLUS_QM c-src/emacs/src/regex.h 52
+RE_CHAR_CLASSES c-src/emacs/src/regex.h 58
+RE_CONTEXT_INDEP_ANCHORS c-src/emacs/src/regex.h 72
+RE_CONTEXT_INDEP_OPS c-src/emacs/src/regex.h 80
+RE_CONTEXT_INVALID_OPS c-src/emacs/src/regex.h 84
+RE_DEBUG c-src/emacs/src/regex.h 161
+RE_DOT_NEWLINE c-src/emacs/src/regex.h 88
+RE_DOT_NOT_NULL c-src/emacs/src/regex.h 92
+RE_DUP_MAX c-src/emacs/src/regex.h 253
+RE_DUP_MAX c-src/emacs/src/regex.h 256
+RE_FRUGAL c-src/emacs/src/regex.h 147
+RE_HAT_LISTS_NOT_NEWLINE c-src/emacs/src/regex.h 96
+RE_INTERVALS c-src/emacs/src/regex.h 101
+RE_LIMITED_OPS c-src/emacs/src/regex.h 105
+RE_NEWLINE_ALT c-src/emacs/src/regex.h 109
+RE_NO_BK_BRACES c-src/emacs/src/regex.h 114
+RE_NO_BK_PARENS c-src/emacs/src/regex.h 118
+RE_NO_BK_REFS c-src/emacs/src/regex.h 122
+RE_NO_BK_VBAR c-src/emacs/src/regex.h 126
+RE_NO_EMPTY_RANGES c-src/emacs/src/regex.h 132
+RE_NO_GNU_OPS c-src/emacs/src/regex.h 144
+RE_NO_NEWLINE_ANCHOR c-src/emacs/src/regex.h 153
+RE_NO_POSIX_BACKTRACKING c-src/emacs/src/regex.h 140
+RE_NREGS c-src/emacs/src/regex.h 440
+RE_SHY_GROUPS c-src/emacs/src/regex.h 150
+RE_SYNTAX_AWK c-src/emacs/src/regex.h 186
+RE_SYNTAX_ED c-src/emacs/src/regex.h 216
+RE_SYNTAX_EGREP c-src/emacs/src/regex.h 206
+RE_SYNTAX_EMACS c-src/emacs/src/regex.h 183
+RE_SYNTAX_GNU_AWK c-src/emacs/src/regex.h 193
+RE_SYNTAX_GREP c-src/emacs/src/regex.h 201
+RE_SYNTAX_POSIX_AWK c-src/emacs/src/regex.h 197
+RE_SYNTAX_POSIX_BASIC c-src/emacs/src/regex.h 225
+RE_SYNTAX_POSIX_EGREP c-src/emacs/src/regex.h 212
+RE_SYNTAX_POSIX_EXTENDED c-src/emacs/src/regex.h 234
+RE_SYNTAX_POSIX_MINIMAL_BASIC c-src/emacs/src/regex.h 231
+RE_SYNTAX_POSIX_MINIMAL_EXTENDED c-src/emacs/src/regex.h 242
+RE_SYNTAX_SED c-src/emacs/src/regex.h 218
+RE_TRANSLATE_TYPE c-src/emacs/src/regex.h 332
+RE_UNMATCHED_RIGHT_PAREN_ORD c-src/emacs/src/regex.h 136
+RSH y-src/cccp.c 17
+RTE/s ada-src/2ataspri.adb /^ package RTE renames
Interfaces.C.POSIX_RTE;$/
+RUN Makefile /^RUN=$/
+Range cp-src/Range.h 35
+Range::Range cp-src/Range.h /^ Range (void)$/
+Range::Range cp-src/Range.h /^ Range (const Range& r)$/
+Range::Range cp-src/Range.h /^ Range (double b, double l)$/
+Range::Range cp-src/Range.h /^ Range (double b, double l, double i)$/
+Range::base cp-src/Range.h /^ double base (void) const { return rng_base;
}$/
+Range::inc cp-src/Range.h /^ double inc (void) const { return rng_inc;
}$/
+Range::limit cp-src/Range.h /^ double limit (void) const { return
rng_limit; }$/
+Range::nelem cp-src/Range.h /^ int nelem (void) const { return rng_nelem;
}$/
+Range::rng_base cp-src/Range.h 79
+Range::rng_inc cp-src/Range.h 81
+Range::rng_limit cp-src/Range.h 80
+Range::rng_nelem cp-src/Range.h 83
+Range::set_base cp-src/Range.h /^ void set_base (double b) { rng_base
= b; }$/
+Range::set_inc cp-src/Range.h /^ void set_inc (double i) { rng_inc = i; }$/
+Range::set_limit cp-src/Range.h /^ void set_limit (double l) {
rng_limit = l; }$/
+ReadVacation cp-src/functions.cpp /^void ReadVacation ( char *filename )
{$/
+Read_Lock/p ada-src/2ataspri.adb /^ procedure Read_Lock (L : in out
Lock; Ceiling_V/
+Read_Lock/p ada-src/2ataspri.ads /^ procedure Read_Lock (L : in out
Lock; Ceiling_V/
+ReleaseNameString pas-src/common.pas /^procedure ReleaseNameString;
(* (var NSP: NameStri/
+RemoveLayer lua-src/allegro.lua /^function RemoveLayer ()$/
+RemoveUnderlineControl pas-src/common.pas /^function
RemoveUnderlineControl; (*($/
+ReprOfChar pas-src/common.pas /^function ReprOfChar; (*( ch : char) :
NameString;*/
+S c.c 156
+SAFE_ALLOCA c-src/emacs/src/lisp.h /^#define SAFE_ALLOCA(size) ((size) <=
sa_avail \\/
+SAFE_ALLOCA_LISP c-src/emacs/src/lisp.h /^#define SAFE_ALLOCA_LISP(buf,
nelt) \\$/
+SAFE_ALLOCA_STRING c-src/emacs/src/lisp.h /^#define
SAFE_ALLOCA_STRING(ptr, string) \\$/
+SAFE_FREE c-src/emacs/src/lisp.h /^#define SAFE_FREE()
\\$/
+SAFE_NALLOCA c-src/emacs/src/lisp.h /^#define SAFE_NALLOCA(buf, multiplier,
nitems) \\/
+SAVE_FUNCPOINTER c-src/emacs/src/lisp.h 2049
+SAVE_INTEGER c-src/emacs/src/lisp.h 2048
+SAVE_OBJECT c-src/emacs/src/lisp.h 2051
+SAVE_POINTER c-src/emacs/src/lisp.h 2050
+SAVE_SLOT_BITS c-src/emacs/src/lisp.h 2055
+SAVE_TYPE_BITS c-src/emacs/src/lisp.h 2062
+SAVE_TYPE_FUNCPTR_PTR_OBJ c-src/emacs/src/lisp.h 2076
+SAVE_TYPE_INT_INT c-src/emacs/src/lisp.h 2066
+SAVE_TYPE_INT_INT_INT c-src/emacs/src/lisp.h 2067
+SAVE_TYPE_MEMORY c-src/emacs/src/lisp.h 2080
+SAVE_TYPE_OBJ_OBJ c-src/emacs/src/lisp.h 2069
+SAVE_TYPE_OBJ_OBJ_OBJ c-src/emacs/src/lisp.h 2070
+SAVE_TYPE_OBJ_OBJ_OBJ_OBJ c-src/emacs/src/lisp.h 2071
+SAVE_TYPE_PTR_INT c-src/emacs/src/lisp.h 2073
+SAVE_TYPE_PTR_OBJ c-src/emacs/src/lisp.h 2074
+SAVE_TYPE_PTR_PTR c-src/emacs/src/lisp.h 2075
+SAVE_UNUSED c-src/emacs/src/lisp.h 2047
+SAVE_VALUEP c-src/emacs/src/lisp.h /^SAVE_VALUEP (Lisp_Object x)$/
+SAVE_VALUE_SLOTS c-src/emacs/src/lisp.h 2058
+SBYTES c-src/emacs/src/lisp.h /^SBYTES (Lisp_Object string)$/
+SCHARS c-src/emacs/src/lisp.h /^SCHARS (Lisp_Object string)$/
+SCREEN_FP cp-src/screen.hpp /^#define SCREEN_FP(x,y) \\$/
+SCREEN_START cp-src/screen.hpp 33
+SDATA c-src/emacs/src/lisp.h /^SDATA (Lisp_Object string)$/
+SDTrefGetInteger pas-src/common.pas /^function SDTrefGetInteger :
integer;$/
+SDTrefIsEnd pas-src/common.pas /^function SDTrefIsEnd : Boolean;$/
+SDTrefRecToString pas-src/common.pas /^procedure SDTrefRecToString
(* ($/
+SDTrefSkipSpaces pas-src/common.pas /^procedure SDTrefSkipSpaces;$/
+SDTrefStringToRec pas-src/common.pas /^procedure SDTrefStringToRec
(* ($/
+SETPRT f-src/entry.for /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/
+SETPRT f-src/entry.strange_suffix /^ ENTRY SETPRT ( SHORT, EXPL,
LONG, TRACE, D/
+SET_SYMBOL_BLV c-src/emacs/src/lisp.h /^SET_SYMBOL_BLV (struct Lisp_Symbol
*sym, struct Li/
+SET_SYMBOL_FWD c-src/emacs/src/lisp.h /^SET_SYMBOL_FWD (struct Lisp_Symbol
*sym, union Lis/
+SET_SYMBOL_VAL c-src/emacs/src/lisp.h /^# define SET_SYMBOL_VAL(sym, v)
lisp_h_SET_SYMBOL_/
+SIMPLIFIED cp-src/cfront.H 231
+SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c /^#define
SINGLE_LETTER_MOD(BIT) \\$/
+SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c 6212
+SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c /^#define
SINGLE_LETTER_MOD(BIT) \\$/
+SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c 6763
+SIZEFORMAT objc-src/PackInsp.m 57
+SPECPDL_BACKTRACE c-src/emacs/src/lisp.h 2948
+SPECPDL_LET c-src/emacs/src/lisp.h 2949
+SPECPDL_LET_DEFAULT c-src/emacs/src/lisp.h 2952
+SPECPDL_LET_LOCAL c-src/emacs/src/lisp.h 2951
+SPECPDL_UNWIND c-src/emacs/src/lisp.h 2944
+SPECPDL_UNWIND_INT c-src/emacs/src/lisp.h 2946
+SPECPDL_UNWIND_PTR c-src/emacs/src/lisp.h 2945
+SPECPDL_UNWIND_VOID c-src/emacs/src/lisp.h 2947
+SRCS Makefile /^SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} ${CPSRC} $/
+SREF c-src/emacs/src/lisp.h /^SREF (Lisp_Object string, ptrdiff_t index)$/
+SSDATA c-src/emacs/src/lisp.h /^SSDATA (Lisp_Object string)$/
+SSET c-src/emacs/src/lisp.h /^SSET (Lisp_Object string, ptrdiff_t index,
unsigne/
+STACK_CONS c-src/emacs/src/lisp.h /^#define STACK_CONS(a, b) \\$/
+STATE_ABORT php-src/lce_functions.php 25
+STATE_COMPRESSD objc-src/PackInsp.m 54
+STATE_INSTALLED objc-src/PackInsp.m 53
+STATE_LOOP php-src/lce_functions.php 27
+STATE_OK php-src/lce_functions.php 26
+STATE_UNINSTALLED objc-src/PackInsp.m 52
+STAT_EQ objc-src/PackInsp.m /^#define STAT_EQ(s1, s2)
((s1)->st_ino == (s2)->st_/
+STDIN c-src/etags.c 408
+STDIN c-src/etags.c 411
+STOP_POLLING c-src/emacs/src/keyboard.c 2166
+STRING_BYTES c-src/emacs/src/lisp.h /^STRING_BYTES (struct Lisp_String *s)$/
+STRING_BYTES_BOUND c-src/emacs/src/lisp.h 1261
+STRING_MULTIBYTE c-src/emacs/src/lisp.h /^STRING_MULTIBYTE (Lisp_Object
str)$/
+STRING_SET_CHARS c-src/emacs/src/lisp.h /^STRING_SET_CHARS (Lisp_Object
string, ptrdiff_t ne/
+STRING_SET_MULTIBYTE c-src/emacs/src/lisp.h /^#define
STRING_SET_MULTIBYTE(STR) \\$/
+STRING_SET_UNIBYTE c-src/emacs/src/lisp.h /^#define
STRING_SET_UNIBYTE(STR) \\$/
+SUBRP c-src/emacs/src/lisp.h /^SUBRP (Lisp_Object a)$/
+SUB_CHAR_TABLE_OFFSET c-src/emacs/src/lisp.h 1701
+SUB_CHAR_TABLE_P c-src/emacs/src/lisp.h /^SUB_CHAR_TABLE_P (Lisp_Object
a)$/
+SXHASH_REDUCE c-src/emacs/src/lisp.h /^SXHASH_REDUCE (EMACS_UINT x)$/
+SYMBOLP c-src/emacs/src/lisp.h /^# define SYMBOLP(x) lisp_h_SYMBOLP
(x)$/
+SYMBOL_BLV c-src/emacs/src/lisp.h /^SYMBOL_BLV (struct Lisp_Symbol *sym)$/
+SYMBOL_CONSTANT_P c-src/emacs/src/lisp.h /^# define
SYMBOL_CONSTANT_P(sym) lisp_h_SYMBOL_CONS/
+SYMBOL_FORWARDED c-src/emacs/src/lisp.h 651
+SYMBOL_FWD c-src/emacs/src/lisp.h /^SYMBOL_FWD (struct Lisp_Symbol *sym)$/
+SYMBOL_INDEX c-src/emacs/src/lisp.h /^#define SYMBOL_INDEX(sym) i##sym$/
+SYMBOL_INTERNED c-src/emacs/src/lisp.h 642
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY c-src/emacs/src/lisp.h 643
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P c-src/emacs/src/lisp.h
/^SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object /
+SYMBOL_INTERNED_P c-src/emacs/src/lisp.h /^SYMBOL_INTERNED_P
(Lisp_Object sym)$/
+SYMBOL_LOCALIZED c-src/emacs/src/lisp.h 650
+SYMBOL_NAME c-src/emacs/src/lisp.h /^SYMBOL_NAME (Lisp_Object sym)$/
+SYMBOL_PLAINVAL c-src/emacs/src/lisp.h 648
+SYMBOL_UNINTERNED c-src/emacs/src/lisp.h 641
+SYMBOL_VAL c-src/emacs/src/lisp.h /^# define SYMBOL_VAL(sym)
lisp_h_SYMBOL_VAL (sym)$/
+SYMBOL_VARALIAS c-src/emacs/src/lisp.h 649
+SYSCALL c-src/machsyscalls.c /^#define SYSCALL(name, number,
type, args, typed_ar/
+Sample tex-src/gzip.texi /address@hidden Sample, Invoking gzip,
Overview, Top$/
+Scheme_functions c-src/etags.c /^Scheme_functions (FILE *inf)$/
+Scheme_help c-src/etags.c 667
+Scheme_suffixes c-src/etags.c 665
+SecurityManager java-src/SMan.java 80
+SecurityManager.SecurityManager java-src/SMan.java /^ protected
SecurityManager() {$/
+SecurityManager.checkAccept java-src/SMan.java /^ public void
checkAccept(String host, int port)/
+SecurityManager.checkAccess java-src/SMan.java /^ public void
checkAccess(Thread g) {$/
+SecurityManager.checkAccess java-src/SMan.java /^ public void
checkAccess(ThreadGroup g) {$/
+SecurityManager.checkAwtEventQueueAccess java-src/SMan.java /^
public void checkAwtEventQueueAccess() {$/
+SecurityManager.checkConnect java-src/SMan.java /^ public void
checkConnect(String host, int port/
+SecurityManager.checkConnect java-src/SMan.java /^ public void
checkConnect(String host, int port/
+SecurityManager.checkCreateClassLoader java-src/SMan.java /^ public
void checkCreateClassLoader() {$/
+SecurityManager.checkDelete java-src/SMan.java /^ public void
checkDelete(String file) {$/
+SecurityManager.checkExec java-src/SMan.java /^ public void
checkExec(String cmd) {$/
+SecurityManager.checkExit java-src/SMan.java /^ public void
checkExit(int status) {$/
+SecurityManager.checkLink java-src/SMan.java /^ public void
checkLink(String lib) {$/
+SecurityManager.checkListen java-src/SMan.java /^ public void
checkListen(int port) {$/
+SecurityManager.checkMemberAccess java-src/SMan.java /^ public
void checkMemberAccess(Class clazz, int/
+SecurityManager.checkMulticast java-src/SMan.java /^ public void
checkMulticast(InetAddress maddr) /
+SecurityManager.checkMulticast java-src/SMan.java /^ public void
checkMulticast(InetAddress maddr, /
+SecurityManager.checkPackageAccess java-src/SMan.java /^ public
void checkPackageAccess(String pkg) {$/
+SecurityManager.checkPackageDefinition java-src/SMan.java /^ public
void checkPackageDefinition(String pkg)/
+SecurityManager.checkPrintJobAccess java-src/SMan.java /^ public
void checkPrintJobAccess() {$/
+SecurityManager.checkPropertiesAccess java-src/SMan.java /^ public
void checkPropertiesAccess() {$/
+SecurityManager.checkPropertyAccess java-src/SMan.java /^ public
void checkPropertyAccess(String key) {$/
+SecurityManager.checkRead java-src/SMan.java /^ public void
checkRead(FileDescriptor fd) {$/
+SecurityManager.checkRead java-src/SMan.java /^ public void
checkRead(String file) {$/
+SecurityManager.checkRead java-src/SMan.java /^ public void
checkRead(String file, Object cont/
+SecurityManager.checkSecurityAccess java-src/SMan.java /^ public
void checkSecurityAccess(String action)/
+SecurityManager.checkSetFactory java-src/SMan.java /^ public
void checkSetFactory() {$/
+SecurityManager.checkSystemClipboardAccess java-src/SMan.java /^
public void checkSystemClipboardAccess() {$/
+SecurityManager.checkTopLevelWindow java-src/SMan.java /^ public
boolean checkTopLevelWindow(Object wind/
+SecurityManager.checkWrite java-src/SMan.java /^ public void
checkWrite(FileDescriptor fd) {$/
+SecurityManager.checkWrite java-src/SMan.java /^ public void
checkWrite(String file) {$/
+SecurityManager.currentLoadedClass java-src/SMan.java /^ protected
Class currentLoadedClass() {$/
+SecurityManager.getInCheck java-src/SMan.java /^ public boolean
getInCheck() {$/
+SecurityManager.getSecurityContext java-src/SMan.java /^ public
Object getSecurityContext() {$/
+SecurityManager.getThreadGroup java-src/SMan.java /^ public
ThreadGroup getThreadGroup() {$/
+SecurityManager.inCheck java-src/SMan.java 87
+SecurityManager.inClass java-src/SMan.java /^ protected boolean
inClass(String name) {$/
+SecurityManager.inClassLoader java-src/SMan.java /^ protected boolean
inClassLoader() {$/
+SecurityManager.initialized java-src/SMan.java 90
+SelectLayer lua-src/allegro.lua /^function SelectLayer (layer)$/
+Self/f ada-src/2ataspri.adb /^ function Self return TCB_Ptr is$/
+Self/f ada-src/2ataspri.ads /^ function Self return TCB_Ptr;$/
+Server pyt-src/server.py /^class Server:$/
+ServerEdit pyt-src/server.py /^class ServerEdit(Frame):$/
+Set_Own_Priority/p ada-src/2ataspri.adb /^ procedure Set_Own_Priority
(Prio : System.Any_P/
+Set_Own_Priority/p ada-src/2ataspri.ads /^ procedure Set_Own_Priority
(Prio : System.Any_P/
+Set_Priority/p ada-src/2ataspri.adb /^ procedure Set_Priority$/
+Set_Priority/p ada-src/2ataspri.ads /^ procedure Set_Priority (T :
TCB_Ptr; Prio : Sys/
+SimpleCalc objcpp-src/SimpleCalc.H /address@hidden SimpleCalc:Object$/
+SkipBlanks pas-src/common.pas /^function SkipBlanks; (*($/
+SkipChars pas-src/common.pas /^function SkipChars; (*($/
+SkipSpaces pas-src/common.pas /^procedure SkipSpaces; (* (Str :
NameString; var I /
+Sort_Id_Exit cp-src/abstract.H 490
+Sort_Id_Exit::SetCollapsed cp-src/abstract.C /^void
Sort_Id_Exit::SetCollapsed(char t)$/
+Sort_Id_Exit::SetDimensions cp-src/abstract.C /^void
Sort_Id_Exit::SetDimensions(void)$/
+Sort_Id_Exit::SetFather cp-src/abstract.C /^void
Sort_Id_Exit::SetFather(Tree_Node *f)$/
+Sort_Id_Exit::SetPosition cp-src/abstract.C /^void
Sort_Id_Exit::SetPosition(Coord xx, Coord yy)/
+Sort_Id_Exit::Sort_Id_Exit cp-src/abstract.C
/^Sort_Id_Exit::Sort_Id_Exit(ID_Place *s)$/
+Sort_Id_Exit::sort_id cp-src/abstract.H 492
+Specification cp-src/abstract.H 308
+Specification::GetMaxX cp-src/abstract.C /^Coord
Specification::GetMaxX()$/
+Specification::GetMaxY cp-src/abstract.C /^Coord
Specification::GetMaxY()$/
+Specification::MaxX cp-src/abstract.H 321
+Specification::MaxY cp-src/abstract.H 321
+Specification::SetDimensions cp-src/abstract.C /^void
Specification::SetDimensions(void)$/
+Specification::SetFather cp-src/abstract.C /^void
Specification::SetFather(Tree_Node *f)$/
+Specification::SetPath cp-src/abstract.C /^void
Specification::SetPath(int& np, int& nd)$/
+Specification::SetPosition cp-src/abstract.C /^void
Specification::SetPosition(Coord xx, Coord yy/
+Specification::Specification cp-src/abstract.C
/^Specification::Specification(Comment_List *c_l, ID/
+Specification::com_list cp-src/abstract.H 312
+Specification::com_list1 cp-src/abstract.H 316
+Specification::def cp-src/abstract.H 319
+Specification::dt_list cp-src/abstract.H 318
+Specification::func cp-src/abstract.H 317
+Specification::gate_list cp-src/abstract.H 314
+Specification::id_decl_list cp-src/abstract.H 315
+Specification::ident cp-src/abstract.H 313
+Specification::yl1 cp-src/abstract.H 320
+Specification::yl2 cp-src/abstract.H 320
+Specification::yl3 cp-src/abstract.H 320
+StartDay cp-src/functions.cpp /^Date StartDay(Date a,int
days){\/\/Function to calcu/
+Stop cp-src/abstract.H 793
+Stop::SetCollapsed cp-src/abstract.C /^void Stop::SetCollapsed(char
t)$/
+Stop::SetDimensions cp-src/abstract.C /^void
Stop::SetDimensions(void)$/
+Stop::SetFather cp-src/abstract.C /^void
Stop::SetFather(Tree_Node *f)$/
+Stop::SetPosition cp-src/abstract.C /^void Stop::SetPosition(Coord
xx, Coord yy)$/
+Stop::SetTextual cp-src/abstract.C /^void Stop::SetTextual(char t,
char s)$/
+Stop::Stop cp-src/abstract.C /^Stop::Stop()$/
+Stop::border cp-src/abstract.H 796
+Stop::havebox cp-src/abstract.H 795
+StripPath pas-src/common.pas /^function StripPath; (*($/
+SubString pas-src/common.pas /^function SubString; (*($/
+Subprocess objc-src/Subprocess.h 41
+Subprocess objc-src/Subprocess.h /address@hidden Subprocess:Object$/
+Subprocess(Private) objc-src/Subprocess.m /address@hidden
Subprocess(Private)$/
+Sum_Gate cp-src/abstract.H 952
+Sum_Gate::SetCollapsed cp-src/abstract.C /^void
Sum_Gate::SetCollapsed(char t)$/
+Sum_Gate::SetDimensions cp-src/abstract.C /^void
Sum_Gate::SetDimensions(void)$/
+Sum_Gate::SetFather cp-src/abstract.C /^void
Sum_Gate::SetFather(Tree_Node *f)$/
+Sum_Gate::SetPosition cp-src/abstract.C /^void
Sum_Gate::SetPosition(Coord xx, Coord yy)$/
+Sum_Gate::SetTerminalPos cp-src/abstract.C /^void
Sum_Gate::SetTerminalPos()$/
+Sum_Gate::SetTextual cp-src/abstract.C /^void
Sum_Gate::SetTextual(char t, char s)$/
+Sum_Gate::Sum_Gate cp-src/abstract.C
/^Sum_Gate::Sum_Gate(Gate_Decl_List *g_d_l, Tree_Nod/
+Sum_Gate::Xch cp-src/abstract.H 956
+Sum_Gate::Xclose cp-src/abstract.H 956
+Sum_Gate::Ych cp-src/abstract.H 956
+Sum_Gate::Yclose cp-src/abstract.H 956
+Sum_Gate::bex cp-src/abstract.H 955
+Sum_Gate::border cp-src/abstract.H 957
+Sum_Gate::gate_decl_list cp-src/abstract.H 954
+Sum_Gate::xl cp-src/abstract.H 956
+Sum_Gate::yl cp-src/abstract.H 956
+Sum_Ident cp-src/abstract.H 972
+Sum_Ident::SetCollapsed cp-src/abstract.C /^void
Sum_Ident::SetCollapsed(char t)$/
+Sum_Ident::SetDimensions cp-src/abstract.C /^void
Sum_Ident::SetDimensions(void)$/
+Sum_Ident::SetFather cp-src/abstract.C /^void
Sum_Ident::SetFather(Tree_Node *f)$/
+Sum_Ident::SetPosition cp-src/abstract.C /^void
Sum_Ident::SetPosition(Coord xx, Coord yy)$/
+Sum_Ident::SetTerminalPos cp-src/abstract.C /^void
Sum_Ident::SetTerminalPos()$/
+Sum_Ident::SetTextual cp-src/abstract.C /^void
Sum_Ident::SetTextual(char t, char s)$/
+Sum_Ident::Sum_Ident cp-src/abstract.C
/^Sum_Ident::Sum_Ident(Id_Decl_List *i_d_l, Tree_Nod/
+Sum_Ident::Xch cp-src/abstract.H 976
+Sum_Ident::Xclose cp-src/abstract.H 976
+Sum_Ident::Ych cp-src/abstract.H 976
+Sum_Ident::Yclose cp-src/abstract.H 976
+Sum_Ident::bex cp-src/abstract.H 975
+Sum_Ident::border cp-src/abstract.H 977
+Sum_Ident::ident_decl_list cp-src/abstract.H 974
+Sum_Ident::xl cp-src/abstract.H 976
+Sum_Ident::yl cp-src/abstract.H 976
+Syncr cp-src/abstract.H 685
+Syncr::SetDimensions cp-src/abstract.C /^void
Syncr::SetDimensions(void)$/
+Syncr::SetFather cp-src/abstract.C /^void
Syncr::SetFather(Tree_Node *f)$/
+Syncr::SetPosition cp-src/abstract.C /^void Syncr::SetPosition(Coord
xx, Coord yy)$/
+Syncr::Syncr cp-src/abstract.C /^Syncr::Syncr()$/
+System.Task_Primitives/b ada-src/2ataspri.adb /^package body
System.Task_Primitives is$/
+System.Task_Primitives/s ada-src/2ataspri.ads /^package
System.Task_Primitives is$/
+SystemColor java-src/SysCol.java 37
+SystemColor.ACTIVE_CAPTION java-src/SysCol.java 47
+SystemColor.ACTIVE_CAPTION_BORDER java-src/SysCol.java 57
+SystemColor.ACTIVE_CAPTION_TEXT java-src/SysCol.java 52
+SystemColor.CONTROL java-src/SysCol.java 127
+SystemColor.CONTROL_DK_SHADOW java-src/SysCol.java 152
+SystemColor.CONTROL_HIGHLIGHT java-src/SysCol.java 137
+SystemColor.CONTROL_LT_HIGHLIGHT java-src/SysCol.java 142
+SystemColor.CONTROL_SHADOW java-src/SysCol.java 147
+SystemColor.CONTROL_TEXT java-src/SysCol.java 132
+SystemColor.DESKTOP java-src/SysCol.java 42
+SystemColor.INACTIVE_CAPTION java-src/SysCol.java 62
+SystemColor.INACTIVE_CAPTION_BORDER java-src/SysCol.java 72
+SystemColor.INACTIVE_CAPTION_TEXT java-src/SysCol.java 67
+SystemColor.INFO java-src/SysCol.java 162
+SystemColor.INFO_TEXT java-src/SysCol.java 167
+SystemColor.MENU java-src/SysCol.java 92
+SystemColor.MENU_TEXT java-src/SysCol.java 97
+SystemColor.NUM_COLORS java-src/SysCol.java 172
+SystemColor.SCROLLBAR java-src/SysCol.java 157
+SystemColor.SystemColor java-src/SysCol.java /^ private
SystemColor(byte index) {$/
+SystemColor.TEXT java-src/SysCol.java 102
+SystemColor.TEXT_HIGHLIGHT java-src/SysCol.java 112
+SystemColor.TEXT_HIGHLIGHT_TEXT java-src/SysCol.java 117
+SystemColor.TEXT_INACTIVE_TEXT java-src/SysCol.java 122
+SystemColor.TEXT_TEXT java-src/SysCol.java 107
+SystemColor.WINDOW java-src/SysCol.java 77
+SystemColor.WINDOW_BORDER java-src/SysCol.java 82
+SystemColor.WINDOW_TEXT java-src/SysCol.java 87
+SystemColor.activeCaption java-src/SysCol.java 182
+SystemColor.activeCaptionBorder java-src/SysCol.java 192
+SystemColor.activeCaptionText java-src/SysCol.java 187
+SystemColor.control java-src/SysCol.java 262
+SystemColor.controlDkShadow java-src/SysCol.java 287
+SystemColor.controlHighlight java-src/SysCol.java 272
+SystemColor.controlLtHighlight java-src/SysCol.java 277
+SystemColor.controlShadow java-src/SysCol.java 282
+SystemColor.controlText java-src/SysCol.java 267
+SystemColor.desktop java-src/SysCol.java 177
+SystemColor.getRGB java-src/SysCol.java /^ public int getRGB() {$/
+SystemColor.inactiveCaption java-src/SysCol.java 197
+SystemColor.inactiveCaptionBorder java-src/SysCol.java 207
+SystemColor.inactiveCaptionText java-src/SysCol.java 202
+SystemColor.info java-src/SysCol.java 297
+SystemColor.infoText java-src/SysCol.java 302
+SystemColor.menu java-src/SysCol.java 227
+SystemColor.menuText java-src/SysCol.java 232
+SystemColor.scrollbar java-src/SysCol.java 292
+SystemColor.serialVersionUID java-src/SysCol.java 340
+SystemColor.systemColors java-src/SysCol.java 308
+SystemColor.text java-src/SysCol.java 237
+SystemColor.textHighlight java-src/SysCol.java 247
+SystemColor.textHighlightText java-src/SysCol.java 252
+SystemColor.textInactiveText java-src/SysCol.java 257
+SystemColor.textText java-src/SysCol.java 242
+SystemColor.toString java-src/SysCol.java /^ public String toString()
{$/
+SystemColor.updateSystemColors java-src/SysCol.java /^ private static
void updateSystemColors() {$/
+SystemColor.window java-src/SysCol.java 212
+SystemColor.windowBorder java-src/SysCol.java 217
+SystemColor.windowText java-src/SysCol.java 222
+T3 c.c 163
+TAG_PTR c-src/emacs/src/lisp.h /^#define TAG_PTR(tag, ptr) \\$/
+TAG_SYMOFFSET c-src/emacs/src/lisp.h /^#define TAG_SYMOFFSET(offset)
\\$/
+TAS_Cell/t ada-src/2ataspri.ads /^ type TAS_Cell is private;$/
+TAS_Cell/t ada-src/2ataspri.ads /^ type TAS_Cell is$/
+TCB_Ptr/t ada-src/2ataspri.ads /^ type TCB_Ptr is access all
Task_Control_Block;$/
+TERMINALP c-src/emacs/src/lisp.h /^TERMINALP (Lisp_Object a)$/
+TEST php-src/ptest.php 1
+TEXSRC Makefile /^TEXSRC=$(addprefix .\/tex-src\/,testenv.tex gzip.tex/
+TEXTAGS make-src/Makefile 204
+TEXTAGS make-src/Makefile 219
+TEX_LESC c-src/etags.c 4986
+TEX_SESC c-src/etags.c 4987
+TEX_clgrp c-src/etags.c 4922
+TEX_decode_env c-src/etags.c /^TEX_decode_env (const char *evarname, const
char */
+TEX_defenv c-src/etags.c 4912
+TEX_esc c-src/etags.c 4920
+TEX_mode c-src/etags.c /^TEX_mode (FILE *inf)$/
+TEX_opgrp c-src/etags.c 4921
+TEX_toktab c-src/etags.c 4908
+TOTAL_KEYWORDS c-src/etags.c 2325
+TSL/s ada-src/2ataspri.adb /^ package TSL renames
System.Tasking_Soft_Links;$/
+TYPESTOSTAT objc-src/PackInsp.h 37
+TYPE_RANGED_INTEGERP c-src/emacs/src/lisp.h /^#define
TYPE_RANGED_INTEGERP(type, x) \\$/
+Tapes tex-src/gzip.texi /address@hidden Tapes, Problems, Environment,
Top$/
+Task_Control_Block/t ada-src/2ataspri.ads /^ type Task_Control_Block is
record$/
+Task_Storage_Size/t ada-src/2ataspri.ads /^ type Task_Storage_Size is
new Interfaces.C.size/
+Task_Type/b ada-src/etags-test-for.ada /^ task body Task_Type is$/
+Task_Type/b ada-src/waroquiers.ada /^ task body Task_Type is$/
+Task_Type/k ada-src/etags-test-for.ada /^ task type Task_Type is$/
+Task_Type/k ada-src/waroquiers.ada /^ task type Task_Type is$/
+TeX_commands c-src/etags.c /^TeX_commands (FILE *inf)$/
+TeX_help c-src/etags.c 674
+TeX_suffixes c-src/etags.c 672
+Term cp-src/abstract.H 456
+Term::SetCollapsed cp-src/abstract.C /^void Term::SetCollapsed(char
t)$/
+Term::SetDimensions cp-src/abstract.C /^void
Term::SetDimensions(void)$/
+Term::SetFather cp-src/abstract.C /^void
Term::SetFather(Tree_Node *f)$/
+Term::SetPosition cp-src/abstract.C /^void Term::SetPosition(Coord
xx, Coord yy)$/
+Term::Term cp-src/abstract.C /^Term::Term(ID_Place *op,
Value_Expr_List *el, ID_P/
+Term::expr_list cp-src/abstract.H 459
+Term::op_ident cp-src/abstract.H 458
+Term::sort_id cp-src/abstract.H 460
+Test_Abort/p ada-src/2ataspri.adb /^ procedure Test_Abort is$/
+Test_Abort/p ada-src/2ataspri.ads /^ procedure Test_Abort;$/
+Test_And_Set/p ada-src/2ataspri.adb /^ procedure Test_And_Set (Cell : in
out TAS_Cell;/
+Test_And_Set/p ada-src/2ataspri.ads /^ procedure Test_And_Set (Cell : in
out TAS_Cell;/
+Texinfo_help c-src/etags.c 688
+Texinfo_nodes c-src/etags.c /^Texinfo_nodes (FILE *inf)$/
+Texinfo_suffixes c-src/etags.c 686
+ThreadGroup java-src/TG.java 54
+ThreadGroup.ThreadGroup java-src/TG.java /^ private
ThreadGroup() { \/\/ called from C code$/
+ThreadGroup.ThreadGroup java-src/TG.java /^ public
ThreadGroup(String name) {$/
+ThreadGroup.ThreadGroup java-src/TG.java /^ public
ThreadGroup(ThreadGroup parent, String /
+ThreadGroup.activeCount java-src/TG.java /^ public int
activeCount() {$/
+ThreadGroup.activeGroupCount java-src/TG.java /^ public int
activeGroupCount() {$/
+ThreadGroup.add java-src/TG.java /^ private final void
add(ThreadGroup g){$/
+ThreadGroup.add java-src/TG.java /^ void add(Thread t) {$/
+ThreadGroup.allowThreadSuspension java-src/TG.java /^ public
boolean allowThreadSuspension(boolean b/
+ThreadGroup.checkAccess java-src/TG.java /^ public final void
checkAccess() {$/
+ThreadGroup.daemon java-src/TG.java 59
+ThreadGroup.destroy java-src/TG.java /^ public final void
destroy() {$/
+ThreadGroup.destroyed java-src/TG.java 58
+ThreadGroup.enumerate java-src/TG.java /^ public int
enumerate(Thread list[]) {$/
+ThreadGroup.enumerate java-src/TG.java /^ public int
enumerate(Thread list[], boolean re/
+ThreadGroup.enumerate java-src/TG.java /^ private int
enumerate(Thread list[], int n, bo/
+ThreadGroup.enumerate java-src/TG.java /^ public int
enumerate(ThreadGroup list[]) {$/
+ThreadGroup.enumerate java-src/TG.java /^ public int
enumerate(ThreadGroup list[], boole/
+ThreadGroup.enumerate java-src/TG.java /^ private int
enumerate(ThreadGroup list[], int /
+ThreadGroup.getMaxPriority java-src/TG.java /^ public final int
getMaxPriority() {$/
+ThreadGroup.getName java-src/TG.java /^ public final String
getName() {$/
+ThreadGroup.getParent java-src/TG.java /^ public final ThreadGroup
getParent() {$/
+ThreadGroup.groups java-src/TG.java 66
+ThreadGroup.isDaemon java-src/TG.java /^ public final boolean
isDaemon() {$/
+ThreadGroup.isDestroyed java-src/TG.java /^ public
synchronized boolean isDestroyed() {$/
+ThreadGroup.list java-src/TG.java /^ public void list() {$/
+ThreadGroup.list java-src/TG.java /^ void list(PrintStream
out, int indent) {$/
+ThreadGroup.maxPriority java-src/TG.java 57
+ThreadGroup.name java-src/TG.java 56
+ThreadGroup.ngroups java-src/TG.java 65
+ThreadGroup.nthreads java-src/TG.java 62
+ThreadGroup.parent java-src/TG.java 55
+ThreadGroup.parentOf java-src/TG.java /^ public final boolean
parentOf(ThreadGroup g) {/
+ThreadGroup.remove java-src/TG.java /^ private void
remove(ThreadGroup g) {$/
+ThreadGroup.remove java-src/TG.java /^ void remove(Thread t) {$/
+ThreadGroup.resume java-src/TG.java /^ public final void
resume() {$/
+ThreadGroup.setDaemon java-src/TG.java /^ public final void
setDaemon(boolean daemon) {$/
+ThreadGroup.setMaxPriority java-src/TG.java /^ public final void
setMaxPriority(int pri) {$/
+ThreadGroup.stop java-src/TG.java /^ public final void stop()
{$/
+ThreadGroup.suspend java-src/TG.java /^ public final void
suspend() {$/
+ThreadGroup.threads java-src/TG.java 63
+ThreadGroup.toString java-src/TG.java /^ public String toString()
{$/
+ThreadGroup.uncaughtException java-src/TG.java /^ public void
uncaughtException(Thread t, Throwa/
+ThreadGroup.vmAllowSuspension java-src/TG.java 60
+Time_to_position c-src/emacs/src/keyboard.c /^Time_to_position
(Time encoded_pos)$/
+To_Lower pas-src/common.pas /^function To_Lower;(*(ch:char) :
char;*)$/
+To_Start_Addr/f ada-src/2ataspri.adb /^ function To_Start_Addr
is new$/
+To_TCB_Ptr/f ada-src/2ataspri.adb /^ function To_TCB_Ptr is new$/
+To_Upper pas-src/common.pas /^function To_Upper;(*(ch:char) :
char;*)$/
+To_void_ptr/f ada-src/2ataspri.adb /^ function To_void_ptr is new$/
+Top tex-src/gzip.texi /address@hidden Top, , , (dir)$/
+Truc.Bidule/b ada-src/etags-test-for.ada /^package body Truc.Bidule is$/
+Truc.Bidule/b ada-src/waroquiers.ada /^package body Truc.Bidule is$/
+Truc.Bidule/s ada-src/etags-test-for.ada /^package Truc.Bidule is$/
+Truc.Bidule/s ada-src/waroquiers.ada /^package Truc.Bidule is$/
+Truc/s ada-src/etags-test-for.ada /^package Truc is$/
+Truc/s ada-src/waroquiers.ada /^package Truc is$/
+Type_Specific_Data/t ada-src/etags-test-for.ada /^ type
Type_Specific_Data is record$/
+UCHAR c-src/emacs/src/lisp.h 2424
+UNARY y-src/cccp.c 18
+UNDEFINED c-src/h.h 118
+UNEVALLED c-src/emacs/src/lisp.h 2834
+UNGCPRO c-src/emacs/src/lisp.h 3202
+UNGCPRO c-src/emacs/src/lisp.h 3257
+UNGCPRO c-src/emacs/src/lisp.h 3353
+UNLOCK c-src/emacs/src/gmalloc.c /^#define UNLOCK()
\\$/
+UNLOCK c-src/emacs/src/gmalloc.c /^#define UNLOCK()$/
+UNLOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define
UNLOCK_ALIGNED_BLOCKS() \\$/
+UNLOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define
UNLOCK_ALIGNED_BLOCKS()$/
+UNPERM cp-src/cfront.H /^#define UNPERM(p) p->permanent=0$/
+UNSIGNED_CMP c-src/emacs/src/lisp.h /^#define UNSIGNED_CMP(a, op, b)
\\$/
+USE_LSB_TAG c-src/emacs/src/lisp.h 271
+USE_LSB_TAG c-src/emacs/src/lisp.h /^DEFINE_GDB_SYMBOL_BEGIN (bool,
USE_LSB_TAG)$/
+USE_PTHREAD c-src/emacs/src/gmalloc.c 25
+USE_SAFE_ALLOCA c-src/emacs/src/lisp.h 4560
+USE_STACK_CONS c-src/emacs/src/lisp.h 4689
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4652
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4658
+USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4659
+USE_STACK_STRING c-src/emacs/src/lisp.h 4691
+U_CHAR cccp.y 38
+U_CHAR y-src/cccp.y 38
+Unlock/p ada-src/2ataspri.adb /^ procedure Unlock (L : in out Lock)
is$/
+Unlock/p ada-src/2ataspri.ads /^ procedure Unlock (L : in out
Lock);$/
+User pyt-src/server.py /^class User:$/
+UserEdit pyt-src/server.py /^class UserEdit(Frame):$/
+VALBITS c-src/emacs/src/lisp.h 246
+VALMASK c-src/emacs/src/lisp.h 829
+VALMASK c-src/emacs/src/lisp.h /^DEFINE_GDB_SYMBOL_BEGIN (EMACS_INT,
VALMASK)$/
+VAL_MAX c-src/emacs/src/lisp.h 263
+VECSIZE c-src/emacs/src/lisp.h /^#define VECSIZE(type)
\\$/
+VECTORLIKEP c-src/emacs/src/lisp.h /^# define VECTORLIKEP(x)
lisp_h_VECTORLIKEP (x)$/
+VECTORP c-src/emacs/src/lisp.h /^VECTORP (Lisp_Object x)$/
+VERSION c-src/etags.c 789
+VERSION erl-src/gs_dialog.erl /^-define(VERSION, '2001.1101').$/
+VERSION objc-src/PackInsp.m 34
+Vabbrev_start_location c-src/abbrev.c 62
+Vabbrev_start_location_buffer c-src/abbrev.c 65
+Vabbrev_table_name_list c-src/abbrev.c 42
+ValToNmStr pas-src/common.pas /^function ValToNmStr; (*($/
+Value cp-src/abstract.H 440
+Value::SetCollapsed cp-src/abstract.C /^void Value::SetCollapsed(char
t)$/
+Value::SetDimensions cp-src/abstract.C /^void
Value::SetDimensions(void)$/
+Value::SetFather cp-src/abstract.C /^void
Value::SetFather(Tree_Node *f)$/
+Value::SetPosition cp-src/abstract.C /^void Value::SetPosition(Coord
xx, Coord yy)$/
+Value::Value cp-src/abstract.C /^Value::Value(ID_Place *i, ID_Place
*s)$/
+Value::ident cp-src/abstract.H 442
+Value::sort_id cp-src/abstract.H 443
+Value_Expr cp-src/abstract.H 135
+Value_Expr::SetDimensions cp-src/abstract.C /^void
Value_Expr::SetDimensions(void)$/
+Value_Expr::SetFather cp-src/abstract.C /^void
Value_Expr::SetFather(Tree_Node *f)$/
+Value_Expr::SetPosition cp-src/abstract.C /^void
Value_Expr::SetPosition(Coord xx, Coord yy)$/
+Value_Expr::Value_Expr cp-src/abstract.C /^Value_Expr::Value_Expr() $/
+Value_Expr_List cp-src/abstract.H 149
+Value_Expr_List::SetCollapsed cp-src/abstract.C /^void
Value_Expr_List::SetCollapsed(char t)$/
+Value_Expr_List::SetDimensions cp-src/abstract.C /^void
Value_Expr_List::SetDimensions(void)$/
+Value_Expr_List::SetFather cp-src/abstract.C /^void
Value_Expr_List::SetFather(Tree_Node *f)$/
+Value_Expr_List::SetPosition cp-src/abstract.C /^void
Value_Expr_List::SetPosition(Coord xx, Coord /
+Value_Expr_List::Value_Expr_List cp-src/abstract.C
/^Value_Expr_List::Value_Expr_List(Tree_Node *el, Va/
+Value_Expr_List::elem cp-src/abstract.H 151
+Value_Expr_List::next cp-src/abstract.H 152
+Vfundamental_mode_abbrev_table c-src/abbrev.c 51
+Vglobal_abbrev_table c-src/abbrev.c 47
+Vlast_abbrev c-src/abbrev.c 69
+Vlast_abbrev_text c-src/abbrev.c 74
+Vlispy_mouse_stem c-src/emacs/src/keyboard.c 5172
+Vpre_abbrev_expand_hook c-src/abbrev.c 82
+WAIT_READING_MAX c-src/emacs/src/lisp.h 4281
+WAIT_READING_MAX c-src/emacs/src/lisp.h 4283
+WCHAR_TYPE_SIZE cccp.y 99
+WCHAR_TYPE_SIZE y-src/cccp.y 99
+WINDOWP c-src/emacs/src/lisp.h /^WINDOWP (Lisp_Object a)$/
+WINDOWSNT c-src/etags.c 101
+WINDOWSNT c-src/etags.c 102
+WINDOW_CONFIGURATIONP c-src/emacs/src/lisp.h /^WINDOW_CONFIGURATIONP
(Lisp_Object a)$/
+WORKING objc-src/PackInsp.m 368
+WorkingDays cp-src/functions.cpp /^int WorkingDays(Date a, Date b){$/
+Write_Lock/p ada-src/2ataspri.adb /^ procedure Write_Lock (L : in out
Lock; Ceiling_/
+Write_Lock/p ada-src/2ataspri.ads /^ procedure Write_Lock (L : in out
Lock; Ceiling_/
+X c-src/h.h 100
+XBOOL_VECTOR c-src/emacs/src/lisp.h /^XBOOL_VECTOR (Lisp_Object a)$/
+XBUFFER c-src/emacs/src/lisp.h /^XBUFFER (Lisp_Object a)$/
+XBUFFER_OBJFWD c-src/emacs/src/lisp.h /^XBUFFER_OBJFWD (union Lisp_Fwd *a)$/
+XCAR c-src/emacs/src/lisp.h /^# define XCAR(c) lisp_h_XCAR (c)$/
+XCDR c-src/emacs/src/lisp.h /^# define XCDR(c) lisp_h_XCDR (c)$/
+XCHAR_TABLE c-src/emacs/src/lisp.h /^XCHAR_TABLE (Lisp_Object a)$/
+XCHG_0 c-src/sysdep.h 47
+XCHG_1 c-src/sysdep.h 48
+XCHG_2 c-src/sysdep.h 49
+XCHG_3 c-src/sysdep.h 50
+XCHG_4 c-src/sysdep.h 51
+XCHG_5 c-src/sysdep.h 52
+XCONS c-src/emacs/src/lisp.h /^# define XCONS(a) lisp_h_XCONS (a)$/
+XDEFUN c.c /^XDEFUN ("x-get-selection-internal", Fx_get_selecti/
+XFASTINT c-src/emacs/src/lisp.h /^# define XFASTINT(a) lisp_h_XFASTINT
(a)$/
+XFASTINT c-src/emacs/src/lisp.h /^XFASTINT (Lisp_Object a)$/
+XFINALIZER c-src/emacs/src/lisp.h /^XFINALIZER (Lisp_Object a)$/
+XFLOAT c-src/emacs/src/lisp.h /^XFLOAT (Lisp_Object a)$/
+XFLOATINT c-src/emacs/src/lisp.h /^XFLOATINT (Lisp_Object n)$/
+XFLOAT_DATA c-src/emacs/src/lisp.h /^XFLOAT_DATA (Lisp_Object f)$/
+XFWDTYPE c-src/emacs/src/lisp.h /^XFWDTYPE (union Lisp_Fwd *a)$/
+XHASH c-src/emacs/src/lisp.h /^# define XHASH(a) lisp_h_XHASH (a)$/
+XHASH_TABLE c-src/emacs/src/lisp.h /^XHASH_TABLE (Lisp_Object a)$/
+XIL c-src/emacs/src/lisp.h /^# define XIL(i) lisp_h_XIL (i)$/
+XINT c-src/emacs/src/lisp.h /^# define XINT(a) lisp_h_XINT (a)$/
+XINT c-src/emacs/src/lisp.h /^XINT (Lisp_Object a)$/
+XINTPTR c-src/emacs/src/lisp.h /^XINTPTR (Lisp_Object a)$/
+XLI c-src/emacs/src/lisp.h /^# define XLI(o) lisp_h_XLI (o)$/
+XLI_BUILTIN_LISPSYM c-src/emacs/src/lisp.h /^#define
XLI_BUILTIN_LISPSYM(iname) TAG_SYMOFFSET (/
+XMARKER c-src/emacs/src/lisp.h /^XMARKER (Lisp_Object a)$/
+XMISC c-src/emacs/src/lisp.h /^XMISC (Lisp_Object a)$/
+XMISCANY c-src/emacs/src/lisp.h /^XMISCANY (Lisp_Object a)$/
+XMISCTYPE c-src/emacs/src/lisp.h /^XMISCTYPE (Lisp_Object a)$/
+XOVERLAY c-src/emacs/src/lisp.h /^XOVERLAY (Lisp_Object a)$/
+XPNTR c-src/emacs/src/lisp.h /^# define XPNTR(a) lisp_h_XPNTR (a)$/
+XPROCESS c-src/emacs/src/lisp.h /^XPROCESS (Lisp_Object a)$/
+XSAVE_FUNCPOINTER c-src/emacs/src/lisp.h /^XSAVE_FUNCPOINTER
(Lisp_Object obj, int n)$/
+XSAVE_INTEGER c-src/emacs/src/lisp.h /^XSAVE_INTEGER (Lisp_Object obj, int
n)$/
+XSAVE_OBJECT c-src/emacs/src/lisp.h /^XSAVE_OBJECT (Lisp_Object obj, int
n)$/
+XSAVE_POINTER c-src/emacs/src/lisp.h /^XSAVE_POINTER (Lisp_Object obj, int
n)$/
+XSAVE_VALUE c-src/emacs/src/lisp.h /^XSAVE_VALUE (Lisp_Object a)$/
+XSETBOOL_VECTOR c-src/emacs/src/lisp.h /^#define XSETBOOL_VECTOR(a, b)
(XSETPSEUDOVECTOR (a/
+XSETBUFFER c-src/emacs/src/lisp.h /^#define XSETBUFFER(a, b)
(XSETPSEUDOVECTOR (a, b, /
+XSETCDR c-src/emacs/src/lisp.h /^XSETCDR (Lisp_Object c, Lisp_Object
n)$/
+XSETCHAR_TABLE c-src/emacs/src/lisp.h /^#define XSETCHAR_TABLE(a, b)
(XSETPSEUDOVECTOR (a,/
+XSETCOMPILED c-src/emacs/src/lisp.h /^#define XSETCOMPILED(a, b)
(XSETPSEUDOVECTOR (a, b/
+XSETCONS c-src/emacs/src/lisp.h /^#define XSETCONS(a, b) ((a) =
make_lisp_ptr (b, Li/
+XSETFASTINT c-src/emacs/src/lisp.h /^#define XSETFASTINT(a, b) ((a) =
make_natnum (b))$/
+XSETFLOAT c-src/emacs/src/lisp.h /^#define XSETFLOAT(a, b) ((a) =
make_lisp_ptr (b, L/
+XSETINT c-src/emacs/src/lisp.h /^#define XSETINT(a, b) ((a) =
make_number (b))$/
+XSETMISC c-src/emacs/src/lisp.h /^#define XSETMISC(a, b) ((a) =
make_lisp_ptr (b, Li/
+XSETPROCESS c-src/emacs/src/lisp.h /^#define XSETPROCESS(a, b)
(XSETPSEUDOVECTOR (a, b,/
+XSETPSEUDOVECTOR c-src/emacs/src/lisp.h /^#define XSETPSEUDOVECTOR(a,
b, code) \\$/
+XSETPVECTYPE c-src/emacs/src/lisp.h /^#define XSETPVECTYPE(v, code)
\\$/
+XSETPVECTYPESIZE c-src/emacs/src/lisp.h /^#define XSETPVECTYPESIZE(v,
code, lispsize, restsi/
+XSETSTRING c-src/emacs/src/lisp.h /^#define XSETSTRING(a, b) ((a) =
make_lisp_ptr (b, /
+XSETSUBR c-src/emacs/src/lisp.h /^#define XSETSUBR(a, b)
(XSETPSEUDOVECTOR (a, b, PV/
+XSETSUB_CHAR_TABLE c-src/emacs/src/lisp.h /^#define XSETSUB_CHAR_TABLE(a,
b) (XSETPSEUDOVECTOR/
+XSETSYMBOL c-src/emacs/src/lisp.h /^#define XSETSYMBOL(a, b) ((a) =
make_lisp_symbol (/
+XSETTERMINAL c-src/emacs/src/lisp.h /^#define XSETTERMINAL(a, b)
(XSETPSEUDOVECTOR (a, b/
+XSETTYPED_PSEUDOVECTOR c-src/emacs/src/lisp.h /^#define
XSETTYPED_PSEUDOVECTOR(a, b, size, code) /
+XSETVECTOR c-src/emacs/src/lisp.h /^#define XSETVECTOR(a, b) ((a) =
make_lisp_ptr (b, /
+XSETWINDOW c-src/emacs/src/lisp.h /^#define XSETWINDOW(a, b)
(XSETPSEUDOVECTOR (a, b, /
+XSETWINDOW_CONFIGURATION c-src/emacs/src/lisp.h /^#define
XSETWINDOW_CONFIGURATION(a, b) \\$/
+XSET_HASH_TABLE c-src/emacs/src/lisp.h /^#define XSET_HASH_TABLE(VAR,
PTR) \\$/
+XSTRING c-src/emacs/src/lisp.h /^XSTRING (Lisp_Object a)$/
+XSUBR c-src/emacs/src/lisp.h /^XSUBR (Lisp_Object a)$/
+XSUB_CHAR_TABLE c-src/emacs/src/lisp.h /^XSUB_CHAR_TABLE (Lisp_Object
a)$/
+XSYMBOL c-src/emacs/src/lisp.h /^# define XSYMBOL(a) lisp_h_XSYMBOL
(a)$/
+XSYMBOL c-src/emacs/src/lisp.h /^XSYMBOL (Lisp_Object a)$/
+XTERMINAL c-src/emacs/src/lisp.h /^XTERMINAL (Lisp_Object a)$/
+XTYPE c-src/emacs/src/lisp.h /^# define XTYPE(a) lisp_h_XTYPE (a)$/
+XTYPE c-src/emacs/src/lisp.h /^XTYPE (Lisp_Object a)$/
+XUNTAG c-src/emacs/src/lisp.h /^# define XUNTAG(a, type) lisp_h_XUNTAG (a,
type)$/
+XUNTAG c-src/emacs/src/lisp.h /^XUNTAG (Lisp_Object a, int type)$/
+XWINDOW c-src/emacs/src/lisp.h /^XWINDOW (Lisp_Object a)$/
+Y c-src/h.h 100
+YACC c-src/etags.c 2199
+YSRC Makefile /^YSRC=$(addprefix .\/y-src\/,parse.y parse.c atest.y /
+YYABORT /usr/share/bison/bison.simple 153
+YYABORT /usr/share/bison/bison.simple 153
+YYACCEPT /usr/share/bison/bison.simple 152
+YYACCEPT /usr/share/bison/bison.simple 152
+YYBACKUP /usr/share/bison/bison.simple /^#define YYBACKUP(Token,
Value) \\$/
+YYBACKUP /usr/share/bison/bison.simple /^#define YYBACKUP(Token,
Value) \\$/
+YYBISON y-src/parse.c 4
+YYBISON y-src/cccp.c 4
+YYDEBUG parse.y 88
+YYDEBUG cccp.y 122
+YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args)
\\$/
+YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args)$/
+YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args)
\\$/
+YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args)$/
+YYEMPTY /usr/share/bison/bison.simple 150
+YYEMPTY /usr/share/bison/bison.simple 150
+YYEOF /usr/share/bison/bison.simple 151
+YYEOF /usr/share/bison/bison.simple 151
+YYERRCODE /usr/share/bison/bison.simple 178
+YYERRCODE /usr/share/bison/bison.simple 178
+YYERROR /usr/share/bison/bison.simple 154
+YYERROR /usr/share/bison/bison.simple 154
+YYFAIL /usr/share/bison/bison.simple 158
+YYFAIL /usr/share/bison/bison.simple 158
+YYFINAL parse.y 93
+YYFINAL cccp.y 127
+YYFLAG parse.y 94
+YYFLAG cccp.y 128
+YYFPRINTF /usr/share/bison/bison.simple 225
+YYFPRINTF /usr/share/bison/bison.simple 225
+YYINITDEPTH /usr/share/bison/bison.simple 244
+YYINITDEPTH /usr/share/bison/bison.simple 244
+YYLAST parse.y 266
+YYLAST cccp.y 274
+YYLEX /usr/share/bison/bison.simple 200
+YYLEX /usr/share/bison/bison.simple 202
+YYLEX /usr/share/bison/bison.simple 206
+YYLEX /usr/share/bison/bison.simple 208
+YYLEX /usr/share/bison/bison.simple 212
+YYLEX /usr/share/bison/bison.simple 200
+YYLEX /usr/share/bison/bison.simple 202
+YYLEX /usr/share/bison/bison.simple 206
+YYLEX /usr/share/bison/bison.simple 208
+YYLEX /usr/share/bison/bison.simple 212
+YYLLOC_DEFAULT /usr/share/bison/bison.simple /^# define
YYLLOC_DEFAULT(Current, Rhs, N) \\$/
+YYLLOC_DEFAULT /usr/share/bison/bison.simple /^# define
YYLLOC_DEFAULT(Current, Rhs, N) \\$/
+YYMAXDEPTH /usr/share/bison/bison.simple 255
+YYMAXDEPTH /usr/share/bison/bison.simple 259
+YYMAXDEPTH /usr/share/bison/bison.simple 255
+YYMAXDEPTH /usr/share/bison/bison.simple 259
+YYNTBASE parse.y 95
+YYNTBASE cccp.y 129
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 351
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 354
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 358
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 351
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 354
+YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 358
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 352
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 355
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 359
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 352
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 355
+YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 359
+YYPOPSTACK /usr/share/bison/bison.simple 445
+YYPOPSTACK /usr/share/bison/bison.simple 447
+YYPOPSTACK /usr/share/bison/bison.simple 445
+YYPOPSTACK /usr/share/bison/bison.simple 447
+YYRECOVERING /usr/share/bison/bison.simple /^#define YYRECOVERING()
(!!yyerrstatus)$/
+YYRECOVERING /usr/share/bison/bison.simple /^#define YYRECOVERING()
(!!yyerrstatus)$/
+YYSIZE_T /usr/share/bison/bison.simple 51
+YYSIZE_T /usr/share/bison/bison.simple 56
+YYSIZE_T /usr/share/bison/bison.simple 71
+YYSIZE_T /usr/share/bison/bison.simple 75
+YYSIZE_T /usr/share/bison/bison.simple 128
+YYSIZE_T /usr/share/bison/bison.simple 131
+YYSIZE_T /usr/share/bison/bison.simple 136
+YYSIZE_T /usr/share/bison/bison.simple 140
+YYSIZE_T /usr/share/bison/bison.simple 145
+YYSIZE_T /usr/share/bison/bison.simple 51
+YYSIZE_T /usr/share/bison/bison.simple 56
+YYSIZE_T /usr/share/bison/bison.simple 71
+YYSIZE_T /usr/share/bison/bison.simple 75
+YYSIZE_T /usr/share/bison/bison.simple 128
+YYSIZE_T /usr/share/bison/bison.simple 131
+YYSIZE_T /usr/share/bison/bison.simple 136
+YYSIZE_T /usr/share/bison/bison.simple 140
+YYSIZE_T /usr/share/bison/bison.simple 145
+YYSTACK_ALLOC /usr/share/bison/bison.simple 50
+YYSTACK_ALLOC /usr/share/bison/bison.simple 55
+YYSTACK_ALLOC /usr/share/bison/bison.simple 59
+YYSTACK_ALLOC /usr/share/bison/bison.simple 78
+YYSTACK_ALLOC /usr/share/bison/bison.simple 50
+YYSTACK_ALLOC /usr/share/bison/bison.simple 55
+YYSTACK_ALLOC /usr/share/bison/bison.simple 59
+YYSTACK_ALLOC /usr/share/bison/bison.simple 78
+YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N)
\\$/
+YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N)
\\$/
+YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N)
\\$/
+YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N)
\\$/
+YYSTACK_FREE /usr/share/bison/bison.simple /^# define YYSTACK_FREE(Ptr)
do { \/* empty *\/; } wh/
+YYSTACK_FREE /usr/share/bison/bison.simple 79
+YYSTACK_FREE /usr/share/bison/bison.simple /^# define YYSTACK_FREE(Ptr)
do { \/* empty *\/; } wh/
+YYSTACK_FREE /usr/share/bison/bison.simple 79
+YYSTACK_GAP_MAX /usr/share/bison/bison.simple 93
+YYSTACK_GAP_MAX /usr/share/bison/bison.simple 93
+YYSTACK_RELOCATE /usr/share/bison/bison.simple /^# define
YYSTACK_RELOCATE(Type, Stack) \\$/
+YYSTACK_RELOCATE /usr/share/bison/bison.simple 548
+YYSTACK_RELOCATE /usr/share/bison/bison.simple /^# define
YYSTACK_RELOCATE(Type, Stack) \\$/
+YYSTACK_RELOCATE /usr/share/bison/bison.simple 548
+YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) std::x$/
+YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) x$/
+YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) std::x$/
+YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) x$/
+YYSTYPE y-src/parse.y 71
+YYSTYPE y-src/parse.y 72
+YYSTYPE parse.y 71
+YYSTYPE parse.y 72
+YYSTYPE parse.y 85
+YYSTYPE cccp.y 119
+YYTERROR /usr/share/bison/bison.simple 177
+YYTERROR /usr/share/bison/bison.simple 177
+YYTRANSLATE parse.y /^#define YYTRANSLATE(x) ((unsigned)(x) <= 278 ? yyt/
+YYTRANSLATE cccp.y /^#define YYTRANSLATE(x) ((unsigned)(x) <= 269 ? yyt/
+YY_DECL_NON_LSP_VARIABLES /usr/share/bison/bison.simple 374
+YY_DECL_NON_LSP_VARIABLES /usr/share/bison/bison.simple 374
+YY_DECL_VARIABLES /usr/share/bison/bison.simple 385
+YY_DECL_VARIABLES /usr/share/bison/bison.simple 391
+YY_DECL_VARIABLES /usr/share/bison/bison.simple 385
+YY_DECL_VARIABLES /usr/share/bison/bison.simple 391
+Yacc_entries c-src/etags.c /^Yacc_entries (FILE *inf)$/
+Yacc_help c-src/etags.c 693
+Yacc_suffixes c-src/etags.c 691
+Z c-src/h.h 100
+\ tex-src/texinfo.tex /^\\def\\ {{\\fontdimen2\\font=\\tclosesave{}
}}%$/
+\ tex-src/texinfo.tex /^\\gdef\\sepspaces{\\def {\\ }}}$/
+\' tex-src/texinfo.tex /^\\def\\'{{'}}$/
+\* tex-src/texinfo.tex
/^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/
+\. tex-src/texinfo.tex /^\\def\\.{.\\spacefactor=3000 }$/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("abbrev-table-name-list", &Vabbrev_/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("global-abbrev-table", &Vglobal_abb/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("fundamental-mode-abbrev-table", &V/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("last-abbrev", &Vlast_abbrev,
+ "/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("last-abbrev-text", &Vlast_abbrev_t/
+\1 c-src/abbrev.c /^ DEFVAR_INT ("last-abbrev-location", &last_abbrev/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("abbrev-start-location", &Vabbrev_s/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("abbrev-start-location-buffer", &Va/
+\1 c-src/abbrev.c /^ DEFVAR_PER_BUFFER ("local-abbrev-table", ¤/
+\1 c-src/abbrev.c /^ DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed/
+\1 c-src/abbrev.c /^ DEFVAR_BOOL ("abbrev-all-caps", &abbrev_all_caps/
+\1 c-src/abbrev.c /^ DEFVAR_LISP ("pre-abbrev-expand-hook", &Vpre_abb/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("internal--top-level-message", Vint/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-command-event",
last_command_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-nonmenu-event",
last_nonmenu_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-input-event",
last_input_even/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("unread-command-events", Vunread_co/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("unread-post-input-method-events", /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("unread-input-method-events", Vunre/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("meta-prefix-char",
meta_prefix_cha/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("last-command",
Vlast_command,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("real-last-command",
Vreal_last_c/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD
("last-repeatable-command", Vlast_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("this-command",
Vthis_command,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("real-this-command",
Vreal_this_com/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("this-command-keys-shift-translated/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("this-original-command", Vthis_orig/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("auto-save-interval",
auto_save_inte/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("auto-save-timeout",
Vauto_save_tim/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("echo-keystrokes",
Vecho_keystrokes/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("polling-period",
polling_period,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("double-click-time",
Vdouble_click_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("double-click-fuzz",
double_click_fu/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT ("num-input-keys",
num_input_keys,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT
("num-nonmacro-input-events", num_non/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-event-frame",
Vlast_event_fra/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("tty-erase-char",
Vtty_erase_char,
+/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("help-char",
Vhelp_char,
+ do/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("help-event-list",
Vhelp_event_list/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("help-form",
Vhelp_form,
+ do/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("prefix-help-command",
Vprefix_help/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("top-level",
Vtop_level,
+ do/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD
("keyboard-translate-table", Vkeyb/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_BOOL ("cannot-suspend",
cannot_suspend,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_BOOL ("menu-prompting",
menu_prompting,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("menu-prompt-more-char", menu_promp/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_INT
("extra-keyboard-modifiers", extra_ke/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("deactivate-mark",
Vdeactivate_mark/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("pre-command-hook",
Vpre_command_ho/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("post-command-hook",
Vpost_command_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("echo-area-clear-hook", ...,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("lucid-menu-bar-dirty-flag", Vlucid/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("menu-bar-final-items", Vmenu_bar_f/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("tool-bar-separator-image-expressio/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD
("overriding-terminal-local-map",
+/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("overriding-local-map", Voverriding/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("overriding-local-map-menu-flag", V/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("special-event-map",
Vspecial_event/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("track-mouse",
do_mouse_tracking,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("system-key-alist",
Vsystem_key_a/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD
("local-function-key-map", Vlocal_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_KBOARD ("input-decode-map",
Vinput_decode/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("function-key-map",
Vfunction_key_m/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("key-translation-map",
Vkey_transla/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("deferred-action-list", Vdeferred_a/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("deferred-action-function", Vdeferr/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("delayed-warnings-list", Vdelayed_w/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("timer-list",
Vtimer_list,
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("timer-idle-list",
Vtimer_idle_list/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("input-method-function", Vinput_met/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("input-method-previous-message",
+ /
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("show-help-function",
Vshow_help_fu/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("disable-point-adjustment", Vdisabl/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("global-disable-point-adjustment",
+/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("minibuffer-message-timeout", Vmini/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("throw-on-input",
Vthrow_on_input,
+/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("command-error-function", Vcommand_/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("enable-disabled-menus-and-buttons"/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("select-active-regions",
+ Vs/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("saved-region-selection",
+ V/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP
("selection-inhibit-update-commands"/
+\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("debug-on-event",
+ Vd/
+\: tex-src/texinfo.tex /^\\def\\:{\\spacefactor=1000 }$/
+\@ tex-src/texinfo.tex /address@hidden \\char '100}}$/
+\@ tex-src/texinfo.tex /address@hidden@}%$/
+\CHAPFopen tex-src/texinfo.tex /^\\def\\CHAPFopen{$/
+\CHAPFplain tex-src/texinfo.tex /^\\def\\CHAPFplain{$/
+\CHAPPAGodd tex-src/texinfo.tex /^\\def\\CHAPPAGodd{$/
+\CHAPPAGoff tex-src/texinfo.tex /^\\def\\CHAPPAGoff{$/
+\CHAPPAGon tex-src/texinfo.tex /^\\def\\CHAPPAGon{$/
+\ENVcheck tex-src/texinfo.tex /^\\def\\ENVcheck{%$/
+\Ealphaenumerate tex-src/texinfo.tex
/^\\def\\Ealphaenumerate{\\Eenumerate}$/
+\Ecapsenumerate tex-src/texinfo.tex
/^\\def\\Ecapsenumerate{\\Eenumerate}$/
+\Ecartouche tex-src/texinfo.tex /^\\def\\Ecartouche{%$/
+\Edescription tex-src/texinfo.tex /^\\def\\Edescription{\\Etable}%
Neccessary kludge.$/
+\Edisplay tex-src/texinfo.tex
/^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/
+\Eexample tex-src/texinfo.tex /^\\def\\Eexample{\\Elisp}$/
+\Eflushleft tex-src/texinfo.tex
/^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/
+\Eflushright tex-src/texinfo.tex
/^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/
+\Eformat tex-src/texinfo.tex
/^\\def\\Eformat{\\endgroup\\afterenvbreak}$/
+\Eftable tex-src/texinfo.tex
/^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\Egroup tex-src/texinfo.tex /^ \\def\\Egroup{\\egroup\\endgroup}%$/
+\Eifclear tex-src/texinfo.tex /^\\def\\Eifclear{}$/
+\Eifset tex-src/texinfo.tex /^\\def\\Eifset{}$/
+\Eiftex tex-src/texinfo.tex /^\\def\\Eiftex{}$/
+\Elisp tex-src/texinfo.tex /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/
+\Equotation tex-src/texinfo.tex
/^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/
+\Esmallexample tex-src/texinfo.tex /^\\def\\Esmallexample{\\Elisp}$/
+\Esmallexample tex-src/texinfo.tex
/^\\global\\def\\Esmallexample{\\Esmalllisp}$/
+\Esmalllisp tex-src/texinfo.tex
/^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/
+\Etable tex-src/texinfo.tex
/^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\Etitlepage tex-src/texinfo.tex /^\\def\\Etitlepage{%$/
+\Evtable tex-src/texinfo.tex
/^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/
+\HEADINGSafter tex-src/texinfo.tex
/^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
+\HEADINGSdouble tex-src/texinfo.tex /^\\def\\HEADINGSdouble{$/
+\HEADINGSdoublex tex-src/texinfo.tex /^\\def\\HEADINGSdoublex{%$/
+\HEADINGSoff tex-src/texinfo.tex /^\\def\\HEADINGSoff{$/
+\HEADINGSon tex-src/texinfo.tex /^\\def\\HEADINGSon{\\HEADINGSdouble}$/
+\HEADINGSon tex-src/texinfo.tex
/^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/
+\HEADINGSon tex-src/texinfo.tex
/^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/
+\HEADINGSsingle tex-src/texinfo.tex /^\\def\\HEADINGSsingle{$/
+\HEADINGSsingleafter tex-src/texinfo.tex
/^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
+\HEADINGSsinglex tex-src/texinfo.tex /^\\def\\HEADINGSsinglex{%$/
+\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}%$/
+\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}$/
+\Yappendixletterandtype tex-src/texinfo.tex
/^\\def\\Yappendixletterandtype{%$/
+\Ynothing tex-src/texinfo.tex /^\\def\\Ynothing{}$/
+\Ypagenumber tex-src/texinfo.tex /^\\def\\Ypagenumber{\\folio}$/
+\Ysectionnumberandtype tex-src/texinfo.tex
/^\\def\\Ysectionnumberandtype{%$/
+\Ytitle tex-src/texinfo.tex /^\\def\\Ytitle{\\thischapter}$/
+\_ tex-src/texinfo.tex /^\\def\\_{{\\realbackslash _}}%$/
+\_ tex-src/texinfo.tex /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule
width.3em /
+\` tex-src/texinfo.tex /^\\def\\`{{`}}$/
+\aboveenvbreak tex-src/texinfo.tex
/^\\def\\aboveenvbreak{{\\advance\\aboveenvskipamount by/
+\activedoublequote tex-src/texinfo.tex
/^\\def\\activedoublequote{{\\tt \\char '042}}$/
+\activeparens tex-src/texinfo.tex /^\\def\\activeparens{%$/
+\afourpaper tex-src/texinfo.tex /^\\def\\afourpaper{$/
+\afterenvbreak tex-src/texinfo.tex /^\\def\\afterenvbreak{\\endgraf
\\ifdim\\lastskip<\\above/
+\alphaenumerate tex-src/texinfo.tex
/^\\def\\alphaenumerate{\\enumerate{a}}$/
+\appendix tex-src/texinfo.tex
/^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
+\appendixletter tex-src/texinfo.tex
/^\\def\\appendixletter{\\char\\the\\appendixno}$/
+\appendixnoderef tex-src/texinfo.tex
/^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/
+\appendixsec tex-src/texinfo.tex
/^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
+\appendixsection tex-src/texinfo.tex
/^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
+\appendixsectionzzz tex-src/texinfo.tex /^\\def\\appendixsectionzzz
#1{\\seccheck{appendixsecti/
+\appendixsetref tex-src/texinfo.tex /^\\def\\appendixsetref#1{%$/
+\appendixsubsec tex-src/texinfo.tex
/^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
+\appendixsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubseczzz
#1{\\seccheck{appendixsubsec/
+\appendixsubsubsec tex-src/texinfo.tex
/^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
+\appendixsubsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubsubseczzz
#1{\\seccheck{appendixsub/
+\appendixzzz tex-src/texinfo.tex /^\\def\\appendixzzz
#1{\\seccheck{appendix}%$/
+\asis tex-src/texinfo.tex /^\\def\\asis#1{#1}$/
+\author tex-src/texinfo.tex /^
\\def\\author{\\parsearg\\authorzzz}%$/
+\authorfont tex-src/texinfo.tex /^ \\def\\authorfont{\\authorrm
\\normalbaselineskip =/
+\authorzzz tex-src/texinfo.tex /^
\\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt /
+\b tex-src/texinfo.tex /^\\def\\b#1{{\\bf #1}}$/
+\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}%$/
+\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}$/
+\balancecolumns tex-src/texinfo.tex /^\\def\\balancecolumns{%$/
+\begin tex-src/texinfo.tex /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/
+\begindoublecolumns tex-src/texinfo.tex
/^\\def\\begindoublecolumns{\\begingroup$/
+\beginxxx tex-src/texinfo.tex /^\\def\\beginxxx #1{%$/
+\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }%$/
+\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }$/
+\bullet tex-src/texinfo.tex /^\\def\\bullet{$\\ptexbullet$}$/
+\bye tex-src/texinfo.tex
/^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/
+\capsenumerate tex-src/texinfo.tex /^\\def\\capsenumerate{\\enumerate{A}}$/
+\cartbot tex-src/texinfo.tex /^\\def\\cartbot{\\hbox to
\\cartouter{\\hskip\\lskip$/
+\cartouche tex-src/texinfo.tex /^\\long\\def\\cartouche{%$/
+\carttop tex-src/texinfo.tex /^\\def\\carttop{\\hbox to
\\cartouter{\\hskip\\lskip$/
+\cbl tex-src/texinfo.tex /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/
+\cbr tex-src/texinfo.tex /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/
+\center tex-src/texinfo.tex /^\\def\\center{\\parsearg\\centerzzz}$/
+\centerzzz tex-src/texinfo.tex /^\\def\\centerzzz #1{{\\advance\\hsize
by -\\leftskip$/
+\chapbreak tex-src/texinfo.tex /^\\def\\chapbreak{\\dobreak
\\chapheadingskip {-4000}}$/
+\chapentry tex-src/texinfo.tex
/^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
+\chapentryfonts tex-src/texinfo.tex
/^\\def\\chapentryfonts{\\secfonts \\rm}$/
+\chapfonts tex-src/texinfo.tex /^\\def\\chapfonts{%$/
+\chapheading tex-src/texinfo.tex
/^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/
+\chapheadingzzz tex-src/texinfo.tex /^\\def\\chapheadingzzz
#1{\\chapbreak %$/
+\chapoddpage tex-src/texinfo.tex /^\\def\\chapoddpage{\\chappager
\\ifodd\\pageno \\else \\h/
+\chappager tex-src/texinfo.tex
/^\\def\\chappager{\\par\\vfill\\supereject}$/
+\chapter tex-src/texinfo.tex
/^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
+\chapternofonts tex-src/texinfo.tex /^\\def\\chapternofonts{%$/
+\chapterzzz tex-src/texinfo.tex /^\\def\\chapterzzz
#1{\\seccheck{chapter}%$/
+\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}%$/
+\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}$/
+\chfopen tex-src/texinfo.tex /^\\def\\chfopen #1#2{\\chapoddpage
{\\chapfonts$/
+\chfplain tex-src/texinfo.tex /^\\def\\chfplain #1#2{%$/
+\cindex tex-src/texinfo.tex /^\\def\\cindex {\\cpindex}$/
+\cindexsub tex-src/texinfo.tex /^\\def\\cindexsub
{\\begingroup\\obeylines\\cindexsub}$/
+\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}%$/
+\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}$/
+\clear tex-src/texinfo.tex /^\\def\\clear{\\parsearg\\clearxxx}$/
+\clearxxx tex-src/texinfo.tex /^\\def\\clearxxx #1{$/
+\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}%$/
+\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}$/
+\comment tex-src/texinfo.tex /^\\def\\comment{\\catcode 64=\\other
\\catcode 123=\\othe/
+\commentxxx tex-src/texinfo.tex /^\\def\\commentxxx #1{\\catcode 64=0
\\catcode 123=1 \\c/
+\contents tex-src/texinfo.tex /^\\outer\\def\\contents{%$/
+\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash
copyright }%$/
+\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash
copyright}$/
+\cropmarks tex-src/texinfo.tex
/^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
+\croppageout tex-src/texinfo.tex /^\\def\\croppageout#1{\\hoffset=0pt %
make sure this d/
+\ctl tex-src/texinfo.tex /^\\def\\ctl{{\\circle\\char'013\\hskip -6pt}}%
6pt from /
+\ctr tex-src/texinfo.tex /^\\def\\ctr{{\\hskip 6pt\\circle\\char'010}}$/
+\ctrl tex-src/texinfo.tex /^\\def\\ctrl #1{{\\tt \\rawbackslash
\\hat}#1}$/
+\defcodeindex tex-src/texinfo.tex
/^\\def\\defcodeindex{\\parsearg\\newcodeindex}$/
+\defcv tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
+\defcvarheader tex-src/texinfo.tex /^\\def\\defcvarheader #1#2#3{%$/
+\defcvx tex-src/texinfo.tex /^\\def\\defcvx #1 address@hidden in
invalid con/
+\deffn tex-src/texinfo.tex
/^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
+\deffnheader tex-src/texinfo.tex /^\\def\\deffnheader #1#2#3{\\doind
{fn}{\\code{#2}}%$/
+\deffnx tex-src/texinfo.tex /^\\def\\deffnx #1 address@hidden in
invalid con/
+\defindex tex-src/texinfo.tex
/^\\def\\defindex{\\parsearg\\newindex}$/
+\defivar tex-src/texinfo.tex
/^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+\defivarheader tex-src/texinfo.tex /^\\def\\defivarheader #1#2#3{%$/
+\defivarx tex-src/texinfo.tex /^\\def\\defivarx #1 address@hidden in
invalid/
+\defmac tex-src/texinfo.tex
/^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+\defmacheader tex-src/texinfo.tex /^\\def\\defmacheader #1#2{\\doind
{fn}{\\code{#1}}% Mak/
+\defmacx tex-src/texinfo.tex /^\\def\\defmacx #1 address@hidden in
invalid c/
+\defmethod tex-src/texinfo.tex
/^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+\defmethodheader tex-src/texinfo.tex /^\\def\\defmethodheader
#1#2#3{%$/
+\defmethodx tex-src/texinfo.tex /^\\def\\defmethodx #1 address@hidden
in inv/
+\defmethparsebody tex-src/texinfo.tex /^\\def\\defmethparsebody
#1#2#3#4 {\\begingroup\\inENV /
+\defname tex-src/texinfo.tex /^\\def\\defname #1#2{%$/
+\defop tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
+\defopheader tex-src/texinfo.tex /^\\def\\defopheader #1#2#3{%$/
+\defopparsebody tex-src/texinfo.tex /^\\def\\defopparsebody
#1#2#3#4#5 {\\begingroup\\inENV /
+\defopt tex-src/texinfo.tex
/^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+\defoptheader tex-src/texinfo.tex /^\\def\\defoptheader #1#2{\\doind
{vr}{\\code{#1}}% Mak/
+\defoptx tex-src/texinfo.tex /^\\def\\defoptx #1 address@hidden in
invalid c/
+\defopvarparsebody tex-src/texinfo.tex /^\\def\\defopvarparsebody
#1#2#3#4#5 {\\begingroup\\inE/
+\defopx tex-src/texinfo.tex /^\\def\\defopx #1 address@hidden in
invalid con/
+\defparsebody tex-src/texinfo.tex /^\\def\\defparsebody
#1#2#3{\\begingroup\\inENV% Enviro/
+\defspec tex-src/texinfo.tex
/^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
+\defspecheader tex-src/texinfo.tex /^\\def\\defspecheader #1#2{\\doind
{fn}{\\code{#1}}% Ma/
+\defspecx tex-src/texinfo.tex /^\\def\\defspecx #1 address@hidden in
invalid/
+\deftp tex-src/texinfo.tex
/^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+\deftpargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf
\\defvarargs{#1}}$/
+\deftpheader tex-src/texinfo.tex /^\\def\\deftpheader #1#2#3{\\doind
{tp}{\\code{#2}}%$/
+\deftpx tex-src/texinfo.tex /^\\def\\deftpx #1 address@hidden in
invalid con/
+\deftypefn tex-src/texinfo.tex
/^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
+\deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefnheader
#1#2#3{\\deftypefnheaderx{#1}{/
+\deftypefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheaderx
#1#2#3 #4\\relax{%$/
+\deftypefnx tex-src/texinfo.tex /^\\def\\deftypefnx #1 address@hidden
in inv/
+\deftypefun tex-src/texinfo.tex
/^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+\deftypefunargs tex-src/texinfo.tex /^\\def\\deftypefunargs #1{%$/
+\deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefunheader
#1#2{\\deftypefunheaderx{#1}#/
+\deftypefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheaderx #1#2
#3\\relax{%$/
+\deftypeunx tex-src/texinfo.tex /^\\def\\deftypeunx #1 address@hidden
in inv/
+\deftypevar tex-src/texinfo.tex
/^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+\deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevarheader
#1#2{%$/
+\deftypevarx tex-src/texinfo.tex /^\\def\\deftypevarx #1 address@hidden
in i/
+\deftypevr tex-src/texinfo.tex
/^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+\deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevrheader
#1#2#3{\\doind {vr}{\\code{#3}}/
+\deftypevrx tex-src/texinfo.tex /^\\def\\deftypevrx #1 address@hidden
in inv/
+\defun tex-src/texinfo.tex
/^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
+\defunargs tex-src/texinfo.tex /^\\def\\defunargs #1{\\functionparens
\\sl$/
+\defunheader tex-src/texinfo.tex /^\\def\\defunheader #1#2{\\doind
{fn}{\\code{#1}}% Make/
+\defunx tex-src/texinfo.tex /^\\def\\defunx #1 address@hidden in
invalid con/
+\defvar tex-src/texinfo.tex
/^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
+\defvarargs tex-src/texinfo.tex /^\\def\\defvarargs #1{\\normalparens
#1%$/
+\defvarheader tex-src/texinfo.tex /^\\def\\defvarheader #1#2{\\doind
{vr}{\\code{#1}}% Mak/
+\defvarparsebody tex-src/texinfo.tex /^\\def\\defvarparsebody
#1#2#3{\\begingroup\\inENV% Env/
+\defvarx tex-src/texinfo.tex /^\\def\\defvarx #1 address@hidden in
invalid c/
+\defvr tex-src/texinfo.tex
/^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+\defvrheader tex-src/texinfo.tex /^\\def\\defvrheader #1#2#3{\\doind
{vr}{\\code{#2}}%$/
+\defvrparsebody tex-src/texinfo.tex /^\\def\\defvrparsebody
#1#2#3#4 {\\begingroup\\inENV %$/
+\defvrx tex-src/texinfo.tex /^\\def\\defvrx #1 address@hidden in
invalid con/
+\description tex-src/texinfo.tex
/^\\def\\description{\\tablez{\\dontindex}{1}{}{}{}{}}$/
+\df tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf =
\\defbf \\bf}/
+\dfn tex-src/texinfo.tex /^\\def\\dfn##1{\\realbackslash dfn {##1}}$/
+\direntry tex-src/texinfo.tex
/^\\def\\direntry{\\begingroup\\direntryxxx}$/
+\direntryxxx tex-src/texinfo.tex /^\\long\\def\\direntryxxx #1\\end
direntry{\\endgroup\\ig/
+\display tex-src/texinfo.tex /^\\def\\display{\\begingroup\\inENV
%This group ends at/
+\dmn tex-src/texinfo.tex /^\\def\\dmn#1{\\thinspace #1}$/
+\dobreak tex-src/texinfo.tex
/^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/
+\dochapentry tex-src/texinfo.tex /^\\def\\dochapentry#1#2{%$/
+\docodeindex tex-src/texinfo.tex
/^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
+\doind tex-src/texinfo.tex /^\\def\\doind #1#2{%$/
+\doindex tex-src/texinfo.tex
/^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
+\donoderef tex-src/texinfo.tex
/^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/
+\dontindex tex-src/texinfo.tex /^\\def\\dontindex #1{}$/
+\dopageno tex-src/texinfo.tex /^\\def\\dopageno#1{{\\rm #1}}$/
+\doprintindex tex-src/texinfo.tex /^\\def\\doprintindex#1{%$/
+\dosecentry tex-src/texinfo.tex /^\\def\\dosecentry#1#2{%$/
+\dosetq tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0
\\turnoffactive%$/
+\doshortpageno tex-src/texinfo.tex /^\\def\\doshortpageno#1{{\\rm #1}}$/
+\dosubind tex-src/texinfo.tex /^\\def\\dosubind #1#2#3{%$/
+\dosubsecentry tex-src/texinfo.tex /^\\def\\dosubsecentry#1#2{%$/
+\dosubsubsecentry tex-src/texinfo.tex
/^\\def\\dosubsubsecentry#1#2{%$/
+\dots tex-src/texinfo.tex /^\\def\\dots{$\\ldots$}$/
+\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots }%$/
+\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots}$/
+\doublecolumnout tex-src/texinfo.tex
/^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/
+\emph tex-src/texinfo.tex /^\\def\\emph##1{\\realbackslash emph {##1}}$/
+\end tex-src/texinfo.tex /^\\def\\end{\\parsearg\\endxxx}$/
+\enddoublecolumns tex-src/texinfo.tex
/^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/
+\endxxx tex-src/texinfo.tex /^\\def\\endxxx #1{%$/
+\entry tex-src/texinfo.tex /^\\def\\entry #1#2{\\begingroup$/
+\enumerate tex-src/texinfo.tex
/^\\def\\enumerate{\\parsearg\\enumeratezzz}$/
+\enumeratey tex-src/texinfo.tex /^\\def\\enumeratey #1
#2\\endenumeratey{%$/
+\enumeratezzz tex-src/texinfo.tex /^\\def\\enumeratezzz #1{\\enumeratey
#1 \\endenumerate/
+\equiv tex-src/texinfo.tex /^\\def\\equiv{\\realbackslash equiv}$/
+\equiv tex-src/texinfo.tex /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to
1em{\\hfil/
+\error tex-src/texinfo.tex
/^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/
+\errorE tex-src/texinfo.tex /^\\def\\errorE#1{$/
+\evenfooting tex-src/texinfo.tex
/^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/
+\evenheading tex-src/texinfo.tex
/^\\def\\evenheading{\\parsearg\\evenheadingxxx}$/
+\everyfooting tex-src/texinfo.tex
/^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/
+\everyheading tex-src/texinfo.tex
/^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/
+\ewbot tex-src/texinfo.tex /^\\def\\ewbot{\\vrule height0pt
depth\\cornerthick widt/
+\ewtop tex-src/texinfo.tex /^\\def\\ewtop{\\vrule height\\cornerthick
depth0pt widt/
+\exdent tex-src/texinfo.tex /^\\def\\exdent{\\parsearg\\exdentyyy}$/
+\exdentyyy tex-src/texinfo.tex /^\\def\\exdentyyy
#1{{\\hfil\\break\\hbox{\\kern -\\exdent/
+\expansion tex-src/texinfo.tex /^\\def\\expansion{\\realbackslash
expansion}$/
+\expansion tex-src/texinfo.tex
/^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/
+\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}%$/
+\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}$/
+\finalout tex-src/texinfo.tex /^\\def\\finalout{\\overfullrule=0pt}$/
+\findex tex-src/texinfo.tex /^\\def\\findex {\\fnindex}$/
+\finishtitlepage tex-src/texinfo.tex /^\\def\\finishtitlepage{%$/
+\flushcr tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar
\\def\\next##1{}\\else /
+\flushleft tex-src/texinfo.tex /^\\def\\flushleft{%$/
+\flushright tex-src/texinfo.tex /^\\def\\flushright{%$/
+\fnitemindex tex-src/texinfo.tex /^\\def\\fnitemindex #1{\\doind
{fn}{\\code{#1}}}%$/
+\format tex-src/texinfo.tex /^\\def\\format{\\begingroup\\inENV
%This group ends at /
+\frenchspacing tex-src/texinfo.tex /^\\def\\frenchspacing{\\sfcode46=1000
\\sfcode63=1000 \\/
+\ftable tex-src/texinfo.tex
/^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+\gloggingall tex-src/texinfo.tex /^\\def\\gloggingall{\\begingroup
\\globaldefs = 1 \\logg/
+\group tex-src/texinfo.tex /^\\def\\group{\\begingroup$/
+\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}%$/
+\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}$/
+\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}%$/
+\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/
+\heading tex-src/texinfo.tex
/^\\def\\heading{\\parsearg\\secheadingi}$/
+\headings tex-src/texinfo.tex /^\\def\\headings #1 {\\csname
HEADINGS#1\\endcsname}$/
+\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}%$/
+\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}$/
+\ifclear tex-src/texinfo.tex
/^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/
+\ifclearfail tex-src/texinfo.tex
/^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/
+\ifclearfailxxx tex-src/texinfo.tex /^\\long\\def\\ifclearfailxxx
#1\\end ifclear{\\endgroup\\/
+\ifclearxxx tex-src/texinfo.tex /^\\def\\ifclearxxx #1{\\endgroup$/
+\ifinfo tex-src/texinfo.tex
/^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/
+\ifinfoxxx tex-src/texinfo.tex /^\\long\\def\\ifinfoxxx #1\\end
ifinfo{\\endgroup\\ignore/
+\ifset tex-src/texinfo.tex
/^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/
+\ifsetfail tex-src/texinfo.tex
/^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/
+\ifsetfailxxx tex-src/texinfo.tex /^\\long\\def\\ifsetfailxxx #1\\end
ifset{\\endgroup\\igno/
+\ifsetxxx tex-src/texinfo.tex /^\\def\\ifsetxxx #1{\\endgroup$/
+\iftex tex-src/texinfo.tex /^\\def\\iftex{}$/
+\ifusingtt tex-src/texinfo.tex /^\\def\\ifusingtt#1#2{\\ifdim
\\fontdimen3\\the\\font=0pt/
+\ignore tex-src/texinfo.tex
/^\\def\\ignore{\\begingroup\\ignoresections$/
+\ignoresections tex-src/texinfo.tex /^\\def\\ignoresections{%$/
+\ignorexxx tex-src/texinfo.tex /^\\long\\def\\ignorexxx #1\\end
ignore{\\endgroup\\ignore/
+\ii tex-src/texinfo.tex /^\\def\\ii#1{{\\it #1}} %
italic font$/
+\inENV tex-src/texinfo.tex /^\\newif\\ifENV \\ENVfalse
\\def\\inENV{\\ifENV\\relax\\els/
+\include tex-src/texinfo.tex
/^\\def\\include{\\parsearg\\includezzz}$/
+\includezzz tex-src/texinfo.tex /^\\def\\includezzz
#1{{\\def\\thisfile{#1}\\input #1$/
+\indexbackslash tex-src/texinfo.tex /^
\\def\\indexbackslash{\\rawbackslashxx}$/
+\indexdotfill tex-src/texinfo.tex /^\\def\\indexdotfill{\\cleaders$/
+\indexdummies tex-src/texinfo.tex /^\\def\\indexdummies{%$/
+\indexdummydots tex-src/texinfo.tex /^\\def\\indexdummydots{...}$/
+\indexdummyfont tex-src/texinfo.tex /^\\def\\indexdummyfont#1{#1}$/
+\indexdummytex tex-src/texinfo.tex /^\\def\\indexdummytex{TeX}$/
+\indexfonts tex-src/texinfo.tex /^\\def\\indexfonts{%$/
+\indexnofonts tex-src/texinfo.tex /^\\def\\indexnofonts{%$/
+\infoappendix tex-src/texinfo.tex
/^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
+\infoappendixsec tex-src/texinfo.tex
/^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
+\infoappendixsubsec tex-src/texinfo.tex
/^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
+\infoappendixsubsubsec tex-src/texinfo.tex
/^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
+\infochapter tex-src/texinfo.tex
/^\\def\\infochapter{\\parsearg\\chapterzzz}$/
+\inforef tex-src/texinfo.tex /^\\def\\inforef #1{\\inforefzzz
#1,,,,**}$/
+\inforefzzz tex-src/texinfo.tex /^\\def\\inforefzzz #1,#2,#3,#4**{See
Info file \\file{/
+\infosection tex-src/texinfo.tex
/^\\def\\infosection{\\parsearg\\sectionzzz}$/
+\infosubsection tex-src/texinfo.tex
/^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
+\infosubsubsection tex-src/texinfo.tex
/^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
+\infotop tex-src/texinfo.tex
/^\\def\\infotop{\\parsearg\\unnumberedzzz}$/
+\infounnumbered tex-src/texinfo.tex
/^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/
+\infounnumberedsec tex-src/texinfo.tex
/^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/
+\infounnumberedsubsec tex-src/texinfo.tex
/^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/
+\infounnumberedsubsubsec tex-src/texinfo.tex
/^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/
+\initial tex-src/texinfo.tex /^\\def\\initial #1{%$/
+\internalBitem tex-src/texinfo.tex /^\\def\\internalBitem{\\smallbreak
\\parsearg\\itemzzz}$/
+\internalBitemx tex-src/texinfo.tex /^\\def\\internalBitemx{\\par
\\parsearg\\itemzzz}$/
+\internalBkitem tex-src/texinfo.tex
/^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/
+\internalBkitemx tex-src/texinfo.tex /^\\def\\internalBkitemx{\\par
\\parsearg\\kitemzzz}$/
+\internalBxitem tex-src/texinfo.tex /^\\def\\internalBxitem
"#1"{\\def\\xitemsubtopix{#1} \\s/
+\internalBxitemx tex-src/texinfo.tex /^\\def\\internalBxitemx
"#1"{\\def\\xitemsubtopix{#1} \\/
+\internalsetq tex-src/texinfo.tex /^\\def\\internalsetq #1#2{'xrdef
{#1}{\\csname #2\\endc/
+\item tex-src/texinfo.tex /address@hidden while not in a table}}/
+\itemcontents tex-src/texinfo.tex /^\\def\\itemcontents{#1}%$/
+\itemfont tex-src/texinfo.tex /^\\def\\itemfont{#2}%$/
+\itemize tex-src/texinfo.tex
/^\\def\\itemize{\\parsearg\\itemizezzz}$/
+\itemizeitem tex-src/texinfo.tex /^\\def\\itemizeitem{%$/
+\itemizey tex-src/texinfo.tex /^\\def\\itemizey #1#2{%$/
+\itemizezzz tex-src/texinfo.tex /^\\def\\itemizezzz #1{%$/
+\itemx tex-src/texinfo.tex /address@hidden while not in a table/
+\itemzzz tex-src/texinfo.tex /^\\def\\itemzzz #1{\\begingroup %$/
+\kbd tex-src/texinfo.tex
/^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
+\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/
+\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/
+\kbdfoo tex-src/texinfo.tex
/^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+\key tex-src/texinfo.tex /^\\def\\key #1{{\\tt
\\exhyphenpenalty=10000\\uppercase{/
+\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}%$/
+\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}$/
+\kindex tex-src/texinfo.tex /^\\def\\kindex {\\kyindex}$/
+\kitem tex-src/texinfo.tex /address@hidden while not in a table/
+\kitemx tex-src/texinfo.tex /address@hidden while not in a tab/
+\kitemzzz tex-src/texinfo.tex /^\\def\\kitemzzz #1{\\dosubind
{kw}{\\code{#1}}{for {\\b/
+\l tex-src/texinfo.tex /^\\def\\l#1{{\\li #1}\\null} % $/
+\labelspace tex-src/texinfo.tex /^\\def\\labelspace{\\hskip1em
\\relax}$/
+\lbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}}
\\def\\rbrb{{\\bf\\char`\\]}}$/
+\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}%$/
+\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}$/
+\linenumber tex-src/texinfo.tex /^
\\def\\linenumber{\\the\\inputlineno:\\space}$/
+\lisp tex-src/texinfo.tex /^\\def\\lisp{\\aboveenvbreak$/
+\loggingall tex-src/texinfo.tex /^\\def\\loggingall{\\tracingcommands2
\\tracingstats2 $/
+\losespace tex-src/texinfo.tex /^\\def\\losespace #1{#1}$/
+\lowercaseenumerate tex-src/texinfo.tex /^\\def\\lowercaseenumerate{%$/
+\lvvmode tex-src/texinfo.tex /^\\def\\lvvmode{\\vbox to 0pt{}}$/
+\majorheading tex-src/texinfo.tex
/^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/
+\majorheadingzzz tex-src/texinfo.tex /^\\def\\majorheadingzzz #1{%$/
+\math tex-src/texinfo.tex /^\\def\\math#1{\\implicitmath
#1\\implicitmath}$/
+\menu tex-src/texinfo.tex /^\\long\\def\\menu #1\\end menu{}$/
+\minus tex-src/texinfo.tex /^\\def\\minus{$-$}$/
+\mylbrace tex-src/texinfo.tex /^\\def\\mylbrace {{\\tt \\char '173}}$/
+\myrbrace tex-src/texinfo.tex /^\\def\\myrbrace {{\\tt \\char '175}}$/
+\need tex-src/texinfo.tex /^\\def\\need{\\parsearg\\needx}$/
+\needx tex-src/texinfo.tex /^\\def\\needx#1{%$/
+\newcodeindex tex-src/texinfo.tex /^\\def\\newcodeindex #1{$/
+\newindex tex-src/texinfo.tex /^\\def\\newindex #1{$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+\nm tex-src/testenv.tex
/^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/
+\node tex-src/texinfo.tex /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/
+\nodexxx[ tex-src/texinfo.tex
/^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
+\nodezzz tex-src/texinfo.tex /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/
+\nofillexdent tex-src/texinfo.tex
/^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/
+\nofillexdentyyy tex-src/texinfo.tex /^\\def\\nofillexdentyyy
#1{{\\advance \\leftskip by -\\e/
+\normalbackslash tex-src/texinfo.tex
/^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/
+\normalcaret tex-src/texinfo.tex /^\\def\\normalcaret{^}$/
+\normaldoublequote tex-src/texinfo.tex /^\\def\\normaldoublequote{"}$/
+\normalgreater tex-src/texinfo.tex /^\\def\\normalgreater{>}$/
+\normalless tex-src/texinfo.tex /^\\def\\normalless{<}$/
+\normalplus tex-src/texinfo.tex /^\\def\\normalplus{+}$/
+\normaltilde tex-src/texinfo.tex /^\\def\\normaltilde{~}$/
+\normalunderscore tex-src/texinfo.tex /^\\def\\normalunderscore{_}$/
+\normalverticalbar tex-src/texinfo.tex /^\\def\\normalverticalbar{|}$/
+\nsbot tex-src/texinfo.tex /^\\def\\nsbot{\\vbox$/
+\nstop tex-src/texinfo.tex /^\\def\\nstop{\\vbox$/
+\numberedsec tex-src/texinfo.tex
/^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/
+\numberedsubsec tex-src/texinfo.tex
/^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/
+\numberedsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubseczzz
#1{\\seccheck{subsection}%$/
+\numberedsubsubsec tex-src/texinfo.tex
/^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/
+\numberedsubsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubsubseczzz
#1{\\seccheck{subsubsecti/
+\numericenumerate tex-src/texinfo.tex /^\\def\\numericenumerate{%$/
+\oddfooting tex-src/texinfo.tex
/^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/
+\oddheading tex-src/texinfo.tex
/^\\def\\oddheading{\\parsearg\\oddheadingxxx}$/
+\onepageout tex-src/texinfo.tex
/^\\def\\onepageout#1{\\hoffset=\\normaloffset$/
+\opencontents tex-src/texinfo.tex /^\\def\\opencontents{\\openout
\\contentsfile = \\jobnam/
+\openindices tex-src/texinfo.tex /^\\def\\openindices{%$/
+\opnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}}
\\def\\clnr{{\\sf\\char`\\)}} /
+\page tex-src/texinfo.tex /^\\def\\page{\\par\\vfill\\supereject}$/
+\page tex-src/texinfo.tex /^ \\def\\page{%$/
+\pagebody tex-src/texinfo.tex /^\\def\\pagebody#1{\\vbox
to\\pageheight{\\boxmaxdepth=\\/
+\pagesofar tex-src/texinfo.tex
/^\\def\\pagesofar{\\unvbox\\partialpage %$/
+\parsearg tex-src/texinfo.tex /^\\def\\parsearg
#1{\\let\\next=#1\\begingroup\\obeylines/
+\parseargline tex-src/texinfo.tex /^\\def\\parseargline{\\begingroup
\\obeylines \\parsearg/
+\parseargx tex-src/texinfo.tex /^\\def\\parseargx{%$/
+\pindex tex-src/texinfo.tex /^\\def\\pindex {\\pgindex}$/
+\plainsecheading tex-src/texinfo.tex /^\\def\\plainsecheading
#1{\\secheadingi {#1}}$/
+\point tex-src/texinfo.tex /^\\def\\point{$\\star$}$/
+\primary tex-src/texinfo.tex /^\\def\\primary #1{\\line{#1\\hfil}}$/
+\print tex-src/texinfo.tex /^\\def\\print{\\realbackslash print}$/
+\print tex-src/texinfo.tex /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to
1em{\\hfil/
+\printedmanual tex-src/texinfo.tex /^\\def\\printedmanual{\\ignorespaces
#5}%$/
+\printedmanual tex-src/texinfo.tex /^section ``\\printednodename'' in
\\cite{\\printedmanu/
+\printednodename tex-src/texinfo.tex
/^\\def\\printednodename{\\ignorespaces #3}%$/
+\printednodename tex-src/texinfo.tex
/^\\def\\printednodename{\\ignorespaces #1}%$/
+\printindex tex-src/texinfo.tex
/^\\def\\printindex{\\parsearg\\doprintindex}$/
+\pxref tex-src/texinfo.tex /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/
+\quotation tex-src/texinfo.tex /^\\def\\quotation{%$/
+\r tex-src/texinfo.tex /^\\def\\r#1{{\\rm #1}} % roman font$/
+\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}%$/
+\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}$/
+\rawbackslashxx tex-src/texinfo.tex
/^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
+\rawbackslashxx tex-src/texinfo.tex
/^\\def\\rawbackslashxx{\\indexbackslash}%$/
+\readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/
+\ref tex-src/texinfo.tex /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/
+\refx tex-src/texinfo.tex /^\\def\\refx#1#2{%$/
+\resetmathfonts tex-src/texinfo.tex /^\\def\\resetmathfonts{%$/
+\result tex-src/texinfo.tex /^\\def\\result{\\realbackslash
result}$/
+\result tex-src/texinfo.tex
/^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/
+\rm tex-src/texinfo.tex /^\\def\\rm{\\realbackslash rm }%$/
+\samp tex-src/texinfo.tex /^\\def\\samp #1{`\\tclose{#1}'\\null}$/
+\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}%$/
+\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}$/
+\sc tex-src/texinfo.tex /^\\def\\sc#1{{\\smallcaps#1}} % smallcaps
font$/
+\seccheck tex-src/texinfo.tex /^\\def\\seccheck#1{\\if \\pageno<0 %$/
+\secentry tex-src/texinfo.tex /^ \\def\\secentry ##1##2##3##4{}$/
+\secentry tex-src/texinfo.tex
/^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
+\secentryfonts tex-src/texinfo.tex /^\\def\\secentryfonts{\\textfonts}$/
+\secfonts tex-src/texinfo.tex /^\\def\\secfonts{%$/
+\secheading tex-src/texinfo.tex /^\\def\\secheading
#1#2#3{\\secheadingi {#2.#3\\enspace/
+\secheadingbreak tex-src/texinfo.tex
/^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/
+\secheadingi tex-src/texinfo.tex /^\\def\\secheadingi #1{{\\advance
\\secheadingskip by \\/
+\secondary tex-src/texinfo.tex /^\\def\\secondary #1#2{$/
+\seczzz tex-src/texinfo.tex /^\\def\\seczzz
#1{\\seccheck{section}%$/
+\set tex-src/texinfo.tex /^\\def\\set{\\parsearg\\setxxx}$/
+\setchapternewpage tex-src/texinfo.tex /^\\def\\setchapternewpage #1
{\\csname CHAPPAG#1\\endcs/
+\setchapterstyle tex-src/texinfo.tex /^\\def\\setchapterstyle #1
{\\csname CHAPF#1\\endcsname/
+\setdeffont tex-src/texinfo.tex /^\\def\\setdeffont #1 {\\csname
DEF#1\\endcsname}$/
+\setfilename tex-src/texinfo.tex /^\\def\\setfilename{%$/
+\setref tex-src/texinfo.tex /^\\def\\setref#1{%$/
+\settitle tex-src/texinfo.tex
/^\\def\\settitle{\\parsearg\\settitlezzz}$/
+\settitlezzz tex-src/texinfo.tex /^\\def\\settitlezzz
#1{\\gdef\\thistitle{#1}}$/
+\setxxx tex-src/texinfo.tex /^\\def\\setxxx #1{$/
+\sf tex-src/texinfo.tex /^\\def\\sf{\\fam=\\sffam \\tensf}$/
+\sf tex-src/texinfo.tex /^\\def\\sf{\\realbackslash sf}%$/
+\shortchapentry tex-src/texinfo.tex
/^\\def\\shortchapentry#1#2#3{%$/
+\shortunnumberedentry tex-src/texinfo.tex
/^\\def\\shortunnumberedentry#1#2{%$/
+\singlecodeindexer tex-src/texinfo.tex /^\\def\\singlecodeindexer
#1{\\doind{\\indexname}{\\code/
+\singleindexer tex-src/texinfo.tex /^\\def\\singleindexer
#1{\\doind{\\indexname}{#1}}$/
+\singlespace tex-src/texinfo.tex /^\\def\\singlespace{%$/
+\sl tex-src/texinfo.tex /^\\def\\sl{\\realbackslash sl }%$/
+\smallbook tex-src/texinfo.tex /^\\def\\smallbook{$/
+\smalllispx tex-src/texinfo.tex
/^\\def\\smalllispx{\\aboveenvbreak\\begingroup\\inENV$/
+\smartitalic tex-src/texinfo.tex /^\\def\\smartitalic#1{{\\sl
#1}\\futurelet\\next\\smartit/
+\smartitalicx tex-src/texinfo.tex
/^\\def\\smartitalicx{\\ifx\\next,\\else\\ifx\\next-\\else\\i/
+\sp tex-src/texinfo.tex /^\\def\\sp{\\parsearg\\spxxx}$/
+\splitoff tex-src/texinfo.tex
/^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
+\spxxx tex-src/texinfo.tex /^\\def\\spxxx #1{\\par \\vskip
#1\\baselineskip}$/
+\startcontents tex-src/texinfo.tex /^\\def\\startcontents#1{%$/
+\startenumeration tex-src/texinfo.tex /^\\def\\startenumeration#1{%$/
+\subheading tex-src/texinfo.tex
/^\\def\\subheading{\\parsearg\\subsecheadingi}$/
+\subsecentry tex-src/texinfo.tex /^ \\def\\subsecentry
##1##2##3##4##5{}$/
+\subsecentry tex-src/texinfo.tex
/^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
+\subsecfonts tex-src/texinfo.tex /^\\def\\subsecfonts{%$/
+\subsecheading tex-src/texinfo.tex /^\\def\\subsecheading
#1#2#3#4{\\subsecheadingi {#2.#3/
+\subsecheadingbreak tex-src/texinfo.tex
/^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/
+\subsecheadingi tex-src/texinfo.tex /^\\def\\subsecheadingi
#1{{\\advance \\subsecheadingski/
+\subsubheading tex-src/texinfo.tex
/^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/
+\subsubsecentry tex-src/texinfo.tex /^ \\def\\subsubsecentry
##1##2##3##4##5##6{}$/
+\subsubsecentry tex-src/texinfo.tex
/^\\def\\subsubsecentry#1#2#3#4#5#6{%$/
+\subsubsecfonts tex-src/texinfo.tex
/^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/
+\subsubsecheading tex-src/texinfo.tex /^\\def\\subsubsecheading
#1#2#3#4#5{\\subsubsecheading/
+\subsubsecheadingi tex-src/texinfo.tex /^\\def\\subsubsecheadingi
#1{{\\advance \\subsecheading/
+\subtitle tex-src/texinfo.tex /^
\\def\\subtitle{\\parsearg\\subtitlezzz}%$/
+\subtitlefont tex-src/texinfo.tex /^ \\def\\subtitlefont{\\subtitlerm
\\normalbaselinesk/
+\subtitlezzz tex-src/texinfo.tex /^
\\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/
+\summarycontents tex-src/texinfo.tex
/^\\outer\\def\\summarycontents{%$/
+\supereject tex-src/texinfo.tex /^\\def\\supereject{\\par\\penalty
-20000\\footnoteno =0 /
+\syncodeindex tex-src/texinfo.tex /^\\def\\syncodeindex #1 #2 {%$/
+\synindex tex-src/texinfo.tex /^\\def\\synindex #1 #2 {%$/
+\t tex-src/texinfo.tex /^\\def\\t#1{{\\tt
\\exhyphenpenalty=10000\\rawbackslash /
+\t tex-src/texinfo.tex /^\\def\\t##1{\\realbackslash r {##1}}%$/
+\table tex-src/texinfo.tex
/^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspaces\\/
+\tablez tex-src/texinfo.tex /^\\def\\tablez #1#2#3#4#5#6{%$/
+\tclose tex-src/texinfo.tex /^\\def\\tclose#1{{\\rm
\\tcloserm=\\fontdimen2\\font \\tt /
+\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash
tclose {##1}}%$/
+\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash
tclose {##1}}$/
+\tex tex-src/texinfo.tex /^\\def\\tex{\\begingroup$/
+\texinfoversion tex-src/texinfo.tex /^\\def\\texinfoversion{2.73}$/
+\textfonts tex-src/texinfo.tex /^\\def\\textfonts{%$/
+\thearg tex-src/texinfo.tex /^ \\def\\thearg{#1}%$/
+\thearg tex-src/texinfo.tex /^ \\ifx\\thearg\\empty
\\def\\thearg{1}\\fi$/
+\thischapter tex-src/texinfo.tex /^\\def\\thischapter{}
\\def\\thissection{}$/
+\thischapter tex-src/texinfo.tex /^
\\unnumbchapmacro{#1}\\def\\thischapter{}%$/
+\thischaptername tex-src/texinfo.tex /^\\def\\thischaptername{No
Chapter Title}$/
+\thisfile tex-src/texinfo.tex /^\\def\\thisfile{}$/
+\thistitle tex-src/texinfo.tex /^\\def\\thistitle{No Title}$/
+\tie tex-src/texinfo.tex /^\\def\\tie{\\penalty 10000\\ } % Save
plain tex de/
+\tindex tex-src/texinfo.tex /^\\def\\tindex {\\tpindex}$/
+\title tex-src/texinfo.tex /^ \\def\\title{\\parsearg\\titlezzz}%$/
+\titlefont tex-src/texinfo.tex /^\\def\\titlefont#1{{\\titlerm #1}}$/
+\titlepage tex-src/texinfo.tex /^\\def\\titlepage{\\begingroup
\\parindent=0pt \\textfon/
+\titlezzz tex-src/texinfo.tex /^
\\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/
+\today tex-src/texinfo.tex /^\\def\\today{\\number\\day\\space$/
+\top tex-src/texinfo.tex /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/
+\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}%$/
+\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}$/
+\turnoffactive tex-src/texinfo.tex
/^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
+\unnchfopen tex-src/texinfo.tex /^\\def\\unnchfopen #1{%$/
+\unnchfplain tex-src/texinfo.tex /^\\def\\unnchfplain #1{%$/
+\unnumbchapentry tex-src/texinfo.tex
/^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/
+\unnumbered tex-src/texinfo.tex
/^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/
+\unnumberedsec tex-src/texinfo.tex
/^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/
+\unnumberedseczzz tex-src/texinfo.tex /^\\def\\unnumberedseczzz
#1{\\seccheck{unnumberedsec}%/
+\unnumberedsubsec tex-src/texinfo.tex
/^\\outer\\def\\unnumberedsubsec{\\parsearg\\unnumberedsu/
+\unnumberedsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubseczzz
#1{\\seccheck{unnumberedsu/
+\unnumberedsubsubsec tex-src/texinfo.tex
/^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/
+\unnumberedsubsubseczzz tex-src/texinfo.tex
/^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/
+\unnumberedzzz tex-src/texinfo.tex /^\\def\\unnumberedzzz
#1{\\seccheck{unnumbered}%$/
+\unnumbnoderef tex-src/texinfo.tex
/^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/
+\unnumbsecentry tex-src/texinfo.tex /^ \\def\\unnumbsecentry
##1##2{}$/
+\unnumbsecentry tex-src/texinfo.tex
/^\\def\\unnumbsecentry#1#2{\\dosecentry{#1}{#2}}$/
+\unnumbsetref tex-src/texinfo.tex /^\\def\\unnumbsetref#1{%$/
+\unnumbsubsecentry tex-src/texinfo.tex /^
\\def\\unnumbsubsecentry ##1##2{}$/
+\unnumbsubsecentry tex-src/texinfo.tex
/^\\def\\unnumbsubsecentry#1#2{\\dosubsecentry{#1}{#2}}/
+\unnumbsubsubsecentry tex-src/texinfo.tex /^
\\def\\unnumbsubsubsecentry ##1##2{}$/
+\unnumbsubsubsecentry tex-src/texinfo.tex
/^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/
+\uppercaseenumerate tex-src/texinfo.tex /^\\def\\uppercaseenumerate{%$/
+\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}%$/
+\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}$/
+\vindex tex-src/texinfo.tex /^\\def\\vindex {\\vrindex}$/
+\vritemindex tex-src/texinfo.tex /^\\def\\vritemindex #1{\\doind
{vr}{\\code{#1}}}%$/
+\vtable tex-src/texinfo.tex
/^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+\w tex-src/texinfo.tex /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/
+\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w }%$/
+\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w}$/
+\xitem tex-src/texinfo.tex /address@hidden while not in a table/
+\xitemx tex-src/texinfo.tex /address@hidden while not in a tab/
+\xitemzzz tex-src/texinfo.tex /^\\def\\xitemzzz #1{\\dosubind
{kw}{\\code{#1}}{for {\\b/
+\xkey tex-src/texinfo.tex /^\\def\\xkey{\\key}$/
+\xrdef tex-src/texinfo.tex /^\\def\\xrdef #1#2{$/
+\xref tex-src/texinfo.tex /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/
+\xrefX[ tex-src/texinfo.tex
/^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/
+^ tex-src/texinfo.tex /^\\def^{{\\tt \\hat}}$/
+_ tex-src/texinfo.tex /^\\def_{\\ifusingtt\\normalunderscore\\_}$/
+_GETOPT_H c-src/getopt.h 19
+_GNU_SOURCE c-src/etags.c 94
+_REGEX_H c-src/emacs/src/regex.h 21
+_RE_SYNTAX_POSIX_COMMON c-src/emacs/src/regex.h 221
+_Restrict_ c-src/emacs/src/regex.h 540
+_Restrict_ c-src/emacs/src/regex.h 542
+_Restrict_ c-src/emacs/src/regex.h 544
+_Restrict_arr_ c-src/emacs/src/regex.h 555
+_Restrict_arr_ c-src/emacs/src/regex.h 557
+_UCHAR_T c-src/emacs/src/lisp.h 2423
+__COLORS cp-src/screen.hpp 9
+__default_morecore c-src/emacs/src/gmalloc.c /^__default_morecore
(ptrdiff_t increment)$/
+__init__ pyt-src/server.py /^ def __init__(self):$/
+__init__ pyt-src/server.py /^ def __init__(self):$/
+__init__ pyt-src/server.py /^ def __init__(self):$/
+__init__ pyt-src/server.py /^ def __init__(self, Master, text,
textvar, widt/
+__init__ pyt-src/server.py /^ def __init__(self, newlegend,
list, editor, ma/
+__init__ pyt-src/server.py /^ def __init__(self, host,
sitelist, master=None/
+__init__ pyt-src/server.py /^ def __init__(self, user,
userlist, master=None/
+__init__ pyt-src/server.py /^ def __init__(self, master=None):$/
+__ip c.c 159
+__libc_atexit c-src/exit.c 30
+__libc_atexit c-src/exit.strange_suffix 30
+__malloc_extra_blocks c-src/emacs/src/gmalloc.c 381
+__malloc_initialize c-src/emacs/src/gmalloc.c /^__malloc_initialize
(void)$/
+__malloc_initialized c-src/emacs/src/gmalloc.c 379
+__repr__ pyt-src/server.py /^ def __repr__(self):$/
+__repr__ pyt-src/server.py /^ def __repr__(self):$/
+__repr__ pyt-src/server.py /^ def __repr__(self):$/
+__sbrk c-src/emacs/src/gmalloc.c 1513
+__str__ pyt-src/server.py /^ def __str__(self):$/
+__str__ pyt-src/server.py /^ def __str__(self):$/
+__str__ pyt-src/server.py /^ def __str__(self):$/
+__up c.c 160
+_aligned_blocks c-src/emacs/src/gmalloc.c 1004
+_aligned_blocks_mutex c-src/emacs/src/gmalloc.c 518
+_bytes_free c-src/emacs/src/gmalloc.c 376
+_bytes_used c-src/emacs/src/gmalloc.c 374
+_chunks_free c-src/emacs/src/gmalloc.c 375
+_chunks_used c-src/emacs/src/gmalloc.c 373
+_fraghead c-src/emacs/src/gmalloc.c 370
+_free c-src/emacs/src/gmalloc.c /^_free (void *ptr)$/
+_free_internal c-src/emacs/src/gmalloc.c /^_free_internal (void *ptr)$/
+_free_internal_nolock c-src/emacs/src/gmalloc.c /^_free_internal_nolock
(void *ptr)$/
+_heapbase c-src/emacs/src/gmalloc.c 355
+_heapindex c-src/emacs/src/gmalloc.c 364
+_heapinfo c-src/emacs/src/gmalloc.c 358
+_heaplimit c-src/emacs/src/gmalloc.c 367
+_malloc c-src/emacs/src/gmalloc.c /^_malloc (size_t size)$/
+_malloc_internal c-src/emacs/src/gmalloc.c /^_malloc_internal
(size_t size)$/
+_malloc_internal_nolock c-src/emacs/src/gmalloc.c
/^_malloc_internal_nolock (size_t size)$/
+_malloc_mutex c-src/emacs/src/gmalloc.c 517
+_malloc_thread_enabled_p c-src/emacs/src/gmalloc.c 519
+_realloc c-src/emacs/src/gmalloc.c /^_realloc (void *ptr, size_t
size)$/
+_realloc_internal c-src/emacs/src/gmalloc.c /^_realloc_internal
(void *ptr, size_t size)$/
+_realloc_internal_nolock c-src/emacs/src/gmalloc.c
/^_realloc_internal_nolock (void *ptr, size_t size)$/
+a c.c 152
+a c.c 180
+a c.c /^a()$/
+a c.c /^a ()$/
+a c-src/h.h 40
+a c-src/h.h 103
+a-forth-constant! forth-src/test-forth.fth /^99 constant
a-forth-constant!$/
+a-forth-value? forth-src/test-forth.fth /^55 value a-forth-value?$/
+a-forth-word forth-src/test-forth.fth /^: a-forth-word ( a b c --
a*b+c ) + * ;$/
+a-forth-word forth-src/test-forth.fth /^: a-forth-word ( a b c -- )$/
+a0 c-src/emacs/src/lisp.h /^ Lisp_Object (*a0) (void);$/
+a1 c-src/emacs/src/lisp.h /^ Lisp_Object (*a1) (Lisp_Object);$/
+a2 c-src/emacs/src/lisp.h /^ Lisp_Object (*a2) (Lisp_Object,
Lisp_Object)/
+a3 c-src/emacs/src/lisp.h /^ Lisp_Object (*a3) (Lisp_Object,
Lisp_Object,/
+a4 c-src/emacs/src/lisp.h /^ Lisp_Object (*a4) (Lisp_Object,
Lisp_Object,/
+a5 c-src/emacs/src/lisp.h /^ Lisp_Object (*a5) (Lisp_Object,
Lisp_Object,/
+a6 c-src/emacs/src/lisp.h /^ Lisp_Object (*a6) (Lisp_Object,
Lisp_Object,/
+a7 c-src/emacs/src/lisp.h /^ Lisp_Object (*a7) (Lisp_Object,
Lisp_Object,/
+a8 c-src/emacs/src/lisp.h /^ Lisp_Object (*a8) (Lisp_Object,
Lisp_Object,/
+aMANY c-src/emacs/src/lisp.h /^ Lisp_Object (*aMANY) (ptrdiff_t,
Lisp_Object/
+aUNEVALLED c-src/emacs/src/lisp.h /^ Lisp_Object (*aUNEVALLED)
(Lisp_Object args)/
+aa c.c 269
+aa c.c 279
+aaa c.c 249
+aaa c.c 269
+aaaaaa c-src/h.h 111
+abbrev-expansion c-src/abbrev.c /^DEFUN ("abbrev-expansion",
Fabbrev_expansion, Sabb/
+abbrev-symbol c-src/abbrev.c /^DEFUN ("abbrev-symbol", Fabbrev_symbol,
Sabbrev_sy/
+abbrev_all_caps c-src/abbrev.c 57
+abbrevs_changed c-src/abbrev.c 55
+abc c-src/h.h 33
+abc c-src/h.h 37
+abort-recursive-edit c-src/emacs/src/keyboard.c /^DEFUN
("abort-recursive-edit", Fabort_recursive_ed/
+abs/f ada-src/etags-test-for.ada /^ function "abs" (Right : Complex)
return Real'/
+absolute_dirname c-src/etags.c /^absolute_dirname (char *file, char
*dir)$/
+absolute_filename c-src/etags.c /^absolute_filename (char *file, char
*dir)$/
+abstract_hh cp-src/abstract.H 16
+abt cp-src/c.C 55
+accent_key_syms c-src/emacs/src/keyboard.c 4625
+access_keymap_keyremap c-src/emacs/src/keyboard.c
/^access_keymap_keyremap (Lisp_Object map, Lisp_Obje/
+act prol-src/natded.prolog /^act(OutForm,OutSyn,Ws):-$/
+action prol-src/natded.prolog /^action(KeyVals):-$/
+active_maps c-src/emacs/src/keyboard.c /^active_maps (Lisp_Object
first_event)$/
+actout prol-src/natded.prolog /^actout('Text',Trees):-$/
+addArchs: objc-src/PackInsp.m /^-(void)addArchs:(const char *)string$/
+addPOReader php-src/lce_functions.php /^ function
addPOReader($d_name, &$por)$/
+add_active prol-src/natded.prolog /^add_active([],Cat,Goal):-$/
+add_command_key c-src/emacs/src/keyboard.c /^add_command_key
(Lisp_Object key)$/
+add_edge prol-src/natded.prolog /^add_edge(Left,Right,Cat):-$/
+add_node c-src/etags.c /^add_node (node *np, node **cur_node_p)$/
+add_regex c-src/etags.c /^add_regex (char *regexp_pattern, language
*lang)$/
+add_user_signal c-src/emacs/src/keyboard.c /^add_user_signal (int
sig, const char *name)$/
+addnoise html-src/algrthms.html /^Adding Noise to the$/
+address cccp.y 114
+address y-src/cccp.y 113
+adjust_point_for_property c-src/emacs/src/keyboard.c
/^adjust_point_for_property (ptrdiff_t last_pt, bool/
+agent cp-src/clheir.hpp 75
+agent::move cp-src/clheir.cpp /^void agent::move(int direction)$/
+agent::where cp-src/clheir.hpp 77
+algorithms html-src/algrthms.html /^Description$/
+alias c-src/emacs/src/lisp.h 688
+align c-src/emacs/src/gmalloc.c /^align (size_t size)$/
+alignas c-src/emacs/src/lisp.h /^# define alignas(alignment) \/* empty
*\/$/
+aligned c-src/emacs/src/gmalloc.c 199
+aligned_alloc c-src/emacs/src/gmalloc.c 71
+aligned_alloc c-src/emacs/src/gmalloc.c /^aligned_alloc (size_t
alignment, size_t size)$/
+aligned_alloc c-src/emacs/src/gmalloc.c 1718
+alignlist c-src/emacs/src/gmalloc.c 196
+all_kboards c-src/emacs/src/keyboard.c 86
+allocate_kboard c-src/emacs/src/keyboard.c /^allocate_kboard
(Lisp_Object type)$/
+allocated c-src/emacs/src/regex.h 344
+an_extern_linkage c-src/h.h 44
+an_extern_linkage c-src/h.h 56
+an_extern_linkage_ptr c-src/h.h 43
+analyze_regex c-src/etags.c /^analyze_regex (char *regex_arg)$/
+andkeyvalseq prol-src/natded.prolog /^andkeyvalseq(KeyVals) --> ['&'],
keyvalseq(KeyVals/
+animals c-src/h.h 81
+animals cp-src/c.C 126
+any_kboard_state c-src/emacs/src/keyboard.c /^any_kboard_state ()$/
+appDidInit: objcpp-src/SimpleCalc.M /^- appDidInit:sender$/
+append erl-src/lines.erl /^append(Line, {L, List}) when list(List), L <
?BREA/
+append erl-src/lists.erl /^append(X,Y) -> erlang:append(X, Y). %% A BIF
at l/
+append prol-src/natded.prolog /^append([],Xs,Xs).$/
+appendToDisplay: objcpp-src/SimpleCalc.M /^- appendToDisplay:(const char
*)theDigit$/
+append_list prol-src/natded.prolog /^append_list([],[]).$/
+append_string pas-src/common.pas /^procedure append_string;(*($/
+append_tool_bar_item c-src/emacs/src/keyboard.c /^append_tool_bar_item
(void)$/
+appendix perl-src/htlmify-cystic 24
+appendix_name perl-src/htlmify-cystic 13
+appendix_toc perl-src/htlmify-cystic 16
+apply_modifiers c-src/emacs/src/keyboard.c /^apply_modifiers (int
modifiers, Lisp_Object base)$/
+apply_modifiers_uncached c-src/emacs/src/keyboard.c
/^apply_modifiers_uncached (int modifiers, char *bas/
+aref_addr c-src/emacs/src/lisp.h /^aref_addr (Lisp_Object array,
ptrdiff_t idx)$/
+arg c-src/h.h 13
+arg_type c-src/etags.c 250
+arglist cccp.y 41
+arglist y-src/cccp.y 41
+argno cccp.y 45
+argno y-src/cccp.y 45
+args c-src/h.h 30
+argsindent tex-src/texinfo.tex /^\\newskip\\defargsindent
\\defargsindent=50pt$/
+argsindent tex-src/texinfo.tex /^\\dimen1=\\hsize \\advance \\dimen1
by -\\defargsindent/
+argsindent tex-src/texinfo.tex /^\\parshape 2 0in \\dimen0
\\defargsindent \\dimen1 /
+argument c-src/etags.c 253
+argvals prol-src/natded.prolog /^argvals([]) --> [].$/
+array c.c 190
+ascii c-src/emacs/src/lisp.h 1598
+asort cp-src/functions.cpp /^void asort(int *a, int num){$/
+assemby-code-word forth-src/test-forth.fth /^code
assemby-code-word ( dunno what it does )$/
+assert c-src/etags.c 135
+assert c-src/etags.c /^# define assert(x) ((void) 0)$/
+at_end c-src/etags.c 249
+at_filename c-src/etags.c 247
+at_language c-src/etags.c 245
+at_least_one_member prol-src/natded.prolog
/^at_least_one_member(X,[X|_]):-!.$/
+at_regexp c-src/etags.c 246
+at_stdin c-src/etags.c 248
+atom prol-src/natded.prolog /^atom(X) --> [X], {atomic(X)}.$/
+atomval prol-src/natded.prolog /^atomval(X) --> atom(X).$/
+aultparindent tex-src/texinfo.tex /^\\newdimen\\defaultparindent
\\defaultparindent = 15p/
+aultparindent tex-src/texinfo.tex /^\\parindent = \\defaultparindent$/
+aultparindent\hang\textindent tex-src/texinfo.tex
/^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/
+auto_help c-src/etags.c 699
+b c.c 180
+b c.c 259
+b c.c 260
+b c.c 262
+b c.c /^b ()$/
+b c-src/h.h 41
+b c-src/h.h 103
+b c-src/h.h 104
+backslash=0 tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden
during \\printin/
+balance_left erl-src/lines.erl /^balance_left(N_Tot, $/
+balance_right erl-src/lines.erl /^balance_right(N_Tot, $/
+bar c-src//c.c /^void bar() {while(0) {}}$/
+bar c.c 143
+bar c-src/h.h 19
+bas_syn prol-src/natded.prolog /^bas_syn(n(_)).$/
+base c-src/emacs/src/lisp.h 2188
+base cp-src/c.C /^double base (void) const { return rng_base; }$/
+basetype cp-src/cfront.H 323
+basetype::b_bits cp-src/cfront.H 341
+basetype::b_const cp-src/cfront.H 335
+basetype::b_field cp-src/cfront.H 346
+basetype::b_fieldtype cp-src/cfront.H 348
+basetype::b_inline cp-src/cfront.H 337
+basetype::b_long cp-src/cfront.H 340
+basetype::b_name cp-src/cfront.H 344
+basetype::b_offset cp-src/cfront.H 342
+basetype::b_short cp-src/cfront.H 339
+basetype::b_sto cp-src/cfront.H 343
+basetype::b_table cp-src/cfront.H 345
+basetype::b_typedef cp-src/cfront.H 336
+basetype::b_unsigned cp-src/cfront.H 334
+basetype::b_virtual cp-src/cfront.H 338
+basetype::b_xname cp-src/cfront.H 347
+bb c.c 275
+bbb c.c 251
+bbbbbb c-src/h.h 113
+been_warned c-src/etags.c 222
+before_command_echo_length c-src/emacs/src/keyboard.c 130
+before_command_key_count c-src/emacs/src/keyboard.c 129
+begtoken c-src/etags.c /^#define begtoken(c) (_btk[CHAR
(c)]) \/* c can star/
+behaviour_info erl-src/gs_dialog.erl /^behaviour_info(callbacks) ->$/
+bf=cmbx10 tex-src/texinfo.tex /^\\font\\defbf=cmbx10 scaled
\\magstep1 %was 1314$/
+bind pyt-src/server.py /^ def bind(self, key, action):$/
+bind_polling_period c-src/emacs/src/keyboard.c /^bind_polling_period
(int n)$/
+bits_word c-src/emacs/src/lisp.h 123
+bits_word c-src/emacs/src/lisp.h 127
+bla c.c /^int bla ()$/
+blah tex-src/testenv.tex /^\\section{blah}$/
+bletch el-src/TAGTEST.EL /^(foo::defmumble bletch beuarghh)$/
+block cp-src/cfront.H 694
+block::block cp-src/cfront.H /^ block(loc ll, Pname nn, Pstmt ss) :
(BLOCK,ll,ss)/
+blv c-src/emacs/src/lisp.h 689
+blv_found c-src/emacs/src/lisp.h /^blv_found (struct
Lisp_Buffer_Local_Value *blv)$/
+bodyindent tex-src/texinfo.tex /^\\newskip\\defbodyindent
\\defbodyindent=.4in$/
+bodyindent tex-src/texinfo.tex /^\\advance\\dimen2 by
-\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\dimen3 by
-\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by
-\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by
\\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by
\\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by
\\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by
\\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by
\\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by
\\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+bool c.c 222
+bool_header_size c-src/emacs/src/lisp.h 1472
+bool_vector_bitref c-src/emacs/src/lisp.h /^bool_vector_bitref
(Lisp_Object a, EMACS_INT i)$/
+bool_vector_bytes c-src/emacs/src/lisp.h /^bool_vector_bytes (EMACS_INT
size)$/
+bool_vector_data c-src/emacs/src/lisp.h /^bool_vector_data (Lisp_Object
a)$/
+bool_vector_ref c-src/emacs/src/lisp.h /^bool_vector_ref (Lisp_Object
a, EMACS_INT i)$/
+bool_vector_set c-src/emacs/src/lisp.h /^bool_vector_set (Lisp_Object
a, EMACS_INT i, bool /
+bool_vector_size c-src/emacs/src/lisp.h /^bool_vector_size (Lisp_Object
a)$/
+bool_vector_uchar_data c-src/emacs/src/lisp.h /^bool_vector_uchar_data
(Lisp_Object a)$/
+bool_vector_words c-src/emacs/src/lisp.h /^bool_vector_words (EMACS_INT
size)$/
+boolvar c-src/emacs/src/lisp.h 2287
+bracelev c-src/etags.c 2520
+bsp_DevId c-src/h.h 25
+btowc c-src/emacs/src/regex.h /^# define btowc(c) c$/
+buffer c-src/etags.c 238
+buffer c-src/emacs/src/regex.h 341
+buffer c-src/h.h 119
+build prol-src/natded.prolog /^build([],Left,Left).$/
+build_pure_c_string c-src/emacs/src/lisp.h /^build_pure_c_string (const
char *str)$/
+build_string c-src/emacs/src/lisp.h /^build_string (const char *str)$/
+buildact prol-src/natded.prolog /^buildact([SynIn],Right,RightPlus1):-$/
+builtin_lisp_symbol c-src/emacs/src/lisp.h /^builtin_lisp_symbol (int
index)$/
+burst c-src/h.h 28
+busy c-src/emacs/src/gmalloc.c 158
+button_down_location c-src/emacs/src/keyboard.c 5210
+button_down_time c-src/emacs/src/keyboard.c 5218
+byte_stack c-src/emacs/src/lisp.h 3049
+bytecode_dest c-src/emacs/src/lisp.h 3037
+bytecode_top c-src/emacs/src/lisp.h 3036
+bytes_free c-src/emacs/src/gmalloc.c 314
+bytes_total c-src/emacs/src/gmalloc.c 310
+bytes_used c-src/emacs/src/gmalloc.c 312
+c c.c 180
+c c-src/h.h /^#define c() d$/
+c c-src/h.h 106
+c make-src/Makefile 222
+c_ext c-src/etags.c 2271
+caccacacca c.c /^caccacacca (a,b,c,d,e,f,g)$/
+cacheLRUEntry_s c.c 172
+cacheLRUEntry_t c.c 177
+call cp-src/cfront.H 535
+call::call cp-src/cfront.H /^ call(Pexpr aa, Pexpr bb) : (CALL,aa,bb)
{ this=0;/
+calloc c-src/emacs/src/gmalloc.c 66
+calloc c-src/emacs/src/gmalloc.c 70
+calloc c-src/emacs/src/gmalloc.c /^calloc (size_t nmemb, size_t size)$/
+calloc c-src/emacs/src/gmalloc.c 1717
+can_be_null c-src/emacs/src/regex.h 370
+cancel_echoing c-src/emacs/src/keyboard.c /^cancel_echoing (void)$/
+canonicalize_filename c-src/etags.c /^canonicalize_filename (register char
*fn)$/
+case_Lisp_Int c-src/emacs/src/lisp.h 438
+cat c-src/h.h 81
+cat prol-src/natded.prolog /^cat(A, address@hidden, Ass3, Qs3,
tree(fe,A:address@hidden/
+cat_atoms prol-src/natded.prolog /^cat_atoms(A1,A2,A3):-$/
+cccccccccc c-src/h.h 115
+cdiff Makefile /^cdiff: CTAGS.good CTAGS ${infiles}$/
+cdr c-src/emacs/src/lisp.h 1159
+cell y-src/parse.y 278
+cgrep html-src/software.html /^cgrep$/
+chain c-src/emacs/src/lisp.h 1162
+chain c-src/emacs/src/lisp.h 2396
+char_bits c-src/emacs/src/lisp.h 2443
+char_table_specials c-src/emacs/src/lisp.h 1692
+charset_unibyte c-src/emacs/src/regex.h 410
+chartonmstr pas-src/common.pas /^function chartonmstr; (*($/
+check Makefile /^check:$/
+checkQuotation php-src/lce_functions.php /^ function
checkQuotation($str)$/
+check_cons_list c-src/emacs/src/lisp.h /^# define check_cons_list()
lisp_h_check_cons_list/
+checkhdr c-src/emacs/src/gmalloc.c /^checkhdr (const struct hdr
*hdr)$/
+checkiso html-src/software.html /^checkiso$/
+childDidExit objc-src/Subprocess.m /^- childDidExit$/
+chunks_free c-src/emacs/src/gmalloc.c 313
+chunks_used c-src/emacs/src/gmalloc.c 311
+cjava c-src/etags.c 2936
+classdef cp-src/cfront.H 278
+classdef::bit_ass cp-src/cfront.H 283
+classdef::c_body cp-src/cfront.H 280
+classdef::clbase cp-src/cfront.H 286
+classdef::conv cp-src/cfront.H 299
+classdef::csu cp-src/cfront.H 281
+classdef::friend_list cp-src/cfront.H 292
+classdef::has_ctor cp-src/cfront.H /^ Pname has_ctor() {
return memtbl->look("_ctor",0)/
+classdef::has_dtor cp-src/cfront.H /^ Pname has_dtor() {
return memtbl->look("_dtor",0)/
+classdef::has_itor cp-src/cfront.H /^ Pname has_itor() {
return itor; }$/
+classdef::in_class cp-src/cfront.H 295
+classdef::is_simple cp-src/cfront.H /^ TOK is_simple() {
return (csu==CLASS)?0:csu; };$/
+classdef::itor cp-src/cfront.H 298
+classdef::mem_list cp-src/cfront.H 288
+classdef::memtbl cp-src/cfront.H 289
+classdef::obj_align cp-src/cfront.H 282
+classdef::obj_size cp-src/cfront.H 290
+classdef::pubbase cp-src/cfront.H 279
+classdef::pubdef cp-src/cfront.H 293
+classdef::real_size cp-src/cfront.H 291
+classdef::string cp-src/cfront.H 287
+classdef::this_type cp-src/cfront.H 296
+classdef::tn_list cp-src/cfront.H 294
+classdef::virt_count cp-src/cfront.H 284
+classdef::virt_init cp-src/cfront.H 297
+classifyLine php-src/lce_functions.php /^ function
classifyLine($line)$/
+clear-abbrev-table c-src/abbrev.c /^DEFUN ("clear-abbrev-table",
Fclear_abbrev_table, /
+clear-this-command-keys c-src/emacs/src/keyboard.c /^DEFUN
("clear-this-command-keys", Fclear_this_comm/
+clearAllKey: objcpp-src/SimpleCalc.M /^- clearAllKey:sender$/
+clearKey: objcpp-src/SimpleCalc.M /^- clearKey:sender$/
+clear_event c-src/emacs/src/keyboard.c /^clear_event (struct
input_event *event)$/
+clear_input_pending c-src/emacs/src/keyboard.c /^clear_input_pending
(void)$/
+clear_screen cp-src/screen.cpp /^void clear_screen(void)$/
+clear_waiting_for_input c-src/emacs/src/keyboard.c
/^clear_waiting_for_input (void)$/
+cmd_error c-src/emacs/src/keyboard.c /^cmd_error (Lisp_Object data)$/
+cmd_error_internal c-src/emacs/src/keyboard.c /^cmd_error_internal
(Lisp_Object data, const char */
+cmpfn c-src/emacs/src/lisp.h /^ bool (*cmpfn) (struct hash_table_test *t,
Lisp_O/
+cmt prol-src/natded.prolog /^cmt:-$/
+cname c-src/etags.c 2519
+cno c-src/etags.c 224
+commaargvals prol-src/natded.prolog /^commaargvals(Args) -->$/
+command c-src/etags.c 187
+command-error-default-function c-src/emacs/src/keyboard.c /^DEFUN
("command-error-default-function", Fcommand_/
+command_loop c-src/emacs/src/keyboard.c /^command_loop (void)$/
+command_loop_1 c-src/emacs/src/keyboard.c /^command_loop_1 (void)$/
+command_loop_2 c-src/emacs/src/keyboard.c /^command_loop_2 (Lisp_Object
ignore)$/
+command_loop_level c-src/emacs/src/keyboard.c 195
+comment php-src/lce_functions.php /^ function comment($line,
$class)$/
+compile_empty prol-src/natded.prolog /^compile_empty:-$/
+compile_lex prol-src/natded.prolog /^compile_lex(File):-$/
+complete prol-src/natded.prolog /^complete(Cat):-$/
+complete-tag el-src/emacs/lisp/progmodes/etags.el /^(defun complete-tag
()$/
+compressor c-src/etags.c 188
+compressors c-src/etags.c 457
+conalgorithm html-src/algrthms.html /^Convolutionally$/
+concat c-src/etags.c /^concat (const char *s1, const char *s2, const char/
+concat erl-src/lists.erl /^concat([H|T]) ->$/
+concatenatenamestrings pas-src/common.pas /^function
concatenatenamestrings; (*($/
+consider_token c-src/etags.c /^consider_token (char *str, int len, int c,
int *c_/
+constant c-src/h.h 29
+constant cccp.y 113
+constant y-src/cccp.y 112
+constant_args c-src/h.h 27
+constype c-src/emacs/src/lisp.h 3739
+consult_lex prol-src/natded.prolog /^consult_lex:-$/
+contents c-src/emacs/src/lisp.h 1372
+contents c-src/emacs/src/lisp.h 1600
+contents c-src/emacs/src/lisp.h 1624
+convert_from_list erl-src/lines.erl /^convert_from_list(L) when
list(L) ->$/
+convert_to_list erl-src/lines.erl /^convert_to_list({_, List})
when list(List) ->$/
+count c-src/emacs/src/lisp.h 1863
+count erl-src/lines.erl /^count({N, _}) ->$/
+count_layers lua-src/allegro.lua /^local function count_layers (layer)$/
+count_words c-src/tab.c /^static int count_words(char *str,
char delim)$/
+cow cp-src/c.C 127
+cplpl c-src/etags.c 2935
+createPOEntries php-src/lce_functions.php /^ function
createPOEntries()$/
+createWidgets pyt-src/server.py /^ def createWidgets(self, host):$/
+createWidgets pyt-src/server.py /^ def createWidgets(self):$/
+cstack c-src/etags.c 2523
+curlb c-src/etags.c 2929
+curlinepos c-src/etags.c 2931
+current-idle-time c-src/emacs/src/keyboard.c /^DEFUN
("current-idle-time", Fcurrent_idle_time, Sc/
+current-input-mode c-src/emacs/src/keyboard.c /^DEFUN
("current-input-mode", Fcurrent_input_mode, /
+current_kboard c-src/emacs/src/keyboard.c 85
+current_lb_is_new c-src/etags.c 2926
+cursor_position cp-src/screen.cpp /^void cursor_position(void)$/
+cursor_x cp-src/screen.cpp 15
+cursor_y cp-src/screen.cpp 15
+d c.c 180
+d c-src/emacs/src/lisp.h 4673
+d c-src/emacs/src/lisp.h 4679
+data c-src/emacs/src/lisp.h 1395
+data c-src/emacs/src/lisp.h 2129
+data c-src/emacs/src/lisp.h 2395
+dbg erl-src/lines.erl /^-define(dbg(Fmt, Args), ok=io:format("~p: "
++ Fmt/
+dcl_context cp-src/cfront.H 739
+dcl_context::c_this cp-src/cfront.H 740
+dcl_context::cot cp-src/cfront.H 743
+dcl_context::ftbl cp-src/cfront.H 744
+dcl_context::nof cp-src/cfront.H 745
+dcl_context::not cp-src/cfront.H 742
+dcl_context::stack cp-src/cfront.H /^ void stack() { cc++;
*cc = *(cc-1); };$/
+dcl_context::tot cp-src/cfront.H 741
+dcl_context::unstack cp-src/cfront.H /^ void unstack() { cc--;
};$/
+ddefineseen c-src/etags.c 2462
+debian-bug html-src/software.html /^debian-bug.el$/
+decimalKey: objcpp-src/SimpleCalc.M /^- decimalKey:sender$/
+decode_timer c-src/emacs/src/keyboard.c /^decode_timer (Lisp_Object
timer, struct timespec */
+def c-src/h.h 35
+def c-src/h.h 38
+defalt c-src/emacs/src/lisp.h 1585
+default-tags-table-function el-src/emacs/lisp/progmodes/etags.el
/^(defvar default-tags-table-function nil$/
+default_C_entries c-src/etags.c /^default_C_entries (FILE *inf)$/
+default_C_help c-src/etags.c 515
+default_C_help c-src/etags.c 523
+default_C_suffixes c-src/etags.c 512
+defcell c-src/emacs/src/lisp.h 2351
+define-abbrev c-src/abbrev.c /^DEFUN ("define-abbrev", Fdefine_abbrev,
Sdefine_ab/
+define-abbrev-table c-src/abbrev.c /^DEFUN ("define-abbrev-table",
Fdefine_abbrev_table/
+define-global-abbrev c-src/abbrev.c /^DEFUN ("define-global-abbrev",
Fdefine_global_abbr/
+define-mode-abbrev c-src/abbrev.c /^DEFUN ("define-mode-abbrev",
Fdefine_mode_abbrev, /
+defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4663
+defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4665
+definedef c-src/etags.c 2464
+defun_func1 c.c /^defun_func1()$/
+delegate objc-src/Subprocess.m /^- delegate$/
+delete erl-src/lines.erl /^delete(Lno, _) when Lno < 1 ->$/
+delete erl-src/lists.erl /^delete(Item, [Item|Rest]) ->$/
+deleteItem pyt-src/server.py /^ def deleteItem(self):$/
+delete_kboard c-src/emacs/src/keyboard.c /^delete_kboard (KBOARD *kb)$/
+delete_nth erl-src/lines.erl /^delete_nth(1, [H|T]) ->$/
+deliver_input_available_signal c-src/emacs/src/keyboard.c
/^deliver_input_available_signal (int sig)$/
+deliver_interrupt_signal c-src/emacs/src/keyboard.c
/^deliver_interrupt_signal (int sig)$/
+deliver_user_signal c-src/emacs/src/keyboard.c /^deliver_user_signal
(int sig)$/
+depth c-src/emacs/src/lisp.h 1618
+derived_analyses prol-src/natded.prolog /^derived_analyses([],[]).$/
+describe_abbrev c-src/abbrev.c /^describe_abbrev (sym, stream)$/
+detect_input_pending c-src/emacs/src/keyboard.c /^detect_input_pending
(void)$/
+detect_input_pending_ignore_squeezables c-src/emacs/src/keyboard.c
/^detect_input_pending_ignore_squeezables (void)$/
+detect_input_pending_run_timers c-src/emacs/src/keyboard.c
/^detect_input_pending_run_timers (bool do_display)$/
+dialog_loop erl-src/gs_dialog.erl /^dialog_loop(Module, Window, Frame,
Extra, Args) ->/
+dignorerest c-src/etags.c 2463
+discard-input c-src/emacs/src/keyboard.c /^DEFUN ("discard-input",
Fdiscard_input, Sdiscard_i/
+discard_mouse_events c-src/emacs/src/keyboard.c /^discard_mouse_events
(void)$/
+discrete_location cp-src/clheir.hpp 56
+discrete_location::assign_neighbor cp-src/clheir.hpp /^ void
assign_neighbor(int direction, location */
+discrete_location::clear_neighbors cp-src/clheir.cpp /^void
discrete_location::clear_neighbors(void)$/
+discrete_location::discrete_location cp-src/clheir.hpp /^
discrete_location(int xi, int yi, int zi):$/
+discrete_location::neighbors cp-src/clheir.hpp 59
+discrete_location::x cp-src/clheir.hpp 58
+discrete_location::y cp-src/clheir.hpp 58
+discrete_location::z cp-src/clheir.hpp 58
+display cp-src/conway.cpp /^void display(void)$/
+disposetextstring pas-src/common.pas /^procedure
disposetextstring;(*($/
+dnone c-src/etags.c 2460
+doc c-src/emacs/src/lisp.h 1689
+dog c-src/h.h 81
+dotfill tex-src/texinfo.tex /^ \\null\\nobreak\\indexdotfill %
Have leaders before/
+dotfill tex-src/texinfo.tex
/^\\noindent\\hskip\\secondaryindent\\hbox{#1}\\indexdotf/
+double_click_count c-src/emacs/src/keyboard.c 5222
+drag_n_drop_syms c-src/emacs/src/keyboard.c 4629
+dribble c-src/emacs/src/keyboard.c 236
+dsharpseen c-src/etags.c 2461
+dummies tex-src/texinfo.tex /^{\\indexdummies % Must do this here,
since \\bf, etc/
+dummies tex-src/texinfo.tex /^{\\indexdummies % Must do this here,
since \\bf, etc/
+dummydots tex-src/texinfo.tex /^\\let\\dots=\\indexdummydots$/
+dummyfont tex-src/texinfo.tex /^\\let\\w=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\t=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\r=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\i=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\b=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\emph=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\strong=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\sc=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\tclose=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\code=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\file=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\samp=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\kbd=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\key=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\var=\\indexdummyfont$/
+dummytex tex-src/texinfo.tex /^\\let\\TeX=\\indexdummytex$/
+dump pyt-src/server.py /^ def dump(self, folded):$/
+duplicate erl-src/lists.erl /^duplicate(N, X) when integer(N), N >=
0 -> duplica/
+ea cp-src/cfront.H 80
+ea::ea cp-src/cfront.H /^ ea(void* pp) { p = pp; }$/
+ea::ea cp-src/cfront.H /^ ea(int ii) { i = ii; }$/
+ea::ea cp-src/cfront.H /^ ea() {}$/
+ea::ea cp-src/cfront.H /^ ea(int i) { x; }$/
+ea::i cp-src/cfront.H 83
+ea::p cp-src/cfront.H 82
+eabs c-src/emacs/src/lisp.h /^#define eabs(x) ((x) < 0 ? -(x) :
(x))$/
+eassert c-src/emacs/src/lisp.h /^# define eassert(cond) ((void) (false
&& (cond))) /
+eassert c-src/emacs/src/lisp.h /^# define eassert(cond)
\\$/
+eassume c-src/emacs/src/lisp.h /^# define eassume(cond) assume (cond)$/
+eassume c-src/emacs/src/lisp.h /^# define eassume(cond)
\\$/
+eax c-src/sysdep.h 31
+eax c-src/sysdep.h 33
+eax c-src/sysdep.h 33
+echo_add_key c-src/emacs/src/keyboard.c /^echo_add_key (Lisp_Object c)$/
+echo_char c-src/emacs/src/keyboard.c /^echo_char (Lisp_Object c)$/
+echo_dash c-src/emacs/src/keyboard.c /^echo_dash (void)$/
+echo_kboard c-src/emacs/src/keyboard.c 166
+echo_keystrokes_p c-src/emacs/src/keyboard.c /^echo_keystrokes_p
(void)$/
+echo_length c-src/emacs/src/keyboard.c /^echo_length (void)$/
+echo_message_buffer c-src/emacs/src/keyboard.c 171
+echo_now c-src/emacs/src/keyboard.c /^echo_now (void)$/
+echo_truncate c-src/emacs/src/keyboard.c /^echo_truncate (ptrdiff_t
nchars)$/
+echoing c-src/emacs/src/keyboard.c 154
+ediff% Makefile /^ediff%: ETAGS.good% ETAGS ${infiles}$/
+editItem pyt-src/server.py /^ def editItem(self):$/
+editsite pyt-src/server.py /^ def editsite(self, site):$/
+edituser pyt-src/server.py /^ def edituser(self, user):$/
+egetenv c-src/emacs/src/lisp.h /^egetenv (const char *var)$/
+elist cp-src/cfront.H 727
+elist::add cp-src/cfront.H /^ void add(Pexpr e) { tail->e2 = e;
tail = e; };$/
+elist::elist cp-src/cfront.H /^ elist(Pexpr e) { Nl++; head =
tail = e; };$/
+elist::head cp-src/cfront.H 728
+elist::tail cp-src/cfront.H 729
+emacs_abort c-src/emacs/src/lisp.h /^extern _Noreturn void emacs_abort
(void) NO_INLINE/
+end c-src/emacs/src/regex.h 432
+end c-src/emacs/src/keyboard.c 8753
+endtoken c-src/etags.c /^#define endtoken(c) (_etk[CHAR
(c)]) \/* c ends tok/
+enter_critical_section c-src/h.h 116
+entry perl-src/htlmify-cystic 218
+entry perl-src/htlmify-cystic 234
+entry perl-src/htlmify-cystic 245
+entry perl-src/htlmify-cystic 252
+entry perl-src/htlmify-cystic 268
+entry perl-src/htlmify-cystic 276
+entry perl-src/htlmify-cystic 281
+entry perl-src/htlmify-cystic 296
+enumdef cp-src/cfront.H 265
+enumdef::e_body cp-src/cfront.H 266
+enumdef::enumdef cp-src/cfront.H /^ enumdef(Pname n)
{ base=ENUM; mem=n; };$/
+enumdef::mem cp-src/cfront.H 268
+enumdef::no_of_enumerators cp-src/cfront.H 267
+equalsKey: objcpp-src/SimpleCalc.M /^- equalsKey:sender$/
+erlang_atom c-src/etags.c /^erlang_atom (char *s)$/
+erlang_attribute c-src/etags.c /^erlang_attribute (char *s)$/
+erlang_func c-src/etags.c /^erlang_func (char *s, char *last)$/
+error c-src/etags.c /^static void error (const char *, ...) ATTRIBUTE_FO/
+error c-src/etags.c /^error (const char *format, ...)$/
+error c-src/emacs/src/lisp.h /^extern _Noreturn void error (const char *,
...) AT/
+error cp-src/cfront.H 94
+error cccp.y /^error (msg)$/
+error y-src/cccp.y /^error (msg)$/
+error_signaled c-src/etags.c 264
+estmt cp-src/cfront.H 662
+estmt::estmt cp-src/cfront.H /^ estmt(TOK t, loc ll, Pexpr ee, Pstmt
ss) : (t,ll,/
+etags el-src/emacs/lisp/progmodes/etags.el /^(defgroup etags nil "Tags
tables."$/
+etags html-src/software.html /^Etags$/
+etags--xref-find-definitions el-src/emacs/lisp/progmodes/etags.el
/^(defun etags--xref-find-definitions (pattern &opti/
+etags--xref-limit el-src/emacs/lisp/progmodes/etags.el /^(defconst
etags--xref-limit 1000)$/
+etags-file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun
etags-file-of-tag (&optional relative) ; Do/
+etags-goto-tag-location el-src/emacs/lisp/progmodes/etags.el
/^(defun etags-goto-tag-location (tag-info)$/
+etags-list-tags el-src/emacs/lisp/progmodes/etags.el /^(defun
etags-list-tags (file) ; Doc string?$/
+etags-recognize-tags-table el-src/emacs/lisp/progmodes/etags.el
/^(defun etags-recognize-tags-table ()$/
+etags-snarf-tag el-src/emacs/lisp/progmodes/etags.el /^(defun
etags-snarf-tag (&optional use-explicit) ; /
+etags-tags-apropos el-src/emacs/lisp/progmodes/etags.el /^(defun
etags-tags-apropos (string) ; Doc string?$/
+etags-tags-apropos-additional el-src/emacs/lisp/progmodes/etags.el
/^(defun etags-tags-apropos-additional (regexp)$/
+etags-tags-completion-table el-src/emacs/lisp/progmodes/etags.el
/^(defun etags-tags-completion-table () ; Doc string/
+etags-tags-included-tables el-src/emacs/lisp/progmodes/etags.el
/^(defun etags-tags-included-tables () ; Doc string?/
+etags-tags-table-files el-src/emacs/lisp/progmodes/etags.el /^(defun
etags-tags-table-files () ; Doc string?$/
+etags-verify-tags-table el-src/emacs/lisp/progmodes/etags.el
/^(defun etags-verify-tags-table ()$/
+etags-xref-find el-src/emacs/lisp/progmodes/etags.el /^(defun
etags-xref-find (action id)$/
+etags-xref-find-definitions-tag-order el-src/emacs/lisp/progmodes/etags.el
/^(defvar etags-xref-find-definitions-tag-order '(ta/
+etags_getcwd c-src/etags.c /^etags_getcwd (void)$/
+eval_dyn c-src/emacs/src/keyboard.c /^eval_dyn (Lisp_Object form)$/
+event-convert-list c-src/emacs/src/keyboard.c /^DEFUN
("event-convert-list", Fevent_convert_list, /
+event-symbol-parse-modifiers c-src/emacs/src/keyboard.c /^DEFUN
("internal-event-symbol-parse-modifiers", Fe/
+event_head c-src/emacs/src/keyboard.c 11021
+event_to_kboard c-src/emacs/src/keyboard.c /^event_to_kboard
(struct input_event *event)$/
+exact c-src/emacs/src/gmalloc.c 200
+exit c-src/exit.c /^DEFUN(exit, (status), int status)$/
+exit c-src/exit.strange_suffix /^DEFUN(exit, (status), int status)$/
+exit-recursive-edit c-src/emacs/src/keyboard.c /^DEFUN
("exit-recursive-edit", Fexit_recursive_edit/
+exit_critical_to_previous c-src/h.h 117
+exp y-src/parse.y 94
+exp y-src/atest.y 2
+exp y-src/cccp.y 156
+exp y-src/cccp.y 185
+exp1 y-src/cccp.y 148
+exp_list y-src/parse.y 262
+expand-abbrev c-src/abbrev.c /^DEFUN ("expand-abbrev", Fexpand_abbrev,
Sexpand_ab/
+expandmng prol-src/natded.prolog /^expandmng(var(V),var(V)).$/
+expandmng_tree prol-src/natded.prolog
/^expandmng_tree(tree(Rule,Syn:Sem,Trees),$/
+expandmng_trees prol-src/natded.prolog /^expandmng_trees([],[]).$/
+expandsyn prol-src/natded.prolog /^expandsyn(Syn,Syn):-$/
+explicitly-quoted-pending-delete-mode el-src/TAGTEST.EL /^(defalias
(quote explicitly-quoted-pending-delete-/
+expr cp-src/cfront.H 469
+expr::as_type cp-src/cfront.H 499
+expr::cond cp-src/cfront.H 497
+expr::e1 cp-src/cfront.H 485
+expr::e2 cp-src/cfront.H 490
+expr::fct_name cp-src/cfront.H 496
+expr::i1 cp-src/cfront.H 487
+expr::il cp-src/cfront.H 501
+expr::mem cp-src/cfront.H 498
+expr::n_initializer cp-src/cfront.H 491
+expr::n_table cp-src/cfront.H 500
+expr::string cp-src/cfront.H 486
+expr::string2 cp-src/cfront.H 492
+expr::syn_class cp-src/cfront.H 482
+expr::tp cp-src/cfront.H 481
+expr::tp2 cp-src/cfront.H 495
+expression_value cccp.y 68
+expression_value y-src/cccp.y 68
+extras c-src/emacs/src/lisp.h 1603
+extvar c-src/h.h 109
+f c-src//c.c /^T f(){if(x){}$/
+f c.c 145
+f c.c 156
+f c.c 168
+f c.c /^int f$/
+f c-src/h.h 89
+f cp-src/c.C /^A<int>* f() {}$/
+f cp-src/c.C /^int f(A<int> x) {}$/
+f cp-src/c.C /^int A<int>::f(A<int>* x) {}$/
+f cp-src/c.C /^A<float,B<int> > A<B<float>,int>::f(A<int>* x) {}$/
+f1 c.c /^ f1 () { \/* Do something. *\/; }$/
+f2 c.c /^void f2 () { \/* Do something. *\/; }$/
+fast_string_match_ignore_case c-src/emacs/src/lisp.h
/^fast_string_match_ignore_case (Lisp_Object regexp,/
+fastmap c-src/emacs/src/regex.h 355
+fastmap_accurate c-src/emacs/src/regex.h 383
+fatal c-src/etags.c /^fatal (const char *s1, const char *s2)$/
+fatala c.c /^void fatala () __attribute__ ((noreturn));$/
+fct cp-src/cfront.H 365
+fct::argtype cp-src/cfront.H 372
+fct::b_init cp-src/cfront.H 380
+fct::body cp-src/cfront.H 376
+fct::declared cp-src/cfront.H /^ bit declared() { return
nargs_known; };$/
+fct::f_expr cp-src/cfront.H 383
+fct::f_init cp-src/cfront.H 377
+fct::f_inline cp-src/cfront.H 370
+fct::f_result cp-src/cfront.H 385
+fct::f_this cp-src/cfront.H 374
+fct::f_virtual cp-src/cfront.H 369
+fct::last_expanded cp-src/cfront.H 384
+fct::memof cp-src/cfront.H 375
+fct::nargs cp-src/cfront.H 367
+fct::nargs_known cp-src/cfront.H 368
+fct::returns cp-src/cfront.H 371
+fct::s_returns cp-src/cfront.H 373
+fdHandler objc-src/Subprocess.m /^fdHandler (int theFd, id self)$/
+fdHandler: objc-src/Subprocess.m /^- fdHandler:(int)theFd$/
+fdefunkey c-src/etags.c 2409
+fdefunname c-src/etags.c 2410
+fdesc c-src/etags.c 201
+fdesc c-src/etags.c 212
+fdp c-src/etags.c 217
+field_of_play cp-src/conway.cpp 18
+fignore c-src/etags.c 2416
+file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun file-of-tag
(&optional relative)$/
+file-of-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar
file-of-tag-function nil$/
+fileJoin php-src/lce_functions.php /^ function fileJoin()$/
+file_index perl-src/htlmify-cystic 33
+file_tocs perl-src/htlmify-cystic 30
+filename_is_absolute c-src/etags.c /^filename_is_absolute (char *fn)$/
+filenames c-src/etags.c 196
+find-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag
(tagname &optional next-p regexp-p/
+find-tag-default-function el-src/emacs/lisp/progmodes/etags.el
/^(defcustom find-tag-default-function nil$/
+find-tag-history el-src/emacs/lisp/progmodes/etags.el /^(defvar
find-tag-history nil) ; Doc string?$/
+find-tag-hook el-src/emacs/lisp/progmodes/etags.el /^(defcustom
find-tag-hook nil$/
+find-tag-in-order el-src/emacs/lisp/progmodes/etags.el /^(defun
find-tag-in-order (pattern$/
+find-tag-interactive el-src/emacs/lisp/progmodes/etags.el /^(defun
find-tag-interactive (prompt &optional no-d/
+find-tag-marker-ring el-src/emacs/lisp/progmodes/etags.el /^(defvaralias
'find-tag-marker-ring 'xref--marker-r/
+find-tag-marker-ring-length el-src/emacs/lisp/progmodes/etags.el
/^(define-obsolete-variable-alias 'find-tag-marker-r/
+find-tag-next-line-after-failure-p el-src/emacs/lisp/progmodes/etags.el
/^(defvar find-tag-next-line-after-failure-p nil$/
+find-tag-noselect el-src/emacs/lisp/progmodes/etags.el /^(defun
find-tag-noselect (tagname &optional next-p/
+find-tag-other-frame el-src/emacs/lisp/progmodes/etags.el /^(defun
find-tag-other-frame (tagname &optional nex/
+find-tag-other-window el-src/emacs/lisp/progmodes/etags.el /^(defun
find-tag-other-window (tagname &optional ne/
+find-tag-regexp el-src/emacs/lisp/progmodes/etags.el /^(defun
find-tag-regexp (regexp &optional next-p ot/
+find-tag-regexp-next-line-after-failure-p
el-src/emacs/lisp/progmodes/etags.el /^(defvar
find-tag-regexp-next-line-after-failure-p /
+find-tag-regexp-search-function el-src/emacs/lisp/progmodes/etags.el
/^(defvar find-tag-regexp-search-function nil$/
+find-tag-regexp-tag-order el-src/emacs/lisp/progmodes/etags.el
/^(defvar find-tag-regexp-tag-order nil$/
+find-tag-search-function el-src/emacs/lisp/progmodes/etags.el
/^(defvar find-tag-search-function nil$/
+find-tag-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-tag
(string)$/
+find-tag-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar
find-tag-tag-order nil$/
+find_entries c-src/etags.c /^find_entries (FILE *inf)$/
+find_user_signal_name c-src/emacs/src/keyboard.c /^find_user_signal_name
(int sig)$/
+findcats prol-src/natded.prolog /^findcats([],Left,Left).$/
+finlist c-src/etags.c 2414
+first c-src/emacs/src/gmalloc.c 151
+fitchtreelist prol-src/natded.prolog /^fitchtreelist([]).$/
+fixup_locale c-src/emacs/src/lisp.h /^INLINE void fixup_locale (void) {}$/
+flag c-src/getopt.h 83
+flag2str pyt-src/server.py /^def flag2str(value, string):$/
+flat_length erl-src/lists.erl /^flat_length(List) ->$/
+flatten erl-src/lists.erl /^flatten(List) ->$/
+flistseen c-src/etags.c 2415
+fn c-src/exit.c /^ void EXFUN((*fn[1]), (NOARGS));$/
+fn c-src/exit.strange_suffix /^ void EXFUN((*fn[1]), (NOARGS));$/
+fnin y-src/parse.y 67
+fnin parse.y 67
+focus_set pyt-src/server.py /^ def focus_set(self):$/
+foldl erl-src/lists.erl /^foldl(F, As, Last, [Hd|Tail]) ->$/
+foldr erl-src/lists.erl /^foldr(F, As, [Hd|Tail], Last) ->$/
+follow_key c-src/emacs/src/keyboard.c /^follow_key (Lisp_Object
keymap, Lisp_Object key)$/
+fonts tex-src/texinfo.tex /^\\obeyspaces \\obeylines \\ninett
\\indexfonts \\rawbac/
+fonts\rm tex-src/texinfo.tex /^ \\indexfonts\\rm \\tolerance=9500
\\advance\\baseline/
+foo c.c 150
+foo c.c 166
+foo c.c 167
+foo c.c 178
+foo c.c 189
+foo c-src/h.h 18
+foo cp-src/c.C 68
+foo cp-src/c.C 79
+foo f-src/entry.for /^ character*(*) function foo()$/
+foo f-src/entry.strange_suffix /^ character*(*) function foo()$/
+foo f-src/entry.strange /^ character*(*) function foo()$/
+foo php-src/ptest.php /^foo()$/
+foo::f cp-src/c.C /^ void f() {}$/
+foo::x cp-src/c.C 80
+foobar c-src//c.c /^int foobar() {;}$/
+foobar c.c /^extern void foobar (void) __attribute__ ((section /
+foobar2 c-src/h.h 20
+foobar2_ c-src/h.h 16
+foperator c-src/etags.c 2411
+force_auto_save_soon c-src/emacs/src/keyboard.c /^force_auto_save_soon
(void)$/
+force_explicit_name c-src/etags.c 265
+force_quit_count c-src/emacs/src/keyboard.c 10387
+formatSize:inBuf: objc-src/PackInsp.m /^-(const char
*)formatSize:(const char *)size inBuf/
+forstmt cp-src/cfront.H 689
+forstmt::forstmt cp-src/cfront.H /^ forstmt(loc ll, Pstmt fss,
Pexpr ee1, Pexpr ee2, /
+found c-src/emacs/src/lisp.h 2344
+fracas html-src/software.html /^Fracas$/
+frag c-src/emacs/src/gmalloc.c 152
+frame_local c-src/emacs/src/lisp.h 2341
+free c-src/emacs/src/gmalloc.c 67
+free c-src/emacs/src/gmalloc.c 72
+free c-src/emacs/src/gmalloc.c 166
+free c-src/emacs/src/gmalloc.c /^free (void *ptr)$/
+free c-src/emacs/src/gmalloc.c 1719
+free_fdesc c-src/etags.c /^free_fdesc (register fdesc *fdp)$/
+free_for prol-src/natded.prolog /^free_for(var(_),_,_).$/
+free_regexps c-src/etags.c /^free_regexps (void)$/
+free_tree c-src/etags.c /^free_tree (register node *np)$/
+free_var prol-src/natded.prolog /^free_var(var(V),var(V)).$/
+freehook c-src/emacs/src/gmalloc.c /^freehook (void *ptr)$/
+fresh_vars prol-src/natded.prolog /^fresh_vars(var(V),var(V)).$/
+fstartlist c-src/etags.c 2413
+func1 c.c /^int func1$/
+func2 c.c /^int func2 (a,b$/
+func_key_syms c-src/emacs/src/keyboard.c 4626
+funcboo c.c /^bool funcboo ()$/
+funcpointer c-src/emacs/src/lisp.h 2126
+funcptr c-src/h.h /^ fu int (*funcptr) (void *ptr);$/
+function c-src/etags.c 194
+function c-src/emacs/src/lisp.h 694
+function c-src/emacs/src/lisp.h 1685
+function c-src/emacs/src/lisp.h 2197
+functionp c-src/emacs/src/lisp.h /^functionp (Lisp_Object object)$/
+fvdef c-src/etags.c 2418
+fvextern c-src/etags.c 2420
+fvnameseen c-src/etags.c 2412
+fvnone c-src/etags.c 2408
+fwd c-src/emacs/src/lisp.h 690
+fwd c-src/emacs/src/lisp.h 2346
+galileo html-src/software.html /^GaliLEO$/
+gather pyt-src/server.py /^ def gather(self):$/
+gather pyt-src/server.py /^ def gather(self):$/
+gc_aset c-src/emacs/src/lisp.h /^gc_aset (Lisp_Object array, ptrdiff_t
idx, Lisp_Ob/
+gcmarkbit c-src/emacs/src/lisp.h 656
+gcpro c-src/emacs/src/lisp.h 3042
+gcpro c-src/emacs/src/lisp.h 3132
+gen cp-src/cfront.H 410
+gen::fct_list cp-src/cfront.H 411
+gen::string cp-src/cfront.H 412
+gen_help_event c-src/emacs/src/keyboard.c /^gen_help_event (Lisp_Object
help, Lisp_Object fram/
+genalgorithm html-src/algrthms.html /^Generating the
Data<\/font><\/i><\/b>$/
+generic_object cp-src/clheir.hpp 13
+generic_object::compute_next_state cp-src/clheir.hpp /^ virtual
void compute_next_state(void) { }$/
+generic_object::generic_object cp-src/clheir.cpp
/^generic_object::generic_object(void)$/
+generic_object::step cp-src/clheir.hpp /^ virtual void step(void) {
}$/
+generic_object::where_in_registry cp-src/clheir.hpp 15
+generic_object::~generic_object cp-src/clheir.cpp
/^generic_object::~generic_object(void)$/
+getArchs objc-src/PackInsp.m /^-(void)getArchs$/
+getDomainNames php-src/lce_functions.php /^ function
getDomainNames()$/
+getPOReader php-src/lce_functions.php /^ function
&getPOReader($domain)$/
+getPath:forType: objc-src/PackInsp.m /^-(const char *)getPath:(char
*)buf forType:(const /
+getTextDomains php-src/lce_functions.php /^ function
getTextDomains($lines)$/
+get_compressor_from_suffix c-src/etags.c /^get_compressor_from_suffix
(char *file, char **ext/
+get_contiguous_space c-src/emacs/src/gmalloc.c /^get_contiguous_space
(ptrdiff_t size, void *positi/
+get_current_dir_name c-src/emacs/src/gmalloc.c 33
+get_input_pending c-src/emacs/src/keyboard.c /^get_input_pending
(int flags)$/
+get_language_from_filename c-src/etags.c /^get_language_from_filename
(char *file, int case_s/
+get_language_from_interpreter c-src/etags.c /^get_language_from_interpreter
(char *interpreter)$/
+get_language_from_langname c-src/etags.c /^get_language_from_langname
(const char *name)$/
+get_layer_by_name lua-src/allegro.lua /^local function
get_layer_by_name (sprite, layer, n/
+get_tag c-src/etags.c /^get_tag (register char *bp, char **namepp)$/
+get_word c-src/tab.c /^static char *get_word(char **str,
char delim)$/
+getcjmp c-src/emacs/src/keyboard.c 147
+getptys objc-src/Subprocess.m /^getptys (int *master, int *slave)$/
+gettext php-src/lce_functions.php /^ function
gettext($msgid)$/
+ggg c-src/h.h 10
+ghi1 c-src/h.h 36
+ghi2 c-src/h.h 39
+glider cp-src/conway.cpp /^void glider(int x, int y)$/
+gnu html-src/software.html /^Free software that I wrote for the GNU
project or /
+gobble_input c-src/emacs/src/keyboard.c /^gobble_input (void)$/
+goto-tag-location-function el-src/emacs/lisp/progmodes/etags.el
/^(defvar goto-tag-location-function nil$/
+goto_xy cp-src/screen.cpp /^void goto_xy(unsigned char x,
unsigned char y)$/
+handleList pyt-src/server.py /^ def handleList(self, event):$/
+handleNew pyt-src/server.py /^ def handleNew(self, event):$/
+handle_async_input c-src/emacs/src/keyboard.c /^handle_async_input
(void)$/
+handle_input_available_signal c-src/emacs/src/keyboard.c
/^handle_input_available_signal (int sig)$/
+handle_interrupt c-src/emacs/src/keyboard.c /^handle_interrupt
(bool in_signal_handler)$/
+handle_interrupt_signal c-src/emacs/src/keyboard.c
/^handle_interrupt_signal (int sig)$/
+handle_user_signal c-src/emacs/src/keyboard.c /^handle_user_signal
(int sig)$/
+handler c-src/emacs/src/lisp.h 3023
+handlertype c-src/emacs/src/lisp.h 3021
+has_arg c-src/getopt.h 82
+hash c-src/etags.c /^hash (const char *str, int len)$/
+hash c-src/emacs/src/lisp.h 1843
+hash_table_test c-src/emacs/src/lisp.h 1805
+hashfn c-src/emacs/src/lisp.h /^ EMACS_UINT (*hashfn) (struct
hash_table_test *t,/
+hdr c-src/emacs/src/gmalloc.c 1860
+head_table c-src/emacs/src/keyboard.c 11027
+header c-src/emacs/src/lisp.h 1371
+header c-src/emacs/src/lisp.h 1388
+header c-src/emacs/src/lisp.h 1581
+header c-src/emacs/src/lisp.h 1610
+header c-src/emacs/src/lisp.h 1672
+header c-src/emacs/src/lisp.h 1826
+header_size c-src/emacs/src/lisp.h 1471
+heapsize c-src/emacs/src/gmalloc.c 361
+help c-src/etags.c 193
+helpPanel: objcpp-src/SimpleCalc.M /^- helpPanel:sender$/
+help_char_p c-src/emacs/src/keyboard.c /^help_char_p (Lisp_Object c)$/
+help_form_saved_window_configs c-src/emacs/src/keyboard.c 2156
+helpwin pyt-src/server.py /^def helpwin(helpdict):$/
+hide_cursor cp-src/screen.cpp /^void hide_cursor(void)$/
+htmltreelist prol-src/natded.prolog /^htmltreelist([]).$/
+hybrid_aligned_alloc c-src/emacs/src/gmalloc.c /^hybrid_aligned_alloc
(size_t alignment, size_t siz/
+hybrid_calloc c-src/emacs/src/gmalloc.c /^hybrid_calloc (size_t nmemb,
size_t size)$/
+hybrid_free c-src/emacs/src/gmalloc.c /^hybrid_free (void *ptr)$/
+hybrid_get_current_dir_name c-src/emacs/src/gmalloc.c
/^hybrid_get_current_dir_name (void)$/
+hybrid_malloc c-src/emacs/src/gmalloc.c /^hybrid_malloc (size_t size)$/
+hybrid_realloc c-src/emacs/src/gmalloc.c /^hybrid_realloc (void *ptr,
size_t size)$/
+hypothetical_mem prol-src/natded.prolog
/^hypothetical_mem(fi(N),Ass,_):-$/
+i c-src//c.c 2
+i c.c 169
+i c-src/emacs/src/lisp.h 567
+i c-src/emacs/src/lisp.h 4673
+i c-src/emacs/src/lisp.h 4679
+ialpage tex-src/texinfo.tex /^\\newbox\\partialpage$/
+ialpage tex-src/texinfo.tex /^ address@hidden \\advance\\dimen@
by-\\ht\\parti/
+ialpage tex-src/texinfo.tex /^ address@hidden
\\advance\\availdimen@ by/
+ialpage tex-src/texinfo.tex /^ address@hidden \\advance\\dimen@
by-\\ht\\pa/
+ialpage= tex-src/texinfo.tex /^
\\output={\\global\\setbox\\partialpage=$/
+idx c-src/emacs/src/lisp.h 3150
+ifstmt cp-src/cfront.H 672
+ifstmt::ifstmt cp-src/cfront.H /^ ifstmt(loc ll, Pexpr ee, Pstmt ss1,
Pstmt ss2)$/
+ignore_case c-src/etags.c 266
+ignore_mouse_drag_p c-src/emacs/src/keyboard.c 1256
+iline cp-src/cfront.H 780
+iline::arg cp-src/cfront.H 785
+iline::fct_name cp-src/cfront.H 781
+iline::i_next cp-src/cfront.H 782
+iline::i_table cp-src/cfront.H 783
+iline::local cp-src/cfront.H 784
+iline::tp cp-src/cfront.H 786
+ill=\relax tex-src/texinfo.tex /^\\let\\refill=\\relax$/
+immediate_quit c-src/emacs/src/keyboard.c 174
+impatto html-src/softwarelibero.html /^Impatto pratico del software
libero$/
+in_word_set c-src/etags.c /^in_word_set (register const char *str,
register un/
+inattribute c-src/etags.c 2400
+index c-src/emacs/src/lisp.h 1856
+infabsdir c-src/etags.c 206
+infabsname c-src/etags.c 205
+infiles Makefile /^infiles = $(filter-out ${NONSRCS},${SRCS})
srclist/
+infname c-src/etags.c 204
+info c-src/emacs/src/gmalloc.c 157
+infoPanel: objcpp-src/SimpleCalc.M /^- infoPanel:sender$/
+init c-src/etags.c /^init (void)$/
+init objcpp-src/SimpleCalc.M /^- init$/
+init: objc-src/Subprocess.m /^- init:(const char *)subprocessString$/
+init:withDelegate:andPtySupport:andStdErr: objc-src/Subprocess.m /^
andStdErr:(BOOL)wantsStdErr$/
+init_control c.c 239
+init_kboard c-src/emacs/src/keyboard.c /^init_kboard (KBOARD *kb,
Lisp_Object type)$/
+init_keyboard c-src/emacs/src/keyboard.c /^init_keyboard (void)$/
+init_registry cp-src/clheir.cpp /^void init_registry(void)$/
+init_tool_bar_items c-src/emacs/src/keyboard.c /^init_tool_bar_items
(Lisp_Object reuse)$/
+inita c.c /^static void inita () {}$/
+initb c.c /^static void initb () {}$/
+initial_kboard c-src/emacs/src/keyboard.c 84
+initialize-new-tags-table el-src/emacs/lisp/progmodes/etags.el
/^(defun initialize-new-tags-table ()$/
+initialize_random_junk cccp.y /^initialize_random_junk ()$/
+initialize_random_junk y-src/cccp.y /^initialize_random_junk ()$/
+input-pending-p c-src/emacs/src/keyboard.c /^DEFUN
("input-pending-p", Finput_pending_p, Sinput/
+input_available_clear_time c-src/emacs/src/keyboard.c 324
+input_pending c-src/emacs/src/keyboard.c 239
+input_polling_used c-src/emacs/src/keyboard.c /^input_polling_used
(void)$/
+input_was_pending c-src/emacs/src/keyboard.c 287
+insert erl-src/lines.erl /^insert(Lno, _, _) when Lno < 1 ->$/
+insert-abbrev-table-description c-src/abbrev.c /^DEFUN
("insert-abbrev-table-description", Finsert_/
+insert_after erl-src/lines.erl /^insert_after(Lno, _, _) when Lno < 1
->$/
+insert_after_nth erl-src/lines.erl /^insert_after_nth(1, [H|T], X)
->$/
+insert_nth erl-src/lines.erl /^insert_nth(1, L, X) ->$/
+insertname pas-src/common.pas /^function insertname;(*($/
+instr y-src/parse.y 80
+instr parse.y 80
+instruct c-src/etags.c 2527
+integer c-src/emacs/src/lisp.h 2127
+integer cccp.y 113
+integer y-src/cccp.y 112
+integer_overflow cccp.y /^integer_overflow ()$/
+integer_overflow y-src/cccp.y /^integer_overflow ()$/
+integertonmstr pas-src/common.pas /^function integertonmstr; (*
(TheInteger : integer)/
+intensity1 f-src/entry.for /^ &
intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+intensity1 f-src/entry.strange_suffix /^ &
intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+intensity1 f-src/entry.strange /^ &
intensity1(efv,fv,svin,svquad,sfpv,maxp,val/
+interface_locate c-src//c.c /^interface_locate(void)$/
+intern c-src/emacs/src/lisp.h /^intern (const char *str)$/
+intern_c_string c-src/emacs/src/lisp.h /^intern_c_string (const char
*str)$/
+internal_last_event_frame c-src/emacs/src/keyboard.c 228
+interpreters c-src/etags.c 197
+interrupt_input c-src/emacs/src/keyboard.c 328
+interrupt_input_blocked c-src/emacs/src/keyboard.c 76
+interrupt_input_blocked c-src/emacs/src/lisp.h 3048
+interrupts_deferred c-src/emacs/src/keyboard.c 331
+intoken c-src/etags.c /^#define intoken(c) (_itk[CHAR
(c)]) \/* c can be in/
+intspec c-src/emacs/src/lisp.h 1688
+intvar c-src/emacs/src/lisp.h 2277
+invalidate_nodes c-src/etags.c /^invalidate_nodes (fdesc *badfdp, node
**npp)$/
+ipc3dChannelType cp-src/c.C 1
+ipc3dIslandHierarchy cp-src/c.C 1
+ipc3dLinkControl cp-src/c.C 1
+irregular_location cp-src/clheir.hpp 47
+irregular_location::irregular_location cp-src/clheir.hpp /^
irregular_location(double xi, double yi, doubl/
+irregular_location::x cp-src/clheir.hpp 49
+irregular_location::y cp-src/clheir.hpp 49
+irregular_location::z cp-src/clheir.hpp 49
+isComment php-src/lce_functions.php /^ function
isComment($class)$/
+isHoliday cp-src/functions.cpp /^bool isHoliday ( Date d ){$/
+isLeap cp-src/functions.cpp /^bool isLeap ( int year ){$/
+is_curly_brace_form c-src/h.h 54
+is_explicit c-src/h.h 49
+is_func c-src/etags.c 221
+is_hor_space cccp.y 953
+is_hor_space y-src/cccp.y 953
+is_idchar cccp.y 948
+is_idchar y-src/cccp.y 948
+is_idstart cccp.y 950
+is_idstart y-src/cccp.y 950
+is_muldiv_operation cp-src/c.C /^is_muldiv_operation(pc)$/
+is_ordset prol-src/ordsets.prolog /^is_ordset(X) :- var(X), !, fail.$/
+iso_lispy_function_keys c-src/emacs/src/keyboard.c 5151
+isoperator prol-src/natded.prolog /^isoperator(Char):-$/
+isoptab prol-src/natded.prolog /^isoptab('%').$/
+iswhite c-src/etags.c /^#define iswhite(c) (_wht[CHAR
(c)]) \/* c is white /
+item_properties c-src/emacs/src/keyboard.c 7568
+ival cp-src/cfront.H 531
+ival::ival cp-src/cfront.H /^ ival(int ii) : (IVAL,0,0) {this=0; i1 =
ii;}$/
+jmp c-src/emacs/src/lisp.h 3044
+just_read_file c-src/etags.c /^just_read_file (FILE *inf)$/
+kbd_buffer c-src/emacs/src/keyboard.c 291
+kbd_buffer_events_waiting c-src/emacs/src/keyboard.c
/^kbd_buffer_events_waiting (void)$/
+kbd_buffer_get_event c-src/emacs/src/keyboard.c /^kbd_buffer_get_event
(KBOARD **kbp,$/
+kbd_buffer_nr_stored c-src/emacs/src/keyboard.c /^kbd_buffer_nr_stored
(void)$/
+kbd_buffer_store_event c-src/emacs/src/keyboard.c
/^kbd_buffer_store_event (register struct input_even/
+kbd_buffer_store_event_hold c-src/emacs/src/keyboard.c
/^kbd_buffer_store_event_hold (register struct input/
+kbd_buffer_store_help_event c-src/emacs/src/keyboard.c
/^kbd_buffer_store_help_event (Lisp_Object frame, Li/
+kbd_buffer_unget_event c-src/emacs/src/keyboard.c
/^kbd_buffer_unget_event (register struct input_even/
+kbd_fetch_ptr c-src/emacs/src/keyboard.c 297
+kbd_store_ptr c-src/emacs/src/keyboard.c 302
+kboard c-src/emacs/src/keyboard.c 860
+kboard_stack c-src/emacs/src/keyboard.c 858
+kboard_stack c-src/emacs/src/keyboard.c 864
+key_and_value c-src/emacs/src/lisp.h 1868
+keydelete erl-src/lists.erl /^keydelete(Key, N, [H|T]) when
element(N, H) == Key/
+keymap erl-src/lists.erl /^keymap({Mod, Func}, Pos, List) ->$/
+keymember erl-src/lists.erl /^keymember(Key, N, [T|Ts]) when
element(N, T) == Ke/
+keymerge erl-src/lists.erl /^keymerge(Index, X, Y) ->
keymerge(Index, X, Y, [])/
+keyremap c-src/emacs/src/keyboard.c 8742
+keyremap c-src/emacs/src/keyboard.c 8754
+keyremap_step c-src/emacs/src/keyboard.c /^keyremap_step (Lisp_Object
*keybuf, int bufsize, v/
+keyreplace erl-src/lists.erl /^keyreplace(Key,Pos,[],New) -> [];$/
+keys_of_keyboard c-src/emacs/src/keyboard.c /^keys_of_keyboard
(void)$/
+keysearch erl-src/lists.erl /^keysearch(Key, N, [H|T]) when
element(N, H) == Key/
+keysort erl-src/lists.erl /^keysort(Index, [X]) -> [X];$/
+keyval prol-src/natded.prolog /^keyval(key(Key,Val)) --> [Key,'='],
valseq(Val).$/
+keyvalcgi prol-src/natded.prolog /^keyvalcgi(Key,Val):-$/
+keyvalscgi prol-src/natded.prolog /^keyvalscgi(KeyVals),$/
+keyvalseq prol-src/natded.prolog /^keyvalseq([KeyVal|KeyVals]) --> $/
+keyword_parsing cccp.y 73
+keyword_parsing y-src/cccp.y 73
+keywords cccp.y 115
+keywords y-src/cccp.y 114
+keywords y-src/cccp.y 306
+kind c-src/emacs/src/keyboard.c 11024
+kind c-src/h.h 46
+kset_echo_string c-src/emacs/src/keyboard.c /^kset_echo_string
(struct kboard *kb, Lisp_Object v/
+kset_kbd_queue c-src/emacs/src/keyboard.c /^kset_kbd_queue (struct kboard
*kb, Lisp_Object val/
+kset_keyboard_translate_table c-src/emacs/src/keyboard.c
/^kset_keyboard_translate_table (struct kboard *kb, /
+kset_last_prefix_arg c-src/emacs/src/keyboard.c /^kset_last_prefix_arg
(struct kboard *kb, Lisp_Obje/
+kset_last_repeatable_command c-src/emacs/src/keyboard.c
/^kset_last_repeatable_command (struct kboard *kb, L/
+kset_local_function_key_map c-src/emacs/src/keyboard.c
/^kset_local_function_key_map (struct kboard *kb, Li/
+kset_overriding_terminal_local_map c-src/emacs/src/keyboard.c
/^kset_overriding_terminal_local_map (struct kboard /
+kset_real_last_command c-src/emacs/src/keyboard.c
/^kset_real_last_command (struct kboard *kb, Lisp_Ob/
+kset_system_key_syms c-src/emacs/src/keyboard.c /^kset_system_key_syms
(struct kboard *kb, Lisp_Obje/
+lang c-src/etags.c 208
+lang c-src/etags.c 251
+lang c-src/etags.c 259
+lang_names c-src/etags.c 718
+language c-src/etags.c 199
+last erl-src/lists.erl /^last([E]) ->$/
+last-tag el-src/emacs/lisp/progmodes/etags.el /^(defvar last-tag nil$/
+last_abbrev_point c-src/abbrev.c 78
+last_auto_save c-src/emacs/src/keyboard.c 214
+last_heapinfo c-src/emacs/src/gmalloc.c 402
+last_mouse_button c-src/emacs/src/keyboard.c 5215
+last_mouse_x c-src/emacs/src/keyboard.c 5216
+last_mouse_y c-src/emacs/src/keyboard.c 5217
+last_non_minibuf_size c-src/emacs/src/keyboard.c 207
+last_point_position c-src/emacs/src/keyboard.c 217
+last_state_size c-src/emacs/src/gmalloc.c 401
+last_undo_boundary c-src/emacs/src/keyboard.c 1287
+lasta c.c 272
+lastargmargin tex-src/texinfo.tex /^\\newskip\\deflastargmargin
\\deflastargmargin=18pt$/
+lastargmargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip
\\deflastargmargin{\\rm #2}\\hs/
+lastb c.c 278
+lb c-src/etags.c 2923
+lbs c-src/etags.c 2924
+lce php-src/lce_functions.php /^ function lce()$/
+lce php-src/lce_functions.php /^ function lce()$/
+lce_bindtextdomain php-src/lce_functions.php /^ function
lce_bindtextdomain($d_name, $d_path/
+lce_bindtextdomain php-src/lce_functions.php /^ function
lce_bindtextdomain($domain, $path)$/
+lce_dgettext php-src/lce_functions.php /^ function
lce_dgettext($domain, $msgid)$/
+lce_dgettext php-src/lce_functions.php /^ function
lce_dgettext($domain, $msgid)$/
+lce_geteditcode php-src/lce_functions.php /^ function
lce_geteditcode($type, $name, $text, $r/
+lce_gettext php-src/lce_functions.php /^ function
lce_gettext($msgid)$/
+lce_gettext php-src/lce_functions.php /^ function
lce_gettext($msgid)$/
+lce_textdomain php-src/lce_functions.php /^ function
lce_textdomain($domain)$/
+lce_textdomain php-src/lce_functions.php /^ function
lce_textdomain($domain)$/
+leasqr html-src/software.html /^Leasqr$/
+left c-src/etags.c 216
+left_shift cccp.y /^left_shift (a, b)$/
+left_shift y-src/cccp.y /^left_shift (a, b)$/
+len c-src/etags.c 237
+length c-src/etags.c 2495
+length cccp.y 44
+length cccp.y 114
+length y-src/cccp.y 44
+length y-src/cccp.y 113
+letter tex-src/texinfo.tex /^\\chapmacro {#1}{Appendix \\appendixletter}%$/
+letter tex-src/texinfo.tex /^ {#1}{Appendix
\\appendixletter}{\\noexpand\\folio}}/
+letter tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading
{#1}{\\appendixlet/
+letter tex-src/texinfo.tex
/^{#1}{\\appendixletter}{\\the\\secno}{\\noexpand\\folio}/
+letter tex-src/texinfo.tex /^\\subsecheading
{#1}{\\appendixletter}{\\the\\secno}{\\/
+letter tex-src/texinfo.tex
/^{#1}{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\/
+letter tex-src/texinfo.tex /^
{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\th/
+letter tex-src/texinfo.tex /^ {\\appendixletter}$/
+letter: tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix
\\appendixletter: \\noexp/
+level c-src/emacs/src/lisp.h 3153
+lex prol-src/natded.prolog /^lex(W,SynOut,Sem):-$/
+lexptr cccp.y 332
+lexptr y-src/cccp.y 332
+licenze html-src/softwarelibero.html /^Licenze d'uso di un
programma$/
+line c-src/etags.c 2493
+line perl-src/htlmify-cystic 37
+line y-src/parse.y 86
+lineCount php-src/lce_functions.php /^ function
lineCount($entry)$/
+linebuffer c-src/etags.c 239
+linebuffer_init c-src/etags.c /^linebuffer_init (linebuffer *lbp)$/
+linebuffer_setlen c-src/etags.c /^linebuffer_setlen (linebuffer *lbp,
int toksize)$/
+lineno c-src/etags.c 2506
+lineno c-src/emacs/src/lisp.h 3147
+linepos c-src/etags.c 2507
+linepos c-src/etags.c 2922
+links html-src/software.html /^Links to interesting software$/
+lisp_eval_depth c-src/emacs/src/lisp.h 3045
+lisp_h_CHECK_LIST_CONS c-src/emacs/src/lisp.h /^#define
lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (C/
+lisp_h_CHECK_NUMBER c-src/emacs/src/lisp.h /^#define
lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGER/
+lisp_h_CHECK_SYMBOL c-src/emacs/src/lisp.h /^#define
lisp_h_CHECK_SYMBOL(x) CHECK_TYPE (SYMBOLP/
+lisp_h_CHECK_TYPE c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_TYPE(ok,
predicate, x) \\$/
+lisp_h_CONSP c-src/emacs/src/lisp.h /^#define lisp_h_CONSP(x) (XTYPE (x) ==
Lisp_Cons)$/
+lisp_h_EQ c-src/emacs/src/lisp.h /^#define lisp_h_EQ(x, y) (XLI (x) ==
XLI (y))$/
+lisp_h_FLOATP c-src/emacs/src/lisp.h /^#define lisp_h_FLOATP(x) (XTYPE (x)
== Lisp_Float)/
+lisp_h_INTEGERP c-src/emacs/src/lisp.h /^#define lisp_h_INTEGERP(x)
((XTYPE (x) & (Lisp_Int/
+lisp_h_MARKERP c-src/emacs/src/lisp.h /^#define lisp_h_MARKERP(x) (MISCP (x)
&& XMISCTYPE /
+lisp_h_MISCP c-src/emacs/src/lisp.h /^#define lisp_h_MISCP(x) (XTYPE (x) ==
Lisp_Misc)$/
+lisp_h_NILP c-src/emacs/src/lisp.h /^#define lisp_h_NILP(x) EQ (x, Qnil)$/
+lisp_h_SET_SYMBOL_VAL c-src/emacs/src/lisp.h /^#define
lisp_h_SET_SYMBOL_VAL(sym, v) \\$/
+lisp_h_SYMBOLP c-src/emacs/src/lisp.h /^#define lisp_h_SYMBOLP(x) (XTYPE (x)
== Lisp_Symbo/
+lisp_h_SYMBOL_CONSTANT_P c-src/emacs/src/lisp.h /^#define
lisp_h_SYMBOL_CONSTANT_P(sym) (XSYMBOL (sy/
+lisp_h_SYMBOL_VAL c-src/emacs/src/lisp.h /^#define
lisp_h_SYMBOL_VAL(sym) \\$/
+lisp_h_VECTORLIKEP c-src/emacs/src/lisp.h /^#define lisp_h_VECTORLIKEP(x)
(XTYPE (x) == Lisp_V/
+lisp_h_XCAR c-src/emacs/src/lisp.h /^#define lisp_h_XCAR(c) XCONS
(c)->car$/
+lisp_h_XCDR c-src/emacs/src/lisp.h /^#define lisp_h_XCDR(c) XCONS
(c)->u.cdr$/
+lisp_h_XCONS c-src/emacs/src/lisp.h /^#define lisp_h_XCONS(a) \\$/
+lisp_h_XFASTINT c-src/emacs/src/lisp.h /^# define lisp_h_XFASTINT(a)
XINT (a)$/
+lisp_h_XHASH c-src/emacs/src/lisp.h /^#define lisp_h_XHASH(a) XUINT (a)$/
+lisp_h_XIL c-src/emacs/src/lisp.h /^# define lisp_h_XIL(i) ((Lisp_Object)
{ i })$/
+lisp_h_XIL c-src/emacs/src/lisp.h /^# define lisp_h_XIL(i) (i)$/
+lisp_h_XINT c-src/emacs/src/lisp.h /^# define lisp_h_XINT(a) (XLI (a) >>
INTTYPEBITS)$/
+lisp_h_XLI c-src/emacs/src/lisp.h /^# define lisp_h_XLI(o) ((o).i)$/
+lisp_h_XLI c-src/emacs/src/lisp.h /^# define lisp_h_XLI(o) (o)$/
+lisp_h_XPNTR c-src/emacs/src/lisp.h /^#define lisp_h_XPNTR(a) \\$/
+lisp_h_XSYMBOL c-src/emacs/src/lisp.h /^# define lisp_h_XSYMBOL(a) \\$/
+lisp_h_XTYPE c-src/emacs/src/lisp.h /^# define lisp_h_XTYPE(a) ((enum
Lisp_Type) (XLI (a/
+lisp_h_XUNTAG c-src/emacs/src/lisp.h /^# define lisp_h_XUNTAG(a, type)
((void *) (intptr_/
+lisp_h_check_cons_list c-src/emacs/src/lisp.h /^# define
lisp_h_check_cons_list() ((void) 0)$/
+lisp_h_make_number c-src/emacs/src/lisp.h /^# define
lisp_h_make_number(n) \\$/
+lispy_accent_codes c-src/emacs/src/keyboard.c 4634
+lispy_accent_keys c-src/emacs/src/keyboard.c 4741
+lispy_drag_n_drop_names c-src/emacs/src/keyboard.c 5181
+lispy_function_keys c-src/emacs/src/keyboard.c 4768
+lispy_function_keys c-src/emacs/src/keyboard.c 5065
+lispy_kana_keys c-src/emacs/src/keyboard.c 5026
+lispy_modifier_list c-src/emacs/src/keyboard.c /^lispy_modifier_list
(int modifiers)$/
+lispy_multimedia_keys c-src/emacs/src/keyboard.c 4962
+lispy_wheel_names c-src/emacs/src/keyboard.c 5174
+list c-src/emacs/src/gmalloc.c 186
+list-tags el-src/emacs/lisp/progmodes/etags.el /^(defun list-tags
(file &optional _next-match)$/
+list-tags-function el-src/emacs/lisp/progmodes/etags.el /^(defvar
list-tags-function nil$/
+list2i c-src/emacs/src/lisp.h /^list2i (EMACS_INT x, EMACS_INT y)$/
+list3i c-src/emacs/src/lisp.h /^list3i (EMACS_INT x, EMACS_INT y, EMACS_INT
w)$/
+list4i c-src/emacs/src/lisp.h /^list4i (EMACS_INT x, EMACS_INT y, EMACS_INT
w, EMA/
+list_to_ord_set prol-src/ordsets.prolog /^list_to_ord_set(List, Set)
:-$/
+lno c-src/etags.c 223
+load objc-src/PackInsp.m /^-load$/
+loadContentsOf:inTable: objc-src/PackInsp.m
/^-loadContentsOf:(const char *)type inTable:(HashTa/
+loadImage objc-src/PackInsp.m /^-loadImage$/
+loadKeyValuesFrom:inTable: objc-src/PackInsp.m
/^-loadKeyValuesFrom:(const char *)type inTable:(Has/
+loadPORManager php-src/lce_functions.php /^ function &loadPORManager()$/
+loc cp-src/cfront.H 67
+loc::file cp-src/cfront.H 69
+loc::line cp-src/cfront.H 70
+local_if_set c-src/emacs/src/lisp.h 2338
+location cp-src/clheir.hpp 33
+location::location cp-src/clheir.hpp /^ location() { }$/
+lookup cccp.y /^lookup (name, len, hash)$/
+lookup y-src/cccp.y /^lookup (name, len, hash)$/
+lowcase c-src/etags.c /^#define lowcase(c) tolower (CHAR (c))$/
+lstmt cp-src/cfront.H 680
+lstmt::lstmt cp-src/cfront.H /^ lstmt(TOK bb, loc ll, Pname nn, Pstmt
ss) : (bb,l/
+lucid_event_type_list_p c-src/emacs/src/keyboard.c
/^lucid_event_type_list_p (Lisp_Object object)$/
+mabort c-src/emacs/src/gmalloc.c /^mabort (enum mcheck_status status)$/
+mach_host_self c-src/machsyscalls.h /^SYSCALL (mach_host_self, -29,$/
+mach_msg_trap c-src/machsyscalls.h /^SYSCALL (mach_msg_trap, -25,$/
+mach_reply_port c-src/machsyscalls.h /^SYSCALL (mach_reply_port,
-26,$/
+mach_task_self c-src/machsyscalls.h /^SYSCALL (mach_task_self, -28,$/
+mach_thread_self c-src/machsyscalls.h /^SYSCALL (mach_thread_self,
-27,$/
+magic c-src/emacs/src/gmalloc.c 1863
+main::alarm perl-src/mirror.pl /^sub alarm$/
+main::bsplit perl-src/mirror.pl /^sub bsplit$/
+main::checkout_regexps perl-src/mirror.pl /^sub checkout_regexps$/
+main::chown perl-src/mirror.pl /^sub chown$/
+main::clear_local perl-src/mirror.pl /^sub clear_local$/
+main::clear_remote perl-src/mirror.pl /^sub clear_remote$/
+main::command_line_override perl-src/mirror.pl /^sub
command_line_override$/
+main::compare_dirs perl-src/mirror.pl /^sub compare_dirs$/
+main::compare_times perl-src/mirror.pl /^sub compare_times$/
+main::connect perl-src/mirror.pl /^sub connect$/
+main::create_assocs perl-src/mirror.pl /^sub create_assocs$/
+main::cwd perl-src/mirror.pl /^sub cwd$/
+main::delete_assocs perl-src/mirror.pl /^sub delete_assocs$/
+main::dir_exists perl-src/mirror.pl /^sub dir_exists$/
+main::dirpart perl-src/mirror.pl /^sub dirpart$/
+main::disconnect perl-src/mirror.pl /^sub disconnect$/
+main::do_all_transfers perl-src/mirror.pl /^sub do_all_transfers$/
+main::do_delete perl-src/mirror.pl /^sub do_delete$/
+main::do_deletes perl-src/mirror.pl /^sub do_deletes$/
+main::do_mirror perl-src/mirror.pl /^sub do_mirror$/
+main::expand_symlink perl-src/mirror.pl /^sub expand_symlink$/
+main::f1 perl-src/kai-test.pl /^sub f1 {$/
+main::f2 perl-src/kai-test.pl /^sub main::f2 {$/
+main::f7 perl-src/kai-test.pl /^sub f7 {$/
+main::file_end perl-src/htlmify-cystic /^sub file_end ()$/
+main::filename_to_tempname perl-src/mirror.pl /^sub
filename_to_tempname$/
+main::filesize perl-src/mirror.pl /^sub filesize$/
+main::find_prog perl-src/mirror.pl /^sub find_prog$/
+main::finish_appendices perl-src/htlmify-cystic /^sub finish_appendices
()$/
+main::finish_sections perl-src/htlmify-cystic /^sub finish_sections ()$/
+main::finish_subsections perl-src/htlmify-cystic /^sub
finish_subsections ()$/
+main::finish_subsubsections perl-src/htlmify-cystic /^sub
finish_subsubsections ()$/
+main::fix_package perl-src/mirror.pl /^sub fix_package$/
+main::flatten_path perl-src/mirror.pl /^sub flatten_path$/
+main::get_local_directory_details perl-src/mirror.pl /^sub
get_local_directory_details$/
+main::get_passwd perl-src/mirror.pl /^sub get_passwd$/
+main::get_remote_directory_details perl-src/mirror.pl /^sub
get_remote_directory_details$/
+main::getopt perl-src/yagrip.pl /^sub getopt {$/
+main::handler perl-src/mirror.pl /^sub handler$/
+main::interpret_config perl-src/mirror.pl /^sub interpret_config$/
+main::interpret_config_files perl-src/mirror.pl /^sub
interpret_config_files$/
+main::istrue perl-src/mirror.pl /^sub istrue$/
+main::keep perl-src/mirror.pl /^sub keep$/
+main::log_upload perl-src/mirror.pl /^sub log_upload$/
+main::make_dir perl-src/mirror.pl /^sub make_dir$/
+main::make_dirs perl-src/mirror.pl /^sub make_dirs$/
+main::make_symlinks perl-src/mirror.pl /^sub make_symlinks$/
+main::map_name perl-src/mirror.pl /^sub map_name$/
+main::map_user_group perl-src/mirror.pl /^sub map_user_group$/
+main::mkdirs perl-src/mirror.pl /^sub mkdirs$/
+main::mksymlink perl-src/mirror.pl /^sub mksymlink$/
+main::msg perl-src/mirror.pl /^sub msg$/
+main::msg_version perl-src/mirror.pl /^sub msg_version$/
+main::myflock perl-src/mirror.pl /^sub myflock$/
+main::parse_line perl-src/mirror.pl /^sub parse_line$/
+main::parse_remote_details perl-src/mirror.pl /^sub
parse_remote_details$/
+main::parse_remote_details_real perl-src/mirror.pl /^sub
parse_remote_details_real$/
+main::parse_timeout perl-src/mirror.pl /^sub parse_timeout$/
+main::patch_ls_lR_file perl-src/mirror.pl /^sub patch_ls_lR_file$/
+main::pr_variables perl-src/mirror.pl /^sub pr_variables$/
+main::prod perl-src/mirror.pl /^sub prod$/
+main::read_toc perl-src/htlmify-cystic /^sub read_toc ()$/
+main::real_dir_from_path perl-src/mirror.pl /^sub
real_dir_from_path$/
+main::save_delete perl-src/mirror.pl /^sub save_delete$/
+main::save_mkdir perl-src/mirror.pl /^sub save_mkdir$/
+main::section_href perl-src/htlmify-cystic /^sub section_href ($)$/
+main::section_name perl-src/htlmify-cystic /^sub section_name ($)$/
+main::section_url perl-src/htlmify-cystic /^sub section_url ()$/
+main::section_url_base perl-src/htlmify-cystic /^sub section_url_base ()$/
+main::section_url_name perl-src/htlmify-cystic /^sub section_url_name ()$/
+main::set_assoc_from_array perl-src/mirror.pl /^sub
set_assoc_from_array$/
+main::set_attribs perl-src/mirror.pl /^sub set_attribs$/
+main::set_defaults perl-src/mirror.pl /^sub set_defaults$/
+main::set_timestamp perl-src/mirror.pl /^sub set_timestamp$/
+main::set_timestamps perl-src/mirror.pl /^sub set_timestamps$/
+main::set_variables perl-src/mirror.pl /^sub set_variables$/
+main::sys perl-src/mirror.pl /^sub sys$/
+main::t2str perl-src/mirror.pl /^sub t2str$/
+main::to_bytes perl-src/mirror.pl /^sub to_bytes$/
+main::toc_line perl-src/htlmify-cystic /^sub toc_line ($)$/
+main::transfer_file perl-src/mirror.pl /^sub transfer_file$/
+main::trap_signals perl-src/mirror.pl /^sub trap_signals$/
+main::unix2vms perl-src/mirror.pl /^sub unix2vms$/
+main::unlink_dbm perl-src/mirror.pl /^sub unlink_dbm$/
+main::upd_val perl-src/mirror.pl /^sub upd_val$/
+main::usage perl-src/yagrip.pl /^sub usage {$/
+main::utime perl-src/mirror.pl /^sub utime$/
+main::will_compress perl-src/mirror.pl /^sub will_compress$/
+main::will_split perl-src/mirror.pl /^sub will_split$/
+make-abbrev-table c-src/abbrev.c /^DEFUN ("make-abbrev-table",
Fmake_abbrev_table, Sm/
+make_C_tag c-src/etags.c /^make_C_tag (bool isfun)$/
+make_coor prol-src/natded.prolog
/^make_coor(s(_),Alpha,Sem1,Sem2,address@hidden@Sem2).$/
+make_ctrl_char c-src/emacs/src/keyboard.c /^make_ctrl_char (int c)$/
+make_fixnum_or_float c-src/emacs/src/lisp.h /^#define
make_fixnum_or_float(val) \\$/
+make_formatted_string c-src/emacs/src/lisp.h /^extern Lisp_Object
make_formatted_string (char *, /
+make_lisp_ptr c-src/emacs/src/lisp.h /^make_lisp_ptr (void *ptr, enum
Lisp_Type type)$/
+make_lisp_symbol c-src/emacs/src/lisp.h /^make_lisp_symbol (struct
Lisp_Symbol *sym)$/
+make_lispy_event c-src/emacs/src/keyboard.c /^make_lispy_event
(struct input_event *event)$/
+make_lispy_focus_in c-src/emacs/src/keyboard.c /^make_lispy_focus_in
(Lisp_Object frame)$/
+make_lispy_focus_out c-src/emacs/src/keyboard.c /^make_lispy_focus_out
(Lisp_Object frame)$/
+make_lispy_movement c-src/emacs/src/keyboard.c /^make_lispy_movement
(struct frame *frame, Lisp_Obj/
+make_lispy_position c-src/emacs/src/keyboard.c /^make_lispy_position
(struct frame *f, Lisp_Object /
+make_lispy_switch_frame c-src/emacs/src/keyboard.c
/^make_lispy_switch_frame (Lisp_Object frame)$/
+make_number c-src/emacs/src/lisp.h /^# define make_number(n)
lisp_h_make_number (n)$/
+make_pointer_integer c-src/emacs/src/lisp.h /^make_pointer_integer (void
*p)$/
+make_scroll_bar_position c-src/emacs/src/keyboard.c
/^make_scroll_bar_position (struct input_event *ev, /
+make_tag c-src/etags.c /^make_tag (const char *name, \/* tag name,
or NULL /
+make_uninit_sub_char_table c-src/emacs/src/lisp.h
/^make_uninit_sub_char_table (int depth, int min_cha/
+make_uninit_vector c-src/emacs/src/lisp.h /^make_uninit_vector (ptrdiff_t
size)$/
+malloc c-src/emacs/src/gmalloc.c 64
+malloc c-src/emacs/src/gmalloc.c 68
+malloc c-src/emacs/src/gmalloc.c /^extern void *malloc (size_t size)
ATTRIBUTE_MALLOC/
+malloc c-src/emacs/src/gmalloc.c /^malloc (size_t size)$/
+malloc c-src/emacs/src/gmalloc.c 1715
+malloc_atfork_handler_child c-src/emacs/src/gmalloc.c
/^malloc_atfork_handler_child (void)$/
+malloc_atfork_handler_parent c-src/emacs/src/gmalloc.c
/^malloc_atfork_handler_parent (void)$/
+malloc_atfork_handler_prepare c-src/emacs/src/gmalloc.c
/^malloc_atfork_handler_prepare (void)$/
+malloc_enable_thread c-src/emacs/src/gmalloc.c /^malloc_enable_thread
(void)$/
+malloc_info c-src/emacs/src/gmalloc.c 167
+malloc_initialize_1 c-src/emacs/src/gmalloc.c /^malloc_initialize_1
(void)$/
+mallochook c-src/emacs/src/gmalloc.c /^mallochook (size_t size)$/
+mao c-src/h.h 101
+map c-src/emacs/src/keyboard.c 8748
+map erl-src/lists.erl /^map(F, As, [Hd|Tail]) ->$/
+map_word prol-src/natded.prolog /^map_word([[_]|Ws],Exp):-$/
+mapping html-src/algrthms.html /^Mapping the Channel Symbols$/
+mapsyn prol-src/natded.prolog /^mapsyn(A\/B,AM\/BM):-$/
+mark_kboards c-src/emacs/src/keyboard.c /^mark_kboards (void)$/
+max c.c /^max (int a, int b)$/
+max c.c /^__attribute__ ((always_inline)) max (int a, int b)/
+max c-src/emacs/src/lisp.h 58
+max c-src/emacs/src/lisp.h /^#define max(a, b) ((a) > (b) ? (a) : (b))$/
+max cp-src/conway.cpp /^#define max(x,y) ((x > y) ? x : y)$/
+max erl-src/lists.erl /^max([H|T]) -> max(T, H).$/
+max_args c-src/emacs/src/lisp.h 1686
+max_num_directions cp-src/clheir.hpp 31
+max_num_generic_objects cp-src/clheir.cpp 9
+maxargs c-src/emacs/src/lisp.h 2831
+maybe_gc c-src/emacs/src/lisp.h /^maybe_gc (void)$/
+mcheck c-src/emacs/src/gmalloc.c /^mcheck (void (*func) (enum
mcheck_status))$/
+mcheck_status c-src/emacs/src/gmalloc.c 283
+mcheck_used c-src/emacs/src/gmalloc.c 2012
+memalign c-src/emacs/src/gmalloc.c /^memalign (size_t alignment,
size_t size)$/
+member erl-src/lists.erl /^member(X, [X|_]) ->$/
+member prol-src/natded.prolog /^member(X,[X|_]).$/
+memclear c-src/emacs/src/lisp.h /^memclear (void *p, ptrdiff_t nbytes)$/
+menu_bar_item c-src/emacs/src/keyboard.c /^menu_bar_item (Lisp_Object
key, Lisp_Object item, /
+menu_bar_items c-src/emacs/src/keyboard.c /^menu_bar_items (Lisp_Object
old)$/
+menu_bar_items_index c-src/emacs/src/keyboard.c 7369
+menu_bar_items_vector c-src/emacs/src/keyboard.c 7368
+menu_bar_one_keymap_changed_items c-src/emacs/src/keyboard.c 7363
+menu_item_eval_property c-src/emacs/src/keyboard.c
/^menu_item_eval_property (Lisp_Object sexpr)$/
+menu_item_eval_property_1 c-src/emacs/src/keyboard.c
/^menu_item_eval_property_1 (Lisp_Object arg)$/
+menu_separator_name_p c-src/emacs/src/keyboard.c /^menu_separator_name_p
(const char *label)$/
+merge erl-src/lists.erl /^merge(X, Y) -> merge(X, Y, []).$/
+metasource c-src/etags.c 198
+min c-src/emacs/src/gmalloc.c /^#define min(a, b) ((a) < (b) ? (a) :
(b))$/
+min c-src/emacs/src/lisp.h 57
+min c-src/emacs/src/lisp.h /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
+min cp-src/conway.cpp /^#define min(x,y) ((x > y) ? y : x)$/
+min erl-src/lists.erl /^min([H|T]) -> min(T, H).$/
+min_args c-src/emacs/src/lisp.h 1686
+min_char c-src/emacs/src/lisp.h 1621
+miti html-src/softwarelibero.html /^Sfatiamo alcuni miti$/
+modifier_names c-src/emacs/src/keyboard.c 6319
+modifier_symbols c-src/emacs/src/keyboard.c 6327
+modify_event_symbol c-src/emacs/src/keyboard.c /^modify_event_symbol
(ptrdiff_t symbol_num, int mod/
+more_aligned_int c.c 165
+morecore_nolock c-src/emacs/src/gmalloc.c /^morecore_nolock
(size_t size)$/
+morecore_recursing c-src/emacs/src/gmalloc.c 604
+mouse_syms c-src/emacs/src/keyboard.c 4627
+mprobe c-src/emacs/src/gmalloc.c /^mprobe (void *ptr)$/
+msgid php-src/lce_functions.php /^ function msgid($line, $class)$/
+msgstr php-src/lce_functions.php /^ function msgstr($line, $class)$/
+mstats c-src/emacs/src/gmalloc.c 308
+mt prol-src/natded.prolog /^mt:-$/
+mtg html-src/software.html /^MTG$/
+multi_line c-src/etags.c 267
+multibyte c-src/emacs/src/regex.h 403
+my_printf c.c /^my_printf (void *my_object, const char *my_format,/
+my_struct c.c 226
+my_struct c-src/h.h 91
+my_typedef c.c 228
+my_typedef c-src/h.h 93
+n c-src/exit.c 28
+n c-src/exit.strange_suffix 28
+name c-src/getopt.h 76
+name c-src/getopt.h 78
+name c-src/etags.c 192
+name c-src/etags.c 218
+name c-src/etags.c 261
+name c-src/etags.c 2271
+name c-src/emacs/src/keyboard.c 7241
+name c-src/emacs/src/lisp.h 1808
+name c-src/emacs/src/lisp.h 3144
+name cp-src/cfront.H 557
+name perl-src/htlmify-cystic 357
+name tex-src/texinfo.tex /^\\begingroup\\defname
{#2}{#1}\\defunargs{#3}\\endgrou/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Function}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1}
#2}{Function}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Macro}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Special Form}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defoptype{} on
#1}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{Method on #1}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defcvtype{} of
#1}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{Instance Variable
of #1}%/
+name tex-src/texinfo.tex /^\\begingroup\\defname
{#2}{#1}\\defvarargs{#3}\\endgro/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Variable}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{User Option}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1}
#2}{Variable}%$/
+name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}$/
+name tex-src/texinfo.tex /^\\begingroup\\defname
{#2}{#1}\\deftpargs{#3}\\endgrou/
+name cccp.y 43
+name cccp.y 114
+name cccp.y 114
+name y-src/cccp.y 43
+name y-src/cccp.y 113
+name y-src/cccp.y 113
+name::lex_level cp-src/cfront.H 565
+name::n_addr_taken cp-src/cfront.H 567
+name::n_assigned_to cp-src/cfront.H 569
+name::n_evaluated cp-src/cfront.H 563
+name::n_list cp-src/cfront.H 575
+name::n_offset cp-src/cfront.H 574
+name::n_oper cp-src/cfront.H 558
+name::n_protect cp-src/cfront.H 566
+name::n_qualifier cp-src/cfront.H 578
+name::n_realscope cp-src/cfront.H 579
+name::n_scope cp-src/cfront.H 561
+name::n_stclass cp-src/cfront.H 560
+name::n_sto cp-src/cfront.H 559
+name::n_tbl_list cp-src/cfront.H 576
+name::n_union cp-src/cfront.H 562
+name::n_used cp-src/cfront.H 568
+name::n_val cp-src/cfront.H 571
+name::n_xref cp-src/cfront.H 564
+name::take_addr cp-src/cfront.H /^ void take_addr() {
n_addr_taken++; };$/
+name::unhide cp-src/cfront.H /^ void unhide() { n_key=0;
n_list=0; };$/
+name::use cp-src/cfront.H /^ void use() { n_used++; };$/
+name::where cp-src/cfront.H 570
+name_list cp-src/cfront.H 403
+name_list::f cp-src/cfront.H 404
+name_list::l cp-src/cfront.H 405
+name_list::name_list cp-src/cfront.H /^ name_list(Pname ff, Plist ll) {
f=ff; l=ll; };$/
+named c-src/etags.c 2505
+namestringequal pas-src/common.pas /^function
namestringequal;(*(var Name1,Name2 : Name/
+nestlev c-src/etags.c 2525
+new erl-src/lines.erl /^new() ->$/
+new objc-src/PackInsp.m /^+new$/
+new perl-src/htlmify-cystic 163
+new_tag perl-src/htlmify-cystic 18
+newlb c-src/etags.c 2930
+newlinepos c-src/etags.c 2932
+newtextstring pas-src/common.pas /^function newtextstring; (*:
TextString;*)$/
+next c.c 174
+next c-src/etags.c 203
+next c-src/emacs/src/gmalloc.c 164
+next c-src/emacs/src/gmalloc.c 188
+next c-src/emacs/src/gmalloc.c 198
+next c-src/emacs/src/keyboard.c 861
+next c-src/emacs/src/keyboard.c 7246
+next c-src/emacs/src/lisp.h 700
+next c-src/emacs/src/lisp.h 1848
+next c-src/emacs/src/lisp.h 2192
+next c-src/emacs/src/lisp.h 3028
+next c-src/emacs/src/lisp.h 3134
+next cccp.y 42
+next y-src/cccp.y 42
+next-file el-src/emacs/lisp/progmodes/etags.el /^(defun next-file
(&optional initialize novisit)$/
+next-file-list el-src/emacs/lisp/progmodes/etags.el /^(defvar
next-file-list nil$/
+next_almost_prime c-src/emacs/src/lisp.h /^extern EMACS_INT
next_almost_prime (EMACS_INT) ATT/
+next_free c-src/emacs/src/lisp.h 1851
+next_weak c-src/emacs/src/lisp.h 1875
+nextfree c-src/emacs/src/lisp.h 3029
+nfree c-src/emacs/src/gmalloc.c 150
+nl c-src/etags.c 2521
+nlist cp-src/cfront.H 708
+nlist::add cp-src/cfront.H /^ void add(Pname n) { tail->n_list
= n; tail = n; }/
+nlist::head cp-src/cfront.H 709
+nlist::tail cp-src/cfront.H 710
+no tex-src/texinfo.tex /^\\newcount \\appendixno \\appendixno =
address@hidden/
+no tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1
\\message{Appendix/
+no tex-src/texinfo.tex /^\\ifnum\\secno=0
Appendix\\xreftie'char\\the\\appendixn/
+no.\the\secno tex-src/texinfo.tex /^\\else \\ifnum \\subsecno=0
Section\\xreftie'char\\the\\/
+no.\the\secno.\the\subsecno tex-src/texinfo.tex
/^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no.\the\secno.\the\subsecno.\the\subsubsecno tex-src/texinfo.tex
/^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no_argument c-src/getopt.h 89
+no_lang_help c-src/etags.c 707
+no_sub c-src/emacs/src/regex.h 387
+nocase_tail c-src/etags.c /^nocase_tail (const char *cp)$/
+node c-src/etags.c 225
+node cp-src/cfront.H 165
+node::base cp-src/cfront.H 166
+node::n_key cp-src/cfront.H 167
+node::permanent cp-src/cfront.H 168
+node_st c-src/etags.c 214
+noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
+noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
+noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
+noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
+nofonts tex-src/texinfo.tex /^{\\indexnofonts$/
+nofonts tex-src/texinfo.tex /^{\\indexnofonts$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+none_help c-src/etags.c 703
+normalize prol-src/natded.prolog /^normalize(M,MNorm):-$/
+normalize_fresh prol-src/natded.prolog /^normalize_fresh(M,N):-$/
+normalize_tree prol-src/natded.prolog
/^normalize_tree(tree(Rule,Syn:Sem,Trees),$/
+normalize_trees prol-src/natded.prolog /^normalize_trees([],[]).$/
+nosave pyt-src/server.py /^ def nosave(self):$/
+nosave pyt-src/server.py /^ def nosave(self):$/
+nosave pyt-src/server.py /^ def nosave(self):$/
+not_bol c-src/emacs/src/regex.h 391
+not_eol c-src/emacs/src/regex.h 394
+not_single_kboard_state c-src/emacs/src/keyboard.c
/^not_single_kboard_state (KBOARD *kboard)$/
+notag2 c-src/torture.c 26
+notag2 c-src/dostorture.c 26
+notag4 c-src/torture.c 45
+notag4 c-src/dostorture.c 45
+notinname c-src/etags.c /^#define notinname(c) (_nin[CHAR (c)]) \/* c
is not /
+npending c-src/emacs/src/keyboard.c 7244
+nth erl-src/lines.erl /^nth(L, _) when L < 1 ->$/
+nth erl-src/lists.erl /^nth(1, [H|T]) ->$/
+nthtail erl-src/lists.erl /^nthtail(1, [H|T]) ->$/
+ntool_bar_items c-src/emacs/src/keyboard.c 7974
+numOfChannels cp-src/c.C 1
+num_columns cp-src/conway.cpp 16
+num_input_events c-src/emacs/src/keyboard.c 210
+num_regs c-src/emacs/src/regex.h 430
+num_rows cp-src/conway.cpp 15
+numberKeys: objcpp-src/SimpleCalc.M /^- numberKeys:sender$/
+number_len c-src/etags.c /^static int number_len (long)
ATTRIBUTE_CONST;$/
+numbervars prol-src/natded.prolog /^numbervars(X):-$/
+nvars c-src/emacs/src/lisp.h 3140
+objdef c-src/etags.c 2484
+object c-src/emacs/src/lisp.h 2128
+object_registry cp-src/clheir.cpp 10
+objtag c-src/etags.c 2453
+objvar c-src/emacs/src/lisp.h 2297
+obstack_chunk_alloc y-src/parse.y 46
+obstack_chunk_alloc parse.y 46
+obstack_chunk_free y-src/parse.y 47
+obstack_chunk_free parse.y 47
+ocatseen c-src/etags.c 2477
+octave_MDiagArray2_h cp-src/MDiagArray2.h 29
+octave_Range_h cp-src/Range.h 24
+offset c-src/etags.c 2494
+offset c-src/emacs/src/lisp.h 2305
+offset c-src/emacs/src/lisp.h 2365
+oignore c-src/etags.c 2483
+oimplementation c-src/etags.c 2474
+oinbody c-src/etags.c 2478
+ok: objc-src/PackInsp.m /^-ok:sender$/
+ok_to_echo_at_next_pause c-src/emacs/src/keyboard.c 159
+omethodcolon c-src/etags.c 2481
+omethodparm c-src/etags.c 2482
+omethodsign c-src/etags.c 2479
+omethodtag c-src/etags.c 2480
+onone c-src/etags.c 2472
+oparenseen c-src/etags.c 2476
+open-dribble-file c-src/emacs/src/keyboard.c /^DEFUN
("open-dribble-file", Fopen_dribble_file, So/
+open: objc-src/PackInsp.m /^-open:sender$/
+openInWorkspace objc-src/PackInsp.m /^static void
openInWorkspace(const char *filename)$/
+operationKeys: objcpp-src/SimpleCalc.M /^- operationKeys:sender$/
+operator cccp.y 438
+operator y-src/cccp.y 438
+operator - cp-src/c.C /^void operator -(int, int) {}$/
+operator << cp-src/functions.cpp /^ostream& operator << ( ostream &c,
Date d ) {$/
+operator >> cp-src/functions.cpp /^istream& operator >> ( istream &i,
Date & dd ){$/
+operator int cp-src/c.C /^void operator int(int, int) {}$/
+operator+ cp-src/c.C /^void operator+(int, int) {}$/
+opparsebody\Edefop\defopx\defopheader\defoptype tex-src/texinfo.tex
/^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+oprotocol c-src/etags.c 2473
+option c-src/getopt.h 73
+optional_argument c-src/getopt.h 91
+opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype tex-src/texinfo.tex
/^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+ord_add_element prol-src/ordsets.prolog /^ord_add_element([], Element,
[Element]).$/
+ord_del_element prol-src/ordsets.prolog /^ord_del_element([], _, []).$/
+ord_disjoint prol-src/ordsets.prolog /^ord_disjoint(Set1, Set2) :-$/
+ord_intersect prol-src/ordsets.prolog /^ord_intersect([Head1|Tail1],
[Head2|Tail2]) :-$/
+ord_intersection prol-src/ordsets.prolog /^ord_intersection([], _, []).$/
+ord_intersection prol-src/ordsets.prolog /^ord_intersection([], Set2,
[], Set2).$/
+ord_intersection prol-src/ordsets.prolog /^ord_intersection(Sets,
Intersection) :- $/
+ord_intersection2 prol-src/ordsets.prolog /^ord_intersection2(1,
[Set|Sets], Set0, Sets0) :- !/
+ord_intersection3 prol-src/ordsets.prolog /^ord_intersection3(<, _, Set1,
Head2, Tail2, Inters/
+ord_intersection4 prol-src/ordsets.prolog /^ord_intersection4(<, _, Set1,
Head2, Tail2, Inters/
+ord_member prol-src/ordsets.prolog /^ord_member(X, [E|Es]) :-$/
+ord_seteq prol-src/ordsets.prolog /^ord_seteq(Set1, Set2) :-$/
+ord_setproduct prol-src/ordsets.prolog /^ord_setproduct([], _, []).$/
+ord_subset prol-src/ordsets.prolog /^ord_subset([], _).$/
+ord_subtract prol-src/ordsets.prolog /^ord_subtract(Set1, Set2, Union) :-$/
+ord_symdiff prol-src/ordsets.prolog /^ord_symdiff([], Set2, Set2).$/
+ord_union prol-src/ordsets.prolog /^ord_union(Set1, Set2, Union) :-$/
+ord_union prol-src/ordsets.prolog /^ord_union([], Union) :- !, Union =
[].$/
+ord_union4 prol-src/ordsets.prolog /^ord_union4(<, Head, Set1, Head2,
Tail2, [Head|Unio/
+ord_union_all prol-src/ordsets.prolog /^ord_union_all(1, [Set|Sets], Set,
Sets) :- !.$/
+oss html-src/softwarelibero.html /^Il movimento open source$/
+otagseen c-src/etags.c 2475
+output_file perl-src/htlmify-cystic 35
+output_files perl-src/htlmify-cystic 32
+outputtable html-src/algrthms.html /^Output$/
+outsyn prol-src/natded.prolog /^outsyn(['Any'],_).$/
+p c-src/emacs/src/lisp.h 4673
+p c-src/emacs/src/lisp.h 4679
+p/f ada-src/etags-test-for.ada /^ function p pragma Import (C,$/
+p/f ada-src/etags-test-for.ada /^function p ("p");$/
+pD c-src/emacs/src/lisp.h 165
+pD c-src/emacs/src/lisp.h 167
+pD c-src/emacs/src/lisp.h 169
+pD c-src/emacs/src/lisp.h 171
+pI c-src/emacs/src/lisp.h 94
+pI c-src/emacs/src/lisp.h 99
+pI c-src/emacs/src/lisp.h 106
+pMd c-src/emacs/src/lisp.h 150
+pMd c-src/emacs/src/lisp.h 155
+pMu c-src/emacs/src/lisp.h 151
+pMu c-src/emacs/src/lisp.h 156
+p_next c-src/etags.c 258
+pagesize c-src/emacs/src/gmalloc.c 1703
+pair cp-src/cfront.H 703
+pair::pair cp-src/cfront.H /^ pair(loc ll, Pstmt a, Pstmt b) :
(PAIR,ll,a) { th/
+parent c-src/emacs/src/keyboard.c 8745
+parent c-src/emacs/src/lisp.h 1590
+parse prol-src/natded.prolog /^parse(Ws,Cat):-$/
+parseFromVars php-src/lce_functions.php /^ function
parseFromVars($prefix)$/
+parse_c_expression cccp.y /^parse_c_expression (string)$/
+parse_c_expression y-src/cccp.y /^parse_c_expression (string)$/
+parse_cgi prol-src/natded.prolog /^parse_cgi(TokenList,KeyVals):-$/
+parse_error y-src/parse.y 81
+parse_error parse.y 81
+parse_escape cccp.y /^parse_escape (string_ptr)$/
+parse_escape y-src/cccp.y /^parse_escape (string_ptr)$/
+parse_hash y-src/parse.y 63
+parse_hash parse.y 63
+parse_menu_item c-src/emacs/src/keyboard.c /^parse_menu_item
(Lisp_Object item, int inmenubar)$/
+parse_modifiers c-src/emacs/src/keyboard.c /^parse_modifiers
(Lisp_Object symbol)$/
+parse_modifiers_uncached c-src/emacs/src/keyboard.c
/^parse_modifiers_uncached (Lisp_Object symbol, ptrd/
+parse_number cccp.y /^parse_number (olen)$/
+parse_number y-src/cccp.y /^parse_number (olen)$/
+parse_return y-src/parse.y 73
+parse_return parse.y 73
+parse_return_error cccp.y 70
+parse_return_error y-src/cccp.y 70
+parse_solitary_modifier c-src/emacs/src/keyboard.c
/^parse_solitary_modifier (Lisp_Object symbol)$/
+parse_tool_bar_item c-src/emacs/src/keyboard.c /^parse_tool_bar_item
(Lisp_Object key, Lisp_Object /
+pat c-src/etags.c 262
+pattern c-src/etags.c 260
+pdlcount c-src/emacs/src/lisp.h 3046
+pending-delete-mode el-src/TAGTEST.EL /^(defalias
'pending-delete-mode 'delete-selection-m/
+pending_funcalls c-src/emacs/src/keyboard.c 4377
+pending_signals c-src/emacs/src/keyboard.c 80
+pfatal c-src/etags.c /^pfatal (const char *s1)$/
+pfdset c-src/h.h 57
+pfnote c-src/etags.c /^pfnote (char *name, bool is_func, char *linestart,/
+plain_C_entries c-src/etags.c /^plain_C_entries (FILE *inf)$/
+plain_C_suffixes c-src/etags.c 643
+plainc c-src/etags.c 2934
+plist c-src/emacs/src/lisp.h 697
+plusvalseq prol-src/natded.prolog /^plusvalseq([]) --> [].$/
+pointer c-src/emacs/src/lisp.h 2125
+poll_for_input c-src/emacs/src/keyboard.c /^poll_for_input (struct atimer
*timer)$/
+poll_for_input_1 c-src/emacs/src/keyboard.c /^poll_for_input_1
(void)$/
+poll_suppress_count c-src/emacs/src/keyboard.c 1908
+poll_suppress_count c-src/emacs/src/lisp.h 3047
+poll_timer c-src/emacs/src/keyboard.c 1915
+pop-tag-mark el-src/emacs/lisp/progmodes/etags.el /^(defalias
'pop-tag-mark 'xref-pop-marker-stack)$/
+pop_kboard c-src/emacs/src/keyboard.c /^pop_kboard (void)$/
+popclass_above c-src/etags.c /^popclass_above (int bracelev)$/
+position_to_Time c-src/emacs/src/keyboard.c /^position_to_Time
(ptrdiff_t pos)$/
+posix_memalign c-src/emacs/src/gmalloc.c /^posix_memalign (void
**memptr, size_t alignment, s/
+posn-at-point c-src/emacs/src/keyboard.c /^DEFUN ("posn-at-point",
Fposn_at_point, Sposn_at_p/
+posn-at-x-y c-src/emacs/src/keyboard.c /^DEFUN ("posn-at-x-y",
Fposn_at_x_y, Sposn_at_x_y, /
+possible_sum_sign cccp.y /^#define possible_sum_sign(a, b, sum) ((((a) ^
(b))/
+possible_sum_sign y-src/cccp.y /^#define possible_sum_sign(a, b, sum)
((((a) ^ (b))/
+post pyt-src/server.py /^ def post(self):$/
+post pyt-src/server.py /^ def post(self):$/
+pot_etags_version c-src/etags.c 81
+pp1 c-src/torture.c /^int pp1($/
+pp1 c-src/dostorture.c /^int pp1($/
+pp2 c-src/torture.c /^pp2$/
+pp2 c-src/dostorture.c /^pp2$/
+pp3 c-src/torture.c /^pp3(int bar)$/
+pp3 c-src/dostorture.c /^pp3(int bar)$/
+pp_bas_cat prol-src/natded.prolog /^pp_bas_cat(Cat):-$/
+pp_cat prol-src/natded.prolog /^pp_cat(Syn:Sem):-$/
+pp_exp prol-src/natded.prolog /^pp_exp('NIL'):-$/
+pp_exps prol-src/natded.prolog /^pp_exps([]).$/
+pp_html_fitch_tree prol-src/natded.prolog
/^pp_html_fitch_tree(tree(der,Root,[ders(Words)]),M,/
+pp_html_table_fitch_tree prol-src/natded.prolog
/^pp_html_table_fitch_tree(T):-$/
+pp_html_table_tree prol-src/natded.prolog /^pp_html_table_tree(T):-$/
+pp_html_tree prol-src/natded.prolog /^pp_html_tree(ass(Syn,V,'$VAR'(N))):-$/
+pp_html_trees prol-src/natded.prolog /^pp_html_trees([T|Ts],N,M):-$/
+pp_lam prol-src/natded.prolog /^pp_lam(Var^Alpha):-$/
+pp_lam_bracket prol-src/natded.prolog /^pp_lam_bracket(A^B):-$/
+pp_lam_paren prol-src/natded.prolog /^pp_lam_paren(Var^Alpha):-$/
+pp_paren prol-src/natded.prolog /^pp_paren(C):-$/
+pp_rule prol-src/natded.prolog /^pp_rule(fe):-write('\/E').$/
+pp_syn prol-src/natded.prolog /^pp_syn(A\/B):-$/
+pp_syn_back prol-src/natded.prolog /^pp_syn_back(A\/B):-$/
+pp_syn_paren prol-src/natded.prolog /^pp_syn_paren(A\/B):-$/
+pp_tree prol-src/natded.prolog /^pp_tree(T):-$/
+pp_trees prol-src/natded.prolog /^pp_trees([T|Ts],Column):-$/
+pp_word prol-src/natded.prolog /^pp_word(W):-$/
+pp_word_list prol-src/natded.prolog /^pp_word_list([]).$/
+pp_word_list_rest prol-src/natded.prolog /^pp_word_list_rest([]).$/
+predicate c-src/emacs/src/lisp.h 2307
+prefix erl-src/lists.erl /^prefix([X|PreTail], [X|Tail]) ->$/
+prev c.c 175
+prev c-src/emacs/src/gmalloc.c 165
+prev c-src/emacs/src/gmalloc.c 189
+prev c-src/emacs/src/lisp.h 2191
+printClassification php-src/lce_functions.php /^ function
printClassification()$/
+print_help c-src/etags.c /^print_help (argument *argbuffer)$/
+print_language_names c-src/etags.c /^print_language_names (void)$/
+print_version c-src/etags.c /^print_version (void)$/
+printmax_t c-src/emacs/src/lisp.h 148
+printmax_t c-src/emacs/src/lisp.h 153
+proc c-src/h.h 87
+process_file c-src/etags.c /^process_file (FILE *fh, char *fn, language
*lang)$/
+process_file_name c-src/etags.c /^process_file_name (char *file,
language *lang)$/
+process_pending_signals c-src/emacs/src/keyboard.c
/^process_pending_signals (void)$/
+process_special_events c-src/emacs/src/keyboard.c
/^process_special_events (void)$/
+process_tool_bar_item c-src/emacs/src/keyboard.c /^process_tool_bar_item
(Lisp_Object key, Lisp_Objec/
+prolog_atom c-src/etags.c /^prolog_atom (char *s, size_t pos)$/
+prolog_pr c-src/etags.c /^prolog_pr (char *s, char *last)$/
+prolog_skip_comment c-src/etags.c /^prolog_skip_comment (linebuffer *plb,
FILE *inf)$/
+prop c-src/etags.c 209
+protect_malloc_state c-src/emacs/src/gmalloc.c /^protect_malloc_state
(int protect_p)$/
+pthread_mutexattr_setprio_ceiling/f ada-src/2ataspri.adb /^ function
pthread_mutexattr_setprio_ceiling$/
+pthread_mutexattr_setprotocol/f ada-src/2ataspri.adb /^ function
pthread_mutexattr_setprotocol$/
+ptr cp-src/cfront.H 435
+ptr::memof cp-src/cfront.H 437
+ptr::ptr cp-src/cfront.H /^ ptr(TOK b, Ptype t, bit r = 0) { Nt++;
base=b; ty/
+ptr::rdo cp-src/cfront.H 438
+purpose c-src/emacs/src/lisp.h 1594
+push_kboard c-src/emacs/src/keyboard.c /^push_kboard (struct kboard
*k)$/
+pushclass_above c-src/etags.c /^pushclass_above (int bracelev, char
*str, int len)/
+put_entries c-src/etags.c /^put_entries (register node *np)$/
+pvec_type c-src/emacs/src/lisp.h 780
+pvtyp cp-src/cfront.H 419
+pvtyp::typ cp-src/cfront.H 420
+qexpr cp-src/cfront.H 543
+qexpr::qexpr cp-src/cfront.H /^ qexpr(Pexpr ee, Pexpr ee1, Pexpr ee2) :
(QUEST,ee/
+quantizing html-src/algrthms.html /^Quantizing the Received$/
+questo ../c/c.web 34
+quit_char c-src/emacs/src/keyboard.c 192
+quit_throw_to_read_char c-src/emacs/src/keyboard.c
/^quit_throw_to_read_char (bool from_signal)$/
+r0 c-src/sysdep.h 54
+r1 c-src/sysdep.h 55
+r_alloc c-src/emacs/src/lisp.h /^extern void *r_alloc (void **,
size_t) ATTRIBUTE_A/
+range_exp y-src/parse.y 268
+range_exp_list y-src/parse.y 272
+raw_keybuf c-src/emacs/src/keyboard.c 116
+raw_keybuf_count c-src/emacs/src/keyboard.c 117
+rbtp c.c 240
+re_iswctype c-src/emacs/src/regex.h 602
+re_nsub c-src/emacs/src/regex.h 364
+re_pattern_buffer c-src/emacs/src/regex.h 335
+re_pattern_buffer c-src/h.h 119
+re_registers c-src/emacs/src/regex.h 428
+re_wchar_t c-src/emacs/src/regex.h 600
+re_wchar_t c-src/emacs/src/regex.h 623
+re_wctype c-src/emacs/src/regex.h 601
+re_wctype_t c-src/emacs/src/regex.h 599
+re_wctype_t c-src/emacs/src/regex.h 618
+re_wctype_to_bit c-src/emacs/src/regex.h /^# define re_wctype_to_bit(cc)
0$/
+read php-src/lce_functions.php /^ function read()$/
+read-key-sequence c-src/emacs/src/keyboard.c /^DEFUN
("read-key-sequence", Fread_key_sequence, Sr/
+read-key-sequence-vector c-src/emacs/src/keyboard.c /^DEFUN
("read-key-sequence-vector", Fread_key_seque/
+read_char c-src/emacs/src/keyboard.c /^read_char (int commandflag,
Lisp_Object map,$/
+read_char_help_form_unwind c-src/emacs/src/keyboard.c
/^read_char_help_form_unwind (void)$/
+read_char_minibuf_menu_prompt c-src/emacs/src/keyboard.c
/^read_char_minibuf_menu_prompt (int commandflag,$/
+read_char_x_menu_prompt c-src/emacs/src/keyboard.c
/^read_char_x_menu_prompt (Lisp_Object map,$/
+read_decoded_event_from_main_queue c-src/emacs/src/keyboard.c
/^read_decoded_event_from_main_queue (struct timespe/
+read_event_from_main_queue c-src/emacs/src/keyboard.c
/^read_event_from_main_queue (struct timespec *end_t/
+read_key_sequence c-src/emacs/src/keyboard.c /^read_key_sequence
(Lisp_Object *keybuf, int bufsiz/
+read_key_sequence_cmd c-src/emacs/src/keyboard.c 232
+read_key_sequence_remapped c-src/emacs/src/keyboard.c 233
+read_key_sequence_vs c-src/emacs/src/keyboard.c /^read_key_sequence_vs
(Lisp_Object prompt, Lisp_Obj/
+read_menu_command c-src/emacs/src/keyboard.c /^read_menu_command
(void)$/
+readable_events c-src/emacs/src/keyboard.c /^readable_events (int
flags)$/
+readline c-src/etags.c /^readline (linebuffer *lbp, FILE *stream)$/
+readline_internal c-src/etags.c /^readline_internal (linebuffer *lbp,
register FILE /
+realloc c-src/emacs/src/gmalloc.c 65
+realloc c-src/emacs/src/gmalloc.c 69
+realloc c-src/emacs/src/gmalloc.c /^realloc (void *ptr, size_t
size)$/
+realloc c-src/emacs/src/gmalloc.c 1716
+reallochook c-src/emacs/src/gmalloc.c /^reallochook (void *ptr,
size_t size)$/
+recent-keys c-src/emacs/src/keyboard.c /^DEFUN ("recent-keys",
Frecent_keys, Srecent_keys, /
+recent_keys c-src/emacs/src/keyboard.c 100
+recent_keys_index c-src/emacs/src/keyboard.c 94
+record_asynch_buffer_change c-src/emacs/src/keyboard.c
/^record_asynch_buffer_change (void)$/
+record_auto_save c-src/emacs/src/keyboard.c /^record_auto_save
(void)$/
+record_char c-src/emacs/src/keyboard.c /^record_char (Lisp_Object c)$/
+record_menu_key c-src/emacs/src/keyboard.c /^record_menu_key
(Lisp_Object c)$/
+record_single_kboard_state c-src/emacs/src/keyboard.c
/^record_single_kboard_state ()$/
+record_xmalloc c-src/emacs/src/lisp.h /^extern void *record_xmalloc (size_t)
ATTRIBUTE_ALL/
+recover_top_level_message c-src/emacs/src/keyboard.c 138
+recursion-depth c-src/emacs/src/keyboard.c /^DEFUN
("recursion-depth", Frecursion_depth, Srecur/
+recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("recursive-edit",
Frecursive_edit, Srecursi/
+recursive_edit_1 c-src/emacs/src/keyboard.c /^recursive_edit_1
(void)$/
+recursive_edit_unwind c-src/emacs/src/keyboard.c /^recursive_edit_unwind
(Lisp_Object buffer)$/
+reduce prol-src/natded.prolog /^reduce((X^M)@N,L):- % beta reduction$/
+reduce_subterm prol-src/natded.prolog /^reduce_subterm(M,M2):-$/
+ref cp-src/cfront.H 547
+ref::ref cp-src/cfront.H /^ ref(TOK ba, Pexpr a, Pname b) :
(ba,a,0) { this=0/
+refreshPort pyt-src/server.py /^ def refreshPort(self):$/
+reg_errcode_t c.c 279
+reg_errcode_t c-src/emacs/src/regex.h 323
+reg_syntax_t c-src/emacs/src/regex.h 43
+regex c-src/etags.c 219
+regex make-src/Makefile 204
+regex make-src/Makefile 207
+regex make-src/Makefile 213
+regex make-src/Makefile 216
+regex make-src/Makefile 219
+regex_t c-src/emacs/src/regex.h 416
+regex_tag_multiline c-src/etags.c /^regex_tag_multiline (void)$/
+regexfile Makefile /^regexfile: Makefile$/
+regexp c-src/etags.c 256
+regexp c-src/etags.c 268
+registerAction: objcpp-src/SimpleCalc.M /^- registerAction:(SEL)action$/
+register_heapinfo c-src/emacs/src/gmalloc.c /^register_heapinfo
(void)$/
+regmatch_t c-src/emacs/src/regex.h 451
+regoff_t c-src/emacs/src/regex.h 423
+regs c-src/etags.c 263
+regs cp-src/screen.cpp 16
+regs_allocated c-src/emacs/src/regex.h 379
+regset c-src/h.h 31
+regular_top_level_message c-src/emacs/src/keyboard.c 143
+rehash_size c-src/emacs/src/lisp.h 1835
+rehash_threshold c-src/emacs/src/lisp.h 1839
+relative_filename c-src/etags.c /^relative_filename (char *file, char
*dir)$/
+removeexp prol-src/natded.prolog /^removeexp(E,E,'NIL'):-!.$/
+reorder_modifiers c-src/emacs/src/keyboard.c /^reorder_modifiers
(Lisp_Object symbol)$/
+replace erl-src/lines.erl /^replace(Lno, _, _) when Lno < 1 ->$/
+replace_nth erl-src/lines.erl /^replace_nth(1, [H|T], X) ->$/
+request c.c /^request request (a, b)$/
+requeued_events_pending_p c-src/emacs/src/keyboard.c
/^requeued_events_pending_p (void)$/
+required_argument c-src/getopt.h 90
+reset-this-command-lengths c-src/emacs/src/keyboard.c /^DEFUN
("reset-this-command-lengths", Freset_this_c/
+restore_getcjmp c-src/emacs/src/keyboard.c /^restore_getcjmp
(sys_jmp_buf temp)$/
+restore_kboard_configuration c-src/emacs/src/keyboard.c
/^restore_kboard_configuration (int was_locked)$/
+return_to_command_loop c-src/emacs/src/keyboard.c 135
+reverse erl-src/lists.erl /^reverse(X) ->$/
+reverse prol-src/natded.prolog /^reverse([],Ws,Ws).$/
+revert: objc-src/PackInsp.m /^-revert:sender$/
+right c-src/etags.c 216
+right_shift cccp.y /^right_shift (a, b)$/
+right_shift y-src/cccp.y /^right_shift (a, b)$/
+ring1 c.c 241
+ring2 c.c 242
+rm_eo c-src/emacs/src/regex.h 450
+rm_so c-src/emacs/src/regex.h 449
+rtint c-src/h.h 60
+rtint c-src/h.h 68
+rtstr c-src/h.h 61
+rtstr c-src/h.h 69
+rtunion_def c-src/h.h 58
+rtunion_def c-src/h.h 64
+rtx c-src/h.h 62
+rtxnp c-src/h.h 71
+rtxp c-src/h.h 70
+s c-src/emacs/src/lisp.h 4672
+s c-src/emacs/src/lisp.h 4678
+s1 cp-src/c.C 32
+s1::counter cp-src/c.C 33
+s2 cp-src/c.C 35
+s2::counter cp-src/c.C 36
+safe_run_hook_funcall c-src/emacs/src/keyboard.c /^safe_run_hook_funcall
(ptrdiff_t nargs, Lisp_Objec/
+safe_run_hooks c-src/emacs/src/keyboard.c /^safe_run_hooks (Lisp_Object
hook)$/
+safe_run_hooks_1 c-src/emacs/src/keyboard.c /^safe_run_hooks_1
(ptrdiff_t nargs, Lisp_Object *ar/
+safe_run_hooks_error c-src/emacs/src/keyboard.c /^safe_run_hooks_error
(Lisp_Object error, ptrdiff_t/
+save pyt-src/server.py /^ def save(self):$/
+save pyt-src/server.py /^ def save(self):$/
+save pyt-src/server.py /^ def save(self):$/
+save_getcjmp c-src/emacs/src/keyboard.c /^save_getcjmp (sys_jmp_buf
temp)$/
+save_type c-src/emacs/src/lisp.h /^save_type (struct Lisp_Save_Value *v,
int n)$/
+savenstr c-src/etags.c /^savenstr (const char *cp, int len)$/
+savestr c-src/etags.c /^savestr (const char *cp)$/
+scan_separators c-src/etags.c /^scan_separators (char *name)$/
+scolonseen c-src/etags.c 2447
+scratch c-src/sysdep.h 56
+scroll_bar_parts c-src/emacs/src/keyboard.c 5189
+sec=\relax tex-src/texinfo.tex /^\\let\\appendixsec=\\relax$/
+section perl-src/htlmify-cystic 25
+section=\relax tex-src/texinfo.tex /^\\let\\appendixsection=\\relax$/
+section_name perl-src/htlmify-cystic 12
+section_toc perl-src/htlmify-cystic 15
+select prol-src/natded.prolog /^select(X,[X|Xs],Xs).$/
+select-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun
select-tags-table ()$/
+select-tags-table-mode el-src/emacs/lisp/progmodes/etags.el
/^(define-derived-mode select-tags-table-mode specia/
+select-tags-table-mode-map el-src/emacs/lisp/progmodes/etags.el
/^(defvar select-tags-table-mode-map ; Doc string?$/
+select-tags-table-quit el-src/emacs/lisp/progmodes/etags.el /^(defun
select-tags-table-quit ()$/
+select-tags-table-select el-src/emacs/lisp/progmodes/etags.el
/^(defun select-tags-table-select (button)$/
+select_last prol-src/natded.prolog /^select_last([X],X,[]).$/
+send: objc-src/Subprocess.m /^- send:(const char *)string$/
+send:withNewline: objc-src/Subprocess.m /^- send:(const char *)string
withNewline:(BOOL)want/
+separator_names c-src/emacs/src/keyboard.c 7372
+seq erl-src/lists.erl /^seq(Min, Max) when integer(Min),
integer(Max), Min/
+serializeToVars php-src/lce_functions.php /^ function
serializeToVars($prefix)$/
+serializeToVars php-src/lce_functions.php /^ function
serializeToVars($prefix)$/
+set-input-interrupt-mode c-src/emacs/src/keyboard.c /^DEFUN
("set-input-interrupt-mode", Fset_input_inte/
+set-input-meta-mode c-src/emacs/src/keyboard.c /^DEFUN
("set-input-meta-mode", Fset_input_meta_mode/
+set-input-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-mode",
Fset_input_mode, Sset_inp/
+set-output-flow-control c-src/emacs/src/keyboard.c /^DEFUN
("set-output-flow-control", Fset_output_flow/
+set-quit-char c-src/emacs/src/keyboard.c /^DEFUN ("set-quit-char",
Fset_quit_char, Sset_quit_/
+setDelegate: objc-src/Subprocess.m /^- setDelegate:anObject$/
+setRevertButtonTitle objc-src/PackInsp.m /^-setRevertButtonTitle$/
+set_char_table_contents c-src/emacs/src/lisp.h
/^set_char_table_contents (Lisp_Object table, ptrdif/
+set_char_table_defalt c-src/emacs/src/lisp.h /^set_char_table_defalt
(Lisp_Object table, Lisp_Obj/
+set_char_table_extras c-src/emacs/src/lisp.h /^set_char_table_extras
(Lisp_Object table, ptrdiff_/
+set_char_table_purpose c-src/emacs/src/lisp.h /^set_char_table_purpose
(Lisp_Object table, Lisp_Ob/
+set_hash_key_slot c-src/emacs/src/lisp.h /^set_hash_key_slot (struct
Lisp_Hash_Table *h, ptrd/
+set_hash_value_slot c-src/emacs/src/lisp.h /^set_hash_value_slot (struct
Lisp_Hash_Table *h, pt/
+set_overlay_plist c-src/emacs/src/lisp.h /^set_overlay_plist
(Lisp_Object overlay, Lisp_Objec/
+set_poll_suppress_count c-src/emacs/src/keyboard.c
/^set_poll_suppress_count (int count)$/
+set_prop c-src/emacs/src/keyboard.c /^set_prop (ptrdiff_t idx,
Lisp_Object val)$/
+set_save_integer c-src/emacs/src/lisp.h /^set_save_integer (Lisp_Object
obj, int n, ptrdiff_/
+set_save_pointer c-src/emacs/src/lisp.h /^set_save_pointer (Lisp_Object
obj, int n, void *va/
+set_string_intervals c-src/emacs/src/lisp.h /^set_string_intervals
(Lisp_Object s, INTERVAL i)$/
+set_sub_char_table_contents c-src/emacs/src/lisp.h
/^set_sub_char_table_contents (Lisp_Object table, pt/
+set_symbol_function c-src/emacs/src/lisp.h /^set_symbol_function
(Lisp_Object sym, Lisp_Object /
+set_symbol_next c-src/emacs/src/lisp.h /^set_symbol_next (Lisp_Object
sym, struct Lisp_Symb/
+set_symbol_plist c-src/emacs/src/lisp.h /^set_symbol_plist (Lisp_Object
sym, Lisp_Object pli/
+set_waiting_for_input c-src/emacs/src/keyboard.c /^set_waiting_for_input
(struct timespec *time_to_cl/
+setref tex-src/texinfo.tex
/^\\expandafter\\expandafter\\expandafter\\appendixsetre/
+shouldLoad objc-src/PackInsp.m /^-(BOOL)shouldLoad$/
+should_see_this_array_type cp-src/c.C 156
+should_see_this_function_pointer cp-src/c.C 153
+should_see_this_one_enclosed_in_extern_C cp-src/c.C 149
+show erl-src/gs_dialog.erl /^show(Module, Title, Message, Args) ->$/
+showError objc-src/Subprocess.m /^showError (const char *errorString,
id theDelegate/
+showInfo: objc-src/PackInsp.m /^-showInfo:sender$/
+show_help_echo c-src/emacs/src/keyboard.c /^show_help_echo (Lisp_Object
help, Lisp_Object wind/
+sig c-src/emacs/src/keyboard.c 7238
+signal_handler c-src/h.h 82
+signal_handler1 c-src/h.h 83
+signal_handler_t c-src/h.h 94
+simulation html-src/software.html /^Software that I wrote for supporting
my research a/
+single_kboard c-src/emacs/src/keyboard.c 89
+single_kboard_state c-src/emacs/src/keyboard.c /^single_kboard_state
()$/
+site cp-src/conway.hpp 5
+site::alive cp-src/conway.hpp 7
+site::clear cp-src/conway.hpp /^ void clear(void) { alive = 0; }$/
+site::compute_next_state cp-src/conway.hpp /^ void
compute_next_state(void)$/
+site::next_alive cp-src/conway.hpp 7
+site::read cp-src/conway.hpp /^ char read() { return alive; }$/
+site::set cp-src/conway.hpp /^ void set(void) { alive = 1; }$/
+site::site cp-src/conway.hpp /^ site(int xi, int yi): x(xi),
y(yi), alive(0) {/
+site::step cp-src/conway.hpp /^ void step(void) { alive =
next_alive; }$/
+site::total_surrounding cp-src/conway.cpp /^int
site::total_surrounding(void)$/
+site::x cp-src/conway.hpp 7
+site::y cp-src/conway.hpp 7
+size c-src/etags.c 236
+size c-src/etags.c 2522
+size c-src/emacs/src/gmalloc.c 156
+size c-src/emacs/src/gmalloc.c 163
+size c-src/emacs/src/gmalloc.c 1862
+size c-src/emacs/src/lisp.h 1364
+size c-src/emacs/src/lisp.h 1390
+skeyseen c-src/etags.c 2445
+skip_name c-src/etags.c /^skip_name (char *cp)$/
+skip_non_spaces c-src/etags.c /^skip_non_spaces (char *cp)$/
+skip_spaces c-src/etags.c /^skip_spaces (char *cp)$/
+slist cp-src/cfront.H 718
+slist::add cp-src/cfront.H /^ void add(Pstmt s) { tail->s_list
= s; tail = s; }/
+slist::head cp-src/cfront.H 719
+slist::slist cp-src/cfront.H /^ slist(Pstmt s) { Nl++; head =
tail = s; };$/
+slist::tail cp-src/cfront.H 720
+snarf-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar
snarf-tag-function nil$/
+snone c-src/etags.c 2443
+some_mouse_moved c-src/emacs/src/keyboard.c /^some_mouse_moved
(void)$/
+sort erl-src/lists.erl /^sort([X]) -> [X];$/
+space tex-src/texinfo.tex /^ {#2\\labelspace
#1}\\dotfill\\doshortpageno{#3}}%/
+space tex-src/texinfo.tex /^
\\dosubsubsecentry{#2.#3.#4.#5\\labelspace#1}{#6}}/
+specbind_tag c-src/emacs/src/lisp.h 2943
+specbinding c-src/emacs/src/lisp.h 2955
+specialsymbol prol-src/natded.prolog /^specialsymbol(C1,C2,S):-$/
+split_and_keysort erl-src/lists.erl /^split_and_keysort([A,B|T], X,
Y, Index) ->$/
+split_and_sort erl-src/lists.erl /^split_and_sort([A,B|T], X, Y) ->$/
+split_at erl-src/lines.erl /^split_at(Pos, L) ->$/
+splitexp prol-src/natded.prolog /^splitexp(E,E,('NIL','NIL')):-!.$/
+srclist Makefile /^srclist: Makefile$/
+ss3 c.c 255
+sss1 c.c 252
+sss2 c.c 253
+sstab prol-src/natded.prolog /^sstab(2,'C',',').$/
+st_C_attribute c-src/etags.c 2209
+st_C_class c-src/etags.c 2212
+st_C_define c-src/etags.c 2213
+st_C_enum c-src/etags.c 2213
+st_C_extern c-src/etags.c 2213
+st_C_gnumacro c-src/etags.c 2208
+st_C_ignore c-src/etags.c 2209
+st_C_javastruct c-src/etags.c 2210
+st_C_objend c-src/etags.c 2207
+st_C_objimpl c-src/etags.c 2207
+st_C_objprot c-src/etags.c 2207
+st_C_operator c-src/etags.c 2211
+st_C_struct c-src/etags.c 2213
+st_C_template c-src/etags.c 2212
+st_C_typedef c-src/etags.c 2213
+st_none c-src/etags.c 2206
+stack c.c 155
+stagseen c-src/etags.c 2446
+start c-src/emacs/src/regex.h 431
+start c-src/emacs/src/keyboard.c 8753
+start php-src/lce_functions.php /^ function start($line, $class)$/
+start y-src/cccp.y 143
+start_polling c-src/emacs/src/keyboard.c /^start_polling (void)$/
+start_up prol-src/natded.prolog /^start_up:-$/
+state_protected_p c-src/emacs/src/gmalloc.c 400
+statetable html-src/algrthms.html /^Next$/
+step_everybody cp-src/clheir.cpp /^void step_everybody(void)$/
+stmt cp-src/cfront.H 615
+stmt::case_list cp-src/cfront.H 636
+stmt::case_value cp-src/cfront.H 624
+stmt::d cp-src/cfront.H 621
+stmt::e cp-src/cfront.H 628
+stmt::e2 cp-src/cfront.H 622
+stmt::else_stmt cp-src/cfront.H 635
+stmt::empty cp-src/cfront.H 637
+stmt::for_init cp-src/cfront.H 634
+stmt::has_default cp-src/cfront.H 623
+stmt::memtbl cp-src/cfront.H 632
+stmt::own_tbl cp-src/cfront.H 629
+stmt::ret_tp cp-src/cfront.H 625
+stmt::s cp-src/cfront.H 617
+stmt::s2 cp-src/cfront.H 630
+stmt::s_list cp-src/cfront.H 618
+stmt::where cp-src/cfront.H 619
+stop_polling c-src/emacs/src/keyboard.c /^stop_polling (void)$/
+store_user_signal_events c-src/emacs/src/keyboard.c
/^store_user_signal_events (void)$/
+strcaseeq c-src/etags.c /^#define strcaseeq(s,t) (assert
((s)!=NULL && (t)!=/
+streq c-src/etags.c /^#define streq(s,t) (assert ((s)!=NULL || (t)!=NULL/
+string_intervals c-src/emacs/src/lisp.h /^string_intervals (Lisp_Object
s)$/
+stripLine php-src/lce_functions.php /^ function
stripLine($line, $class)$/
+stripname pas-src/common.pas /^function stripname; (* ($/
+strncaseeq c-src/etags.c /^#define strncaseeq(s,t,n) (assert ((s)!=NULL
&& (t/
+strneq c-src/etags.c /^#define strneq(s,t,n) (assert ((s)!=NULL || (t)!=N/
+structdef c-src/etags.c 2448
+stuff_buffered_input c-src/emacs/src/keyboard.c /^stuff_buffered_input
(Lisp_Object stuffstring)$/
+sublist erl-src/lists.erl /^sublist(List, S, L) when L >= 0 ->$/
+subprocess:output: objc-src/PackInsp.m /^-subprocess:(Subprocess
*)sender output:(char *)bu/
+subprocessDone: objc-src/PackInsp.m /^-subprocessDone:(Subprocess
*)sender$/
+subsec=\relax tex-src/texinfo.tex /^\\let\\appendixsubsec=\\relax$/
+subsection perl-src/htlmify-cystic 26
+subsection=\relax tex-src/texinfo.tex
/^\\let\\appendixsubsection=\\relax$/
+subsection_marker perl-src/htlmify-cystic 161
+subst prol-src/natded.prolog /^subst(var(Y),var(X),M,N):-$/
+substitute c-src/etags.c /^substitute (char *in, char *out, struct
re_registe/
+subsubsec=\relax tex-src/texinfo.tex
/^\\let\\appendixsubsubsec=\\relax$/
+subsubsection perl-src/htlmify-cystic 27
+subsubsection=\relax tex-src/texinfo.tex
/^\\let\\appendixsubsubsection=\\relax$/
+subtree prol-src/natded.prolog /^subtree(T,T).$/
+suffix c-src/etags.c 186
+suffix erl-src/lists.erl /^suffix(Suffix, Suffix) ->$/
+suffixes c-src/etags.c 195
+suggest_asking_for_help c-src/etags.c /^suggest_asking_for_help
(void)$/
+sum erl-src/lists.erl /^sum(L) -> sum(L, 0).$/
+suspend-emacs c-src/emacs/src/keyboard.c /^DEFUN ("suspend-emacs",
Fsuspend_emacs, Ssuspend_e/
+sval cccp.y 117
+sval y-src/cccp.y 116
+swallow_events c-src/emacs/src/keyboard.c /^swallow_events (bool
do_display)$/
+switch_line_buffers c-src/etags.c /^#define switch_line_buffers() (curndx
= 1 - curndx/
+sxhash_combine c-src/emacs/src/lisp.h /^sxhash_combine (EMACS_UINT x,
EMACS_UINT y)$/
+sym_type c-src/etags.c 2204
+symbol_interned c-src/emacs/src/lisp.h 639
+symbol_name c-src/emacs/src/lisp.h 1687
+symbol_redirect c-src/emacs/src/lisp.h 646
+syms_of_abbrev c-src/abbrev.c /^syms_of_abbrev ()$/
+syms_of_keyboard c-src/emacs/src/keyboard.c /^syms_of_keyboard
(void)$/
+synchronize_system_messages_locale c-src/emacs/src/lisp.h /^INLINE void
synchronize_system_messages_locale (vo/
+synchronize_system_time_locale c-src/emacs/src/lisp.h /^INLINE void
synchronize_system_time_locale (void) /
+syntax c-src/emacs/src/regex.h 350
+sys_jmp_buf c-src/emacs/src/lisp.h 2906
+sys_jmp_buf c-src/emacs/src/lisp.h 2910
+sys_jmp_buf c-src/emacs/src/lisp.h 2916
+sys_longjmp c-src/emacs/src/lisp.h /^# define sys_longjmp(j, v) _longjmp
(j, v)$/
+sys_longjmp c-src/emacs/src/lisp.h /^# define sys_longjmp(j, v) siglongjmp
(j, v)$/
+sys_longjmp c-src/emacs/src/lisp.h /^# define sys_longjmp(j, v) longjmp
(j, v)$/
+sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) _setjmp (j)$/
+sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) sigsetjmp (j,
0)$/
+sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) setjmp (j)$/
+syscall_error c-src/sysdep.h 34
+t1 cp-src/c.C 34
+t2 cp-src/c.C 38
+tab_count_words c-src/tab.c /^int
tab_count_words(char **tab)$/
+tab_delete_first c-src/tab.c /^int
tab_delete_first(char **tab)$/
+tab_fill c-src/tab.c /^char **tab_fill(char *str,
char delim)$/
+tab_free c-src/tab.c /^void tab_free(char **tab)$/
+table cp-src/cfront.H 175
+table::entries cp-src/cfront.H 184
+table::free_slot cp-src/cfront.H 183
+table::hashsize cp-src/cfront.H 182
+table::hashtbl cp-src/cfront.H 185
+table::init_stat cp-src/cfront.H 177
+table::max cp-src/cfront.H /^ int max() {
return free_slot-1; };$/
+table::next cp-src/cfront.H 189
+table::real_block cp-src/cfront.H 186
+table::set_name cp-src/cfront.H /^ void set_name(Pname n)
{ t_name = n; };$/
+table::set_scope cp-src/cfront.H /^ void set_scope(Ptable t)
{ next = t; };$/
+table::size cp-src/cfront.H 181
+table::t_name cp-src/cfront.H 190
+tag-any-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun
tag-any-match-p (_tag)$/
+tag-exact-file-name-match-p el-src/emacs/lisp/progmodes/etags.el
/^(defun tag-exact-file-name-match-p (tag)$/
+tag-exact-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun
tag-exact-match-p (tag)$/
+tag-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun
tag-file-name-match-p (tag)$/
+tag-find-file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun
tag-find-file-of-tag (file) ; Doc string?$/
+tag-find-file-of-tag-noselect el-src/emacs/lisp/progmodes/etags.el
/^(defun tag-find-file-of-tag-noselect (file)$/
+tag-implicit-name-match-p el-src/emacs/lisp/progmodes/etags.el
/^(defun tag-implicit-name-match-p (tag)$/
+tag-lines-already-matched el-src/emacs/lisp/progmodes/etags.el
/^(defvar tag-lines-already-matched nil$/
+tag-partial-file-name-match-p el-src/emacs/lisp/progmodes/etags.el
/^(defun tag-partial-file-name-match-p (_tag)$/
+tag-re-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-re-match-p
(re)$/
+tag-symbol-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun
tag-symbol-match-p (tag)$/
+tag-word-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun
tag-word-match-p (tag)$/
+tag1 c-src/torture.c /^(*tag1 (sig, handler)) ()$/
+tag1 c-src/dostorture.c /^(*tag1 (sig, handler)) ()$/
+tag1 c-src/h.h 110
+tag2 c-src/torture.c /^(*tag2 (sig, handler)) ()$/
+tag2 c-src/dostorture.c /^(*tag2 (sig, handler)) ()$/
+tag3 c-src/torture.c /^(*tag3 (int sig, void (*handler) (int))) (int)$/
+tag3 c-src/dostorture.c /^(*tag3 (int sig, void (*handler) (int)))
(int)$/
+tag4 c-src/torture.c /^(*tag4 (int sig, void (*handler) (int))) (int)$/
+tag4 c-src/dostorture.c /^(*tag4 (int sig, void (*handler) (int)))
(int)$/
+tag5 c-src/torture.c /^tag5 (handler, arg)$/
+tag5 c-src/dostorture.c /^tag5 (handler, arg)$/
+tag6 c-src/torture.c /^tag6 (void (*handler) (void *), void *arg)$/
+tag6 c-src/dostorture.c /^tag6 (void (*handler) (void *), void *arg)$/
+tag_or_ch c-src/emacs/src/lisp.h 3026
+taggedfname c-src/etags.c 207
+tags-add-tables el-src/emacs/lisp/progmodes/etags.el /^(defcustom
tags-add-tables 'ask-user$/
+tags-apropos el-src/emacs/lisp/progmodes/etags.el /^(defun tags-apropos
(regexp)$/
+tags-apropos-additional-actions el-src/emacs/lisp/progmodes/etags.el
/^(defcustom tags-apropos-additional-actions nil$/
+tags-apropos-function el-src/emacs/lisp/progmodes/etags.el /^(defvar
tags-apropos-function nil$/
+tags-apropos-verbose el-src/emacs/lisp/progmodes/etags.el /^(defcustom
tags-apropos-verbose nil$/
+tags-case-fold-search el-src/emacs/lisp/progmodes/etags.el /^(defcustom
tags-case-fold-search 'default$/
+tags-complete-tags-table-file el-src/emacs/lisp/progmodes/etags.el
/^(defun tags-complete-tags-table-file (string predi/
+tags-completion-at-point-function el-src/emacs/lisp/progmodes/etags.el
/^(defun tags-completion-at-point-function ()$/
+tags-completion-table el-src/emacs/lisp/progmodes/etags.el /^(defvar
tags-completion-table nil$/
+tags-completion-table el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-completion-table ()$/
+tags-completion-table-function el-src/emacs/lisp/progmodes/etags.el
/^(defvar tags-completion-table-function nil$/
+tags-compression-info-list el-src/emacs/lisp/progmodes/etags.el
/^(defcustom tags-compression-info-list$/
+tags-expand-table-name el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-expand-table-name (file)$/
+tags-file-name el-src/emacs/lisp/progmodes/etags.el /^(defvar
tags-file-name nil$/
+tags-included-tables el-src/emacs/lisp/progmodes/etags.el /^(defvar
tags-included-tables nil$/
+tags-included-tables el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-included-tables ()$/
+tags-included-tables-function el-src/emacs/lisp/progmodes/etags.el
/^(defvar tags-included-tables-function nil$/
+tags-lazy-completion-table el-src/emacs/lisp/progmodes/etags.el
/^(defun tags-lazy-completion-table ()$/
+tags-location-ring el-src/emacs/lisp/progmodes/etags.el /^(defvar
tags-location-ring (make-ring xref-marker-/
+tags-loop-continue el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-loop-continue (&optional first-time)$/
+tags-loop-eval el-src/emacs/lisp/progmodes/etags.el /^(defun tags-loop-eval
(form)$/
+tags-loop-operate el-src/emacs/lisp/progmodes/etags.el /^(defvar
tags-loop-operate nil$/
+tags-loop-revert-buffers el-src/emacs/lisp/progmodes/etags.el
/^(defcustom tags-loop-revert-buffers nil$/
+tags-loop-scan el-src/emacs/lisp/progmodes/etags.el /^(defvar
tags-loop-scan$/
+tags-next-table el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-next-table ()$/
+tags-query-replace el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-query-replace (from to &optional delim/
+tags-recognize-empty-tags-table el-src/emacs/lisp/progmodes/etags.el
/^(defun tags-recognize-empty-tags-table ()$/
+tags-reset-tags-tables el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-reset-tags-tables ()$/
+tags-revert-without-query el-src/emacs/lisp/progmodes/etags.el
/^(defcustom tags-revert-without-query nil$/
+tags-search el-src/emacs/lisp/progmodes/etags.el /^(defun tags-search
(regexp &optional file-list-for/
+tags-select-tags-table el-src/emacs/lisp/progmodes/etags.el
/^(define-button-type 'tags-select-tags-table$/
+tags-table-check-computed-list el-src/emacs/lisp/progmodes/etags.el
/^(defun tags-table-check-computed-list ()$/
+tags-table-computed-list el-src/emacs/lisp/progmodes/etags.el
/^(defvar tags-table-computed-list nil$/
+tags-table-computed-list-for el-src/emacs/lisp/progmodes/etags.el
/^(defvar tags-table-computed-list-for nil$/
+tags-table-extend-computed-list el-src/emacs/lisp/progmodes/etags.el
/^(defun tags-table-extend-computed-list ()$/
+tags-table-files el-src/emacs/lisp/progmodes/etags.el /^(defvar
tags-table-files nil$/
+tags-table-files el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-table-files ()$/
+tags-table-files-function el-src/emacs/lisp/progmodes/etags.el
/^(defvar tags-table-files-function nil$/
+tags-table-format-functions el-src/emacs/lisp/progmodes/etags.el
/^(defvar tags-table-format-functions '(etags-recogn/
+tags-table-including el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-table-including (this-file core-only)$/
+tags-table-list el-src/emacs/lisp/progmodes/etags.el /^(defcustom
tags-table-list nil$/
+tags-table-list-member el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-table-list-member (file list)$/
+tags-table-list-pointer el-src/emacs/lisp/progmodes/etags.el
/^(defvar tags-table-list-pointer nil$/
+tags-table-list-started-at el-src/emacs/lisp/progmodes/etags.el
/^(defvar tags-table-list-started-at nil$/
+tags-table-mode el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-table-mode ()$/
+tags-table-set-list el-src/emacs/lisp/progmodes/etags.el /^(defvar
tags-table-set-list nil$/
+tags-tag-face el-src/emacs/lisp/progmodes/etags.el /^(defcustom
tags-tag-face 'default$/
+tags-verify-table el-src/emacs/lisp/progmodes/etags.el /^(defun
tags-verify-table (file)$/
+tags-with-face el-src/emacs/lisp/progmodes/etags.el /^(defmacro
tags-with-face (face &rest body)$/
+target_multibyte c-src/emacs/src/regex.h 407
+tcpdump html-src/software.html /^tcpdump$/
+temporarily_switch_to_single_kboard c-src/emacs/src/keyboard.c
/^temporarily_switch_to_single_kboard (struct frame /
+tend c-src/etags.c 2432
+terminate: objc-src/Subprocess.m /^- terminate:sender$/
+terminateInput objc-src/Subprocess.m /^- terminateInput$/
+test c-src/emacs/src/lisp.h 1871
+test cp-src/c.C 86
+test erl-src/gs_dialog.erl /^test() ->$/
+test php-src/ptest.php /^test $/
+test::dummy1 cp-src/burton.cpp /^::dummy::dummy test::dummy1(void)$/
+test::dummy2 cp-src/burton.cpp /^::dummy::dummy
test::dummy2(::CORBA::Long dummy)$/
+test::dummy3 cp-src/burton.cpp /^::dummy::dummy test::dummy3(char*
name, ::CORBA::L/
+test::f cp-src/c.C /^ int f(){return 0;}; \/\/ first
comment$/
+test::ff cp-src/c.C /^ int ff(){return 1;};$/
+test::g cp-src/c.C /^ int g(){return 2;};$/
+test_undefined c-src/emacs/src/keyboard.c /^test_undefined (Lisp_Object
binding)$/
+texpr cp-src/cfront.H 527
+texpr::texpr cp-src/cfront.H /^ texpr(TOK bb, Ptype tt, Pexpr ee) :
(bb,ee,0) {th/
+text_expr cp-src/cfront.H 551
+text_expr::text_expr cp-src/cfront.H /^ text_expr(char* a, char* b) :
(TEXT,0,0) { string/
+texttreelist prol-src/natded.prolog /^texttreelist([]).$/
+thing_to_list erl-src/lists.erl /^thing_to_list(X) when integer(X) ->
integer_to_lis/
+this c-src/a/b/b.c 1
+this-command-keys c-src/emacs/src/keyboard.c /^DEFUN
("this-command-keys", Fthis_command_keys, St/
+this-command-keys-vector c-src/emacs/src/keyboard.c /^DEFUN
("this-command-keys-vector", Fthis_command_k/
+this-single-command-keys c-src/emacs/src/keyboard.c /^DEFUN
("this-single-command-keys", Fthis_single_co/
+this-single-command-raw-keys c-src/emacs/src/keyboard.c /^DEFUN
("this-single-command-raw-keys", Fthis_singl/
+this_command_key_count c-src/emacs/src/keyboard.c 108
+this_command_key_count_reset c-src/emacs/src/keyboard.c 112
+this_command_keys c-src/emacs/src/keyboard.c 107
+this_file_toc perl-src/htlmify-cystic 29
+this_single_command_key_start c-src/emacs/src/keyboard.c 125
+tignore c-src/etags.c 2433
+timer_check c-src/emacs/src/keyboard.c /^timer_check (void)$/
+timer_check_2 c-src/emacs/src/keyboard.c /^timer_check_2 (Lisp_Object
timers, Lisp_Object idl/
+timer_idleness_start_time c-src/emacs/src/keyboard.c 335
+timer_last_idleness_start_time c-src/emacs/src/keyboard.c 340
+timer_resume_idle c-src/emacs/src/keyboard.c /^timer_resume_idle
(void)$/
+timer_start_idle c-src/emacs/src/keyboard.c /^timer_start_idle
(void)$/
+timer_stop_idle c-src/emacs/src/keyboard.c /^timer_stop_idle
(void)$/
+timers_run c-src/emacs/src/keyboard.c 320
+tinbody c-src/etags.c 2431
+tkeyseen c-src/etags.c 2429
+tnone c-src/etags.c 2428
+toggleDescription objc-src/PackInsp.m /^-toggleDescription$/
+tok c-src/etags.c 2491
+token c-src/etags.c 2508
+token cccp.y 437
+token cccp.y 439
+token y-src/cccp.y 437
+token y-src/cccp.y 439
+tokenize prol-src/natded.prolog
/^tokenize([C1,C2,C3|Cs],Xs-Ys,TsResult):- % spe/
+tokenizeatom prol-src/natded.prolog /^tokenizeatom(Atom,Ws):-$/
+tokentab2 cccp.y 442
+tokentab2 y-src/cccp.y 442
+tool_bar_item_properties c-src/emacs/src/keyboard.c 7970
+tool_bar_items c-src/emacs/src/keyboard.c /^tool_bar_items (Lisp_Object
reuse, int *nitems)$/
+tool_bar_items_vector c-src/emacs/src/keyboard.c 7965
+toolkit_menubar_in_use c-src/emacs/src/keyboard.c
/^toolkit_menubar_in_use (struct frame *f)$/
+top-level c-src/emacs/src/keyboard.c /^DEFUN ("top-level",
Ftop_level, Stop_level, 0, 0, /
+top_level_1 c-src/emacs/src/keyboard.c /^top_level_1 (Lisp_Object
ignore)$/
+top_level_2 c-src/emacs/src/keyboard.c /^top_level_2 (void)$/
+total_keys c-src/emacs/src/keyboard.c 97
+total_size_of_entries c-src/etags.c /^total_size_of_entries (register node
*np)$/
+totally_unblock_input c-src/emacs/src/keyboard.c /^totally_unblock_input
(void)$/
+tpcmd c-src/h.h 8
+tpcmd c-src/h.h 15
+track-mouse c-src/emacs/src/keyboard.c /^DEFUN
("internal--track-mouse", Ftrack_mouse, Stra/
+tracking_off c-src/emacs/src/keyboard.c /^tracking_off (Lisp_Object
old_value)$/
+traffic_light cp-src/conway.cpp /^void traffic_light(int x, int y)$/
+translate c-src/emacs/src/regex.h 361
+tt prol-src/natded.prolog /^tt:-$/
+tt=cmtt10 tex-src/texinfo.tex /^\\font\\deftt=cmtt10 scaled
\\magstep1$/
+tty_read_avail_input c-src/emacs/src/keyboard.c /^tty_read_avail_input
(struct terminal *terminal,$/
+ttypeseen c-src/etags.c 2430
+typdef c-src/etags.c 2434
+type c-src/etags.c 2271
+type c-src/emacs/src/gmalloc.c 145
+type c-src/emacs/src/lisp.h 2276
+type c-src/emacs/src/lisp.h 2286
+type c-src/emacs/src/lisp.h 2296
+type c-src/emacs/src/lisp.h 2304
+type c-src/emacs/src/lisp.h 2364
+type c-src/emacs/src/lisp.h 3025
+type cp-src/cfront.H 236
+type::addrof cp-src/cfront.H /^inline Pptr type::addrof() { return new
ptr(PTR,th/
+type::defined cp-src/cfront.H 237
+type::integral cp-src/cfront.H /^ TOK integral(TOK oo) {
return kind(oo,I); };$/
+type::num_ptr cp-src/cfront.H /^ TOK num_ptr(TOK oo) {
return kind(oo,P); };$/
+type::numeric cp-src/cfront.H /^ TOK numeric(TOK oo) {
return kind(oo,N); };$/
+typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#3}\\endgroup %$/
+typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#4}\\endgroup %$/
+typemargin tex-src/texinfo.tex /^\\newskip\\deftypemargin
\\deftypemargin=12pt$/
+typemargin tex-src/texinfo.tex /^\\rlap{\\rightline{{\\rm #2}\\hskip
\\deftypemargin}}}%/
+u c-src/emacs/src/lisp.h 2397
+u_any c-src/emacs/src/lisp.h 2214
+u_boolfwd c-src/emacs/src/lisp.h 2371
+u_buffer_objfwd c-src/emacs/src/lisp.h 2373
+u_finalizer c-src/emacs/src/lisp.h 2219
+u_free c-src/emacs/src/lisp.h 2215
+u_intfwd c-src/emacs/src/lisp.h 2370
+u_kboard_objfwd c-src/emacs/src/lisp.h 2374
+u_marker c-src/emacs/src/lisp.h 2216
+u_objfwd c-src/emacs/src/lisp.h 2372
+u_overlay c-src/emacs/src/lisp.h 2217
+u_save_value c-src/emacs/src/lisp.h 2218
+unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/
+unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/
+unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/
+unargs tex-src/texinfo.tex /^\\defunargs {#3}\\endgroup %$/
+unargs tex-src/texinfo.tex /^\\defunargs {#3}\\endgroup %$/
+unblock_input c-src/emacs/src/keyboard.c /^unblock_input (void)$/
+unblock_input_to c-src/emacs/src/keyboard.c /^unblock_input_to (int
level)$/
+unchar c-src/h.h 99
+unexpand-abbrev c-src/abbrev.c /^DEFUN ("unexpand-abbrev",
Funexpand_abbrev, Sunexp/
+unread_switch_frame c-src/emacs/src/keyboard.c 204
+unsignedp cccp.y 113
+unsignedp y-src/cccp.y 112
+uprintmax_t c-src/emacs/src/lisp.h 149
+uprintmax_t c-src/emacs/src/lisp.h 154
+usecharno c-src/etags.c 210
+used c-src/emacs/src/regex.h 347
+used_syntax c-src/emacs/src/regex.h 398
+user_cmp_function c-src/emacs/src/lisp.h 1814
+user_error c-src/emacs/src/keyboard.c /^user_error (const char *msg)$/
+user_hash_function c-src/emacs/src/lisp.h 1811
+user_signal_info c-src/emacs/src/keyboard.c 7235
+user_signals c-src/emacs/src/keyboard.c 7250
+usfreelock_ptr/t ada-src/etags-test-for.ada /^ type
usfreelock_ptr is access$/
+val c-src/getopt.h 84
+val c-src/emacs/src/lisp.h 691
+val c-src/emacs/src/lisp.h 3027
+val prol-src/natded.prolog /^val(X) --> ['['], valseq(X), [']'].$/
+valcell c-src/emacs/src/lisp.h 2357
+valid c-src/etags.c 220
+valid c-src/etags.c 2502
+validate php-src/lce_functions.php /^ function
validate($value)$/
+validate php-src/lce_functions.php /^ function
validate($value)$/
+valloc c-src/emacs/src/gmalloc.c /^valloc (size_t size)$/
+valseq prol-src/natded.prolog /^valseq([Val|Vals]) --> val(Val),
plusvalseq(Vals)./
+value c-src/emacs/src/lisp.h 687
+value cccp.y 113
+value y-src/cccp.y 112
+var c-src/emacs/src/keyboard.c 11023
+var c-src/emacs/src/lisp.h 3137
+varargs tex-src/texinfo.tex /^\\defvarargs {#3}\\endgroup %$/
+varargs tex-src/texinfo.tex /^\\defvarargs {#3}\\endgroup %$/
+varargs tex-src/texinfo.tex /^\\defvarargs {#2}\\endgroup %$/
+varargs tex-src/texinfo.tex /^\\defvarargs {#2}\\endgroup %$/
+vcopy c-src/emacs/src/lisp.h /^vcopy (Lisp_Object v, ptrdiff_t offset,
Lisp_Objec/
+vec cp-src/cfront.H 423
+vec::dim cp-src/cfront.H 426
+vec::size cp-src/cfront.H 427
+vec::vec cp-src/cfront.H /^ vec(Ptype t, Pexpr e) { Nt++; base=VEC;
typ=t; di/
+vectorlike_header c-src/emacs/src/lisp.h 1343
+verify-tags-table-function el-src/emacs/lisp/progmodes/etags.el
/^(defvar verify-tags-table-function nil$/
+verify_ascii c-src/emacs/src/lisp.h /^# define verify_ascii(str) (str)$/
+vignore c-src/etags.c 2417
+visit-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun
visit-tags-table (file &optional local)$/
+visit-tags-table-buffer el-src/emacs/lisp/progmodes/etags.el
/^(defun visit-tags-table-buffer (&optional cont)$/
+void c-src/emacs/src/lisp.h /^INLINE void (check_cons_list) (void) {
lisp_h_chec/
+voidfuncptr c-src/emacs/src/lisp.h 2108
+voidval cccp.y 116
+voidval y-src/cccp.y 115
+wait_status_ptr_t c.c 161
+waiting_for_input c-src/emacs/src/keyboard.c 150
+warning cccp.y /^warning (msg)$/
+warning y-src/cccp.y /^warning (msg)$/
+weak c-src/emacs/src/lisp.h 1830
+weak_alias c-src/emacs/src/gmalloc.c /^weak_alias (free, cfree)$/
+what c-src/etags.c 252
+wheel_syms c-src/emacs/src/keyboard.c 4628
+where c-src/emacs/src/lisp.h 2348
+width make-src/Makefile 186
+width make-src/Makefile 189
+width make-src/Makefile 192
+width make-src/Makefile 195
+windowWillClose: objcpp-src/SimpleCalc.M /^- windowWillClose:sender$/
+wipe_kboard c-src/emacs/src/keyboard.c /^wipe_kboard (KBOARD *kb)$/
+womboid c-src/h.h 63
+womboid c-src/h.h 75
+word_size c-src/emacs/src/lisp.h 1473
+write php-src/lce_functions.php /^ function write()$/
+write php-src/lce_functions.php /^ function write($save="yes")$/
+write_abbrev c-src/abbrev.c /^write_abbrev (sym, stream)$/
+write_classname c-src/etags.c /^write_classname (linebuffer *cn,
const char *quali/
+write_lex prol-src/natded.prolog /^write_lex(File):-$/
+write_lex_cat prol-src/natded.prolog /^write_lex_cat(File):-$/
+write_xyc cp-src/screen.cpp /^void write_xyc(int x, int y, char c)$/
+writebreak prol-src/natded.prolog /^writebreak([]).$/
+writebreaklex prol-src/natded.prolog /^writebreaklex([]).$/
+writecat prol-src/natded.prolog
/^writecat(np(ind(sng),nm(_)),np,[],[]):-!.$/
+writelist prol-src/natded.prolog /^writelist([der(Ws)|Ws2]):-$/
+writelistsubs prol-src/natded.prolog /^writelistsubs([],X):-$/
+writenamestring pas-src/common.pas /^procedure
writenamestring;(*($/
+writesubs prol-src/natded.prolog /^writesubs([]).$/
+writesups prol-src/natded.prolog /^writesups([]).$/
+written c-src/etags.c 211
+x c.c 153
+x c.c 179
+x c.c 188
+x c.c 189
+x tex-src/texinfo.tex /^\\refx{#1-snt}{} [\\printednodename],
page\\tie\\refx{/
+x-get-selection-internal c.c /^DEFUN ("x-get-selection-internal",
Fx_get_selectio/
+x-get-selection-internal c.c /^ Fx_get_selection_internal,
Sx_get_selection/
+xcar_addr c-src/emacs/src/lisp.h /^xcar_addr (Lisp_Object c)$/
+xcdr_addr c-src/emacs/src/lisp.h /^xcdr_addr (Lisp_Object c)$/
+xmalloc c-src/etags.c /^xmalloc (size_t size)$/
+xnew c-src/etags.c /^#define xnew(n, Type) ((Type *) xmalloc ((n) /
+xrealloc c-src/etags.c /^xrealloc (void *ptr, size_t size)$/
+xref-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defclass
xref-etags-location (xref-location)$/
+xref-location-line el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod
xref-location-line ((l xref-etags-lo/
+xref-location-marker el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod
xref-location-marker ((l xref-etags-/
+xref-make-etags-location el-src/emacs/lisp/progmodes/etags.el
/^(defun xref-make-etags-location (tag-info file)$/
+xrnew c-src/etags.c /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/
+xx Makefile /^xx="this line is here because of a fontlock bug$/
+y-get-selection-internal c.c /^ Fy_get_selection_internal,
Sy_get_selection_/
+yyalloc /usr/share/bison/bison.simple 83
+yyalloc /usr/share/bison/bison.simple 83
+yycheck parse.y 330
+yycheck cccp.y 301
+yyclearin /usr/share/bison/bison.simple 149
+yyclearin /usr/share/bison/bison.simple 149
+yydebug /usr/share/bison/bison.simple 237
+yydebug /usr/share/bison/bison.simple 237
+yydefact parse.y 219
+yydefact cccp.y 239
+yydefgoto parse.y 237
+yydefgoto cccp.y 251
+yyerrhandle /usr/share/bison/bison.simple 848
+yyerrhandle /usr/share/bison/bison.simple 848
+yyerrlab1 /usr/share/bison/bison.simple 823
+yyerrlab1 /usr/share/bison/bison.simple 823
+yyerrok /usr/share/bison/bison.simple 148
+yyerrok /usr/share/bison/bison.simple 148
+yyerror cccp.y /^yyerror (s)$/
+yyerror y-src/cccp.y /^yyerror (s)$/
+yyerrstatus /usr/share/bison/bison.simple 846
+yyerrstatus /usr/share/bison/bison.simple 846
+yylex cccp.y /^yylex ()$/
+yylex y-src/cccp.y /^yylex ()$/
+yyls /usr/share/bison/bison.simple 88
+yyls /usr/share/bison/bison.simple 88
+yylsp /usr/share/bison/bison.simple 748
+yylsp /usr/share/bison/bison.simple 921
+yylsp /usr/share/bison/bison.simple 748
+yylsp /usr/share/bison/bison.simple 921
+yymemcpy /usr/share/bison/bison.simple 264
+yymemcpy /usr/share/bison/bison.simple /^yymemcpy (char *yyto, const
char *yyfrom, YYSIZE_T/
+yymemcpy /usr/share/bison/bison.simple 264
+yymemcpy /usr/share/bison/bison.simple /^yymemcpy (char *yyto, const
char *yyfrom, YYSIZE_T/
+yyn /usr/share/bison/bison.simple 755
+yyn /usr/share/bison/bison.simple 861
+yyn /usr/share/bison/bison.simple 895
+yyn /usr/share/bison/bison.simple 903
+yyn /usr/share/bison/bison.simple 755
+yyn /usr/share/bison/bison.simple 861
+yyn /usr/share/bison/bison.simple 895
+yyn /usr/share/bison/bison.simple 903
+yynewstate /usr/share/bison/bison.simple 763
+yynewstate /usr/share/bison/bison.simple 925
+yynewstate /usr/share/bison/bison.simple 763
+yynewstate /usr/share/bison/bison.simple 925
+yypact parse.y 242
+yypact cccp.y 256
+yyparse /usr/share/bison/bison.simple /^yyparse (YYPARSE_PARAM_ARG)$/
+yyparse /usr/share/bison/bison.simple /^yyparse (YYPARSE_PARAM_ARG)$/
+yypgoto parse.y 260
+yypgoto cccp.y 268
+yyprhs parse.y 134
+yyprhs cccp.y 167
+yyr1 parse.y 197
+yyr1 cccp.y 219
+yyr2 parse.y 207
+yyr2 cccp.y 228
+yyresult /usr/share/bison/bison.simple 932
+yyresult /usr/share/bison/bison.simple 939
+yyresult /usr/share/bison/bison.simple 947
+yyresult /usr/share/bison/bison.simple 932
+yyresult /usr/share/bison/bison.simple 939
+yyresult /usr/share/bison/bison.simple 947
+yyreturn /usr/share/bison/bison.simple 933
+yyreturn /usr/share/bison/bison.simple 940
+yyreturn /usr/share/bison/bison.simple 933
+yyreturn /usr/share/bison/bison.simple 940
+yyrhs parse.y 142
+yyrhs cccp.y 174
+yyrline parse.y 171
+yyrline cccp.y 195
+yyss /usr/share/bison/bison.simple 85
+yyss /usr/share/bison/bison.simple 85
+yystate /usr/share/bison/bison.simple 757
+yystate /usr/share/bison/bison.simple 761
+yystate /usr/share/bison/bison.simple 875
+yystate /usr/share/bison/bison.simple 924
+yystate /usr/share/bison/bison.simple 757
+yystate /usr/share/bison/bison.simple 761
+yystate /usr/share/bison/bison.simple 875
+yystate /usr/share/bison/bison.simple 924
+yystpcpy /usr/share/bison/bison.simple 316
+yystpcpy /usr/share/bison/bison.simple /^yystpcpy (char *yydest, const
char *yysrc)$/
+yystpcpy /usr/share/bison/bison.simple 316
+yystpcpy /usr/share/bison/bison.simple /^yystpcpy (char *yydest, const
char *yysrc)$/
+yystrlen /usr/share/bison/bison.simple 293
+yystrlen /usr/share/bison/bison.simple /^yystrlen (const char *yystr)$/
+yystrlen /usr/share/bison/bison.simple 293
+yystrlen /usr/share/bison/bison.simple /^yystrlen (const char *yystr)$/
+yystype cccp.y 118
+yytable parse.y 269
+yytable cccp.y 277
+yytname parse.y 185
+yytname cccp.y 208
+yytranslate parse.y 101
+yytranslate cccp.y 135
+yyvs /usr/share/bison/bison.simple 86
+yyvs /usr/share/bison/bison.simple 86
+yyvsp /usr/share/bison/bison.simple 746
+yyvsp /usr/share/bison/bison.simple 919
+yyvsp /usr/share/bison/bison.simple 746
+yyvsp /usr/share/bison/bison.simple 919
+z c.c 144
+z c.c 164
+zf erl-src/lists.erl /^zf(F, As, [H|T]) ->$/
+| tex-src/texinfo.tex /^\\def|{{\\tt \\char '174}}$/
+~ tex-src/texinfo.tex /^\\def~{{\\tt \\char '176}}$/
diff --git a/test/etags/ETAGS.good_1 b/test/etags/ETAGS.good_1
new file mode 100644
index 0000000..95bb70c
--- /dev/null
+++ b/test/etags/ETAGS.good_1
@@ -0,0 +1,5214 @@
+
+Makefile,701
+ADASRC=1,0
+ASRC=2,91
+CSRC=3,139
+CPSRC=7,410
+ELSRC=10,624
+ERLSRC=11,694
+FORTHSRC=12,759
+FSRC=13,809
+HTMLSRC=14,881
+JAVASRC=15,974
+LUASRC=16,1062
+MAKESRC=17,1105
+OBJCSRC=18,1147
+OBJCPPSRC=19,1228
+PASSRC=20,1291
+PERLSRC=21,1333
+PHPSRC=22,1413
+PSSRC=23,1485
+PROLSRC=24,1525
+PYTSRC=25,1587
+TEXSRC=26,1628
+YSRC=27,1707
+SRCS=28,1772
+NONSRCS=32,2024
+ETAGS_PROG=34,2098
+CTAGS_PROG=35,2129
+REGEX=37,2161
+xx=38,2207
+RUN=40,2256
+OPTIONS=42,2262
+ARGS=43,2314
+infiles 45,2332
+check:check47,2394
+ediff%:ediff%55,2697
+cdiff:cdiff58,2798
+ETAGS:ETAGS61,2895
+CTAGS:CTAGS64,2965
+srclist:srclist67,3043
+regexfile:regexfile71,3134
+.PRECIOUS:.PRECIOUS77,3311
+FRC:FRC79,3345
+
+ada-src/etags-test-for.ada,1969
+ type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0
+ function Body_RequiredBody_Required/f3,78
+ type Type_Specific_Data Type_Specific_Data/t11,280
+ function "abs"abs/f19,504
+ type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577
+ function "="=/f27,722
+ type usfreelock_ptr usfreelock_ptr/t30,803
+ function p p/f33,891
+ procedure LL_Wrapper LL_Wrapper/p37,1054
+function p p/f39,1094
+package Pkg1 Pkg1/s44,1203
+ type Private_T Private_T/t46,1220
+ package Inner1 Inner1/s48,1250
+ procedure Private_T;Private_T/p49,1270
+ package Inner2 Inner2/s52,1310
+ task Private_T;Private_T/k53,1330
+ type Public_T Public_T/t56,1365
+ procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450
+ procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475
+ function Pkg1_Func1 Pkg1_Func1/f66,1514
+ function Pkg1_Func2 Pkg1_Func2/f68,1553
+ package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622
+ procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645
+ task type Task_Type Task_Type/k75,1694
+ type Private_T Private_T/t82,1786
+package body Pkg1 Pkg1/b89,1882
+ procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904
+ package body Inner1 Inner1/b96,1956
+ procedure Private_T Private_T/p97,1981
+ package body Inner2 Inner2/b103,2054
+ task body Private_T Private_T/b104,2079
+ task body Task_Type Task_Type/b112,2181
+ procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367
+ function Pkg1_Func1 Pkg1_Func1/f132,2445
+ function Pkg1_Func2 Pkg1_Func2/f134,2496
+ package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596
+package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663
+ procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689
+function Pkg1_Func1 Pkg1_Func1/f155,2778
+package Truc Truc/s162,2887
+package Truc.Bidule Truc.Bidule/s166,2929
+ protected Bidule Bidule/t168,2953
+ protected type Machin_T Machin_T/t172,3007
+package body Truc.Bidule Truc.Bidule/b178,3087
+ protected body Bidule Bidule/b179,3115
+ protected Machin_T Machin_T/t186,3207
+
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives System.Task_Primitives/b64,2603
+ package RTE RTE/s69,2712
+ package TSL TSL/s70,2759
+ function To_void_ptr To_void_ptr/f86,3287
+ function To_TCB_Ptr To_TCB_Ptr/f89,3366
+ function
pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444
+ function
pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728
+ procedure Abort_WrapperAbort_Wrapper/p115,4302
+ procedure LL_Wrapper LL_Wrapper/p122,4526
+ procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830
+ function Self Self/f160,5586
+ procedure Initialize_LockInitialize_Lock/p174,5958
+ procedure Finalize_Lock Finalize_Lock/p210,6927
+ procedure Write_Lock Write_Lock/p226,7338
+ procedure Read_Lock Read_Lock/p239,7700
+ procedure Unlock Unlock/p246,7850
+ procedure Initialize_Cond Initialize_Cond/p258,8160
+ procedure Finalize_Cond Finalize_Cond/p286,8979
+ procedure Cond_Wait Cond_Wait/p300,9303
+ procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661
+ procedure Cond_Signal Cond_Signal/p343,10510
+ procedure Set_PrioritySet_Priority/p355,10836
+ procedure Set_Own_Priority Set_Own_Priority/p372,11243
+ function Get_Priority Get_Priority/f385,11598
+ function Get_Own_Priority Get_Own_Priority/f398,12023
+ procedure Create_LL_TaskCreate_LL_Task/p412,12438
+ function To_Start_Addr To_Start_Addr/f426,12873
+ procedure Exit_LL_Task Exit_LL_Task/p491,14995
+ procedure Abort_Task Abort_Task/p500,15158
+ procedure Test_Abort Test_Abort/p518,15716
+ procedure Install_Abort_Handler Install_Abort_Handler/p527,15878
+ procedure Abort_WrapperAbort_Wrapper/p557,16939
+ function Address_To_Call_State Address_To_Call_State/f562,17062
+ procedure Install_Error_Handler Install_Error_Handler/p573,17351
+ procedure LL_Assert LL_Assert/p599,18146
+ procedure LL_Wrapper LL_Wrapper/p608,18299
+ procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010
+ procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129
+ procedure Clear Clear/p640,19236
+ procedure Test_And_Set Test_And_Set/p645,19330
+ function Is_Set Is_Set/f659,19676
+
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives System.Task_Primitives/s58,3169
+ type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253
+ type Pre_Call_State Pre_Call_State/t64,3331
+ type Task_Storage_Size Task_Storage_Size/t66,3378
+ type Machine_Exceptions Machine_Exceptions/t68,3433
+ type Error_Information Error_Information/t70,3499
+ type Lock Lock/t72,3569
+ type Condition_Variable Condition_Variable/t73,3594
+ type Task_Control_Block Task_Control_Block/t81,3955
+ type TCB_Ptr TCB_Ptr/t89,4241
+ function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333
+ procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425
+ function Self Self/f100,4602
+ procedure Initialize_Lock Initialize_Lock/p103,4707
+ procedure Finalize_Lock Finalize_Lock/p107,4879
+ procedure Write_Lock Write_Lock/p111,5034
+ procedure Read_Lock Read_Lock/p118,5428
+ procedure Unlock Unlock/p128,5995
+ procedure Initialize_Cond Initialize_Cond/p135,6300
+ procedure Finalize_Cond Finalize_Cond/p138,6413
+ procedure Cond_Wait Cond_Wait/p142,6591
+ procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396
+ procedure Cond_Signal Cond_Signal/p164,7812
+ procedure Set_Priority Set_Priority/p169,8040
+ procedure Set_Own_Priority Set_Own_Priority/p173,8200
+ function Get_Priority Get_Priority/f177,8348
+ function Get_Own_Priority Get_Own_Priority/f181,8504
+ procedure Create_LL_TaskCreate_LL_Task/p185,8647
+ procedure Exit_LL_Task;Exit_LL_Task/p198,9282
+ procedure Abort_Task Abort_Task/p203,9516
+ procedure Test_Abort;Test_Abort/p210,9878
+ type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233
+ procedure Install_Abort_Handler Install_Abort_Handler/p219,10312
+ procedure Install_Error_Handler Install_Error_Handler/p226,10741
+ procedure LL_Assert LL_Assert/p231,10983
+ type Proc Proc/t238,11240
+ type TAS_Cell TAS_Cell/t242,11328
+ procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670
+ procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941
+ procedure Clear Clear/p260,12157
+ procedure Test_And_Set Test_And_Set/p267,12462
+ function Is_Set Is_Set/f275,12877
+ type Lock Lock/t283,13155
+ type Condition_Variable Condition_Variable/t288,13267
+ type TAS_Cell TAS_Cell/t293,13389
+
+ada-src/waroquiers.ada,1503
+package Pkg1 Pkg1/s3,89
+ type Private_T Private_T/t5,106
+ package Inner1 Inner1/s7,136
+ procedure Private_T;Private_T/p8,156
+ package Inner2 Inner2/s11,196
+ task Private_T;Private_T/k12,216
+ type Public_T Public_T/t15,251
+ procedure Pkg1_Proc1;Pkg1_Proc1/p21,336
+ procedure Pkg1_Proc2 Pkg1_Proc2/p23,361
+ function Pkg1_Func1 Pkg1_Func1/f25,400
+ function Pkg1_Func2 Pkg1_Func2/f27,439
+ package Pkg1_Pkg1 Pkg1_Pkg1/s30,508
+ procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531
+ task type Task_Type Task_Type/k34,580
+ type Private_T Private_T/t40,671
+package body Pkg1 Pkg1/b46,766
+ procedure Pkg1_Proc1 Pkg1_Proc1/p48,788
+ package body Inner1 Inner1/b53,840
+ procedure Private_T Private_T/p54,865
+ package body Inner2 Inner2/b60,938
+ task body Private_T Private_T/b61,963
+ task body Task_Type Task_Type/b68,1064
+ procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250
+ function Pkg1_Func1 Pkg1_Func1/f88,1328
+ function Pkg1_Func2 Pkg1_Func2/f90,1379
+ package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479
+package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544
+ procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570
+function Pkg1_Func1 Pkg1_Func1/f107,1657
+package Truc Truc/s112,1764
+package Truc.Bidule Truc.Bidule/s116,1816
+ protected Bidule Bidule/t125,1964
+ protected type Machin_T Machin_T/t131,2046
+package body Truc.Bidule Truc.Bidule/b138,2153
+ protected body Bidule Bidule/b139,2181
+ protected body Machin_T Machin_T/b146,2281
+
+c-src/abbrev.c,1432
+Lisp_Object Vabbrev_table_name_list;42,1416
+Lisp_Object Vglobal_abbrev_table;47,1561
+Lisp_Object Vfundamental_mode_abbrev_table;51,1672
+int abbrevs_changed;55,1773
+int abbrev_all_caps;57,1795
+Lisp_Object Vabbrev_start_location;62,1944
+Lisp_Object Vabbrev_start_location_buffer;65,2033
+Lisp_Object Vlast_abbrev;69,2142
+Lisp_Object Vlast_abbrev_text;74,2311
+int last_abbrev_point;78,2401
+Lisp_Object Vpre_abbrev_expand_hook,82,2474
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;82,2474
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table84,2538
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table91,2730
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev106,3111
+DEFUN ("define-global-abbrev",
Fdefine_global_abbrev,define-global-abbrev148,4430
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev159,4801
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol173,5269
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion201,6233
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev217,6748
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev388,11669
+write_abbrev 425,12876
+describe_abbrev 444,13311
+DEFUN ("insert-abbrev-table-description",
Finsert_abbrev_table_description,insert-abbrev-table-description465,13826
+DEFUN ("define-abbrev-table",
Fdefine_abbrev_table,define-abbrev-table505,14982
+syms_of_abbrev 539,16059
+
+c-src/torture.c,197
+(*tag1 tag118,452
+#define notag2 26,553
+(*tag2 tag229,630
+(*tag3 tag339,772
+#define notag4 45,861
+(*tag4 tag448,955
+tag5 57,1081
+tag6 66,1208
+int pp1(74,1317
+pp287,1419
+pp3(100,1518
+
+c-src/getopt.h,147
+#define _GETOPT_H 19,801
+struct option73,2797
+#define no_argument 89,3124
+#define required_argument 90,3147
+#define optional_argument 91,3175
+
+c-src/etags.c,10045
+char pot_etags_version[pot_etags_version81,3470
+# undef DEBUG84,3552
+# define DEBUG 85,3567
+# define DEBUG 87,3594
+# define NDEBUG 88,3617
+# define _GNU_SOURCE 94,3705
+# undef MSDOS100,3876
+# undef WINDOWSNT101,3890
+# define WINDOWSNT102,3909
+# undef MSDOS106,3968
+# define MSDOS 107,3982
+# define MSDOS 110,4032
+# define MAXPATHLEN 115,4111
+# undef HAVE_NTGUI116,4141
+# undef DOS_NT117,4160
+# define DOS_NT118,4176
+# undef assert 135,4482
+# define assert(136,4541
+# undef CTAGS146,4857
+# define CTAGS 147,4872
+# define CTAGS 149,4898
+#define streq(152,4927
+#define strcaseeq(153,4996
+#define strneq(154,5075
+#define strncaseeq(155,5151
+#define CHARS 157,5238
+#define CHAR(158,5278
+#define iswhite(159,5329
+#define notinname(160,5394
+#define begtoken(161,5469
+#define intoken(162,5542
+#define endtoken(163,5614
+#define ISALNUM(165,5684
+#define ISALPHA(166,5722
+#define ISDIGIT(167,5760
+#define ISLOWER(168,5798
+#define lowcase(170,5837
+#define xnew(179,6015
+#define xrnew(180,6083
+typedef void Lang_function 182,6164
+} compressor;188,6365
+} language;199,6835
+typedef struct fdesc201,6848
+} fdesc;212,7366
+typedef struct node_st214,7376
+} node;225,7894
+} linebuffer;239,8248
+ at_language,245,8344
+ at_regexp,246,8393
+ at_filename,247,8437
+ at_stdin,248,8473
+ at_end 249,8516
+} argument;253,8698
+typedef struct regexp256,8758
+} regexp;268,9325
+static void error 311,10780
+# undef STDIN408,15073
+#define STDIN 411,15095
+static compressor compressors[compressors457,17664
+static const char *Ada_suffixes Ada_suffixes473,17907
+static const char Ada_help 475,17977
+static const char *Asm_suffixes Asm_suffixes493,18580
+static const char Asm_help 504,18976
+static const char *default_C_suffixes default_C_suffixes512,19312
+static const char default_C_help 515,19413
+static const char default_C_help 523,19850
+static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460
+static const char Cplusplus_help 540,20658
+static const char *Cjava_suffixes Cjava_suffixes549,21113
+static char Cjava_help 551,21172
+static const char *Cobol_suffixes Cobol_suffixes556,21337
+static char Cobol_help 558,21402
+static const char *Cstar_suffixes Cstar_suffixes562,21543
+static const char *Erlang_suffixes Erlang_suffixes565,21607
+static const char Erlang_help 567,21673
+const char *Forth_suffixes Forth_suffixes571,21799
+static const char Forth_help 573,21857
+static const char *Fortran_suffixes Fortran_suffixes577,22008
+static const char Fortran_help 579,22085
+static const char *HTML_suffixes HTML_suffixes582,22190
+static const char HTML_help 584,22264
+static const char *Lisp_suffixes Lisp_suffixes589,22452
+static const char Lisp_help 591,22556
+static const char *Lua_suffixes Lua_suffixes598,22871
+static const char Lua_help 600,22934
+static const char *Makefile_filenames Makefile_filenames603,23010
+static const char Makefile_help 605,23133
+static const char *Objc_suffixes Objc_suffixes609,23277
+static const char Objc_help 613,23399
+static const char *Pascal_suffixes Pascal_suffixes619,23714
+static const char Pascal_help 621,23778
+static const char *Perl_suffixes Perl_suffixes626,23966
+static const char *Perl_interpreters Perl_interpreters628,24028
+static const char Perl_help 630,24100
+static const char *PHP_suffixes PHP_suffixes637,24451
+static const char PHP_help 639,24523
+static const char *plain_C_suffixes plain_C_suffixes643,24678
+static const char *PS_suffixes PS_suffixes647,24762
+static const char PS_help 649,24848
+static const char *Prolog_suffixes Prolog_suffixes652,24931
+static const char Prolog_help 654,24993
+static const char *Python_suffixes Python_suffixes658,25107
+static const char Python_help 660,25165
+static const char *Scheme_suffixes Scheme_suffixes665,25347
+static const char Scheme_help 667,25460
+static const char *TeX_suffixes TeX_suffixes672,25683
+static const char TeX_help 674,25781
+static const char *Texinfo_suffixes Texinfo_suffixes686,26316
+static const char Texinfo_help 688,26395
+static const char *Yacc_suffixes Yacc_suffixes691,26492
+static const char Yacc_help 693,26606
+static const char auto_help 699,26856
+static const char none_help 703,27020
+static const char no_lang_help 707,27143
+static language lang_names 718,27355
+print_language_names 753,29532
+# define EMACS_NAME 786,30755
+# define VERSION 789,30811
+print_version 792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173
+print_help 808,31250
+main 981,37438
+get_compressor_from_suffix 1319,46217
+get_language_from_langname 1355,47158
+get_language_from_interpreter 1377,47545
+get_language_from_filename 1399,47976
+process_file_name 1433,48834
+process_file 1555,51665
+init 1632,54150
+find_entries 1656,54901
+make_tag 1814,59707
+pfnote 1856,60942
+free_tree 1917,62744
+free_fdesc 1935,63029
+add_node 1955,63472
+invalidate_nodes 2035,65537
+static int number_len 2068,66193
+total_size_of_entries 2087,66694
+put_entries 2107,67154
+#define C_EXT 2193,68995
+#define C_PLAIN 2194,69037
+#define C_PLPL 2195,69070
+#define C_STAR 2196,69104
+#define C_JAVA 2197,69137
+#define C_AUTO 2198,69172
+#define YACC 2199,69242
+enum sym_type2204,69312
+ st_none,2206,69328
+ st_C_objprot,2207,69339
+ st_C_objprot, st_C_objimpl,2207,69339
+ st_C_objprot, st_C_objimpl, st_C_objend,2207,69339
+ st_C_gnumacro,2208,69382
+ st_C_ignore,2209,69399
+ st_C_ignore, st_C_attribute,2209,69399
+ st_C_javastruct,2210,69430
+ st_C_operator,2211,69449
+ st_C_class,2212,69466
+ st_C_class, st_C_template,2212,69466
+ st_C_struct,2213,69495
+ st_C_struct, st_C_extern,2213,69495
+ st_C_struct, st_C_extern, st_C_enum,2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495
+struct C_stab_entry 2271,71278
+hash 2275,71409
+in_word_set 2321,72937
+ TOTAL_KEYWORDS 2325,73018
+ MIN_WORD_LENGTH 2326,73045
+ MAX_WORD_LENGTH 2327,73072
+ MIN_HASH_VALUE 2328,73100
+ MAX_HASH_VALUE 2329,73126
+C_symtype 2387,74985
+static bool inattribute;2400,75234
+ fvnone,2408,75435
+ fdefunkey,2409,75466
+ fdefunname,2410,75512
+ foperator,2411,75556
+ fvnameseen,2412,75613
+ fstartlist,2413,75666
+ finlist,2414,75722
+ flistseen,2415,75765
+ fignore,2416,75813
+ vignore 2417,75856
+} fvdef;2418,75901
+static bool fvextern;2420,75911
+ tnone,2428,76089
+ tkeyseen,2429,76119
+ ttypeseen,2430,76160
+ tinbody,2431,76199
+ tend,2432,76238
+ tignore 2433,76279
+} typdef;2434,76320
+ snone,2443,76499
+ skeyseen,2445,76575
+ stagseen,2446,76620
+ scolonseen 2447,76661
+} structdef;2448,76715
+static const char *objtag objtag2453,76809
+ dnone,2460,76942
+ dsharpseen,2461,76972
+ ddefineseen,2462,77025
+ dignorerest 2463,77070
+} definedef;2464,77112
+ onone,2472,77267
+ oprotocol,2473,77297
+ oimplementation,2474,77347
+ otagseen,2475,77395
+ oparenseen,2476,77431
+ ocatseen,2477,77486
+ oinbody,2478,77525
+ omethodsign,2479,77568
+ omethodtag,2480,77626
+ omethodcolon,2481,77666
+ omethodparm,2482,77709
+ oignore 2483,77755
+} objdef;2484,77787
+static struct tok2491,77944
+} token;2508,78626
+} cstack;2523,79136
+#define nestlev 2525,79264
+#define instruct 2527,79369
+pushclass_above 2531,79489
+popclass_above 2550,79948
+write_classname 2564,80162
+consider_token 2613,81341
+} lbs[lbs2924,88532
+#define current_lb_is_new 2926,88543
+#define switch_line_buffers(2927,88588
+#define curlb 2929,88641
+#define newlb 2930,88672
+#define curlinepos 2931,88703
+#define newlinepos 2932,88744
+#define plainc 2934,88786
+#define cplpl 2935,88830
+#define cjava 2936,88861
+#define CNL_SAVE_DEFINEDEF(2938,88905
+#define CNL(2947,89117
+make_C_tag 2960,89375
+C_entries 2986,90194
+default_C_entries 3833,110156
+plain_C_entries 3840,110276
+Cplusplus_entries 3847,110364
+Cjava_entries 3854,110460
+Cstar_entries 3861,110550
+Yacc_entries 3868,110642
+#define LOOP_ON_INPUT_LINES(3875,110720
+#define LOOKING_AT(3884,111056
+#define LOOKING_AT_NOCASE(3891,111461
+just_read_file 3901,111861
+F_takeprec 3914,112039
+F_getit 3937,112366
+Fortran_functions 3961,112840
+Ada_getit 4052,114669
+Ada_funcs 4115,116044
+Asm_labels 4228,118582
+Perl_functions 4261,119549
+Python_functions 4357,122057
+PHP_functions 4387,122684
+Cobol_paragraphs 4466,124471
+Makefile_targets 4494,125029
+Pascal_functions 4529,125950
+L_getit 4709,130318
+Lisp_functions 4725,130664
+Lua_functions 4785,131850
+PS_functions 4811,132385
+Forth_words 4841,133053
+Scheme_functions 4877,134092
+static linebuffer *TEX_toktab TEX_toktab4908,134781
+static const char *TEX_defenv TEX_defenv4912,134974
+static char TEX_esc 4920,135261
+static char TEX_opgrp 4921,135289
+static char TEX_clgrp 4922,135318
+TeX_commands 4928,135395
+#define TEX_LESC 4986,136652
+#define TEX_SESC 4987,136674
+TEX_mode 4992,136804
+TEX_decode_env 5026,137509
+Texinfo_nodes 5071,138554
+HTML_labels 5094,139013
+Prolog_functions 5219,142347
+prolog_skip_comment 5255,143128
+prolog_pr 5281,143736
+prolog_atom 5319,144628
+Erlang_functions 5379,145666
+erlang_func 5438,146965
+erlang_attribute 5476,147642
+erlang_atom 5496,148061
+scan_separators 5534,149080
+analyze_regex 5586,150460
+add_regex 5654,152050
+substitute 5767,154797
+free_regexps 5814,155837
+regex_tag_multiline 5836,156291
+nocase_tail 5913,158263
+get_tag 5928,158519
+readline_internal 5959,159455
+readline 6037,161296
+savestr 6230,167243
+savenstr 6240,167473
+skip_spaces 6249,167679
+skip_non_spaces 6258,167833
+skip_name 6267,167983
+fatal 6277,168156
+pfatal 6284,168253
+suggest_asking_for_help 6291,168332
+error 6300,168554
+concat 6313,168846
+etags_getcwd 6329,169259
+relative_filename 6350,169725
+absolute_filename 6389,170751
+absolute_dirname 6453,172416
+filename_is_absolute 6472,172845
+canonicalize_filename 6484,173096
+# define ISUPPER(6491,173235
+linebuffer_init 6514,173656
+linebuffer_setlen 6524,173887
+xmalloc 6536,174148
+xrealloc 6545,174314
+
+c-src/exit.c,47
+ } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/exit.strange_suffix,47
+ } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/sysdep.h,491
+#define ENTRY(21,865
+#define PSEUDO(26,972
+ movl $SYS_##syscall_nam$SYS_##syscall_na31,1132
+ movl $SYS_##syscall_name, %eax;eax31,1132
+ int $0x80;32,1180
+ test %eax,eax33,1210
+ test %eax, %eax;eax33,1210
+ jl syscall_error;34,1245
+#define XCHG_0 47,1562
+#define XCHG_1 48,1606
+#define XCHG_2 49,1648
+#define XCHG_3 50,1691
+#define XCHG_4 51,1734
+#define XCHG_5 52,1777
+#define r0 54,1821
+#define r1 55,1875
+#define scratch 56,1932
+#define MOVE(57,2001
+
+c-src/tab.c,196
+static int count_words(15,263
+static char *get_word(get_word35,553
+void tab_free(59,966
+char **tab_fill(tab_fill70,1129
+int tab_delete_first(91,1638
+int tab_count_words(103,1820
+
+c-src/dostorture.c,197
+(*tag1 tag118,451
+#define notag2 26,552
+(*tag2 tag229,629
+(*tag3 tag339,771
+#define notag4 45,860
+(*tag4 tag448,954
+tag5 57,1080
+tag6 66,1207
+int pp1(74,1316
+pp287,1418
+pp3(100,1517
+
+c-src/emacs/src/gmalloc.c,3539
+#define USE_PTHREAD25,1002
+#undef get_current_dir_name33,1126
+#undef malloc64,2110
+#undef realloc65,2124
+#undef calloc66,2139
+#undef free67,2153
+#define malloc 68,2165
+#define realloc 69,2188
+#define calloc 70,2213
+#define aligned_alloc 71,2236
+#define free 72,2273
+#define DUMPED 80,2472
+#define ALLOCATED_BEFORE_DUMPING(81,2507
+extern void *malloc malloc94,2718
+#define INT_BIT 124,3934
+#define BLOCKLOG 125,3977
+#define BLOCKSIZE 126,4018
+#define BLOCKIFY(127,4052
+#define HEAP 131,4215
+#define FINAL_FREE_BLOCKS 135,4391
+ } malloc_info;167,5388
+#define BLOCK(176,5620
+#define ADDRESS(177,5682
+struct list186,5939
+struct alignlist196,6153
+#define LOCK(223,7064
+#define UNLOCK(228,7195
+#define LOCK_ALIGNED_BLOCKS(233,7329
+#define UNLOCK_ALIGNED_BLOCKS(238,7484
+#define LOCK(244,7649
+#define UNLOCK(245,7664
+#define LOCK_ALIGNED_BLOCKS(246,7681
+#define UNLOCK_ALIGNED_BLOCKS(247,7711
+enum mcheck_status283,9092
+ MCHECK_DISABLED 285,9115
+ MCHECK_OK,286,9187
+ MCHECK_FREE,287,9226
+ MCHECK_HEAD,288,9270
+ MCHECK_TAIL 289,9334
+struct mstats308,10153
+char *_heapbase;_heapbase355,11829
+malloc_info *_heapinfo;_heapinfo358,11927
+static size_t heapsize;361,11983
+size_t _heapindex;364,12047
+size_t _heaplimit;367,12109
+struct list _fraghead[_fraghead370,12171
+size_t _chunks_used;373,12229
+size_t _bytes_used;374,12250
+size_t _chunks_free;375,12270
+size_t _bytes_free;376,12291
+int __malloc_initialized;379,12340
+size_t __malloc_extra_blocks;381,12367
+static int state_protected_p;400,12912
+static size_t last_state_size;401,12942
+static malloc_info *last_heapinfo;last_heapinfo402,12973
+protect_malloc_state 405,13014
+#define PROTECT_MALLOC_STATE(426,13627
+#define PROTECT_MALLOC_STATE(429,13697
+align 435,13794
+get_contiguous_space 466,14616
+register_heapinfo 497,15325
+pthread_mutex_t _malloc_mutex 517,15879
+pthread_mutex_t _aligned_blocks_mutex 518,15938
+int _malloc_thread_enabled_p;519,16005
+malloc_atfork_handler_prepare 522,16048
+malloc_atfork_handler_parent 529,16139
+malloc_atfork_handler_child 536,16233
+malloc_enable_thread 544,16375
+malloc_initialize_1 563,16961
+__malloc_initialize 594,17793
+static int morecore_recursing;604,17926
+morecore_nolock 609,18066
+_malloc_internal_nolock 722,21584
+_malloc_internal 920,28102
+malloc 932,28247
+_malloc 961,29140
+_free 967,29196
+_realloc 973,29240
+struct alignlist *_aligned_blocks _aligned_blocks1004,30345
+_free_internal_nolock 1009,30474
+_free_internal 1255,38476
+free 1265,38603
+weak_alias 1277,38799
+#define min(1306,39813
+_realloc_internal_nolock 1319,40309
+_realloc_internal 1435,43563
+realloc 1447,43726
+calloc 1478,44894
+#define __sbrk 1513,46042
+__default_morecore 1525,46511
+aligned_alloc 1557,47522
+memalign 1647,49704
+posix_memalign 1656,49909
+static size_t pagesize;1703,51317
+valloc 1706,51349
+#undef malloc1715,51490
+#undef realloc1716,51504
+#undef calloc1717,51519
+#undef aligned_alloc1718,51533
+#undef free1719,51554
+hybrid_malloc 1736,52083
+hybrid_calloc 1744,52188
+hybrid_free 1752,52319
+hybrid_aligned_alloc 1765,52626
+hybrid_realloc 1780,52984
+hybrid_get_current_dir_name 1811,53797
+#define MAGICWORD 1854,55206
+#define MAGICFREE 1855,55261
+#define MAGICBYTE 1856,55316
+#define MALLOCFLOOD 1857,55348
+#define FREEFLOOD 1858,55382
+struct hdr1860,55415
+checkhdr 1867,55581
+freehook 1891,56022
+mallochook 1927,56804
+reallochook 1944,57143
+mabort 1978,57901
+static int mcheck_used 2012,58586
+mcheck 2015,58619
+mprobe 2035,59138
+
+c-src/emacs/src/regex.h,3761
+#define _REGEX_H 21,836
+typedef unsigned long reg_syntax_t;43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749
+#define RE_BK_PLUS_QM 52,1969
+#define RE_CHAR_CLASSES 58,2298
+#define RE_CONTEXT_INDEP_ANCHORS 72,3032
+#define RE_CONTEXT_INDEP_OPS 80,3458
+#define RE_CONTEXT_INVALID_OPS 84,3658
+#define RE_DOT_NEWLINE 88,3801
+#define RE_DOT_NOT_NULL 92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE 96,4082
+#define RE_INTERVALS 101,4292
+#define RE_LIMITED_OPS 105,4441
+#define RE_NEWLINE_ALT 109,4583
+#define RE_NO_BK_BRACES 114,4773
+#define RE_NO_BK_PARENS 118,4964
+#define RE_NO_BK_REFS 122,5120
+#define RE_NO_BK_VBAR 126,5316
+#define RE_NO_EMPTY_RANGES 132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766
+#define RE_NO_POSIX_BACKTRACKING 140,5937
+#define RE_NO_GNU_OPS 144,6133
+#define RE_FRUGAL 147,6253
+#define RE_SHY_GROUPS 150,6360
+#define RE_NO_NEWLINE_ANCHOR 153,6468
+#define RE_DEBUG 161,6884
+#define RE_SYNTAX_EMACS 183,7684
+#define RE_SYNTAX_AWK 186,7780
+#define RE_SYNTAX_GNU_AWK 193,8084
+#define RE_SYNTAX_POSIX_AWK 197,8255
+#define RE_SYNTAX_GREP 201,8393
+#define RE_SYNTAX_EGREP 206,8549
+#define RE_SYNTAX_POSIX_EGREP 212,8765
+#define RE_SYNTAX_ED 216,8910
+#define RE_SYNTAX_SED 218,8954
+#define _RE_SYNTAX_POSIX_COMMON 221,9072
+#define RE_SYNTAX_POSIX_BASIC 225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC 231,9508
+#define RE_SYNTAX_POSIX_EXTENDED 234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 242,9967
+# undef RE_DUP_MAX253,10454
+#define RE_DUP_MAX 256,10540
+#define REG_EXTENDED 263,10762
+#define REG_ICASE 267,10886
+#define REG_NEWLINE 272,11070
+#define REG_NOSUB 276,11248
+#define REG_NOTBOL 286,11614
+#define REG_NOTEOL 289,11688
+ REG_ENOSYS 297,11859
+ REG_NOERROR 300,11941
+ REG_NOMATCH,301,11976
+ REG_BADPAT,305,12123
+ REG_ECOLLATE,306,12162
+ REG_ECTYPE,307,12203
+ REG_EESCAPE,308,12255
+ REG_ESUBREG,309,12298
+ REG_EBRACK,310,12345
+ REG_EPAREN,311,12391
+ REG_EBRACE,312,12436
+ REG_BADBR,313,12472
+ REG_ERANGE,314,12519
+ REG_ESPACE,315,12560
+ REG_BADRPT,316,12601
+ REG_EEND,319,12693
+ REG_ESIZE,320,12728
+ REG_ERPAREN,321,12790
+ REG_ERANGEX 322,12859
+} reg_errcode_t;323,12911
+# define RE_TRANSLATE_TYPE 332,13273
+struct re_pattern_buffer335,13315
+#define REGS_UNALLOCATED 376,14889
+#define REGS_REALLOCATE 377,14916
+#define REGS_FIXED 378,14942
+typedef struct re_pattern_buffer regex_t;416,16098
+typedef ssize_t regoff_t;423,16492
+struct re_registers428,16652
+# define RE_NREGS 440,16942
+} regmatch_t;451,17317
+# define _Restrict_ 540,20886
+# define _Restrict_ 542,20979
+# define _Restrict_544,21018
+# define _Restrict_arr_ 555,21418
+# define _Restrict_arr_557,21461
+# define CHAR_CLASS_MAX_LENGTH 593,22470
+# define CHAR_CLASS_MAX_LENGTH 597,22648
+typedef wctype_t re_wctype_t;599,22692
+typedef wchar_t re_wchar_t;600,22722
+# define re_wctype 601,22750
+# define re_iswctype 602,22776
+# define re_wctype_to_bit(603,22806
+# define CHAR_CLASS_MAX_LENGTH 605,22844
+# define btowc(606,22906
+typedef enum { RECC_ERROR 609,22953
+ RECC_ALNUM,610,22984
+ RECC_ALNUM, RECC_ALPHA,610,22984
+ RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984
+ RECC_GRAPH,611,23027
+ RECC_GRAPH, RECC_PRINT,611,23027
+ RECC_LOWER,612,23059
+ RECC_LOWER, RECC_UPPER,612,23059
+ RECC_PUNCT,613,23091
+ RECC_PUNCT, RECC_CNTRL,613,23091
+ RECC_DIGIT,614,23123
+ RECC_DIGIT, RECC_XDIGIT,614,23123
+ RECC_BLANK,615,23156
+ RECC_BLANK, RECC_SPACE,615,23156
+ RECC_MULTIBYTE,616,23188
+ RECC_MULTIBYTE, RECC_NONASCII,616,23188
+ RECC_ASCII,617,23227
+ RECC_ASCII, RECC_UNIBYTE617,23227
+} re_wctype_t;618,23260
+typedef int re_wchar_t;623,23387
+
+c-src/emacs/src/keyboard.c,13565
+volatile int interrupt_input_blocked;76,1808
+volatile bool pending_signals;80,1944
+#define KBD_BUFFER_SIZE 82,1976
+KBOARD *initial_kboard;initial_kboard84,2006
+KBOARD *current_kboard;current_kboard85,2030
+static KBOARD *all_kboards;all_kboards86,2054
+static bool single_kboard;89,2154
+#define NUM_RECENT_KEYS 91,2182
+static int recent_keys_index;94,2269
+static int total_keys;97,2357
+static Lisp_Object recent_keys;100,2443
+Lisp_Object this_command_keys;107,2777
+ptrdiff_t this_command_key_count;108,2808
+static bool this_command_key_count_reset;112,2922
+static Lisp_Object raw_keybuf;116,3074
+static int raw_keybuf_count;117,3105
+#define GROW_RAW_KEYBUF 119,3135
+static ptrdiff_t this_single_command_key_start;125,3350
+static ptrdiff_t before_command_key_count;129,3498
+static ptrdiff_t before_command_echo_length;130,3541
+sigjmp_buf return_to_command_loop;135,3677
+static Lisp_Object recover_top_level_message;138,3791
+static Lisp_Object regular_top_level_message;143,3930
+static sys_jmp_buf getcjmp;147,4031
+bool waiting_for_input;150,4095
+static bool echoing;154,4186
+static struct kboard
*ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328
+struct kboard *echo_kboard;echo_kboard166,4632
+Lisp_Object echo_message_buffer;171,4744
+bool immediate_quit;174,4837
+int quit_char;192,5623
+EMACS_INT command_loop_level;195,5680
+Lisp_Object unread_switch_frame;204,6108
+static ptrdiff_t last_non_minibuf_size;207,6216
+uintmax_t num_input_events;210,6334
+static EMACS_INT last_auto_save;214,6428
+static ptrdiff_t last_point_position;217,6523
+Lisp_Object internal_last_event_frame;228,7028
+static Lisp_Object read_key_sequence_cmd;232,7168
+static Lisp_Object read_key_sequence_remapped;233,7210
+static FILE *dribble;dribble236,7310
+bool input_pending;239,7368
+static bool input_was_pending;287,10022
+static struct input_event kbd_buffer[kbd_buffer291,10107
+static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386
+static struct input_event * volatile kbd_store_ptr;302,10601
+unsigned timers_run;320,11296
+struct timespec
*input_available_clear_time;input_available_clear_time324,11408
+bool interrupt_input;328,11573
+bool interrupts_deferred;331,11671
+static struct timespec timer_idleness_start_time;335,11746
+static struct timespec timer_last_idleness_start_time;340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW 346,12046
+#define READABLE_EVENTS_FILTER_EVENTS 347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES 348,12142
+kset_echo_string 392,14088
+kset_kbd_queue 397,14184
+kset_keyboard_translate_table 402,14276
+kset_last_prefix_arg 407,14399
+kset_last_repeatable_command 412,14504
+kset_local_function_key_map 417,14625
+kset_overriding_terminal_local_map 422,14744
+kset_real_last_command 427,14877
+kset_system_key_syms 432,14986
+echo_add_key 443,15249
+echo_char 527,17527
+echo_dash 541,17813
+echo_now 586,19140
+cancel_echoing 635,20614
+echo_length 648,20922
+echo_truncate 660,21253
+add_command_key 672,21582
+recursive_edit_1 697,22406
+record_auto_save 742,23848
+force_auto_save_soon 751,24016
+DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137
+recursive_edit_unwind 804,25747
+any_kboard_state 817,26013
+single_kboard_state 838,26665
+not_single_kboard_state 848,26803
+struct kboard_stack858,27065
+static struct kboard_stack *kboard_stack;kboard_stack864,27138
+push_kboard 867,27186
+pop_kboard 879,27375
+temporarily_switch_to_single_kboard 914,28263
+record_single_kboard_state 943,29437
+restore_kboard_configuration 952,29621
+cmd_error 970,30077
+cmd_error_internal 1024,31510
+DEFUN ("command-error-default-function",
Fcommand_error_default_function,command-error-default-function1043,32030
+command_loop 1094,33916
+command_loop_2 1134,35135
+top_level_2 1146,35339
+top_level_1 1152,35417
+DEFUN ("top-level", Ftop_level,top-level1164,35787
+user_error 1183,36288
+DEFUN ("exit-recursive-edit",
Fexit_recursive_edit,exit-recursive-edit1189,36429
+DEFUN ("abort-recursive-edit",
Fabort_recursive_edit,abort-recursive-edit1201,36819
+tracking_off 1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816
+bool ignore_mouse_drag_p;1256,38392
+some_mouse_moved 1259,38441
+Lisp_Object last_undo_boundary;1287,39032
+command_loop_1 1294,39273
+read_menu_command 1649,50889
+adjust_point_for_property 1678,51617
+safe_run_hooks_1 1831,57339
+safe_run_hooks_error 1841,57569
+safe_run_hook_funcall 1878,58576
+safe_run_hooks 1893,59058
+int poll_suppress_count;1908,59397
+static struct atimer *poll_timer;poll_timer1915,59487
+poll_for_input_1 1919,59589
+poll_for_input 1930,59789
+start_polling 1942,60053
+input_polling_used 1979,61091
+stop_polling 1994,61390
+set_poll_suppress_count 2009,61759
+bind_polling_period 2029,62141
+make_ctrl_char 2048,62492
+show_help_echo 2113,64455
+static Lisp_Object help_form_saved_window_configs;2156,65638
+read_char_help_form_unwind 2158,65701
+#define STOP_POLLING 2166,65959
+#define RESUME_POLLING 2170,66084
+read_event_from_main_queue 2175,66229
+read_decoded_event_from_main_queue 2249,68417
+#define MAX_ENCODED_BYTES 2254,68664
+echo_keystrokes_p 2342,71556
+read_char 2376,72848
+record_menu_key 3225,98949
+help_char_p 3258,99674
+record_char 3273,99953
+save_getcjmp 3412,104235
+restore_getcjmp 3418,104326
+readable_events 3430,104697
+int stop_character EXTERNALLY_VISIBLE;3497,106437
+event_to_kboard 3500,106493
+kbd_buffer_nr_stored 3522,107142
+kbd_buffer_store_event 3534,107483
+kbd_buffer_store_event_hold 3550,108025
+kbd_buffer_unget_event 3684,111617
+#define INPUT_EVENT_POS_MAX 3698,112018
+#define INPUT_EVENT_POS_MIN 3701,112147
+position_to_Time 3706,112287
+Time_to_position 3716,112514
+gen_help_event 3738,113171
+kbd_buffer_store_help_event 3756,113611
+discard_mouse_events 3773,113976
+kbd_buffer_events_waiting 3803,114711
+clear_event 3823,115068
+kbd_buffer_get_event 3836,115408
+process_special_events 4258,127881
+swallow_events 4322,129705
+timer_start_idle 4339,130098
+timer_stop_idle 4355,130576
+timer_resume_idle 4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912
+Lisp_Object pending_funcalls;4377,131172
+decode_timer 4381,131293
+timer_check_2 4414,132246
+timer_check 4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662
+static Lisp_Object accent_key_syms;4625,138239
+static Lisp_Object func_key_syms;4626,138275
+static Lisp_Object mouse_syms;4627,138309
+static Lisp_Object wheel_syms;4628,138340
+static Lisp_Object drag_n_drop_syms;4629,138371
+static const int lispy_accent_codes[lispy_accent_codes4634,138516
+static const char *const lispy_accent_keys[lispy_accent_keys4741,139878
+#define FUNCTION_KEY_OFFSET 4766,140314
+const char *const lispy_function_keys[lispy_function_keys4768,140347
+static const char *const
lispy_multimedia_keys[lispy_multimedia_keys4962,148901
+static const char *const lispy_kana_keys[lispy_kana_keys5026,150135
+#define FUNCTION_KEY_OFFSET 5061,151751
+static const char *const lispy_function_keys[lispy_function_keys5065,151894
+#define ISO_FUNCTION_KEY_OFFSET 5149,154429
+static const char *const
iso_lispy_function_keys[iso_lispy_function_keys5151,154469
+static Lisp_Object Vlispy_mouse_stem;5172,155328
+static const char *const lispy_wheel_names[lispy_wheel_names5174,155367
+static const char *const
lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619
+static short const scroll_bar_parts[scroll_bar_parts5189,155885
+static Lisp_Object button_down_location;5210,156910
+static int last_mouse_button;5215,157065
+static int last_mouse_x;5216,157095
+static int last_mouse_y;5217,157120
+static Time button_down_time;5218,157145
+static int double_click_count;5222,157229
+make_lispy_position 5228,157390
+toolkit_menubar_in_use 5456,163953
+make_scroll_bar_position 5469,164321
+make_lispy_event 5485,164967
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers",
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list",
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector",
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector",
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys",
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys",
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths",
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys",
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode",
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control",
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode",
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode",
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+
+c-src/emacs/src/lisp.h,20567
+#define EMACS_LISP_H22,800
+#define DECLARE_GDB_SYM(47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(49,1508
+# define DEFINE_GDB_SYMBOL_END(50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(52,1625
+# define DEFINE_GDB_SYMBOL_END(53,1702
+#undef min57,1790
+#undef max58,1801
+#define max(59,1812
+#define min(60,1854
+#define ARRAYELTS(63,1936
+#define GCTYPEBITS 67,2079
+DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037
+# define NONPOINTER_BITS 78,2567
+# define NONPOINTER_BITS 80,2600
+typedef int EMACS_INT;91,3023
+typedef unsigned int EMACS_UINT;92,3046
+# define EMACS_INT_MAX 93,3079
+# define pI 94,3111
+typedef long int EMACS_INT;96,3203
+typedef unsigned long EMACS_UINT;97,3231
+# define EMACS_INT_MAX 98,3265
+# define pI 99,3298
+typedef long long int EMACS_INT;103,3477
+typedef unsigned long long int EMACS_UINT;104,3510
+# define EMACS_INT_MAX 105,3553
+# define pI 106,3587
+enum { BOOL_VECTOR_BITS_PER_CHAR 114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR 115,3840
+typedef size_t bits_word;123,4165
+# define BITS_WORD_MAX 124,4191
+enum { BITS_PER_BITS_WORD 125,4223
+typedef unsigned char bits_word;127,4290
+# define BITS_WORD_MAX 128,4323
+enum { BITS_PER_BITS_WORD 129,4386
+ BITS_PER_CHAR 136,4570
+ BITS_PER_SHORT 137,4605
+ BITS_PER_LONG 138,4657
+ BITS_PER_EMACS_INT 139,4712
+typedef intmax_t printmax_t;148,5089
+typedef uintmax_t uprintmax_t;149,5118
+# define pMd 150,5149
+# define pMu 151,5170
+typedef EMACS_INT printmax_t;153,5197
+typedef EMACS_UINT uprintmax_t;154,5227
+# define pMd 155,5259
+# define pMu 156,5278
+# define pD 165,5664
+# define pD 167,5709
+# define pD 169,5756
+# define pD 171,5779
+# define eassert(200,7062
+# define eassume(201,7140
+# define eassert(208,7319
+# define eassume(212,7450
+enum Lisp_Bits239,8519
+#define GCALIGNMENT 243,8647
+ VALBITS 246,8742
+ INTTYPEBITS 249,8838
+ FIXNUM_BITS 252,8945
+#define VAL_MAX 263,9327
+#define USE_LSB_TAG 271,9777
+DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733
+# define alignas(281,10077
+# define GCALIGNED 288,10227
+# define GCALIGNED 290,10292
+# define lisp_h_XLI(327,11642
+# define lisp_h_XIL(328,11673
+# define lisp_h_XLI(330,11724
+# define lisp_h_XIL(331,11751
+#define lisp_h_CHECK_LIST_CONS(333,11785
+#define lisp_h_CHECK_NUMBER(334,11856
+#define lisp_h_CHECK_SYMBOL(335,11927
+#define lisp_h_CHECK_TYPE(336,11996
+#define lisp_h_CONSP(338,12107
+#define lisp_h_EQ(339,12156
+#define lisp_h_FLOATP(340,12201
+#define lisp_h_INTEGERP(341,12252
+#define lisp_h_MARKERP(342,12333
+#define lisp_h_MISCP(343,12408
+#define lisp_h_NILP(344,12457
+#define lisp_h_SET_SYMBOL_VAL(345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(347,12607
+#define lisp_h_SYMBOL_VAL(348,12671
+#define lisp_h_SYMBOLP(350,12772
+#define lisp_h_VECTORLIKEP(351,12825
+#define lisp_h_XCAR(352,12886
+#define lisp_h_XCDR(353,12924
+#define lisp_h_XCONS(354,12964
+#define lisp_h_XHASH(356,13059
+#define lisp_h_XPNTR(357,13093
+# define lisp_h_check_cons_list(360,13221
+# define lisp_h_make_number(363,13289
+# define lisp_h_XFASTINT(365,13392
+# define lisp_h_XINT(366,13429
+# define lisp_h_XSYMBOL(367,13478
+# define lisp_h_XTYPE(371,13631
+# define lisp_h_XUNTAG(372,13696
+# define XLI(381,14086
+# define XIL(382,14117
+# define CHECK_LIST_CONS(383,14148
+# define CHECK_NUMBER(384,14209
+# define CHECK_SYMBOL(385,14258
+# define CHECK_TYPE(386,14307
+# define CONSP(387,14382
+# define EQ(388,14417
+# define FLOATP(389,14452
+# define INTEGERP(390,14489
+# define MARKERP(391,14530
+# define MISCP(392,14569
+# define NILP(393,14604
+# define SET_SYMBOL_VAL(394,14637
+# define SYMBOL_CONSTANT_P(395,14700
+# define SYMBOL_VAL(396,14763
+# define SYMBOLP(397,14812
+# define VECTORLIKEP(398,14851
+# define XCAR(399,14898
+# define XCDR(400,14931
+# define XCONS(401,14964
+# define XHASH(402,14999
+# define XPNTR(403,15034
+# define check_cons_list(405,15097
+# define make_number(408,15176
+# define XFASTINT(409,15224
+# define XINT(410,15266
+# define XSYMBOL(411,15300
+# define XTYPE(412,15340
+# define XUNTAG(413,15376
+#define LISP_MACRO_DEFUN(421,15672
+#define LISP_MACRO_DEFUN_VOID(425,15845
+#define INTMASK 437,16289
+#define case_Lisp_Int 438,16342
+#define ENUM_BF(445,16681
+#define ENUM_BF(447,16722
+enum Lisp_Type451,16763
+ Lisp_Symbol 454,16851
+ Lisp_Misc 458,16993
+ Lisp_Int0 461,17067
+ Lisp_Int1 462,17086
+ Lisp_String 466,17264
+ Lisp_Vectorlike 472,17543
+ Lisp_Cons 475,17632
+ Lisp_Float 477,17670
+enum Lisp_Misc_Type485,18016
+ Lisp_Misc_Free 487,18040
+ Lisp_Misc_Marker,488,18069
+ Lisp_Misc_Overlay,489,18091
+ Lisp_Misc_Save_Value,490,18114
+ Lisp_Misc_Finalizer,491,18140
+ Lisp_Misc_Float,494,18275
+ Lisp_Misc_Limit496,18359
+enum Lisp_Fwd_Type502,18543
+ Lisp_Fwd_Int,504,18566
+ Lisp_Fwd_Bool,505,18619
+ Lisp_Fwd_Obj,506,18670
+ Lisp_Fwd_Buffer_Obj,507,18729
+ Lisp_Fwd_Kboard_Obj 508,18800
+typedef struct { EMACS_INT i; } Lisp_Object;567,21781
+#define LISP_INITIALLY(569,21827
+#undef CHECK_LISP_OBJECT_TYPE571,21858
+enum CHECK_LISP_OBJECT_TYPE 572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888
+typedef EMACS_INT Lisp_Object;577,22064
+#define LISP_INITIALLY(578,22095
+enum CHECK_LISP_OBJECT_TYPE 579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125
+#define LISP_INITIALLY_ZERO 582,22226
+enum symbol_interned639,24199
+ SYMBOL_UNINTERNED 641,24222
+ SYMBOL_INTERNED 642,24247
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270
+enum symbol_redirect646,24315
+ SYMBOL_PLAINVAL 648,24338
+ SYMBOL_VARALIAS 649,24362
+ SYMBOL_LOCALIZED 650,24386
+ SYMBOL_FORWARDED 651,24410
+struct Lisp_Symbol654,24437
+ ENUM_BF 663,24793
+#define EXFUN(707,26252
+#define DEFUN_ARGS_MANY 712,26446
+#define DEFUN_ARGS_UNEVALLED 713,26498
+#define DEFUN_ARGS_0 714,26541
+#define DEFUN_ARGS_1 715,26569
+#define DEFUN_ARGS_2 716,26604
+#define DEFUN_ARGS_3 717,26652
+#define DEFUN_ARGS_4 718,26713
+#define DEFUN_ARGS_5 719,26787
+#define DEFUN_ARGS_6 721,26880
+#define DEFUN_ARGS_7 723,26986
+#define DEFUN_ARGS_8 725,27105
+#define TAG_PTR(729,27296
+#define TAG_SYMOFFSET(734,27543
+#define XLI_BUILTIN_LISPSYM(741,27842
+#define DEFINE_LISP_SYMBOL(746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572
+LISP_MACRO_DEFUN 762,28777
+# define ARRAY_MARK_FLAG 768,29024
+# define PSEUDOVECTOR_FLAG 774,29267
+enum pvec_type780,29568
+ PVEC_NORMAL_VECTOR,782,29585
+ PVEC_FREE,783,29607
+ PVEC_PROCESS,784,29620
+ PVEC_FRAME,785,29636
+ PVEC_WINDOW,786,29650
+ PVEC_BOOL_VECTOR,787,29665
+ PVEC_BUFFER,788,29685
+ PVEC_HASH_TABLE,789,29700
+ PVEC_TERMINAL,790,29719
+ PVEC_WINDOW_CONFIGURATION,791,29736
+ PVEC_SUBR,792,29765
+ PVEC_OTHER,793,29778
+ PVEC_COMPILED,795,29856
+ PVEC_CHAR_TABLE,796,29873
+ PVEC_SUB_CHAR_TABLE,797,29892
+ PVEC_FONT 798,29915
+enum More_Lisp_Bits801,29991
+ PSEUDOVECTOR_SIZE_BITS 808,30382
+ PSEUDOVECTOR_SIZE_MASK 809,30415
+ PSEUDOVECTOR_REST_BITS 813,30625
+ PSEUDOVECTOR_REST_MASK 814,30658
+ PSEUDOVECTOR_AREA_BITS 818,30823
+ PVEC_TYPE_MASK 819,30901
+# define VALMASK 829,31302
+DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257
+#define MOST_POSITIVE_FIXNUM 834,31532
+#define MOST_NEGATIVE_FIXNUM 835,31592
+XINT 874,32684
+XFASTINT 889,33035
+XSYMBOL 899,33263
+XTYPE 910,33481
+XUNTAG 918,33661
+LISP_MACRO_DEFUN 927,33857
+LISP_MACRO_DEFUN 940,34242
+#define FIXNUM_OVERFLOW_P(958,34855
+LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632
+LISP_MACRO_DEFUN 970,35171
+XSTRING 980,35391
+#define SYMBOL_INDEX(988,35575
+XFLOAT 991,35636
+XPROCESS 1000,35778
+XWINDOW 1007,35895
+XTERMINAL 1014,36012
+XSUBR 1021,36134
+XBUFFER 1028,36245
+XCHAR_TABLE 1035,36369
+XSUB_CHAR_TABLE 1042,36506
+XBOOL_VECTOR 1049,36648
+make_lisp_ptr 1058,36827
+make_lisp_symbol 1066,37013
+builtin_lisp_symbol 1074,37197
+#define XSETINT(1079,37279
+#define XSETFASTINT(1080,37325
+#define XSETCONS(1081,37375
+#define XSETVECTOR(1082,37435
+#define XSETSTRING(1083,37503
+#define XSETSYMBOL(1084,37567
+#define XSETFLOAT(1085,37621
+#define XSETMISC(1086,37683
+#define XSETPVECTYPE(1090,37772
+#define XSETPVECTYPESIZE(1092,37888
+#define XSETPSEUDOVECTOR(1099,38185
+#define XSETTYPED_PSEUDOVECTOR(1105,38369
+#define XSETWINDOW_CONFIGURATION(1110,38579
+#define XSETPROCESS(1112,38675
+#define XSETWINDOW(1113,38741
+#define XSETTERMINAL(1114,38805
+#define XSETSUBR(1115,38873
+#define XSETCOMPILED(1116,38933
+#define XSETBUFFER(1117,39001
+#define XSETCHAR_TABLE(1118,39065
+#define XSETBOOL_VECTOR(1119,39137
+#define XSETSUB_CHAR_TABLE(1120,39211
+XINTPTR 1128,39581
+make_pointer_integer 1134,39661
+LISP_MACRO_DEFUN_VOID 1143,39826
+typedef struct interval *INTERVAL;INTERVAL1149,39987
+xcar_addr 1174,40760
+xcdr_addr 1179,40837
+LISP_MACRO_DEFUN 1185,40931
+XSETCDR 1198,41307
+CAR 1205,41457
+CDR 1212,41591
+CAR_SAFE 1221,41791
+CDR_SAFE 1226,41877
+STRING_MULTIBYTE 1243,42250
+#define STRING_BYTES_BOUND 1261,43057
+#define STRING_SET_UNIBYTE(1265,43201
+#define STRING_SET_MULTIBYTE(1275,43516
+SDATA 1286,43830
+SSDATA 1291,43908
+SREF 1297,44037
+SSET 1302,44128
+SCHARS 1307,44242
+STRING_BYTES 1316,44415
+SBYTES 1326,44595
+STRING_SET_CHARS 1331,44681
+struct vectorlike_header1343,45232
+struct Lisp_Vector1369,46482
+ ALIGNOF_STRUCT_LISP_VECTOR1378,46681
+struct Lisp_Bool_Vector1384,46864
+bool_vector_size 1399,47385
+bool_vector_data 1407,47523
+bool_vector_uchar_data 1413,47617
+bool_vector_words 1421,47803
+bool_vector_bytes 1428,47998
+bool_vector_bitref 1437,48238
+bool_vector_ref 1445,48478
+bool_vector_set 1453,48618
+ header_size 1471,49047
+ bool_header_size 1472,49106
+ word_size 1473,49171
+AREF 1479,49284
+aref_addr 1485,49391
+ASIZE 1491,49501
+ASET 1497,49583
+gc_aset 1504,49742
+enum { NIL_IS_ZERO 1515,50269
+memclear 1520,50464
+#define VECSIZE(1531,50762
+#define PSEUDOVECSIZE(1538,51047
+#define UNSIGNED_CMP(1546,51480
+#define ASCII_CHAR_P(1552,51734
+enum CHARTAB_SIZE_BITS1565,52489
+ CHARTAB_SIZE_BITS_0 1567,52516
+ CHARTAB_SIZE_BITS_1 1568,52545
+ CHARTAB_SIZE_BITS_2 1569,52574
+ CHARTAB_SIZE_BITS_3 1570,52603
+struct Lisp_Char_Table1575,52672
+struct Lisp_Sub_Char_Table1606,53752
+CHAR_TABLE_REF_ASCII 1628,54566
+CHAR_TABLE_REF 1648,55113
+CHAR_TABLE_SET 1658,55402
+struct Lisp_Subr1670,55786
+enum char_table_specials1692,56798
+ CHAR_TABLE_STANDARD_SLOTS 1697,56993
+ SUB_CHAR_TABLE_OFFSET 1701,57214
+CHAR_TABLE_EXTRA_SLOTS 1707,57377
+LISP_MACRO_DEFUN 1723,57921
+SYMBOL_BLV 1732,58181
+SYMBOL_FWD 1738,58316
+LISP_MACRO_DEFUN_VOID 1744,58428
+SET_SYMBOL_BLV 1754,58691
+SET_SYMBOL_FWD 1760,58850
+SYMBOL_NAME 1767,59001
+SYMBOL_INTERNED_P 1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299
+#define DEFSYM(1796,59809
+LISP_MACRO_DEFUN DEFSYM1792,59630
+struct hash_table_test1805,60062
+struct Lisp_Hash_Table1823,60555
+XHASH_TABLE 1880,62531
+#define XSET_HASH_TABLE(1885,62602
+HASH_TABLE_P 1889,62703
+HASH_KEY 1896,62860
+HASH_VALUE 1903,63040
+HASH_NEXT 1911,63254
+HASH_HASH 1918,63431
+HASH_INDEX 1926,63677
+HASH_TABLE_SIZE 1933,63826
+enum DEFAULT_HASH_SIZE 1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956
+static double const DEFAULT_REHASH_THRESHOLD 1946,64176
+static double const DEFAULT_REHASH_SIZE 1950,64299
+sxhash_combine 1956,64465
+SXHASH_REDUCE 1964,64648
+struct Lisp_Misc_Any 1971,64806
+ ENUM_BF 1973,64866
+struct Lisp_Marker1978,64980
+ ENUM_BF 1980,65001
+struct Lisp_Overlay2021,66838
+ ENUM_BF 2034,67346
+ SAVE_UNUSED,2047,67641
+ SAVE_INTEGER,2048,67658
+ SAVE_FUNCPOINTER,2049,67676
+ SAVE_POINTER,2050,67698
+ SAVE_OBJECT2051,67716
+enum { SAVE_SLOT_BITS 2055,67801
+enum { SAVE_VALUE_SLOTS 2058,67898
+enum { SAVE_TYPE_BITS 2062,68006
+enum Lisp_Save_Type2064,68072
+ SAVE_TYPE_INT_INT 2066,68096
+ SAVE_TYPE_INT_INT_INT2067,68169
+ SAVE_TYPE_OBJ_OBJ 2069,68259
+ SAVE_TYPE_OBJ_OBJ_OBJ 2070,68330
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68411
+ SAVE_TYPE_PTR_INT 2073,68506
+ SAVE_TYPE_PTR_OBJ 2074,68579
+ SAVE_TYPE_PTR_PTR 2075,68651
+ SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68724
+ SAVE_TYPE_MEMORY 2080,68882
+typedef void (*voidfuncptr)voidfuncptr2108,69836
+struct Lisp_Save_Value2110,69873
+ ENUM_BF 2112,69900
+save_type 2134,70752
+XSAVE_POINTER 2143,70982
+set_save_pointer 2149,71144
+XSAVE_FUNCPOINTER 2155,71326
+XSAVE_INTEGER 2164,71546
+set_save_integer 2170,71708
+XSAVE_OBJECT 2179,71929
+struct Lisp_Finalizer2186,72106
+struct Lisp_Free2201,72581
+ ENUM_BF 2203,72602
+union Lisp_Misc2212,72882
+XMISC 2223,73181
+XMISCANY 2229,73270
+XMISCTYPE 2236,73379
+XMARKER 2242,73467
+XOVERLAY 2249,73582
+XSAVE_VALUE 2256,73703
+XFINALIZER 2263,73832
+struct Lisp_Intfwd2274,74117
+struct Lisp_Boolfwd2284,74411
+struct Lisp_Objfwd2294,74702
+struct Lisp_Buffer_Objfwd2302,74934
+struct Lisp_Buffer_Local_Value2334,76470
+struct Lisp_Kboard_Objfwd2362,77729
+union Lisp_Fwd2368,77838
+XFWDTYPE 2378,78084
+XBUFFER_OBJFWD 2384,78180
+struct Lisp_Float2391,78316
+XFLOAT_DATA 2401,78434
+ IEEE_FLOATING_POINT2415,78943
+#define _UCHAR_T2423,79266
+typedef unsigned char UCHAR;2424,79283
+enum Lisp_Compiled2429,79366
+ COMPILED_ARGLIST 2431,79389
+ COMPILED_BYTECODE 2432,79415
+ COMPILED_CONSTANTS 2433,79442
+ COMPILED_STACK_DEPTH 2434,79470
+ COMPILED_DOC_STRING 2435,79500
+ COMPILED_INTERACTIVE 2436,79529
+enum char_bits2443,79831
+ CHAR_ALT 2445,79850
+ CHAR_SUPER 2446,79876
+ CHAR_HYPER 2447,79904
+ CHAR_SHIFT 2448,79932
+ CHAR_CTL 2449,79960
+ CHAR_META 2450,79986
+ CHAR_MODIFIER_MASK 2452,80014
+ CHARACTERBITS 2457,80209
+LISP_MACRO_DEFUN 2462,80267
+NATNUMP 2470,80409
+RANGED_INTEGERP 2476,80490
+#define TYPE_RANGED_INTEGERP(2481,80612
+LISP_MACRO_DEFUN 2486,80797
+VECTORP 2500,81270
+OVERLAYP 2505,81373
+SAVE_VALUEP 2510,81472
+FINALIZERP 2516,81578
+AUTOLOADP 2522,81682
+BUFFER_OBJFWDP 2528,81773
+PSEUDOVECTOR_TYPEP 2534,81871
+PSEUDOVECTORP 2542,82124
+WINDOW_CONFIGURATIONP 2558,82476
+PROCESSP 2564,82586
+WINDOWP 2570,82670
+TERMINALP 2576,82752
+SUBRP 2582,82838
+COMPILEDP 2588,82916
+BUFFERP 2594,83002
+CHAR_TABLE_P 2600,83084
+SUB_CHAR_TABLE_P 2606,83175
+BOOL_VECTOR_P 2612,83274
+FRAMEP 2618,83367
+IMAGEP 2625,83484
+ARRAYP 2632,83589
+CHECK_LIST 2638,83708
+LISP_MACRO_DEFUN_VOID 2643,83789
+CHECK_STRING_CAR 2653,84086
+CHECK_CONS 2658,84190
+CHECK_VECTOR 2663,84270
+CHECK_BOOL_VECTOR 2668,84356
+CHECK_VECTOR_OR_STRING 2674,84533
+CHECK_ARRAY 2683,84707
+CHECK_BUFFER 2688,84815
+CHECK_WINDOW 2693,84901
+CHECK_PROCESS 2699,85007
+CHECK_NATNUM 2705,85103
+#define CHECK_RANGED_INTEGER(2710,85180
+#define CHECK_TYPE_RANGED_INTEGER(2721,85563
+#define CHECK_NUMBER_COERCE_MARKER(2729,85833
+XFLOATINT 2738,86086
+CHECK_NUMBER_OR_FLOAT 2744,86157
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86256
+CHECK_NUMBER_CAR 2760,86666
+CHECK_NUMBER_CDR 2768,86788
+#define DEFUN(2803,88383
+#define DEFUN(2812,88851
+FUNCTIONP 2822,89206
+enum maxargs2831,89401
+ MANY 2833,89418
+ UNEVALLED 2834,89433
+#define CALLMANY(2838,89536
+#define CALLN(2844,89889
+#define DEFVAR_LISP(2869,91094
+#define DEFVAR_LISP_NOPRO(2874,91266
+#define DEFVAR_BOOL(2879,91448
+#define DEFVAR_INT(2884,91621
+#define DEFVAR_BUFFER_DEFAULTS(2890,91792
+#define DEFVAR_KBOARD(2896,91996
+typedef jmp_buf sys_jmp_buf;2906,92320
+# define sys_setjmp(2907,92349
+# define sys_longjmp(2908,92384
+typedef sigjmp_buf sys_jmp_buf;2910,92456
+# define sys_setjmp(2911,92488
+# define sys_longjmp(2912,92528
+typedef jmp_buf sys_jmp_buf;2916,92687
+# define sys_setjmp(2917,92716
+# define sys_longjmp(2918,92750
+enum specbind_tag 2943,93802
+ SPECPDL_UNWIND,2944,93822
+ SPECPDL_UNWIND_PTR,2945,93891
+ SPECPDL_UNWIND_INT,2946,93942
+ SPECPDL_UNWIND_VOID,2947,93990
+ SPECPDL_BACKTRACE,2948,94044
+ SPECPDL_LET,2949,94102
+ SPECPDL_LET_LOCAL,2951,94232
+ SPECPDL_LET_DEFAULT 2952,94289
+union specbinding2955,94361
+ ENUM_BF 2957,94383
+ ENUM_BF 2959,94440
+ ENUM_BF 2964,94570
+ ENUM_BF 2969,94693
+ ENUM_BF 2974,94811
+ ENUM_BF 2978,94916
+ ENUM_BF 2983,95091
+enum handlertype 3021,96407
+enum handlertype { CATCHER,3021,96407
+enum handlertype { CATCHER, CONDITION_CASE 3021,96407
+struct handler3023,96454
+#define PUSH_HANDLER(3053,97443
+#define QUIT 3101,99220
+#define QUITP 3112,99470
+struct gcpro3132,100313
+#define GC_USE_GCPROS_AS_BEFORE 3171,101294
+#define GC_MAKE_GCPROS_NOOPS 3172,101329
+#define GC_MARK_STACK_CHECK_GCPROS 3173,101361
+#define GC_USE_GCPROS_CHECK_ZOMBIES 3174,101398
+#define GC_MARK_STACK 3177,101459
+#define BYTE_MARK_STACK 3181,101559
+#define GCPRO1(3190,101830
+#define GCPRO2(3191,101870
+#define GCPRO3(3192,101936
+#define GCPRO4(3194,102031
+#define GCPRO5(3196,102151
+#define GCPRO6(3198,102296
+#define GCPRO7(3201,102471
+#define UNGCPRO 3202,102550
+#define GCPRO1(3208,102650
+#define GCPRO2(3212,102772
+#define GCPRO3(3217,102964
+#define GCPRO4(3223,103226
+#define GCPRO5(3230,103557
+#define GCPRO6(3238,103958
+#define GCPRO7(3247,104428
+#define UNGCPRO 3257,104968
+#define GCPRO1(3263,105062
+#define GCPRO2(3269,105296
+#define GCPRO3(3278,105714
+#define GCPRO4(3289,106271
+#define GCPRO5(3302,106969
+#define GCPRO6(3317,107809
+#define GCPRO7(3334,108790
+#define UNGCPRO 3353,109913
+#define RETURN_UNGCPRO(3363,110180
+vcopy 3384,110654
+set_hash_key_slot 3393,110929
+set_hash_value_slot 3399,111068
+set_symbol_function 3408,111303
+set_symbol_plist 3414,111418
+set_symbol_next 3420,111521
+blv_found 3428,111694
+set_overlay_plist 3437,111877
+string_intervals 3445,112028
+set_string_intervals 3453,112150
+set_char_table_defalt 3462,112352
+set_char_table_purpose 3467,112464
+set_char_table_extras 3475,112633
+set_char_table_contents 3482,112842
+set_sub_char_table_contents 3489,113037
+enum Arith_Comparison 3497,113300
+ ARITH_EQUAL,3498,113324
+ ARITH_NOTEQUAL,3499,113339
+ ARITH_LESS,3500,113357
+ ARITH_GRTR,3501,113371
+ ARITH_LESS_OR_EQUAL,3502,113385
+ ARITH_GRTR_OR_EQUAL3503,113408
+#define INTEGER_TO_CONS(3511,113759
+#define CONS_TO_INTEGER(3529,114622
+enum { NEXT_ALMOST_PRIME_LIMIT 3573,116326
+extern EMACS_INT next_almost_prime 3574,116365
+enum constype 3739,123817
+enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123817
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123817
+list2i 3745,124007
+list3i 3751,124116
+list4i 3757,124255
+extern Lisp_Object make_formatted_string 3767,124631
+build_pure_c_string 3792,125659
+build_string 3801,125864
+make_uninit_vector 3820,126435
+make_uninit_sub_char_table 3833,126654
+#define ALLOCATE_PSEUDOVECTOR(3850,127198
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127534
+INLINE void 3890,128940
+extern void *r_alloc r_alloc3895,129061
+#define FLOAT_TO_STRING_BUFSIZE 3927,130524
+intern 3968,132131
+intern_c_string 3974,132219
+extern _Noreturn void error 4034,135598
+fast_string_match_ignore_case 4136,140086
+INLINE void fixup_locale 4241,143851
+INLINE void synchronize_system_messages_locale 4242,143886
+INLINE void synchronize_system_time_locale 4243,143943
+#define IS_DAEMON 4257,144416
+#define DAEMON_RUNNING 4258,144456
+#define IS_DAEMON 4261,144555
+#define DAEMON_RUNNING 4262,144600
+# define WAIT_READING_MAX 4281,145419
+# define WAIT_READING_MAX 4283,145491
+extern _Noreturn void emacs_abort 4374,148383
+egetenv 4532,152806
+#define eabs(4545,153302
+#define make_fixnum_or_float(4550,153435
+enum MAX_ALLOCA 4556,153686
+enum MAX_ALLOCA { MAX_ALLOCA 4556,153686
+extern void *record_xmalloc record_xmalloc4558,153731
+#define USE_SAFE_ALLOCA 4560,153797
+#define AVAIL_ALLOCA(4564,153930
+#define SAFE_ALLOCA(4568,154041
+#define SAFE_NALLOCA(4576,154382
+#define SAFE_ALLOCA_STRING(4590,154858
+#define SAFE_FREE(4598,155110
+#define SAFE_ALLOCA_LISP(4625,155688
+# define USE_STACK_LISP_OBJECTS 4652,156810
+# undef USE_STACK_LISP_OBJECTS4658,156976
+# define USE_STACK_LISP_OBJECTS 4659,157007
+enum { defined_GC_CHECK_STRING_BYTES 4663,157082
+enum { defined_GC_CHECK_STRING_BYTES 4665,157135
+union Aligned_Cons4670,157269
+union Aligned_String4676,157349
+ USE_STACK_CONS 4689,157704
+ USE_STACK_STRING 4691,157810
+#define STACK_CONS(4699,158147
+#define AUTO_CONS_EXPR(4701,158244
+#define AUTO_CONS(4709,158607
+#define AUTO_LIST1(4710,158678
+#define AUTO_LIST2(4712,158786
+#define AUTO_LIST3(4716,158941
+#define AUTO_LIST4(4720,159116
+# define verify_ascii(4732,159507
+#define AUTO_STRING(4740,159815
+#define FOR_EACH_TAIL(4752,160279
+#define FOR_EACH_ALIST_VALUE(4766,160770
+maybe_gc 4774,161057
+functionp 4784,161296
+
+c-src/machsyscalls.c,23
+#define SYSCALL(6,113
+
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,1,0
+SYSCALL (mach_reply_port,13,314
+SYSCALL (mach_thread_self,18,377
+SYSCALL (mach_task_self,23,441
+SYSCALL (mach_host_self,28,503
+
+c-src/h.h,1850
+ ELEM_I/ELEM_I3,15
+} Fails_t;5,85
+typedef void Lang_function 6,96
+typedef struct tpcmd8,147
+#define ggg 10,170
+tpcmd;15,209
+typedef struct foobar2_ 16,216
+} foobar2;20,307
+ DEVICE_SWP,23,333
+ DEVICE_LAST24,349
+} bsp_DevId;25,365
+ struct constant_args 27,394
+} args;30,457
+typedef int *regset;regset31,465
+typedef int INT;32,486
+typedef union abc33,503
+} ghi1;36,534
+typedef union abc 37,542
+} ghi2;39,573
+typedef struct a 40,581
+} b;41,600
+#define c(42,605
+typedef struct an_extern_linkage
*an_extern_linkage_ptr;an_extern_linkage_ptr43,619
+typedef struct an_extern_linkage 44,676
+} an_extern_linkage;56,1054
+typedef struct pollfd pfdset[pfdset57,1075
+typedef union rtunion_def58,1119
+ } womboid 63,1206
+typedef union rtunion_def64,1220
+womboid75,1330
+enum {dog,dog81,1416
+enum {dog, cat}cat81,1416
+enum {dog, cat} animals;81,1416
+typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441
+typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489
+/* comment */ #define ANSIC84,1538
+ #define ANSIC85,1566
+typedef void (proc)87,1588
+typedef void OperatorFun(88,1612
+typedef int f(89,1648
+struct my_struct 91,1691
+typedef struct my_struct my_typedef;93,1713
+typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750
+ Date 04 May 87 235311 PDT 96,1802
+typedef unsigned char unchar;99,1880
+typedef int X,100,1910
+typedef int X, Y,100,1910
+typedef int X, Y, Z;100,1910
+typedef mio mao;101,1931
+typedef struct a 103,1966
+typedef struct a { } b;103,1966
+typedef struct b104,1990
+} c;106,2009
+int extvar;109,2053
+#define tag1110,2065
+#define aaaaaa 111,2078
+#define bbbbbb\bbbbbb113,2102
+#define cccccccccc115,2125
+#define enter_critical_section 116,2144
+#define exit_critical_to_previous 117,2199
+#define UNDEFINED118,2259
+struct re_pattern_buffer 119,2277
+
+cp-src/c.C,2225
+template <typename ipc3dIslandHierarchy,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned
numOfChannels,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned
numOfChannels, typename ipc3dLinkControl,1,0
+class CMultiChannelCSC19_3D2,151
+ void execute(CMultiChannelCSC19_3D::execute11,493
+int main 25,1026
+double base 26,1088
+typedef struct s1 32,1251
+} t1;34,1287
+struct s2 35,1293
+typedef struct s2 t2;38,1324
+class A 39,1346
+ enum { rosso,A::rosso40,1356
+ enum { rosso, giallo,A::giallo40,1356
+ enum { rosso, giallo, verde A::verde40,1356
+const A& A::operator+(43,1431
+void operator+(44,1467
+void operator -(operator -45,1495
+void operator int(operator int46,1524
+A<int>* f(48,1556
+int f(49,1571
+int A<int>::f(f50,1590
+A<float,B<int> > A<B<float>,int>::f(f51,1618
+template <class C, int n> class AT 52,1668
+class AU 53,1716
+class B<B54,1735
+class B<int> { void f(B::f54,1735
+const A::B::T& abt 55,1765
+class A 56,1791
+class A { class B A::B56,1791
+class A 57,1826
+ A operator+(A::operator+59,1860
+is_muldiv_operation(61,1887
+domain foo 68,1955
+ void f(foo::f69,1968
+void A::A(72,1989
+struct A 73,2004
+struct B 74,2022
+void B::B(75,2041
+void BE_Node::BE_Node(76,2056
+class BE_Node 77,2083
+struct foo 79,2102
+class test 86,2156
+ int f(test::f87,2169
+ int ff(test::ff89,2231
+ int g(test::g90,2254
+class AST_Root 92,2278
+AST_ConcreteType::AST_ConcreteType(99,2393
+AST_Array::AST_Array(107,2532
+ void f(::f115,2733
+struct A 117,2753
+A::~A(120,2777
+struct B 122,2789
+ ~B(B::~B123,2800
+enum {dog,::dog126,2817
+enum {dog, cat}::cat126,2817
+enum {dog, cat} animals;126,2817
+struct {int teats;} cow;127,2842
+class Boo 129,2868
+ enum {dog,Boo::dog130,2880
+ enum {dog, cat}Boo::cat130,2880
+ foo(Boo::foo133,2954
+ Boo(Boo::Boo137,2995
+Boo::Boo(141,3070
+typedef int should_see_this_one_enclosed_in_extern_C;149,3155
+typedef int
(*should_see_this_function_pointer)should_see_this_function_pointer153,3228
+typedef int should_see_this_array_type[should_see_this_array_type156,3310
+
+cp-src/abstract.C,11317
+Half_Container::Half_Container(34,703
+void Half_Container::SetPosition(45,941
+void Half_Container::SetDimensions(58,1259
+void Half_Container::SetFather(81,1697
+void Half_Container::SetCollapsed(87,1787
+Specification::Specification(98,1958
+void Specification::SetPosition(119,2453
+void Specification::SetDimensions(164,3742
+void Specification::SetFather(188,4616
+void Specification::SetPath(202,4908
+Coord Specification::GetMaxX(212,5125
+Coord Specification::GetMaxY(215,5174
+Process::Process(222,5298
+void Process::SetPosition(242,5697
+void Process::SetDimensions(291,6959
+void Process::SetFather(315,7913
+void Process::SetPath(326,8123
+Coord Process::GetMaxX(335,8323
+Coord Process::GetMaxY(338,8365
+Choice::Choice(346,8482
+void Choice::SetPosition(357,8698
+void Choice::SetDimensions(405,10053
+void Choice::ChangeH(466,12014
+void Choice::ChangeW(495,12947
+void Choice::SetFather(522,13700
+void Choice::SetTextual(532,13918
+void Choice::SetCollapsed(540,14041
+int Choice::Get_Textual_H(549,14168
+int Choice::Get_Textual_W(557,14408
+void Choice::SetTerminalPos(566,14615
+Stop::Stop(588,15087
+void Stop::SetPosition(595,15207
+void Stop::SetDimensions(605,15373
+void Stop::SetFather(644,16369
+void Stop::SetTextual(652,16537
+void Stop::SetCollapsed(655,16616
+Exit::Exit(667,16768
+void Exit::SetPosition(676,16935
+void Exit::SetDimensions(687,17164
+void Exit::SetFather(695,17350
+Exit_Bex::Exit_Bex(703,17476
+void Exit_Bex::SetPosition(713,17678
+void Exit_Bex::SetDimensions(740,18430
+void Exit_Bex::SetFather(798,20444
+void Exit_Bex::SetTextual(807,20646
+void Exit_Bex::SetCollapsed(814,20757
+NoExit::NoExit(826,20943
+void NoExit::SetPosition(835,21092
+void NoExit::SetDimensions(845,21266
+void NoExit::SetFather(852,21359
+ID_Place::ID_Place(861,21488
+void ID_Place::SetIdent(875,21745
+void ID_Place::SetPosition(886,21936
+void ID_Place::SetDimensions(897,22173
+void ID_Place::SetFather(928,23017
+ID_Place::~ID_Place(932,23073
+void ID_Place::SetVisible(935,23112
+void ID_Place::ClearID(941,23193
+ID_List::ID_List(953,23379
+void ID_List::SetPosition(967,23644
+void ID_List::SetDimensions(999,24385
+void ID_List::SetFather(1038,25456
+void ID_List::SetCollapsed(1047,25595
+void ID_List::HideMe(1056,25734
+void ID_List::SetRBubble(1065,25862
+void ID_List::SetAlignement(1073,25980
+int ID_List::GetCardinality(1082,26123
+void ID_List::SetVisible(1093,26291
+void ID_List::BuildSigSorts(1103,26518
+void ID_List::ClearIDs(1126,27081
+Id_Decl::Id_Decl(1139,27280
+void Id_Decl::SetPosition(1156,27659
+void Id_Decl::SetDimensions(1174,28016
+void Id_Decl::SetFather(1191,28417
+void Id_Decl::SetCollapsed(1200,28568
+Id_Decl_List::Id_Decl_List(1214,28799
+void Id_Decl_List::SetPosition(1227,29069
+void Id_Decl_List::SetDimensions(1245,29424
+void Id_Decl_List::SetFather(1262,29844
+void Id_Decl_List::SetCollapsed(1271,29988
+Comment::Comment(1286,30209
+void Comment::SetComment(1299,30446
+void Comment::SetFather(1317,30800
+void Comment::SetPosition(1321,30854
+void Comment::SetDimensions(1331,31031
+Comment::~Comment(1345,31265
+Comment_List::Comment_List(1352,31382
+void Comment_List::SetPosition(1362,31541
+void Comment_List::SetDimensions(1380,31860
+void Comment_List::SetFather(1392,32139
+Parallel::Parallel(1406,32360
+void Parallel::SetPosition(1417,32573
+void Parallel::SetDimensions(1473,34272
+void Parallel::SetTextual(1534,36167
+int Parallel::Get_Textual_W(1543,36313
+int Parallel::Get_Textual_H(1559,36722
+void Parallel::SetTerminalPos(1570,37191
+void Parallel::SetFather(1590,37698
+void Parallel::SetCollapsed(1601,37950
+Ident_Eq::Ident_Eq(1615,38177
+void Ident_Eq::SetPosition(1632,38546
+void Ident_Eq::SetDimensions(1647,38851
+void Ident_Eq::SetFather(1662,39191
+void Ident_Eq::SetCollapsed(1669,39295
+Ident_Eq_List::Ident_Eq_List(1681,39480
+void Ident_Eq_List::SetPosition(1694,39753
+void Ident_Eq_List::SetDimensions(1712,40111
+void Ident_Eq_List::SetCollapsed(1729,40538
+void Ident_Eq_List::SetFather(1738,40683
+Local_Def::Local_Def(1751,40904
+void Local_Def::SetPosition(1761,41102
+void Local_Def::SetDimensions(1791,41833
+void Local_Def::SetFather(1832,43262
+void Local_Def::SetCollapsed(1839,43370
+void Local_Def::SetTextual(1848,43504
+Hide::Hide(1860,43681
+void Hide::SetPosition(1871,43872
+void Hide::SetDimensions(1901,44569
+void Hide::SetFather(1944,45771
+void Hide::SetCollapsed(1951,45873
+void Hide::SetTextual(1961,46003
+Interl::Interl(1972,46175
+void Interl::SetPosition(1982,46361
+void Interl::SetDimensions(1993,46593
+void Interl::SetFather(2021,47103
+Syncr::Syncr(2031,47257
+void Syncr::SetPosition(2041,47438
+void Syncr::SetDimensions(2051,47609
+void Syncr::SetFather(2079,48153
+Enable::Enable(2090,48436
+void Enable::SetPosition(2102,48690
+void Enable::SetDimensions(2169,50473
+void Enable::SetTextual(2243,53017
+void Enable::SetTerminalPos(2251,53140
+int Enable::Get_Textual_W(2271,53720
+int Enable::Get_Textual_H(2282,53985
+void Enable::SetFather(2285,54104
+void Enable::SetCollapsed(2298,54418
+Disable::Disable(2314,54780
+void Disable::SetPosition(2325,55001
+void Disable::SetDimensions(2376,56251
+void Disable::SetFather(2436,58064
+void Disable::SetCollapsed(2446,58284
+void Disable::SetTextual(2455,58412
+void Disable::SetTerminalPos(2463,58536
+int Disable::Get_Textual_W(2479,58987
+int Disable::Get_Textual_H(2488,59190
+Gen_Paral::Gen_Paral(2500,59630
+void Gen_Paral::SetPosition(2513,59899
+void Gen_Paral::SetDimensions(2540,60659
+void Gen_Paral::SetFather(2590,62171
+void Gen_Paral::SetCollapsed(2597,62290
+Action_Pref::Action_Pref(2609,62583
+void Action_Pref::SetPosition(2620,62829
+void Action_Pref::SetDimensions(2669,63937
+void Action_Pref::SetFather(2724,65777
+void Action_Pref::SetCollapsed(2734,66010
+void Action_Pref::SetTextual(2743,66147
+Internal::Internal(2757,66484
+void Internal::SetPosition(2768,66658
+void Internal::SetDimensions(2778,66838
+void Internal::SetFather(2806,67442
+Communication::Communication(2816,67702
+void Communication::SetPosition(2827,67956
+void Communication::SetDimensions(2897,70390
+void Communication::SetFather(2935,71706
+void Communication::SetCollapsed(2942,71837
+void Communication::SetTextual(2949,71968
+NoGuard::NoGuard(2961,72262
+void NoGuard::SetPosition(2974,72462
+void NoGuard::SetDimensions(2984,72639
+void NoGuard::SetFather(2987,72678
+Guard::Guard(2996,72929
+void Guard::SetPosition(3008,73118
+void Guard::SetDimensions(3022,73428
+void Guard::SetFather(3044,73894
+void Guard::SetCollapsed(3050,73974
+NoExperiment::NoExperiment(3062,74258
+void NoExperiment::SetPosition(3075,74478
+void NoExperiment::SetDimensions(3085,74670
+void NoExperiment::SetFather(3088,74714
+Experiment::Experiment(3097,74978
+void Experiment::SetPosition(3110,75245
+void Experiment::SetDimensions(3128,75611
+void Experiment::SetFather(3150,76066
+void Experiment::SetCollapsed(3157,76188
+void Experiment::SetTextual(3165,76311
+Proc_Inst::Proc_Inst(3175,76476
+void Proc_Inst::SetPosition(3191,76777
+void Proc_Inst::SetDimensions(3236,77965
+void Proc_Inst::SetFather(3286,79596
+void Proc_Inst::SetCollapsed(3294,79739
+void Proc_Inst::SetTextual(3304,79909
+Value_Expr::Value_Expr(3316,80100
+void Value_Expr::SetPosition(3329,80327
+void Value_Expr::SetDimensions(3340,80572
+void Value_Expr::SetFather(3343,80614
+Value_Expr_List::Value_Expr_List(3351,80755
+void Value_Expr_List::SetPosition(3364,81042
+void Value_Expr_List::SetDimensions(3382,81406
+void Value_Expr_List::SetFather(3399,81830
+void Value_Expr_List::SetCollapsed(3408,81977
+Sum_Ident::Sum_Ident(3423,82203
+void Sum_Ident::SetPosition(3435,82445
+void Sum_Ident::SetDimensions(3466,83196
+void Sum_Ident::SetFather(3509,84540
+void Sum_Ident::SetCollapsed(3516,84653
+void Sum_Ident::SetTextual(3525,84793
+void Sum_Ident::SetTerminalPos(3532,84897
+Value::Value(3552,85432
+void Value::SetPosition(3569,85792
+void Value::SetDimensions(3583,86091
+void Value::SetFather(3606,86628
+void Value::SetCollapsed(3613,86731
+Term::Term(3626,86908
+void Term::SetPosition(3646,87323
+void Term::SetDimensions(3671,87942
+void Term::SetFather(3697,88599
+void Term::SetCollapsed(3705,88732
+Exit_Entry::Exit_Entry(3719,88947
+void Exit_Entry::SetPosition(3732,89176
+void Exit_Entry::SetDimensions(3743,89421
+void Exit_Entry::SetFather(3746,89463
+Exit_Entry_List::Exit_Entry_List(3754,89604
+void Exit_Entry_List::SetPosition(3766,89875
+void Exit_Entry_List::SetDimensions(3785,90304
+void Exit_Entry_List::SetFather(3802,90753
+void Exit_Entry_List::SetCollapsed(3811,90900
+Sum_Gate::Sum_Gate(3826,91125
+void Sum_Gate::SetPosition(3837,91363
+void Sum_Gate::SetDimensions(3873,92120
+void Sum_Gate::SetFather(3915,93438
+void Sum_Gate::SetCollapsed(3922,93549
+void Sum_Gate::SetTextual(3931,93687
+void Sum_Gate::SetTerminalPos(3938,93790
+Gate_Decl::Gate_Decl(3959,94421
+void Gate_Decl::SetPosition(3977,94900
+void Gate_Decl::SetDimensions(3995,95298
+void Gate_Decl::SetFather(4011,95694
+void Gate_Decl::SetCollapsed(4020,95871
+Gate_Decl_List::Gate_Decl_List(4034,96130
+void Gate_Decl_List::SetPosition(4047,96414
+void Gate_Decl_List::SetDimensions(4065,96779
+void Gate_Decl_List::SetFather(4082,97207
+void Gate_Decl_List::SetCollapsed(4091,97353
+Par::Par(4106,97572
+void Par::SetPosition(4126,97957
+void Par::SetDimensions(4174,99236
+void Par::SetFather(4226,100814
+void Par::SetCollapsed(4234,100943
+void Par::SetTextual(4245,101100
+Sort_Id_Exit::Sort_Id_Exit(4258,101329
+void Sort_Id_Exit::SetPosition(4270,101556
+void Sort_Id_Exit::SetDimensions(4283,101834
+void Sort_Id_Exit::SetFather(4297,102142
+void Sort_Id_Exit::SetCollapsed(4303,102228
+Equality::Equality(4314,102512
+Equality::Equality(4327,102736
+void Equality::SetPosition(4340,102987
+void Equality::SetDimensions(4357,103329
+void Equality::SetFather(4377,103720
+void Equality::SetCollapsed(4387,103858
+Guarded::Guarded(4401,104167
+void Guarded::SetPosition(4413,104384
+void Guarded::SetDimensions(4441,105084
+void Guarded::SetFather(4482,106273
+void Guarded::SetCollapsed(4489,106377
+void Guarded::SetTextual(4499,106509
+Exper_Off::Exper_Off(4510,106813
+void Exper_Off::SetPosition(4523,107035
+void Exper_Off::SetDimensions(4533,107220
+void Exper_Off::SetFather(4536,107261
+Exper_Off_List::Exper_Off_List(4544,107521
+void Exper_Off_List::SetPosition(4557,107802
+void Exper_Off_List::SetDimensions(4575,108167
+void Exper_Off_List::SetFather(4592,108594
+void Exper_Off_List::SetCollapsed(4601,108740
+Exclam::Exclam(4616,109087
+void Exclam::SetPosition(4629,109300
+void Exclam::SetDimensions(4641,109541
+void Exclam::SetFather(4655,109830
+void Exclam::SetCollapsed(4661,109912
+Query::Query(4673,110194
+void Query::SetPosition(4686,110399
+void Query::SetDimensions(4698,110636
+void Query::SetFather(4712,110918
+void Query::SetCollapsed(4718,110997
+Definition::Definition(4729,111279
+void Definition::SetPosition(4741,111448
+void Definition::SetDimensions(4752,111658
+void Definition::SetFather(4766,111896
+void Definition::SetPath(4777,112089
+Proc_List::Proc_List(4790,112374
+void Proc_List::SetPosition(4799,112505
+void Proc_List::SetDimensions(4809,112686
+void Proc_List::SetFather(4815,112767
+void Proc_List::SetPath(4824,112908
+char *Proc_List::GetPath(Proc_List::GetPath4832,113068
+
+cp-src/abstract.H,2253
+#define abstract_hh16,453
+class ID_Place:ID_Place23,536
+ char *GetIdent(ID_Place::GetIdent41,857
+ void SetRBubble(ID_Place::SetRBubble42,891
+ char GetRBubble(ID_Place::GetRBubble43,934
+class ID_List:ID_List47,1012
+class Id_Decl:Id_Decl73,1540
+class Id_Decl_List:Id_Decl_List89,1829
+class Comment:Comment105,2140
+class Comment_List:Comment_List122,2440
+class Value_Expr:Value_Expr135,2694
+class Value_Expr_List:Value_Expr_List149,2911
+class Exit_Entry:Exit_Entry165,3244
+class Exit_Entry_List:Exit_Entry_List179,3460
+class Exper_Off:Exper_Off195,3793
+class Exper_Off_List:Exper_Off_List207,3977
+class Gate_Decl:Gate_Decl223,4323
+class Gate_Decl_List:Gate_Decl_List239,4630
+class Ident_Eq:Ident_Eq255,4957
+class Ident_Eq_List:Ident_Eq_List271,5270
+class Half_Container:Half_Container287,5608
+class Specification:Specification308,5954
+class Process:Process337,6609
+ char GetNesting(Process::GetNesting363,7186
+class Proc_List:Proc_List367,7257
+class Definition:Definition382,7574
+ char *GetPath(Definition::GetPath397,7940
+class Exit:Exit407,8071
+class NoExit:NoExit421,8305
+class Value:Value440,8560
+class Term:Term456,8841
+class Equality:Equality473,9169
+class Sort_Id_Exit:Sort_Id_Exit490,9504
+class NoGuard:NoGuard511,9837
+class Guard:Guard524,10045
+class NoExperiment:NoExperiment545,10368
+class Experiment:Experiment558,10591
+ Tree_Node *GetGuard(Experiment::GetGuard574,10962
+class Exclam:Exclam578,11053
+class Query:Query593,11324
+class Internal:Internal614,11643
+class Communication:Communication627,11854
+class Gen_Paral:Gen_Paral652,12337
+ void HideGate(Gen_Paral::HideGate668,12634
+class Interl:Interl672,12730
+class Syncr:Syncr685,12929
+class Action_Pref:Action_Pref704,13185
+class Enable:Enable723,13577
+class Disable:Disable746,14097
+class Choice:Choice768,14561
+class Stop:Stop793,15054
+class Exit_Bex:Exit_Bex810,15338
+class Hide:Hide829,15707
+class Guarded:Guarded848,16047
+class Proc_Inst:Proc_Inst867,16425
+class Parallel:Parallel888,16870
+ char GetOperType(Parallel::GetOperType910,17343
+class Local_Def:Local_Def914,17429
+class Par:Par933,17801
+class Sum_Gate:Sum_Gate952,18180
+class Sum_Ident:Sum_Ident972,18613
+
+cp-src/cfront.H,2555
+struct loc 67,1948
+struct ea 80,2150
+ ea(ea::ea86,2249
+ ea(ea::ea87,2275
+ ea(ea::ea88,2301
+ ea(ea::ea89,2310
+overload error;94,2349
+#define DEL(161,4040
+#define PERM(162,4092
+#define UNPERM(163,4123
+struct node 165,4157
+struct table 175,4321
+ void set_scope(table::set_scope198,4988
+ void set_name(table::set_name199,5029
+ int max(table::max201,5091
+#define DEFINED 230,5655
+#define SIMPLIFIED 231,5712
+#define DEF_SEEN 232,5754
+#define IN_ERROR 234,5859
+struct type 236,5881
+ TOK integral(type::integral255,6278
+ TOK numeric(type::numeric256,6324
+ TOK num_ptr(type::num_ptr257,6370
+struct enumdef 265,6500
+ enumdef(enumdef::enumdef269,6586
+struct classdef 278,6732
+ TOK is_simple(classdef::is_simple302,7506
+ Pname has_ctor(classdef::has_ctor314,7759
+ Pname has_dtor(classdef::has_dtor315,7813
+ Pname has_itor(classdef::has_itor316,7867
+struct basetype 323,7935
+struct fct 365,8857
+ bit declared(fct::declared396,9724
+struct name_list 403,9827
+ name_list(name_list::name_list406,9866
+struct gen 410,9931
+struct pvtyp 419,10071
+struct vec 423,10109
+ vec(vec::vec429,10182
+struct ptr 435,10289
+ ptr(ptr::ptr440,10419
+inline Pptr type::addrof(447,10546
+struct expr 469,11113
+struct texpr 527,12108
+ texpr(texpr::texpr528,12149
+struct ival 531,12218
+ ival(ival::ival532,12258
+struct call 535,12308
+ call(call::call536,12338
+struct qexpr 543,12453
+ qexpr(qexpr::qexpr544,12500
+struct ref 547,12582
+ ref(ref::ref548,12632
+struct text_expr 551,12697
+ text_expr(text_expr::text_expr552,12731
+struct name 557,12884
+ void unhide(name::unhide592,13929
+ void use(name::use596,14025
+ void take_addr(name::take_addr598,14069
+struct stmt 615,14374
+struct estmt 662,15111
+ estmt(estmt::estmt669,15303
+struct ifstmt 672,15379
+ ifstmt(ifstmt::ifstmt676,15484
+struct lstmt 680,15586
+ lstmt(lstmt::lstmt686,15650
+struct forstmt 689,15728
+ forstmt(forstmt::forstmt690,15759
+struct block 694,15880
+ block(block::block695,15919
+struct pair 703,16060
+ pair(pair::pair704,16096
+struct nlist 708,16173
+ void add(nlist::add712,16230
+struct slist 718,16344
+ slist(slist::slist721,16385
+ void add(slist::add722,16430
+struct elist 727,16521
+ elist(elist::elist730,16562
+ void add(elist::add731,16607
+struct dcl_context 739,16739
+ void stack(dcl_context::stack747,17023
+ void unstack(dcl_context::unstack748,17064
+#define MAXCONT 751,17095
+const MIA 779,17690
+struct iline 780,17705
+#define FUDGE111 791,17985
+#define DB(831,18890
+#define DB(833,18920
+
+cp-src/burton.cpp,103
+::dummy::dummy test::dummy1(1,0
+::dummy::dummy test::dummy2(6,64
+::dummy::dummy test::dummy3(11,143
+
+cp-src/functions.cpp,807
+void Date::setDate 5,148
+void Date::plus 32,939
+void Date::minus 42,1229
+void Date::shift 52,1407
+Date & Date::operator = Date::operator =62,1628
+Date & Date::operator += Date::operator +=69,1789
+Date & Date::operator -= Date::operator -=78,1939
+Date & Date::operator ++ Date::operator ++87,2080
+Date & Date::operator -- Date::operator --96,2216
+int Date::operator - Date::operator -104,2331
+int Date::operator < Date::operator <112,2483
+int Date::operator > Date::operator >116,2557
+int Date::operator == Date::operator ==120,2631
+ostream& operator << operator <<124,2707
+istream& operator >> operator >>133,2943
+bool isLeap 159,3543
+bool isHoliday 163,3629
+void asort(173,3865
+void ReadVacation 186,4064
+void Debug 201,4523
+int WorkingDays(211,4867
+Date StartDay(226,5129
+
+cp-src/MDiagArray2.h,709
+#define octave_MDiagArray2_h 29,870
+#undef LTGT35,967
+#define LTGT39,1031
+#define LTGT 42,1051
+class MDiagArray2 78,2022
+ MDiagArray2 MDiagArray2::MDiagArray282,2077
+ MDiagArray2 MDiagArray2::MDiagArray286,2154
+ MDiagArray2 MDiagArray2::MDiagArray287,2198
+ MDiagArray2 MDiagArray2::MDiagArray288,2254
+ MDiagArray2 MDiagArray2::MDiagArray289,2329
+ MDiagArray2 MDiagArray2::MDiagArray290,2387
+ MDiagArray2 MDiagArray2::MDiagArray291,2450
+ ~MDiagArray2 MDiagArray2::~MDiagArray293,2515
+ MDiagArray2<T>& operator = MDiagArray2::operator =95,2542
+ operator MArray2<T> MDiagArray2::operator MArray2<T>101,2667
+#undef LTGT144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887
+
+cp-src/Pctest.h,507
+#define PCTEST_H24,837
+ PctestActionValid,::PctestActionValid47,1286
+ PctestActionValidLasthop,::PctestActionValidLasthop49,1370
+ PctestActionFiltered,::PctestActionFiltered51,1481
+ PctestActionAbort ::PctestActionAbort53,1566
+} PctestActionType;54,1616
+class Pctest 56,1637
+ Pctest(Pctest::Pctest59,1663
+ virtual ~Pctest(Pctest::~Pctest65,1813
+ virtual char *GetTargetName(Pctest::GetTargetName77,2171
+ virtual PctestActionType GetAction(Pctest::GetAction86,2555
+
+cp-src/Range.h,424
+#define octave_Range_h 24,765
+Range35,891
+ Range Range::Range39,909
+ Range Range::Range42,995
+ Range Range::Range46,1130
+ Range Range::Range50,1248
+ double base Range::base54,1376
+ double limit Range::limit55,1425
+ double inc Range::inc56,1475
+ int nelem Range::nelem57,1523
+ void set_base Range::set_base68,1728
+ void set_limit Range::set_limit69,1774
+ void set_inc Range::set_inc70,1821
+
+cp-src/screen.cpp,228
+unsigned char cursor_x,15,548
+unsigned char cursor_x, cursor_y;15,548
+static union REGS regs;16,582
+void goto_xy(18,607
+void hide_cursor(27,774
+void cursor_position(32,836
+void clear_screen(41,997
+void write_xyc(55,1247
+
+cp-src/screen.hpp,667
+#define __COLORS9,401
+enum COLORS 11,419
+ BLACK,COLORS::BLACK12,433
+ BLUE,COLORS::BLUE13,471
+ GREEN,COLORS::GREEN14,481
+ CYAN,COLORS::CYAN15,492
+ RED,COLORS::RED16,502
+ MAGENTA,COLORS::MAGENTA17,511
+ BROWN,COLORS::BROWN18,524
+ LIGHTGRAY,COLORS::LIGHTGRAY19,535
+ DARKGRAY,COLORS::DARKGRAY20,550
+ LIGHTBLUE,COLORS::LIGHTBLUE21,589
+ LIGHTGREEN,COLORS::LIGHTGREEN22,604
+ LIGHTCYAN,COLORS::LIGHTCYAN23,620
+ LIGHTRED,COLORS::LIGHTRED24,635
+ LIGHTMAGENTA,COLORS::LIGHTMAGENTA25,649
+ YELLOW,COLORS::YELLOW26,667
+ WHITECOLORS::WHITE27,679
+#define SCREEN_FP(31,700
+#define SCREEN_START 33,795
+
+cp-src/conway.cpp,270
+#define max(12,357
+#define min(13,393
+const int num_rows 15,430
+const int num_columns 16,470
+class site *field_of_play[field_of_play18,499
+int site::total_surrounding(20,550
+void display(37,958
+void glider(50,1239
+void traffic_light(59,1478
+void main(67,1633
+
+cp-src/conway.hpp,244
+class site:site5,235
+ site(site::site10,344
+ char read(site::read12,410
+ void set(site::set13,444
+ void clear(site::clear14,478
+ void compute_next_state(site::compute_next_state15,514
+ void step(site::step22,717
+
+cp-src/clheir.cpp,307
+const int max_num_generic_objects 9,298
+generic_object * object_registry[object_registry10,340
+void init_registry(12,400
+void step_everybody(19,527
+void discrete_location::clear_neighbors(31,852
+generic_object::generic_object(36,981
+generic_object::~generic_object(48,1255
+void agent::move(53,1353
+
+cp-src/clheir.hpp,609
+class generic_object13,520
+ virtual void compute_next_state(generic_object::compute_next_state21,842
+ virtual void step(generic_object::step22,888
+const int max_num_directions 31,1219
+class location:location33,1289
+ location(location::location43,1642
+class irregular_location:irregular_location47,1686
+ irregular_location(irregular_location::irregular_location51,1762
+class discrete_location:discrete_location56,1889
+ discrete_location(discrete_location::discrete_location62,2044
+ void assign_neighbor(discrete_location::assign_neighbor66,2184
+class agent:agent75,2508
+
+cp-src/fail.C,365
+struct A 7,263
+ struct B A::B8,274
+ struct C A::B::C9,289
+ C(A::B::C::C11,318
+ operator int(A::B::C::operator int12,342
+ typedef C T;A::B::T14,389
+ typedef B T2;A::T216,414
+class A 23,453
+ class B A::B24,463
+ class C A::B::C25,474
+ int f(A::B::f26,488
+int A::B::f(31,521
+main(37,571
+ class D 41,622
+ D(D::D43,659
+
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch 1,0
+(defalias 'pending-delete-mode pending-delete-mode5,102
+(defalias (quote explicitly-quoted-pending-delete-mode)8,175
+
+el-src/emacs/lisp/progmodes/etags.el,5069
+(defvar tags-file-name 34,1034
+(defgroup etags 43,1498
+(defcustom tags-case-fold-search 47,1566
+(defcustom tags-table-list 59,2051
+(defcustom tags-compression-info-list69,2449
+(defcustom tags-add-tables 88,3231
+(defcustom tags-revert-without-query 98,3627
+(defvar tags-table-computed-list 103,3778
+(defvar tags-table-computed-list-for 112,4262
+(defvar tags-table-list-pointer 117,4510
+(defvar tags-table-list-started-at 121,4701
+(defvar tags-table-set-list 124,4821
+(defcustom find-tag-hook 129,5000
+(defcustom find-tag-default-function 137,5263
+(define-obsolete-variable-alias
'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602
+(defcustom tags-tag-face 148,5699
+(defcustom tags-apropos-verbose 154,5834
+(defcustom tags-apropos-additional-actions 160,5998
+(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917
+(defvar default-tags-table-function 189,7097
+(defvar tags-location-ring 194,7323
+(defvar tags-table-files 201,7599
+(defvar tags-completion-table 206,7766
+(defvar tags-included-tables 209,7858
+(defvar next-file-list 212,7953
+(defvar tags-table-format-functions 217,8059
+(defvar file-of-tag-function 224,8440
+(defvar tags-table-files-function 228,8634
+(defvar tags-completion-table-function 230,8745
+(defvar snarf-tag-function 232,8840
+(defvar goto-tag-location-function 236,9049
+(defvar find-tag-regexp-search-function 239,9222
+(defvar find-tag-regexp-tag-order 241,9343
+(defvar find-tag-regexp-next-line-after-failure-p 243,9452
+(defvar find-tag-search-function 245,9572
+(defvar find-tag-tag-order 247,9679
+(defvar find-tag-next-line-after-failure-p 249,9774
+(defvar list-tags-function 251,9880
+(defvar tags-apropos-function 253,9968
+(defvar tags-included-tables-function 255,10062
+(defvar verify-tags-table-function 257,10181
+(defun initialize-new-tags-table 260,10292
+(defun tags-table-mode 276,10980
+(defun visit-tags-table 285,11245
+(defun tags-table-check-computed-list 321,12783
+(defun tags-table-extend-computed-list 360,14654
+(defun tags-expand-table-name 400,16367
+(defun tags-table-list-member 409,16710
+(defun tags-verify-table 421,17182
+(defun tags-table-including 470,19302
+(defun tags-next-table 522,21346
+(defun visit-tags-table-buffer 543,22203
+(defun tags-reset-tags-tables 712,28513
+(defun file-of-tag 731,29170
+(defun tags-table-files 740,29519
+(defun tags-included-tables 749,29869
+(defun tags-completion-table 755,30115
+(defun tags-lazy-completion-table 783,31309
+(defun tags-completion-at-point-function 799,31944
+(defun find-tag-tag 818,32694
+(defvar last-tag 837,33367
+(defun find-tag-interactive 840,33426
+(defvar find-tag-history 852,33841
+(defun find-tag-noselect 860,34011
+(defun find-tag 932,37125
+(defun find-tag-other-window 959,38341
+(defun find-tag-other-frame 1000,40269
+(defun find-tag-regexp 1025,41443
+(defalias 'pop-tag-mark pop-tag-mark1049,42605
+(defvar tag-lines-already-matched 1052,42656
+(defun find-tag-in-order 1055,42763
+(defun tag-find-file-of-tag-noselect 1167,47109
+(defun tag-find-file-of-tag 1200,48955
+(defun etags-recognize-tags-table 1208,49181
+(defun etags-verify-tags-table 1241,50812
+(defun etags-file-of-tag 1246,51010
+(defun etags-tags-completion-table 1256,51345
+(defun etags-snarf-tag 1286,52551
+(defun etags-goto-tag-location 1324,54120
+(defun etags-list-tags 1388,56563
+(defmacro tags-with-face 1423,57838
+(defun etags-tags-apropos-additional 1431,58171
+(defun etags-tags-apropos 1465,59408
+(defun etags-tags-table-files 1527,61617
+(defun etags-tags-included-tables 1542,62053
+(defun tags-recognize-empty-tags-table 1559,62593
+(defun tag-exact-file-name-match-p 1587,63739
+(defun tag-file-name-match-p 1596,64132
+(defun tag-exact-match-p 1609,64688
+(defun tag-implicit-name-match-p 1620,65256
+(defun tag-symbol-match-p 1633,65856
+(defun tag-word-match-p 1643,66292
+(defun tag-partial-file-name-match-p 1652,66690
+(defun tag-any-match-p 1662,67134
+(defun tag-re-match-p 1667,67318
+(defcustom tags-loop-revert-buffers 1675,67567
+(defun next-file 1685,67976
+(defvar tags-loop-operate 1760,70890
+(defvar tags-loop-scan1763,70984
+(defun tags-loop-eval 1771,71314
+(defun tags-loop-continue 1782,71643
+(defun tags-search 1850,73949
+(defun tags-query-replace 1871,74775
+(defun tags-complete-tags-table-file 1896,75999
+(defun list-tags 1906,76378
+(defun tags-apropos 1934,77331
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78157
+(defun select-tags-table 1964,78396
+(defvar select-tags-table-mode-map 2019,80523
+(define-derived-mode select-tags-table-mode 2030,80906
+(defun select-tags-table-select 2034,81090
+(defun select-tags-table-quit 2043,81456
+(defun complete-tag 2049,81611
+(defconst etags--xref-limit 2074,82552
+(defvar etags-xref-find-definitions-tag-order 2076,82587
+(defun etags-xref-find 2082,82877
+(defun etags--xref-find-definitions 2096,83406
+(defclass xref-etags-location 2129,85121
+(defun xref-make-etags-location 2135,85344
+(cl-defmethod xref-location-marker 2139,85499
+(cl-defmethod xref-location-line 2146,85743
+
+erl-src/gs_dialog.erl,98
+-define(VERSION2,32
+behaviour_info(51,2177
+show(124,5458
+dialog_loop(219,9529
+test(252,10806
+
+erl-src/lines.erl,386
+-define(BREAK66,2377
+-define(dbg68,2437
+new(73,2565
+count(80,2686
+nth(87,2815
+append(104,3301
+replace(119,3816
+insert(138,4559
+insert_after(165,5501
+delete(192,6456
+convert_to_list(215,7110
+convert_from_list(220,7259
+replace_nth(229,7518
+insert_nth(234,7618
+insert_after_nth(239,7711
+delete_nth(244,7828
+split_at(252,8027
+balance_left(267,8451
+balance_right(282,8865
+
+erl-src/lists.erl,593
+member(21,663
+append(30,790
+reverse(48,1099
+nth(59,1310
+nthtail(64,1382
+prefix(73,1546
+suffix(83,1707
+last(92,1882
+seq(101,2058
+sum(109,2265
+duplicate(116,2432
+min(124,2628
+max(132,2837
+sublist(141,3083
+delete(152,3329
+sort(161,3483
+split_and_sort(165,3559
+merge(175,3811
+concat(190,4219
+thing_to_list(195,4300
+flatten(204,4606
+flat_length(222,5003
+keymember(239,5451
+keysearch(246,5609
+keydelete(253,5770
+keyreplace(260,5923
+keysort(266,6113
+split_and_keysort(270,6229
+keymerge(277,6504
+keymap(288,6851
+map(311,7829
+foldl(315,7919
+foldr(320,8037
+zf(325,8155
+
+f-src/entry.for,172
+ LOGICAL FUNCTION PRTPKG 3,75
+ ENTRY SETPRT 194,3866
+ ENTRY MSGSEL 395,8478
+ & intensity1(577,12231
+ character*(*) function foo(579,12307
+
+f-src/entry.strange_suffix,172
+ LOGICAL FUNCTION PRTPKG 3,75
+ ENTRY SETPRT 194,3866
+ ENTRY MSGSEL 395,8478
+ & intensity1(577,12231
+ character*(*) function foo(579,12307
+
+f-src/entry.strange,103
+ ENTRY MSGSEL 193,4382
+ & intensity1(375,8135
+ character*(*) function foo(377,8211
+
+forth-src/test-forth.fth,408
+: a-forth-word 20,301
+99 constant a-forth-constant!22,343
+55 value a-forth-value?23,373
+create :a-forth-dictionary-entry24,397
+defer #a-defer-word27,460
+: (another-forth-word)(another-forth-word29,481
+ 9 field >field136,582
+ 5 field >field237,605
+constant (a-forth-constant(a-forth-constant38,628
+2000 buffer: #some-storage41,657
+code assemby-code-word 43,685
+: a-forth-word 50,870
+
+html-src/softwarelibero.html,198
+Cos'� il software libero?4,38
+Licenze d'uso di un programmalicenze65,2474
+Sfatiamo alcuni miti138,6064
+Il movimento open sourceoss191,7968
+Impatto pratico del software liberoimpatto231,9986
+
+html-src/index.shtml,104
+ 8,281
+In evidenza15,446
+Comunicati e iniziative32,974
+Ultime notizie dall'associazione63,2027
+
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the
Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and
Quantizing Algorithms7,276
+Descriptionalgorithms10,477
+Generating the Datagenalgorithm48,1953
+Convolutionallyconalgorithm55,2463
+Nextstatetable262,11331
+Outputoutputtable350,13571
+Mapping the Channel Symbolsmapping433,15786
+Adding Noise to theaddnoise439,16174
+Quantizing the Receivedquantizing469,18637
+
+html-src/software.html,438
+Francesco Potort� Software Page9,280
+Software that I wrote for supporting my research activitysimulation36,1400
+MTGmtg41,1484
+Fracasfracas65,2626
+GaliLEOgalileo101,4234
+Leasqrleasqr114,4679
+Free software that I wrote for the GNU project or for my personal or
workgnu142,6067
+Etagsetags148,6182
+checkiso161,6731
+cgrep178,7549
+debian-bug.eldebian-bug190,7981
+tcpdump205,8566
+Links to interesting softwarelinks216,8893
+
+java-src/AWTEMul.java,4356
+public class AWTEventMulticaster 63,2111
+ protected
AWTEventMulticaster(AWTEventMulticaster.AWTEventMulticaster77,2555
+ protected EventListener remove(AWTEventMulticaster.remove86,2820
+ public void componentResized(AWTEventMulticaster.componentResized102,3294
+ public void componentMoved(AWTEventMulticaster.componentMoved112,3626
+ public void componentShown(AWTEventMulticaster.componentShown122,3952
+ public void componentHidden(AWTEventMulticaster.componentHidden132,4280
+ public void componentAdded(AWTEventMulticaster.componentAdded142,4619
+ public void componentRemoved(AWTEventMulticaster.componentRemoved152,4959
+ public void focusGained(AWTEventMulticaster.focusGained162,5281
+ public void focusLost(AWTEventMulticaster.focusLost172,5572
+ public void keyTyped(AWTEventMulticaster.keyTyped182,5853
+ public void keyPressed(AWTEventMulticaster.keyPressed192,6129
+ public void keyReleased(AWTEventMulticaster.keyReleased202,6413
+ public void mouseClicked(AWTEventMulticaster.mouseClicked212,6704
+ public void mousePressed(AWTEventMulticaster.mousePressed222,7004
+ public void mouseReleased(AWTEventMulticaster.mouseReleased232,7306
+ public void mouseEntered(AWTEventMulticaster.mouseEntered242,7609
+ public void mouseExited(AWTEventMulticaster.mouseExited252,7907
+ public void mouseDragged(AWTEventMulticaster.mouseDragged262,8204
+ public void mouseMoved(AWTEventMulticaster.mouseMoved272,8512
+ public void windowOpened(AWTEventMulticaster.windowOpened282,8819
+ public void windowClosing(AWTEventMulticaster.windowClosing292,9125
+ public void windowClosed(AWTEventMulticaster.windowClosed302,9432
+ public void windowIconified(AWTEventMulticaster.windowIconified312,9742
+ public void
windowDeiconified(AWTEventMulticaster.windowDeiconified322,10064
+ public void windowActivated(AWTEventMulticaster.windowActivated332,10389
+ public void
windowDeactivated(AWTEventMulticaster.windowDeactivated342,10712
+ public void actionPerformed(AWTEventMulticaster.actionPerformed352,11037
+ public void
itemStateChanged(AWTEventMulticaster.itemStateChanged362,11356
+ public void
adjustmentValueChanged(AWTEventMulticaster.adjustmentValueChanged372,11690
+ public void
textValueChanged(AWTEventMulticaster.textValueChanged376,11874
+ public static ComponentListener add(AWTEventMulticaster.add387,12225
+ public static ContainerListener add(AWTEventMulticaster.add397,12571
+ public static FocusListener add(AWTEventMulticaster.add407,12901
+ public static KeyListener add(AWTEventMulticaster.add417,13207
+ public static MouseListener add(AWTEventMulticaster.add427,13513
+ public static MouseMotionListener add(AWTEventMulticaster.add437,13855
+ public static WindowListener add(AWTEventMulticaster.add447,14197
+ public static ActionListener add(AWTEventMulticaster.add457,14519
+ public static ItemListener add(AWTEventMulticaster.add467,14833
+ public static AdjustmentListener add(AWTEventMulticaster.add477,15163
+ public static TextListener add(AWTEventMulticaster.add480,15310
+ public static ComponentListener
remove(AWTEventMulticaster.remove490,15664
+ public static ContainerListener
remove(AWTEventMulticaster.remove500,16044
+ public static FocusListener remove(AWTEventMulticaster.remove510,16408
+ public static KeyListener remove(AWTEventMulticaster.remove520,16748
+ public static MouseListener remove(AWTEventMulticaster.remove530,17088
+ public static MouseMotionListener
remove(AWTEventMulticaster.remove540,17465
+ public static WindowListener remove(AWTEventMulticaster.remove550,17841
+ public static ActionListener remove(AWTEventMulticaster.remove560,18197
+ public static ItemListener remove(AWTEventMulticaster.remove570,18545
+ public static AdjustmentListener
remove(AWTEventMulticaster.remove580,18909
+ public static TextListener remove(AWTEventMulticaster.remove583,19062
+ protected static EventListener
addInternal(AWTEventMulticaster.addInternal597,19608
+ protected static EventListener
removeInternal(AWTEventMulticaster.removeInternal614,20244
+ protected void saveInternal(AWTEventMulticaster.saveInternal628,20582
+ static void save(AWTEventMulticaster.save646,21131
+
+java-src/KeyEve.java,698
+public class KeyEvent 36,1075
+ public KeyEvent(KeyEvent.KeyEvent234,9912
+ public KeyEvent(KeyEvent.KeyEvent252,10510
+ public int getKeyCode(KeyEvent.getKeyCode261,10836
+ public void setKeyCode(KeyEvent.setKeyCode265,10897
+ public void setKeyChar(KeyEvent.setKeyChar269,10978
+ public void setModifiers(KeyEvent.setModifiers273,11060
+ public char getKeyChar(KeyEvent.getKeyChar282,11331
+ public static String getKeyText(KeyEvent.getKeyText290,11561
+ public static String
getKeyModifiersText(KeyEvent.getKeyModifiersText377,16662
+ public boolean isActionKey(KeyEvent.isActionKey403,17618
+ public String paramString(KeyEvent.paramString407,17704
+
+java-src/SMan.java,5099
+class SecurityManager 80,3387
+ public boolean getInCheck(SecurityManager.getInCheck101,4075
+ protected SecurityManager(SecurityManager.SecurityManager114,4497
+ protected Class
currentLoadedClass(SecurityManager.currentLoadedClass149,5707
+ protected boolean inClass(SecurityManager.inClass184,7034
+ protected boolean inClassLoader(SecurityManager.inClassLoader196,7372
+ public Object
getSecurityContext(SecurityManager.getSecurityContext221,8485
+ public void
checkCreateClassLoader(SecurityManager.checkCreateClassLoader238,9069
+ public void checkAccess(SecurityManager.checkAccess268,10298
+ public void checkAccess(SecurityManager.checkAccess298,11632
+ public void checkExit(SecurityManager.checkExit323,12649
+ public void checkExec(SecurityManager.checkExec349,13734
+ public void checkLink(SecurityManager.checkLink375,14813
+ public void checkRead(SecurityManager.checkRead394,15485
+ public void checkRead(SecurityManager.checkRead412,16111
+ public void checkRead(SecurityManager.checkRead434,17017
+ public void checkWrite(SecurityManager.checkWrite453,17706
+ public void checkWrite(SecurityManager.checkWrite471,18337
+ public void checkDelete(SecurityManager.checkDelete493,19165
+ public void checkConnect(SecurityManager.checkConnect517,20119
+ public void checkConnect(SecurityManager.checkConnect543,21254
+ public void checkListen(SecurityManager.checkListen561,21910
+ public void checkAccept(SecurityManager.checkAccept585,22887
+ public void checkMulticast(SecurityManager.checkMulticast597,23272
+ public void checkMulticast(SecurityManager.checkMulticast610,23732
+ public void
checkPropertiesAccess(SecurityManager.checkPropertiesAccess632,24609
+ public void
checkPropertyAccess(SecurityManager.checkPropertyAccess654,25449
+ public boolean
checkTopLevelWindow(SecurityManager.checkTopLevelWindow680,26580
+ public void
checkPrintJobAccess(SecurityManager.checkPrintJobAccess689,26763
+ public void
checkSystemClipboardAccess(SecurityManager.checkSystemClipboardAccess698,26958
+ public void
checkAwtEventQueueAccess(SecurityManager.checkAwtEventQueueAccess707,27159
+ public void
checkPackageAccess(SecurityManager.checkPackageAccess729,27966
+ public void
checkPackageDefinition(SecurityManager.checkPackageDefinition751,28803
+ public void checkSetFactory(SecurityManager.checkSetFactory775,29929
+ public void checkMemberAccess(SecurityManager.checkMemberAccess786,30209
+ public void
checkSecurityAccess(SecurityManager.checkSecurityAccess796,30430
+ public ThreadGroup getThreadGroup(SecurityManager.getThreadGroup811,30923
+class NullSecurityManager 817,31025
+ public void
checkCreateClassLoader(NullSecurityManager.checkCreateClassLoader818,31077
+ public void checkAccess(NullSecurityManager.checkAccess819,31123
+ public void checkAccess(NullSecurityManager.checkAccess820,31165
+ public void checkExit(NullSecurityManager.checkExit821,31212
+ public void checkExec(NullSecurityManager.checkExec822,31254
+ public void checkLink(NullSecurityManager.checkLink823,31296
+ public void checkRead(NullSecurityManager.checkRead824,31338
+ public void checkRead(NullSecurityManager.checkRead825,31387
+ public void checkRead(NullSecurityManager.checkRead826,31430
+ public void checkWrite(NullSecurityManager.checkWrite827,31489
+ public void checkWrite(NullSecurityManager.checkWrite828,31539
+ public void checkDelete(NullSecurityManager.checkDelete829,31583
+ public void checkConnect(NullSecurityManager.checkConnect830,31628
+ public void checkConnect(NullSecurityManager.checkConnect831,31684
+ public void checkListen(NullSecurityManager.checkListen832,31756
+ public void checkAccept(NullSecurityManager.checkAccept833,31798
+ public void checkMulticast(NullSecurityManager.checkMulticast834,31853
+ public void checkMulticast(NullSecurityManager.checkMulticast835,31907
+ public void
checkPropertiesAccess(NullSecurityManager.checkPropertiesAccess836,31971
+ public void
checkPropertyAccess(NullSecurityManager.checkPropertyAccess837,32015
+ public void
checkPropertyAccess(NullSecurityManager.checkPropertyAccess838,32067
+ public boolean
checkTopLevelWindow(NullSecurityManager.checkTopLevelWindow839,32131
+ public void
checkPrintJobAccess(NullSecurityManager.checkPrintJobAccess840,32202
+ public void
checkSystemClipboardAccess(NullSecurityManager.checkSystemClipboardAccess841,32244
+ public void
checkAwtEventQueueAccess(NullSecurityManager.checkAwtEventQueueAccess842,32293
+ public void
checkPackageAccess(NullSecurityManager.checkPackageAccess843,32340
+ public void
checkPackageDefinition(NullSecurityManager.checkPackageDefinition844,32391
+ public void checkSetFactory(NullSecurityManager.checkSetFactory845,32446
+ public void
checkMemberAccess(NullSecurityManager.checkMemberAccess846,32484
+ public void
checkSecurityAccess(NullSecurityManager.checkSecurityAccess847,32546
+
+java-src/SysCol.java,295
+public final class SystemColor 37,1402
+ private static void
updateSystemColors(SystemColor.updateSystemColors349,10617
+ private SystemColor(SystemColor.SystemColor357,10885
+ public int getRGB(SystemColor.getRGB370,11245
+ public String toString(SystemColor.toString377,11388
+
+java-src/TG.java,2041
+class ThreadGroup 54,2104
+ private ThreadGroup(ThreadGroup.ThreadGroup72,2495
+ public ThreadGroup(ThreadGroup.ThreadGroup84,2848
+ public ThreadGroup(ThreadGroup.ThreadGroup105,3714
+ public final String getName(ThreadGroup.getName124,4189
+ public final ThreadGroup getParent(ThreadGroup.getParent135,4492
+ public final int getMaxPriority(ThreadGroup.getMaxPriority148,4867
+ public final boolean isDaemon(ThreadGroup.isDaemon161,5305
+ public synchronized boolean isDestroyed(ThreadGroup.isDestroyed170,5470
+ public final void setDaemon(ThreadGroup.setDaemon192,6368
+ public final void setMaxPriority(ThreadGroup.setMaxPriority213,7110
+ public final boolean parentOf(ThreadGroup.parentOf246,8106
+ public final void checkAccess(ThreadGroup.checkAccess268,8834
+ public int activeCount(ThreadGroup.activeCount283,9286
+ public int enumerate(ThreadGroup.enumerate322,10497
+ public int enumerate(ThreadGroup.enumerate344,11481
+ private int enumerate(ThreadGroup.enumerate348,11584
+ public int activeGroupCount(ThreadGroup.activeGroupCount389,12588
+ public int enumerate(ThreadGroup.enumerate425,13727
+ public int enumerate(ThreadGroup.enumerate445,14595
+ private int enumerate(ThreadGroup.enumerate449,14703
+ public final void stop(ThreadGroup.stop499,16212
+ public final void suspend(ThreadGroup.suspend537,17477
+ public final void resume(ThreadGroup.resume575,18749
+ public final void destroy(ThreadGroup.destroy607,19779
+ private final void add(ThreadGroup.add643,20704
+ private void remove(ThreadGroup.remove668,21402
+ void add(ThreadGroup.add697,22142
+ void remove(ThreadGroup.remove722,22808
+ public void list(ThreadGroup.list751,23503
+ void list(ThreadGroup.list754,23556
+ public void uncaughtException(ThreadGroup.uncaughtException810,25512
+ public boolean
allowThreadSuspension(ThreadGroup.allowThreadSuspension823,25823
+ public String toString(ThreadGroup.toString837,26142
+
+lua-src/allegro.lua,400
+local function get_layer_by_name 7,175
+local function count_layers 33,621
+function GetLayerByName 54,980
+function GetUniqueLayerName 65,1204
+function SelectLayer 76,1415
+function NewLayer 86,1773
+function NewLayerSet 144,3226
+function RemoveLayer 170,3750
+function MoveLayerTop 211,4767
+function MoveLayerBottom 223,5079
+function MoveLayerBefore 236,5457
+function MoveLayerAfter 258,6090
+
+make-src/Makefile,1133
+LATEST=1,0
+NONSRCS=35,1578
+CPPFLAGS=49,2191
+LDFLAGS=50,2260
+FASTCFLAGS=55,2531
+FILTER=58,2642
+ @-$($72,3064
+ @-$($73,3113
+ @-$($74,3177
+ @-$($75,3223
+ @-$($76,3291
+ @-$($77,3383
+ @$(81,3466
+ @$(82,3514
+ @$(83,3577
+ @$(84,3622
+ @$(85,3689
+ @$(86,3780
+${CHECKOBJS}: CFLAGS=88,3806
+ @env CHECKEROPTS=92,3922
+ @$(98,4094
+ @$(106,4250
+ @$(110,4374
+ @$(114,4500
+ @for i in $(SRCS); do echo $$i;140,5315
+ $(160,6053
+ $(163,6114
+ $(166,6177
+ $(169,6228
+ $(172,6317
+ sdiff --suppress-common-lines --width=width186,6614
+ sdiff --suppress-common-lines --width=width189,6703
+ sdiff --suppress-common-lines --width=width192,6791
+ sdiff --suppress-common-lines --width=width195,6880
+ TEXTAGS=204,7122
+ TEXTAGS=def:newcommand:newenvironment ${RUN} etags$*
--regex=regex204,7122
+ ${RUN} etags12 --members -o $@ --regex=regex207,7239
+ ${RUN} ./ctags -o $@ --regex=regex213,7388
+ ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7464
+ TEXTAGS=219,7583
+ TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@
--regex=regex219,7583
+ ${RUN} ./extags -e --regex-c=c222,7710
+
+objc-src/Subprocess.h,98
+#define Subprocess 41,1217
+#define BUFFERSIZE 43,1267
address@hidden Subprocess:Subprocess45,1292
+
+objc-src/Subprocess.m,475
+#define PTY_TEMPLATE 20,494
+#define PTY_LENGTH 21,528
address@hidden Subprocess(Private)Subprocess(Private)32,737
+- childDidExit39,851
+- fdHandler:67,1589
+showError 98,2360
+fdHandler 112,2785
+getptys 119,2907
+- init:183,4815
+ andStdErr:init:withDelegate:andPtySupport:andStdErr:197,5147
+- send:(const char *)string withNewline:send:withNewline:300,7436
+- send:308,7599
+- terminateInput314,7689
+- terminate:321,7810
+- setDelegate:332,7961
+- delegate338,8031
+
+objc-src/PackInsp.h,109
+#define NUMSTATS 36,1101
+#define TYPESTOSTAT 37,1120
address@hidden PackageInspector:PackageInspector39,1172
+
+objc-src/PackInsp.m,1360
+static const char RCSid[RCSid30,1032
+#define VERSION 34,1116
+# define DEBUG 37,1155
+#define LISTCONTENTS 39,1181
+#define OPENBUTTON 47,1352
+#define LISTCONTENTSBUTTON 48,1449
+#define LISTDESCRIPTIONBUTTON 49,1562
+#define STATE_UNINSTALLED 52,1687
+#define STATE_INSTALLED 53,1807
+#define STATE_COMPRESSD 54,1948
+#define SIZEFORMAT 57,2152
+#define KBYTES 58,2362
+#define MBYTES 59,2473
+#define LOCALIZE(61,2585
+#define LOCALIZE_ARCH(62,2668
++newnew67,2802
+-showInfo:showInfo:93,3417
+-revert:revert:107,3737
+-ok:ok:136,4297
+-loadload143,4424
+#define LOOKUP(156,4826
+#undef LOOKUP176,5694
+-loadKeyValuesFrom:(const char *)type
inTable:loadKeyValuesFrom:inTable:186,5852
+-loadContentsOf:(const char *)type inTable:loadContentsOf:inTable:238,7079
+-loadImageloadImage257,7552
+#define STAT_EQ(275,7940
+-(BOOL)shouldLoad280,8116
+-toggleDescriptiontoggleDescription301,8626
+-(const char *)getPath:(char *)buf forType:getPath:forType:317,8899
+-setRevertButtonTitlesetRevertButtonTitle333,9320
+-(const char *)formatSize:(const char *)size inBuf:formatSize:inBuf:344,9525
+#define WORKING 368,10045
+-(void)getArchs370,10100
+-(void)addArchs:385,10520
+-subprocess:(Subprocess *)sender output:subprocess:output:428,11351
+-subprocessDone:subprocessDone:436,11484
+static void openInWorkspace(446,11634
+-open:open:464,12063
+
+objcpp-src/SimpleCalc.H,41
address@hidden SimpleCalc:SimpleCalc14,400
+
+objcpp-src/SimpleCalc.M,300
+- init52,1747
+- appendToDisplay:60,1933
+- registerAction:70,2210
+- decimalKey:77,2348
+- numberKeys:91,2661
+- equalsKey:112,3192
+- operationKeys:131,3680
+- clearKey:153,4301
+- clearAllKey:160,4410
+- appDidInit:168,4591
+- windowWillClose:178,4882
+- infoPanel:186,5132
+- helpPanel:198,5482
+
+pas-src/common.pas,1875
+procedure InitializeStringPackage;26,527
+function newtextstring;34,874
+procedure disposetextstring;52,1404
+function ConcatT;78,2066
+function AppendTextString;112,3238
+function CopyTextString;132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;151,4505
+procedure append_string;172,5166
+function To_Upper;186,5462
+function To_Lower;194,5617
+function EmptyNmStr(209,6213
+function chartonmstr;219,6436
+function LowerCaseNmStr;230,6682
+function concatenatenamestrings;242,7007
+procedure writenamestring;263,7517
+function IsControlChar;277,7928
+function namestringequal;283,8079
+function NameStringLess;302,8539
+function IsControlCharName(343,9710
+function SubString;358,10208
+function SkipChars;379,10791
+function RemoveUnderlineControl;397,11311
+procedure First100Chars;427,12162
+procedure SkipSpaces;462,13298
+function SkipBlanks;477,13782
+function stripname;505,14595
+function Locate;522,15039
+function NameHasChar;543,15581
+function integertonmstr;561,16134
+function NmStrToInteger;585,16901
+function AddNullToNmStr;600,17317
+function ValToNmStr;611,17585
+function ChangeFileType;625,18037
+function StripPath;647,18734
+function ReprOfChar;675,19343
+procedure ExtractCommentInfo;702,20749
+procedure INSERT_TREE_NODE;784,24053
+function GetNameList;920,27926
+procedure DisposeANameList(925,28010
+procedure DisposeNameList;938,28340
+function GetNewNameListNode;943,28409
+function insertname;972,29051
+procedure InitNameList;988,29471
+procedure InitNameStringPool;998,29767
+procedure NewNameString;1004,29867
+procedure ReleaseNameString;1022,30232
+procedure SDTrefStringToRec 1045,30741
+procedure SDTrefSkipSpaces;1059,31092
+function SDTrefIsEnd 1070,31323
+function SDTrefGetInteger 1082,31529
+procedure SDTrefRecToString 1303,37546
+function NmStrToErrStr;1497,42305
+function ErrStrToNmStr;1509,42557
+function GetTextRef;1529,43112
+
+php-src/lce_functions.php,2152
+ define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38
+ define("LCE_UNKNOWN"LCE_UNKNOWN9,145
+ define("LCE_WS"LCE_WS11,194
+ define("LCE_COMMENT"LCE_COMMENT13,244
+ define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303
+ define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366
+ define("LCE_MSGID"LCE_MSGID19,430
+ define("LCE_MSGSTR"LCE_MSGSTR21,488
+ define("LCE_TEXT"LCE_TEXT23,541
+ define("STATE_ABORT"STATE_ABORT25,567
+ define("STATE_OK"STATE_OK26,595
+ define("STATE_LOOP"STATE_LOOP27,620
+ class POEntryAD 29,648
+ function validate(31,683
+ function checkQuotation(59,1384
+ class CommentAD 70,1639
+ function CommentAD(73,1693
+ function validate(83,1944
+ class POEntry 105,2410
+ function POEntry(119,2711
+ function lineCount(135,3255
+ function serializeToVars(141,3365
+ function write(151,3800
+ class POReader 163,4178
+ function gettext(177,4457
+ function parseFromVars(189,4705
+ function serializeToVars(215,5331
+ function POReader(229,5613
+ function read(243,5983
+ function write(259,6307
+ function isComment(277,6645
+ function comment(284,6822
+ function msgid(304,7247
+ function msgstr(320,7574
+ function start(340,8232
+ function createPOEntries(360,8644
+ function stripLine(394,9472
+ function printClassification(421,10056
+ function classifyLine(432,10301
+ function getTextDomains(471,11094
+ class PORManager 498,11756
+ function PORManager(502,11822
+ function addPOReader(507,11896
+ function &getPOReader(getPOReader512,11992
+ function getDomainNames(517,12081
+ function &loadPORManager(loadPORManager523,12174
+ function fileJoin(536,12436
+ function lce_bindtextdomain(557,12839
+ function lce_textdomain(614,14530
+ function lce_gettext(620,14641
+ function lce_dgettext(626,14767
+ function lce(634,14966
+ function lce_bindtextdomain(651,15488
+ function lce_textdomain(656,15592
+ function lce_gettext(661,15674
+ function lce_dgettext(666,15755
+ function lce(670,15855
+ function lce_geteditcode(676,15898
+
+php-src/ptest.php,46
+define("TEST"TEST1,0
+test 4,26
+foo(16,200
+
+perl-src/htlmify-cystic,1443
+my @section_name;section_name12,236
+my @appendix_name;appendix_name13,254
+my @section_toc;section_toc15,274
+my @appendix_toc;appendix_toc16,291
+my $new_tag new_tag18,310
+my $appendix;appendix24,409
+my $section;section25,423
+my $subsection;subsection26,436
+my $subsubsection;subsubsection27,452
+my $this_file_toc this_file_toc29,472
+my %file_tocs;file_tocs30,496
+my @output_files output_files32,512
+my $file_index file_index33,535
+my $output_file;output_file35,556
+my $line;line37,574
+my $subsection_marker;subsection_marker161,3883
+my $new;new163,3907
+sub read_toc main::read_toc165,3917
+ my $entry entry218,5621
+ my $entry entry234,6077
+ my $entry entry245,6351
+ my $entry entry252,6536
+ my $entry entry268,7010
+ my $entry entry276,7204
+ my $entry entry281,7328
+ my $entry entry296,7698
+sub finish_subsubsections main::finish_subsubsections302,7805
+sub finish_subsections main::finish_subsections309,7987
+sub finish_sections main::finish_sections320,8310
+sub finish_appendices main::finish_appendices331,8599
+sub section_url_base main::section_url_base337,8724
+sub section_url_name main::section_url_name342,8922
+sub section_url main::section_url355,9284
+ my $name name357,9336
+sub section_href main::section_href364,9452
+sub section_name main::section_name368,9551
+sub toc_line main::toc_line372,9655
+sub file_end main::file_end375,9750
+
+perl-src/yagrip.pl,258
+sub getopt main::getopt7,156
+ local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169
+sub usage main::usage38,856
+ local($prog,$_,@list)($prog,$_,@list39,868
+
local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897
+
+perl-src/kai-test.pl,244
+sub f1 main::f12,16
+sub main::f2 6,50
+package Foo;10,90
+sub f3 Foo::f312,104
+sub Bar::f4 16,138
+package Bar;20,177
+sub f5 Bar::f522,191
+package Foo::Bar;26,225
+sub f6 Foo::Bar::f628,244
+package main;32,278
+sub f7 main::f734,293
+
+perl-src/mirror.pl,13410
+sub msg_versionmain::msg_version459,18271
+ local( $arg )( $arg 468,18582
+ local( $flag, $p )( $flag, $p 480,18757
+ local( $site_path )( $site_path 525,19687
+ local( $site, $path )( $site, $path 539,19958
+ local( $key_val )( $key_val 578,20743
+ local( $user )( $user 595,21097
+ local( $c )( $c 634,21853
+ local( $sec,$min,$hour,$mday,$mon,$year,(
$sec,$min,$hour,$mday,$mon,$year,678,22807
+ local( $c )( $c 706,23393
+ local( $dir, $mp )( $dir, $mp 723,23695
+ local( $f )( $f 725,23740
+sub interpret_config_filesmain::interpret_config_files756,24304
+ local( $fname )( $fname 758,24333
+sub interpret_configmain::interpret_config785,24927
+sub parse_linemain::parse_line827,25710
+ local( $eqpl )( $eqpl 829,25727
+ local( $cont )( $cont 830,25744
+ local( $v )( $v 839,26029
+sub set_defaultsmain::set_defaults860,26448
+sub command_line_overridemain::command_line_override868,26579
+ local( $key, $val, $overrides )( $key, $val, $overrides 870,26607
+sub set_variablesmain::set_variables894,27072
+ local( $key, $val )( $key, $val 896,27092
+ local( $val_name )( $val_name 902,27259
+ local( $val )( $val 953,28825
+sub upd_valmain::upd_val962,28974
+ local( $key )( $key 964,28988
+sub pr_variablesmain::pr_variables970,29083
+ local( $msg )( $msg 972,29102
+ local( $nle )( $nle 973,29123
+ local( $out )( $out 974,29144
+ local( $key, $val, $str )( $key, $val, $str 975,29164
+sub do_mirrormain::do_mirror1007,29923
+ local( $get_one_package )( $get_one_package 1009,29939
+ local( $exit_status )( $exit_status 1030,30384
+ local( @t )( @t 1154,33165
+ local( $con )( $con 1241,35499
+ local( @rhelp )( @rhelp 1289,36702
+ local( @sub_dirs )( @sub_dirs 1329,37778
+ local( $now )( $now 1493,41348
+ local( $arg )( $arg 1506,41774
+sub disconnectmain::disconnect1528,42250
+sub connectmain::connect1546,42576
+ local( $attempts )( $attempts 1548,42590
+ local( $res )( $res 1549,42642
+sub prodmain::prod1573,43156
+sub checkout_regexpsmain::checkout_regexps1585,43327
+ local( $ret )( $ret 1587,43350
+ local( $t )( $t 1589,43395
+ local( $val )( $val 1597,43701
+ local( $err )( $err 1601,43786
+sub clear_localmain::clear_local1610,43909
+sub clear_remotemain::clear_remote1625,44172
+sub get_local_directory_detailsmain::get_local_directory_details1640,44445
+ local( @dirs, $dir )( @dirs, $dir 1642,44479
+ local( $last_prodded )( $last_prodded 1643,44502
+ local( $dir_level )( $dir_level 1691,45615
+ local( $i )( $i 1692,45641
+ local( $path, $time, $size, $type, $mode, $name, $isdir, $value,
$follow )( $path, $time, $size, $type, $mode, $name, $isdir, $value, $follow
1693,45659
+ local( $dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,(
$dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,1694,45736
+ local( $mapi )( $mapi 1763,47586
+sub get_remote_directory_detailsmain::get_remote_directory_details1789,48122
+ local( $type_changed )( $type_changed 1791,48157
+ local( $udirtmp )( $udirtmp 1792,48186
+ local( $storename )( $storename 1793,48206
+ local( $rls )( $rls 1825,48944
+ local( $dirtmp )( $dirtmp 1830,49002
+ local( $unsquish )( $unsquish 1832,49130
+ local( $f )( $f 1840,49360
+ local( $dirtmp )( $dirtmp 1859,49866
+ local( $unsquish )( $unsquish 1870,50215
+ local( $f, $uf )( $f, $uf 1878,50445
+ local( $flags )( $flags 1912,51259
+ local( $parse_state )( $parse_state 1946,52111
+ local( $msg )( $msg 1963,52486
+sub patch_ls_lR_filemain::patch_ls_lR_file1984,52955
+ local( $f, $fr, $flb, $flt, $flp, $flz, $frb, $frt )( $f, $fr, $flb,
$flt, $flp, $flz, $frb, $frt 1990,53055
+ local( $to , $tn )( $to , $tn 1991,53110
+ local( $tlb )( $tlb 1995,53225
+ local( $p, $s, $trz, $t, $m )( $p, $s, $trz, $t, $m 2030,54182
+ local( $tlz )( $tlz 2037,54467
+sub parse_timeoutmain::parse_timeout2089,55670
+sub parse_remote_detailsmain::parse_remote_details2095,55754
+ local( $ret )( $ret 2097,55781
+ local( $old_sig )( $old_sig 2098,55797
+sub parse_remote_details_realmain::parse_remote_details_real2125,56234
+ local( $path, $size, $time, $type, $mode, $rdir, $rcwd )( $path,
$size, $time, $type, $mode, $rdir, $rcwd 2127,56266
+ local( @dir_list )( @dir_list 2128,56325
+ local( $i )( $i 2129,56346
+ local( $old_path )( $old_path 2130,56364
+ local( $old_path )( $old_path 2143,56630
+ local( $ri )( $ri 2203,58078
+ local( $mapi )( $mapi 2214,58335
+ local( $done )( $done 2239,58911
+sub compare_dirsmain::compare_dirs2283,59825
+ local( *src_paths,( *src_paths,2286,59915
+ local( $src_path, $dest_path, $i )( $src_path, $dest_path, $i
2293,60099
+ local( $last_prodded )( $last_prodded 2294,60136
+ local( $desti, $srci, $compress, $srciZ, $srcigz, $split,
$dest_path_real )( $desti, $srci, $compress, $srciZ, $srcigz, $split,
$dest_path_real 2299,60350
+ local( $old_dest_path, $existing_path, $tmp, $restart )(
$old_dest_path, $existing_path, $tmp, $restart 2300,60428
+ local( $sp, $dp )( $sp, $dp 2301,60486
+ local( $real, $reali, $reali1 )( $real, $reali, $reali1
2352,62034
+ local( $count )( $count 2353,62072
+ local( $value )( $value 2408,63996
+ local( $real )( $real 2409,64028
+ local( $reali )( $reali 2410,64086
+ local( $old )( $old 2421,64571
+ local( $old_dest_path )( $old_dest_path 2432,64842
+ local( $dpp, $dps )( $dpp, $dps 2509,67031
+ local( $update )( $update 2534,67671
+sub map_namemain::map_name2651,71028
+ local( $name )( $name 2653,71043
+ local( $old_name )( $old_name 2656,71089
+ local( $tmp )( $tmp 2666,71252
+sub set_timestampsmain::set_timestamps2675,71362
+ local( $src_path )( $src_path 2677,71383
+ local( $dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime )(
$dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime 2685,71517
+sub set_timestampmain::set_timestamp2699,71901
+ local( $path, $time )( $path, $time 2701,71921
+ local( $pr_time )( $pr_time 2703,71953
+sub make_dirsmain::make_dirs2719,72284
+ local( $thing )( $thing 2721,72300
+sub make_symlinksmain::make_symlinks2736,72489
+ local( $thing )( $thing 2738,72509
+ local( $dest, $existing )( $dest, $existing 2745,72623
+ local( $dirpart )( $dirpart 2746,72663
+ local( $ft )( $ft 2747,72704
+ local( $p )( $p 2762,73261
+ local( $f )( $f 2770,73467
+ local( $dl )( $dl 2788,74038
+sub do_all_transfersmain::do_all_transfers2806,74439
+ local( $src_path )( $src_path 2808,74462
+ local( $dest_path, $attribs )( $dest_path, $attribs 2809,74483
+ local( $srci )( $srci 2810,74515
+ local( $newpath )( $newpath 2838,75124
+sub transfer_filemain::transfer_file2869,75847
+ local( $src_path, $dest_path, $attribs, $timestamp )( $src_path,
$dest_path, $attribs, $timestamp 2871,75867
+ local( $dir, $file, $temp, $compress, $split, $restart, $mesg,
$got_mesg )( $dir, $file, $temp, $compress, $split, $restart, $mesg, $got_mesg
2872,75927
+ local( $src_file )( $src_file 2915,76782
+ local( $comptemp )( $comptemp 2916,76816
+ local( $f )( $f 2921,76964
+ local($filesize)($filesize2944,77569
+ local( $ti )( $ti 2975,78401
+ local( $f )( $f 2997,78887
+ local( $comp )( $comp 2998,78912
+ local( $filesize )( $filesize 3015,79427
+ local( $sizemsg )( $sizemsg 3016,79469
+ local( $srcsize )( $srcsize 3017,79501
+ local( $time )( $time 3029,79865
+ local( $as )( $as 3046,80223
+ local( $locali )( $locali 3054,80499
+sub filename_to_tempnamemain::filename_to_tempname3062,80713
+ local( $dir, $file )( $dir, $file 3064,80740
+ local ( $dest_path )( $dest_path 3066,80769
+sub log_uploadmain::log_upload3090,81228
+ local( $src_path, $dest_path, $got_mesg, $size )( $src_path,
$dest_path, $got_mesg, $size 3092,81245
+sub do_deletesmain::do_deletes3118,81773
+ local( *src_paths,( *src_paths,3121,81861
+ local( $files_to_go, $dirs_to_go )( $files_to_go, $dirs_to_go
3125,81960
+ local( $src_path, $i )( $src_path, $i 3131,82055
+ local( $orig_do_deletes )( $orig_do_deletes 3132,82080
+ local( $orig_save_deletes )( $orig_save_deletes 3133,82122
+ local( $del_patt )( $del_patt 3135,82169
+ local( $per )( $per 3162,82843
+ local( $per )( $per 3184,83513
+ local( $save_dir_tail )( $save_dir_tail 3226,84617
+sub save_deletemain::save_delete3245,85019
+ local( $save, $kind )( $save, $kind 3247,85037
+ local( $real_save_dir, $save_dest )( $real_save_dir, $save_dest
3249,85067
+ local( $dirname )( $dirname 3284,85704
+sub save_mkdirmain::save_mkdir3304,86155
+ local( $dir )( $dir 3306,86172
+sub do_deletemain::do_delete3320,86459
+ local( $del, $kind )( $del, $kind 3322,86475
+sub filesizemain::filesize3377,87532
+ local( $fname )( $fname 3379,87547
+sub istruemain::istrue3390,87654
+ local( $val )( $val 3392,87667
+sub mksymlinkmain::mksymlink3398,87773
+ local( $dest_path, $existing_path )( $dest_path, $existing_path
3400,87789
+ local( $msg )( $msg 3417,88246
+ local( $msg )( $msg 3431,88590
+ local( $status )( $status 3442,88816
+sub mkdirsmain::mkdirs3457,89196
+ local( $dir )( $dir 3459,89209
+ local( @dir, $d, $path )( @dir, $d, $path 3460,89230
+sub make_dirmain::make_dir3497,90042
+ local( $dir, $mode )( $dir, $mode 3499,90057
+ local( $val )( $val 3500,90085
+sub dir_existsmain::dir_exists3528,90573
+ local( $dir )( $dir 3530,90590
+ local( $val )( $val 3531,90611
+ local($old_dir)($old_dir3539,90750
+sub set_attribsmain::set_attribs3553,91053
+ local( $path, $src_path, $type )( $path, $src_path, $type 3555,91071
+ local( $mode )( $mode 3556,91111
+ local( $pathi )( $pathi 3564,91229
+ local( $pathi )( $pathi 3568,91320
+sub get_passwdmain::get_passwd3606,91977
+ local( $user )( $user 3608,91994
+ local( $pass )( $pass 3609,92016
+ local( $| )( $| 3610,92033
+sub compare_timesmain::compare_times3631,92384
+ local( $t1, $t2 )( $t1, $t2 3637,92564
+ local( $diff )( $diff 3638,92589
+sub create_assocsmain::create_assocs3643,92688
+ local( $map )( $map 3645,92708
+sub delete_assocsmain::delete_assocs3657,92957
+ local( $map )( $map 3659,92977
+sub unlink_dbmmain::unlink_dbm3671,93247
+ local( $file )( $file 3673,93264
+sub bsplitmain::bsplit3681,93462
+ local( $temp, $dest_path, $time )( $temp, $dest_path, $time 3683,93475
+ local( $dest_dir )( $dest_dir 3684,93516
+ local( $bufsiz )( $bufsiz 3685,93558
+ local( $buffer, $in, $sofar )( $buffer, $in, $sofar 3686,93583
+ local( $d )( $d 3691,93721
+ local( $index )( $index 3697,93840
+ local( $part )( $part 3698,93865
+ local( $locali )( $locali 3714,94336
+ local( $readme )( $readme 3730,94740
+sub sysmain::sys3739,95116
+ local( $com )( $com 3741,95126
+sub set_assoc_from_arraymain::set_assoc_from_array3751,95355
+ local( *things )( *things 3754,95453
+sub find_progmain::find_prog3760,95537
+ local( $prog )( $prog 3762,95553
+ local( $path )( $path 3763,95575
+ local( $path )( $path 3766,95657
+sub real_dir_from_pathmain::real_dir_from_path3780,95842
+ local( $program )( $program 3782,95867
+ local( @prog_path )( @prog_path 3783,95892
+ local( $dir )( $dir 3784,95970
+sub msgmain::msg3807,96489
+ local( $todo, $msg )( $todo, $msg 3809,96499
+sub to_bytesmain::to_bytes3838,96979
+ local( $size )( $size 3840,96994
+sub unix2vmsmain::unix2vms3858,97332
+ local( $v, $kind )( $v, $kind 3860,97347
+ local( $dir, $rest )( $dir, $rest 3873,97559
+sub dirpartmain::dirpart3886,97730
+ local( $path )( $path 3888,97744
+sub expand_symlinkmain::expand_symlink3902,98076
+ local( $orig_path, $points_to )( $orig_path, $points_to 3904,98097
+ local( $dirpart )( $dirpart 3905,98136
+sub flatten_pathmain::flatten_path3913,98365
+ local( $path )( $path 3915,98384
+ local( $changed )( $changed 3916,98406
+ local( $i )( $i 3917,98430
+ local( $rooted )( $rooted 3919,98446
+ local( $count )( $count 3920,98482
+ local( $orig_path )( $orig_path 3921,98504
+ local( $in )( $in 3932,98741
+ local( @parts )( @parts 3933,98765
+sub fix_packagemain::fix_package3963,99438
+ local( $package )( $package 3965,99456
+sub will_compressmain::will_compress3970,99529
+sub will_splitmain::will_split3981,99859
+sub myflockmain::myflock3989,100001
+ local( $file, $kind )( $file, $kind 3991,100015
+sub t2strmain::t2str4004,100221
+ local( @t )( @t 4006,100233
+
local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst4013,100335
+sub handlermain::handler4022,100583
+ local( $sig )( $sig 4029,100651
+ local( $msg )( $msg 4030,100679
+ local( $package, $filename, $line )( $package, $filename, $line
4031,100737
+sub trap_signalsmain::trap_signals4036,100859
+ local( $sig )( $sig 4038,100878
+sub map_user_groupmain::map_user_group4047,101158
+sub keepmain::keep4069,101537
+ local( $pathi, $path, *keep, *keep_totals, *keep_map, $kind )( $pathi,
$path, *keep, *keep_totals, *keep_map, $kind 4071,101548
+sub alarmmain::alarm4104,102330
+ local( $time_to_sig )( $time_to_sig 4106,102342
+sub chownmain::chown4110,102405
+ local( $uid, $gid, $path )( $uid, $gid, $path 4112,102417
+sub utimemain::utime4116,102494
+ local( $atime, $mtime, $path )( $atime, $mtime, $path 4118,102506
+ local( $old_mode )( $old_mode 4124,102685
+ local( $tmp_mode )( $tmp_mode 4125,102730
+ local( $ret )( $ret 4126,102763
+sub cwdmain::cwd4135,102913
+ local( $lcwd )( $lcwd 4137,102923
+
+ps-src/rfc1245.ps,2478
+/FMversion 12,311
+/FrameDict 17,500
+/FMVERSION 47,1307
+/FMLOCAL 56,1494
+/FMDOCUMENT 73,1766
+/FMBEGINPAGE 95,2279
+/FMENDPAGE 109,2516
+/FMDEFINEFONT 115,2582
+/FMNORMALIZEGRAPHICS 126,2725
+/FMBEGINEPSF 142,2955
+/FMENDEPSF 153,3207
+/setmanualfeed 158,3283
+/max 163,3386
+/min 164,3426
+/inch 165,3466
+/pagedimen 166,3485
+/setpapername 172,3629
+/papersize 190,4214
+/manualpapersize 211,4789
+/desperatepapersize 230,5211
+/savematrix 239,5370
+/restorematrix 242,5425
+/dmatrix 245,5475
+/dpi 246,5495
+/freq 248,5583
+/sangle 249,5658
+/DiacriticEncoding 250,5717
+/.notdef 251,5738
+/.notdef 252,5801
+/.notdef 253,5864
+/.notdef 254,5927
+/.notdef 255,5990
+/numbersign 256,6051
+/parenright 257,6115
+/two 258,6184
+/less 259,6251
+/L 260,6320
+/bracketright 261,6389
+/i 262,6459
+/braceright 263,6529
+/Ntilde 264,6598
+/atilde 265,6668
+/iacute 266,6733
+/ocircumflex 267,6797
+/udieresis 268,6858
+/paragraph 269,6919
+/dieresis 270,6983
+/yen 271,7050
+/ordfeminine 272,7109
+/exclamdown 273,7171
+/guillemotleft 274,7230
+/Otilde 275,7296
+/quoteleft 276,7357
+/fraction 277,7420
+/periodcentered 278,7490
+/Acircumflex 279,7549
+/Icircumflex 280,7610
+/Uacute 281,7680
+/breve 282,7746
+/ReEncode 284,7814
+/graymode 300,8020
+/setpattern 310,8184
+/grayness 331,8725
+/normalize 394,9873
+/dnormalize 397,9942
+/lnormalize 400,10014
+/H 403,10104
+/Z 406,10147
+/X 409,10176
+/V 412,10219
+/N 415,10260
+/M 418,10286
+/E 419,10315
+/D 420,10336
+/O 421,10358
+/L 423,10394
+/Y 430,10489
+/R 439,10588
+/RR 450,10696
+/C 467,10959
+/U 473,11004
+/F 477,11039
+/T 481,11084
+/RF 484,11115
+/TF 488,11164
+/P 495,11219
+/PF 499,11270
+/S 506,11344
+/SF 510,11384
+/B 517,11446
+/BF 521,11505
+/W 538,11714
+/G 573,12382
+/A 582,12525
+/BEGINPRINTCODE 606,12918
+/ENDPRINTCODE 615,13131
+/gn 620,13259
+/cfs 631,13384
+/ic 636,13473
+/ms 658,14285
+/ip 668,14395
+/wh 678,14492
+/bl 684,14607
+/s1 690,14722
+/fl 691,14739
+/hx 698,14887
+/wbytes 709,15055
+/BEGINBITMAPBWc 713,15147
+/BEGINBITMAPGRAYc 716,15198
+/BEGINBITMAP2BITc 719,15251
+/COMMONBITMAPc 722,15304
+/BEGINBITMAPBW 739,15660
+/BEGINBITMAPGRAY 742,15709
+/BEGINBITMAP2BIT 745,15760
+/COMMONBITMAP 748,15811
+/Fmcc 765,16156
+/ngrayt 773,16371
+/nredt 774,16393
+/nbluet 775,16414
+/ngreent 776,16436
+/colorsetup 787,16603
+/fakecolorsetup 814,17370
+/BITMAPCOLOR 826,17636
+/BITMAPCOLORc 839,17926
+/BITMAPGRAY 855,18275
+/BITMAPGRAYc 858,18335
+/ENDBITMAP 861,18397
+/fillprocs 868,18497
+
+prol-src/ordsets.prolog,525
+is_ordset(47,1310
+list_to_ord_set(63,1688
+ord_add_element(71,1867
+ord_del_element(85,2344
+ord_disjoint(100,2783
+ord_intersect(108,2953
+ord_intersection(126,3552
+ord_intersection3(130,3691
+ord_intersection(150,4531
+ord_intersection4(154,4703
+ord_intersection(176,5664
+ord_intersection2(181,5812
+ord_member(200,6318
+ord_seteq(216,6683
+ord_setproduct(225,6971
+ord_subset(240,7377
+ord_subtract(257,7861
+ord_symdiff(265,8054
+ord_union(288,8887
+ord_union4(303,9352
+ord_union(324,10171
+ord_union_all(329,10313
+
+prol-src/natded.prolog,2319
+expandmng(100,2879
+normalize(116,3359
+fresh_vars(125,3716
+subst(138,4134
+normalize_fresh(159,4660
+reduce_subterm(171,5112
+reduce(185,5559
+free_var(196,5903
+free_for(209,6246
+compile_lex(231,6875
+consult_lex:-consult_lex248,7384
+lex(259,7754
+expandsyn(267,8068
+bas_syn(292,8897
+compile_empty:-compile_empty310,9376
+complete(328,10055
+add_active(340,10527
+parse(353,10949
+derived_analyses(364,11341
+build(378,11965
+buildact(392,12521
+mapsyn(412,13542
+add_edge(434,14278
+findcats(447,14758
+normalize_tree(465,15478
+normalize_trees(475,15856
+expandmng_tree(486,16248
+expandmng_trees(496,16614
+cat(511,17013
+subtree(644,21266
+hypothetical_mem(653,21565
+make_coor(667,22130
+start_up:-start_up688,23013
+tokenizeatom(710,23921
+tokenize(720,24348
+isoperator(752,25377
+isoptab(756,25431
+specialsymbol(765,25756
+sstab(771,25861
+parse_cgi(787,26347
+keyvalseq(792,26510
+andkeyvalseq(796,26609
+keyval(799,26688
+valseq(807,26920
+plusvalseq(810,27007
+val(816,27109
+argvals(824,27426
+commaargvals(828,27503
+atomval(833,27578
+atom(836,27640
+action(846,28004
+keyvalcgi(864,28649
+keyvalscgi(865,28670
+outsyn(868,28726
+act(876,29060
+actout(901,29906
+texttreelist(912,30089
+htmltreelist(918,30190
+fitchtreelist(924,30304
+pp_html_table_tree(938,30759
+pp_html_tree(949,31113
+pp_html_trees(988,32381
+pp_html_table_fitch_tree(999,32769
+pp_html_fitch_tree(1017,33672
+removeexp(1129,39002
+splitexp(1142,39490
+pp_exp(1155,39990
+map_word(1168,40249
+pp_exps(1180,40474
+pp_tree(1188,40777
+pp_trees(1216,41807
+pp_word_list(1225,42128
+pp_word(1231,42262
+pp_word_list_rest(1238,42569
+pp_cat(1248,42929
+pp_syn(1255,43196
+pp_syn_paren(1276,43899
+pp_paren(1293,44377
+pp_syn_back(1300,44661
+pp_bas_cat(1311,45001
+writecat(1322,45409
+writesubs(1351,46455
+writesups(1361,46757
+writelistsubs(1371,47090
+pp_lam(1380,47408
+pp_lam_bracket(1398,48022
+pp_lam_paren(1407,48338
+pp_rule(1429,49238
+member(1447,49866
+append_list(1451,49919
+append(1456,50010
+at_least_one_member(1460,50076
+numbervars(1464,50171
+reverse(1467,50209
+select(1471,50290
+select_last(1475,50357
+cat_atoms(1479,50436
+writelist(1485,50524
+write_lex_cat(1492,50676
+writebreaklex(1500,50988
+write_lex(1513,51265
+writebreak(1521,51541
+tt:-tt1531,51713
+mt:-mt1534,51784
+cmt:-cmt1537,51878
+
+pyt-src/server.py,1438
+class Controls:Controls17,358
+ def __init__(18,374
+ def __repr__(24,590
+ def __str__(34,871
+class Server:Server37,934
+ def __init__(38,948
+ def dump(73,2198
+ def __repr__(125,3896
+ def __str__(128,3945
+class User:User131,4014
+ def __init__(132,4026
+ def __repr__(172,5445
+ def __str__(206,6883
+def flag2str(223,7212
+class LabeledEntry(232,7442
+ def bind(234,7525
+ def focus_set(236,7584
+ def __init__(238,7629
+def ButtonBar(245,7909
+def helpwin(255,8280
+class ListEdit(267,8707
+ def __init__(269,8808
+ def handleList(303,10042
+ def handleNew(306,10094
+ def editItem(314,10426
+ def deleteItem(320,10596
+def ConfirmQuit(326,10760
+class ControlEdit(375,12377
+ def PostControls(376,12403
+ def GatherControls(421,13530
+class ServerEdit(512,16264
+ def __init__(513,16289
+ def post(525,16629
+ def gather(543,17191
+ def nosave(547,17304
+ def save(551,17408
+ def refreshPort(556,17509
+ def createWidgets(561,17663
+ def edituser(631,20708
+class UserEdit(645,20921
+ def __init__(646,20944
+ def post(658,21283
+ def gather(676,21841
+ def nosave(680,21950
+ def save(684,22052
+ def createWidgets(689,22151
+class Configure(760,24879
+ def __init__(761,24916
+ def MakeDispose(772,25211
+ def MakeSitelist(786,25706
+ def editsite(794,25949
+ def save(797,26022
+ def nosave(807,26310
+
+tex-src/testenv.tex,52
+\newcommand{\nm}\nm4,77
+\section{blah}blah8,139
+
+tex-src/gzip.texi,303
address@hidden Top,62,2139
address@hidden Copying,80,2652
address@hidden Overview,83,2705
address@hidden Sample,166,7272
address@hidden Invoking gzip,Invoking gzip210,8828
address@hidden Advanced usage,Advanced usage357,13495
address@hidden Environment,420,15207
address@hidden Tapes,437,15768
address@hidden Problems,460,16767
address@hidden Concept Index,Concept Index473,17287
+
+tex-src/texinfo.tex,30626
+\def\texinfoversion{\texinfoversion25,1019
+\def\tie{\tie48,1510
+\def\gloggingall{\gloggingall71,2260
+\def\loggingall{\loggingall72,2329
+\def\onepageout#1{\onepageout98,3266
+\def\croppageout#1{\croppageout114,4016
+\def\cropmarks{\cropmarks141,5076
+\def\pagebody#1{\pagebody143,5123
+\def\ewtop{\ewtop156,5578
+\def\nstop{\nstop157,5642
+\def\ewbot{\ewbot159,5725
+\def\nsbot{\nsbot160,5789
+\def\parsearg #1{\parsearg169,6088
+\def\parseargx{\parseargx171,6166
+\def\parseargline{\parseargline181,6406
+\def\flushcr{\flushcr185,6527
+\newif\ifENV \ENVfalse \def\inENV{\inENV189,6726
+\def\ENVcheck{\ENVcheck190,6790
+\outer\def\begin{\begin197,7037
+\def\beginxxx #1{\beginxxx199,7075
+\def\end{\end207,7330
+\def\endxxx #1{\endxxx209,7358
+\def\errorE#1{\errorE215,7547
+\def\singlespace{\singlespace221,7741
address@hidden@231,7964
+\def\`{\`235,8064
+\def\'{\'236,8076
+\def\mylbrace {\mylbrace240,8124
+\def\myrbrace {\myrbrace241,8157
+\def\:{\:246,8271
+\def\*{\*249,8325
+\def\.{\.252,8401
+\def\w#1{\w257,8632
+\def\group{\group267,9115
+ \def\Egroup{\Egroup272,9279
+\def\need{\need288,9721
+\def\needx#1{\needx299,9998
+\def\dots{\dots338,11384
+\def\page{\page342,11448
+\def\exdent{\exdent352,11775
+\def\exdentyyy #1{\exdentyyy353,11808
+\def\nofillexdent{\nofillexdent356,11952
+\def\nofillexdentyyy #1{\nofillexdentyyy357,11997
+\def\include{\include364,12181
+\def\includezzz #1{\includezzz365,12216
+\def\thisfile{\thisfile368,12267
+\def\center{\center372,12330
+\def\centerzzz #1{\centerzzz373,12363
+\def\sp{\sp379,12505
+\def\spxxx #1{\spxxx380,12530
+\def\comment{\comment386,12704
+\def\commentxxx #1{\commentxxx389,12801
+\def\ignoresections{\ignoresections395,12970
+\let\chapter=\relax=\relax396,12992
+\let\section=\relax=\relax405,13237
+\let\subsection=\relax=\relax408,13298
+\let\subsubsection=\relax=\relax409,13321
+\let\appendix=\relax=\relax410,13347
+\let\appendixsec=\relaxsec=\relax411,13368
+\let\appendixsection=\relaxsection=\relax412,13392
+\let\appendixsubsec=\relaxsubsec=\relax413,13420
+\let\appendixsubsection=\relaxsubsection=\relax414,13447
+\let\appendixsubsubsec=\relaxsubsubsec=\relax415,13478
+\let\appendixsubsubsection=\relaxsubsubsection=\relax416,13508
+\def\ignore{\ignore422,13610
+\long\def\ignorexxx #1\end ignore{\ignorexxx426,13750
+\def\direntry{\direntry428,13809
+\long\def\direntryxxx #1\end direntry{\direntryxxx429,13848
+\def\ifset{\ifset433,13958
+\def\ifsetxxx #1{\ifsetxxx435,14016
+\def\Eifset{\Eifset439,14143
+\def\ifsetfail{\ifsetfail440,14157
+\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx441,14213
+\def\ifclear{\ifclear443,14274
+\def\ifclearxxx #1{\ifclearxxx445,14336
+\def\Eifclear{\Eifclear449,14467
+\def\ifclearfail{\ifclearfail450,14483
+\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx451,14543
+\def\set{\set455,14694
+\def\setxxx #1{\setxxx456,14721
+\def\clear{\clear459,14783
+\def\clearxxx #1{\clearxxx460,14814
+\def\iftex{\iftex465,14931
+\def\Eiftex{\Eiftex466,14944
+\def\ifinfo{\ifinfo467,14958
+\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx468,15008
+\long\def\menu #1\end menu{\menu470,15067
+\def\asis#1{\asis471,15096
+\def\math#1{\math484,15639
+\def\node{\node486,15683
+\def\nodezzz#1{\nodezzz487,15721
+\def\nodexxx[#1,#2]{\nodexxx[488,15752
+\def\donoderef{\donoderef491,15814
+\def\unnumbnoderef{\unnumbnoderef495,15935
+\def\appendixnoderef{\appendixnoderef499,16066
+\expandafter\expandafter\expandafter\appendixsetref{setref500,16112
+\let\refill=\relaxill=\relax503,16201
+\def\setfilename{\setfilename508,16415
+\outer\def\bye{\bye517,16661
+\def\inforef #1{\inforef519,16717
+\def\inforefzzz #1,#2,#3,#4**{\inforefzzz520,16755
+\def\losespace #1{\losespace522,16852
+\def\sf{\sf531,17056
+\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10557,17851
+\font\deftt=cmtt10 scaled \magstep1tt=cmtt10558,17897
+\def\df{\df559,17933
+\def\resetmathfonts{\resetmathfonts634,20527
+\def\textfonts{\textfonts647,21116
+\def\chapfonts{\chapfonts652,21331
+\def\secfonts{\secfonts657,21547
+\def\subsecfonts{\subsecfonts662,21752
+\def\indexfonts{\indexfonts667,21969
+\def\smartitalicx{\smartitalicx690,22701
+\def\smartitalic#1{\smartitalic691,22777
+\let\cite=\smartitalic=\smartitalic697,22922
+\def\b#1{\b699,22946
+\def\t#1{\t702,22981
+\def\samp #1{\samp705,23133
+\def\key #1{\key706,23166
+\def\ctrl #1{\ctrl707,23227
+\def\tclose#1{\tclose715,23429
+\def\ {\719,23595
+\def\xkey{\xkey727,23864
+\def\kbdfoo#1#2#3\par{\kbdfoo728,23880
+\def\dmn#1{\dmn737,24181
+\def\kbd#1{\kbd739,24208
+\def\l#1{\l741,24265
+\def\r#1{\r743,24294
+\def\sc#1{\sc745,24362
+\def\ii#1{\ii746,24405
+\def\titlefont#1{\titlefont754,24638
+\def\titlepage{\titlepage760,24741
+ \def\subtitlefont{\subtitlefont765,24968
+ \def\authorfont{\authorfont767,25052
+ \def\title{\title773,25262
+ \def\titlezzz##1{\titlezzz774,25297
+ \def\subtitle{\subtitle782,25612
+ \def\subtitlezzz##1{\subtitlezzz783,25653
+ \def\author{\author786,25771
+ \def\authorzzz##1{\authorzzz787,25808
+ \def\page{\page793,26099
+\def\Etitlepage{\Etitlepage803,26268
+\def\finishtitlepage{\finishtitlepage816,26656
+\def\evenheading{\evenheading845,27664
+\def\oddheading{\oddheading846,27707
+\def\everyheading{\everyheading847,27748
+\def\evenfooting{\evenfooting849,27794
+\def\oddfooting{\oddfooting850,27837
+\def\everyfooting{\everyfooting851,27878
+\def\headings #1 {\headings892,29570
+\def\HEADINGSoff{\HEADINGSoff894,29619
+\def\HEADINGSdouble{\HEADINGSdouble903,30046
+\def\HEADINGSsingle{\HEADINGSsingle913,30366
+\def\HEADINGSon{\HEADINGSon921,30587
+\def\HEADINGSafter{\HEADINGSafter923,30621
+\def\HEADINGSdoublex{\HEADINGSdoublex925,30716
+\def\HEADINGSsingleafter{\HEADINGSsingleafter932,30904
+\def\HEADINGSsinglex{\HEADINGSsinglex933,30965
+\def\today{\today942,31240
+\def\thistitle{\thistitle957,31785
+\def\settitle{\settitle958,31810
+\def\settitlezzz #1{\settitlezzz959,31847
+\def\internalBitem{\internalBitem991,32777
+\def\internalBitemx{\internalBitemx992,32827
+\def\internalBxitem "#1"{\internalBxitem994,32872
+\def\internalBxitemx "#1"{\internalBxitemx995,32952
+\def\internalBkitem{\internalBkitem997,33027
+\def\internalBkitemx{\internalBkitemx998,33079
+\def\kitemzzz #1{\kitemzzz1000,33126
+\def\xitemzzz #1{\xitemzzz1003,33228
+\def\itemzzz #1{\itemzzz1006,33331
+\def\item{\item1036,34402
+\def\itemx{\itemx1037,34453
+\def\kitem{\kitem1038,34506
+\def\kitemx{\kitemx1039,34559
+\def\xitem{\xitem1040,34614
+\def\xitemx{\xitemx1041,34667
+\def\description{\description1044,34777
+\def\table{\table1046,34827
+\def\ftable{\ftable1051,34971
+\def\Eftable{\Eftable1055,35117
+\def\vtable{\vtable1058,35186
+\def\Evtable{\Evtable1062,35332
+\def\dontindex #1{\dontindex1065,35401
+\def\fnitemindex #1{\fnitemindex1066,35421
+\def\vritemindex #1{\vritemindex1067,35466
+\def\tablez #1#2#3#4#5#6{\tablez1073,35615
+\def\Edescription{\Edescription1076,35673
+\def\itemfont{\itemfont1081,35875
+\def\Etable{\Etable1089,36101
+\def\itemize{\itemize1102,36425
+\def\itemizezzz #1{\itemizezzz1104,36461
+\def\itemizey #1#2{\itemizey1109,36556
+\def#2{1118,36802
+\def\itemcontents{\itemcontents1119,36843
+\def\bullet{\bullet1122,36891
+\def\minus{\minus1123,36918
+\def\frenchspacing{\frenchspacing1127,37026
+\def\splitoff#1#2\endmark{\splitoff1133,37251
+\def\enumerate{\enumerate1139,37481
+\def\enumeratezzz #1{\enumeratezzz1140,37520
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1141,37573
+ \def\thearg{\thearg1145,37720
+ \ifx\thearg\empty \def\thearg{\thearg1146,37739
+\def\numericenumerate{\numericenumerate1183,39073
+\def\lowercaseenumerate{\lowercaseenumerate1189,39203
+\def\uppercaseenumerate{\uppercaseenumerate1202,39550
+\def\startenumeration#1{\startenumeration1218,40040
+\def\alphaenumerate{\alphaenumerate1226,40222
+\def\capsenumerate{\capsenumerate1227,40257
+\def\Ealphaenumerate{\Ealphaenumerate1228,40291
+\def\Ecapsenumerate{\Ecapsenumerate1229,40325
+\def\itemizeitem{\itemizeitem1233,40405
+\def\newindex #1{\newindex1258,41262
+\def\defindex{\defindex1267,41551
+\def\newcodeindex #1{\newcodeindex1271,41659
+\def\defcodeindex{\defcodeindex1278,41919
+\def\synindex #1 #2 {\synindex1282,42099
+\def\syncodeindex #1 #2 {\syncodeindex1291,42439
+\def\doindex#1{\doindex1308,43118
+\def\singleindexer #1{\singleindexer1309,43177
+\def\docodeindex#1{\docodeindex1312,43289
+\def\singlecodeindexer #1{\singlecodeindexer1313,43356
+\def\indexdummies{\indexdummies1315,43414
+\def\_{\_1316,43434
+\def\w{\w1317,43462
+\def\bf{\bf1318,43489
+\def\rm{\rm1319,43518
+\def\sl{\sl1320,43547
+\def\sf{\sf1321,43576
+\def\tt{\tt1322,43604
+\def\gtr{\gtr1323,43632
+\def\less{\less1324,43662
+\def\hat{\hat1325,43694
+\def\char{\char1326,43724
+\def\TeX{\TeX1327,43756
+\def\dots{\dots1328,43786
+\def\copyright{\copyright1329,43819
+\def\tclose##1{\tclose1330,43862
+\def\code##1{\code1331,43907
+\def\samp##1{\samp1332,43948
+\def\t##1{\t1333,43989
+\def\r##1{\r1334,44024
+\def\i##1{\i1335,44059
+\def\b##1{\b1336,44094
+\def\cite##1{\cite1337,44129
+\def\key##1{\key1338,44170
+\def\file##1{\file1339,44209
+\def\var##1{\var1340,44250
+\def\kbd##1{\kbd1341,44289
+\def\indexdummyfont#1{\indexdummyfont1346,44445
+\def\indexdummytex{\indexdummytex1347,44471
+\def\indexdummydots{\indexdummydots1348,44495
+\def\indexnofonts{\indexnofonts1350,44521
+\let\w=\indexdummyfontdummyfont1351,44541
+\let\t=\indexdummyfontdummyfont1352,44564
+\let\r=\indexdummyfontdummyfont1353,44587
+\let\i=\indexdummyfontdummyfont1354,44610
+\let\b=\indexdummyfontdummyfont1355,44633
+\let\emph=\indexdummyfontdummyfont1356,44656
+\let\strong=\indexdummyfontdummyfont1357,44682
+\let\cite=\indexdummyfont=\indexdummyfont1358,44710
+\let\sc=\indexdummyfontdummyfont1359,44736
+\let\tclose=\indexdummyfontdummyfont1363,44908
+\let\code=\indexdummyfontdummyfont1364,44936
+\let\file=\indexdummyfontdummyfont1365,44962
+\let\samp=\indexdummyfontdummyfont1366,44988
+\let\kbd=\indexdummyfontdummyfont1367,45014
+\let\key=\indexdummyfontdummyfont1368,45039
+\let\var=\indexdummyfontdummyfont1369,45064
+\let\TeX=\indexdummytexdummytex1370,45089
+\let\dots=\indexdummydotsdummydots1371,45113
+\let\indexbackslash=0 %overridden during \printindex.backslash=01381,45365
+\def\doind #1#2{\doind1383,45421
+{\indexdummies % Must do this here, since \bf, etc expand at this
stagedummies1385,45464
+\def\rawbackslashxx{\rawbackslashxx1388,45604
+{\indexnofontsnofonts1393,45866
+\def\dosubind #1#2#3{\dosubind1404,46177
+{\indexdummies % Must do this here, since \bf, etc expand at this
stagedummies1406,46225
+\def\rawbackslashxx{\rawbackslashxx1409,46329
+{\indexnofontsnofonts1413,46483
+\def\findex {\findex1442,47414
+\def\kindex {\kindex1443,47437
+\def\cindex {\cindex1444,47460
+\def\vindex {\vindex1445,47483
+\def\tindex {\tindex1446,47506
+\def\pindex {\pindex1447,47529
+\def\cindexsub {\cindexsub1449,47553
+\def\printindex{\printindex1461,47880
+\def\doprintindex#1{\doprintindex1463,47921
+ \def\indexbackslash{\indexbackslash1480,48406
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1481,48445
+\def\initial #1{\initial1516,49517
+\def\entry #1#2{\entry1522,49724
+ \null\nobreak\indexdotfill % Have leaders before the page
number.dotfill1539,50371
+\def\indexdotfill{\indexdotfill1548,50699
+\def\primary #1{\primary1551,50805
+\def\secondary #1#2{\secondary1555,50887
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1558,50969
+\newbox\partialpageialpage1565,51142
+\def\begindoublecolumns{\begindoublecolumns1571,51300
+ \output={\global\setbox\partialpage=ialpage=1572,51336
+\def\enddoublecolumns{\enddoublecolumns1576,51524
+\def\doublecolumnout{\doublecolumnout1579,51609
+ address@hidden \advance\dimen@ by-\ht\partialpageialpage1580,51678
+\def\pagesofar{\pagesofar1583,51856
+\def\balancecolumns{\balancecolumns1587,52093
+ address@hidden \advance\availdimen@ by-\ht\partialpageialpage1593,52264
+ address@hidden \advance\dimen@ by-\ht\partialpageialpage1599,52525
+\newcount \appendixno \appendixno = address@hidden,53430
+\def\appendixletter{\appendixletter1627,53471
+\def\opencontents{\opencontents1631,53574
+\def\thischapter{\thischapter1636,53755
+\def\seccheck#1{\seccheck1637,53793
+\def\chapternofonts{\chapternofonts1642,53897
+\def\result{\result1645,53972
+\def\equiv{\equiv1646,54007
+\def\expansion{\expansion1647,54040
+\def\print{\print1648,54081
+\def\TeX{\TeX1649,54114
+\def\dots{\dots1650,54143
+\def\copyright{\copyright1651,54174
+\def\tt{\tt1652,54215
+\def\bf{\bf1653,54242
+\def\w{\w1654,54270
+\def\less{\less1655,54295
+\def\gtr{\gtr1656,54326
+\def\hat{\hat1657,54355
+\def\char{\char1658,54384
+\def\tclose##1{\tclose1659,54415
+\def\code##1{\code1660,54459
+\def\samp##1{\samp1661,54499
+\def\r##1{\r1662,54539
+\def\b##1{\b1663,54573
+\def\key##1{\key1664,54607
+\def\file##1{\file1665,54645
+\def\kbd##1{\kbd1666,54685
+\def\i##1{\i1668,54793
+\def\cite##1{\cite1669,54827
+\def\var##1{\var1670,54867
+\def\emph##1{\emph1671,54905
+\def\dfn##1{\dfn1672,54945
+\def\thischaptername{\thischaptername1675,54986
+\outer\def\chapter{\chapter1676,55025
+\def\chapterzzz #1{\chapterzzz1677,55066
+{\chapternofonts%nofonts%1686,55462
+\global\let\section = \numberedsec=1691,55615
+\global\let\subsection = \numberedsubsec=1692,55650
+\global\let\subsubsection = \numberedsubsubsec=1693,55691
+\outer\def\appendix{\appendix1696,55742
+\def\appendixzzz #1{\appendixzzz1697,55785
+\global\advance \appendixno by 1 \message{no1699,55862
+\chapmacro {#1}{Appendix \appendixletter}letter1700,55931
+\xdef\thischapter{Appendix \appendixletter:
\noexpand\thischaptername}letter:1703,56024
+{\chapternofonts%nofonts%1704,56096
+ {#1}{Appendix \appendixletter}letter1706,56152
+\appendixnoderef %noderef1709,56252
+\global\let\section = \appendixsec=1710,56271
+\global\let\subsection = \appendixsubsec=1711,56306
+\global\let\subsubsection = \appendixsubsubsec=1712,56347
+\outer\def\top{\top1715,56398
+\outer\def\unnumbered{\unnumbered1716,56438
+\def\unnumberedzzz #1{\unnumberedzzz1717,56485
+{\chapternofonts%nofonts%1721,56648
+\global\let\section = \unnumberedsec=1726,56798
+\global\let\subsection = \unnumberedsubsec=1727,56835
+\global\let\subsubsection = \unnumberedsubsubsec=1728,56878
+\outer\def\numberedsec{\numberedsec1731,56931
+\def\seczzz #1{\seczzz1732,56972
+{\chapternofonts%nofonts%1735,57128
+\outer\def\appendixsection{\appendixsection1744,57314
+\outer\def\appendixsec{\appendixsec1745,57371
+\def\appendixsectionzzz #1{\appendixsectionzzz1746,57424
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1748,57536
+{\chapternofonts%nofonts%1749,57604
+{#1}{\appendixletter}letter1751,57660
+\appendixnoderef %noderef1754,57760
+\outer\def\unnumberedsec{\unnumberedsec1758,57800
+\def\unnumberedseczzz #1{\unnumberedseczzz1759,57853
+{\chapternofonts%nofonts%1761,57948
+\outer\def\numberedsubsec{\numberedsubsec1769,58116
+\def\numberedsubseczzz #1{\numberedsubseczzz1770,58171
+{\chapternofonts%nofonts%1773,58350
+\outer\def\appendixsubsec{\appendixsubsec1782,58554
+\def\appendixsubseczzz #1{\appendixsubseczzz1783,58609
+\subsecheading {#1}{\appendixletter}letter1785,58731
+{\chapternofonts%nofonts%1786,58796
+{#1}{\appendixletter}letter1788,58855
+\appendixnoderef %noderef1791,58970
+\outer\def\unnumberedsubsec{\unnumberedsubsec1795,59010
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1796,59069
+{\chapternofonts%nofonts%1798,59170
+\outer\def\numberedsubsubsec{\numberedsubsubsec1806,59341
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1807,59402
+{\chapternofonts%nofonts%1811,59599
+\outer\def\appendixsubsubsec{\appendixsubsubsec1822,59832
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1823,59893
+ {\appendixletter}letter1826,60032
+{\chapternofonts%nofonts%1827,60098
+ {\appendixletter}letter1829,60163
+\appendixnoderef %noderef1833,60297
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1837,60337
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1838,60402
+{\chapternofonts%nofonts%1840,60509
+\def\infotop{\infotop1850,60838
+\def\infounnumbered{\infounnumbered1851,60876
+\def\infounnumberedsec{\infounnumberedsec1852,60921
+\def\infounnumberedsubsec{\infounnumberedsubsec1853,60972
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1854,61029
+\def\infoappendix{\infoappendix1856,61093
+\def\infoappendixsec{\infoappendixsec1857,61134
+\def\infoappendixsubsec{\infoappendixsubsec1858,61181
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1859,61234
+\def\infochapter{\infochapter1861,61294
+\def\infosection{\infosection1862,61333
+\def\infosubsection{\infosubsection1863,61372
+\def\infosubsubsection{\infosubsubsection1864,61417
+\global\let\section = \numberedsec=1869,61654
+\global\let\subsection = \numberedsubsec=1870,61689
+\global\let\subsubsection = \numberedsubsubsec=1871,61730
+\def\majorheading{\majorheading1885,62237
+\def\majorheadingzzz #1{\majorheadingzzz1886,62282
+\def\chapheading{\chapheading1892,62515
+\def\chapheadingzzz #1{\chapheadingzzz1893,62558
+\def\heading{\heading1898,62753
+\def\subheading{\subheading1900,62790
+\def\subsubheading{\subsubheading1902,62833
+\def\dobreak#1#2{\dobreak1909,63110
+\def\setchapterstyle #1 {\setchapterstyle1911,63188
+\def\chapbreak{\chapbreak1918,63443
+\def\chappager{\chappager1919,63493
+\def\chapoddpage{\chapoddpage1920,63531
+\def\setchapternewpage #1 {\setchapternewpage1922,63610
+\def\CHAPPAGoff{\CHAPPAGoff1924,63667
+\def\CHAPPAGon{\CHAPPAGon1928,63761
+\global\def\HEADINGSon{\HEADINGSon1931,63852
+\def\CHAPPAGodd{\CHAPPAGodd1933,63894
+\global\def\HEADINGSon{\HEADINGSon1936,63990
+\def\CHAPFplain{\CHAPFplain1940,64044
+\def\chfplain #1#2{\chfplain1944,64136
+\def\unnchfplain #1{\unnchfplain1955,64359
+\def\unnchfopen #1{\unnchfopen1963,64588
+\def\chfopen #1#2{\chfopen1969,64796
+\def\CHAPFopen{\CHAPFopen1974,64940
+\def\subsecheadingbreak{\subsecheadingbreak1981,65158
+\def\secheadingbreak{\secheadingbreak1984,65287
+\def\secheading #1#2#3{\secheading1992,65569
+\def\plainsecheading #1{\plainsecheading1993,65625
+\def\secheadingi #1{\secheadingi1994,65668
+\def\subsecheading #1#2#3#4{\subsecheading2005,66036
+\def\subsecheadingi #1{\subsecheadingi2006,66103
+\def\subsubsecfonts{\subsubsecfonts2013,66400
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2016,66523
+\def\subsubsecheadingi #1{\subsubsecheadingi2017,66601
+\def\startcontents#1{\startcontents2031,67073
+ \unnumbchapmacro{#1}\def\thischapter{\thischapter2039,67346
+\outer\def\contents{\contents2048,67705
+\outer\def\summarycontents{\summarycontents2056,67849
+ \def\secentry ##1##2##3##4{\secentry2066,68220
+ \def\unnumbsecentry ##1##2{\unnumbsecentry2067,68255
+ \def\subsecentry ##1##2##3##4##5{\subsecentry2068,68290
+ \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2069,68331
+ \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2070,68369
+ \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2071,68416
+\def\chapentry#1#2#3{\chapentry2084,68850
+\def\shortchapentry#1#2#3{\shortchapentry2087,68967
+ {#2\labelspace #1}space2090,69077
+\def\unnumbchapentry#1#2{\unnumbchapentry2093,69131
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2094,69178
+\def\secentry#1#2#3#4{\secentry2101,69342
+\def\unnumbsecentry#1#2{\unnumbsecentry2102,69401
+\def\subsecentry#1#2#3#4#5{\subsecentry2105,69462
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2106,69532
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2109,69606
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2110,69640
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2111,69691
+\def\dochapentry#1#2{\dochapentry2122,70065
+\def\dosecentry#1#2{\dosecentry2137,70670
+\def\dosubsecentry#1#2{\dosubsecentry2144,70848
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2151,71033
+\def\labelspace{\labelspace2159,71284
+\def\dopageno#1{\dopageno2161,71319
+\def\doshortpageno#1{\doshortpageno2162,71345
+\def\chapentryfonts{\chapentryfonts2164,71377
+\def\secentryfonts{\secentryfonts2165,71412
+\def\point{\point2191,72371
+\def\result{\result2193,72392
+\def\expansion{\expansion2194,72465
+\def\print{\print2195,72536
+\def\equiv{\equiv2197,72603
+\def\error{\error2217,73376
+\def\tex{\tex2223,73605
address@hidden@2241,73988
+\gdef\sepspaces{\def {\ }}}\2264,74720
+\def\aboveenvbreak{\aboveenvbreak2267,74802
+\def\afterenvbreak{\afterenvbreak2271,74968
+\def\ctl{\ctl2285,75479
+\def\ctr{\ctr2286,75551
+\def\cbl{\cbl2287,75590
+\def\cbr{\cbr2288,75630
+\def\carttop{\carttop2289,75669
+\def\cartbot{\cartbot2292,75777
+\long\def\cartouche{\cartouche2298,75917
+\def\Ecartouche{\Ecartouche2325,76705
+\def\lisp{\lisp2337,76840
+\def\Elisp{\Elisp2347,77187
+\def\next##1{\next2359,77513
+\def\Eexample{\Eexample2363,77555
+\def\Esmallexample{\Esmallexample2366,77602
+\def\smalllispx{\smalllispx2372,77780
+\def\Esmalllisp{\Esmalllisp2382,78134
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2395,78490
+\def\next##1{\next2396,78547
+\def\display{\display2400,78627
+\def\Edisplay{\Edisplay2409,78946
+\def\next##1{\next2421,79257
+\def\format{\format2425,79360
+\def\Eformat{\Eformat2433,79656
+\def\next##1{\next2436,79745
+\def\flushleft{\flushleft2440,79797
+\def\Eflushleft{\Eflushleft2450,80168
+\def\next##1{\next2453,80261
+\def\flushright{\flushright2455,80283
+\def\Eflushright{\Eflushright2465,80655
+\def\next##1{\next2469,80786
+\def\quotation{\quotation2473,80844
+\def\Equotation{\Equotation2479,81036
+\def\setdeffont #1 {\setdeffont2492,81434
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2494,81480
+\newskip\defargsindent \defargsindent=50ptargsindent2495,81523
+\newskip\deftypemargin \deftypemargin=12pttypemargin2496,81566
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2497,81609
+\def\activeparens{\activeparens2502,81807
+\def\opnr{\opnr2528,83019
+\def\lbrb{\lbrb2529,83084
+\def\defname #1#2{\defname2535,83285
+\advance\dimen2 by -\defbodyindentbodyindent2539,83403
+\advance\dimen3 by -\defbodyindentbodyindent2541,83457
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2543,83511
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for
continuationsargsindent2545,83653
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2546,83728
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2553,84097
+\advance\leftskip by -\defbodyindentbodyindent2556,84231
+\exdentamount=\defbodyindentbodyindent2557,84268
+\def\defparsebody #1#2#3{\defparsebody2567,84627
+\def#1{2571,84811
+\def#2{2572,84847
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2574,84919
+\exdentamount=\defbodyindentbodyindent2575,84993
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2580,85097
+\def#1{2584,85258
+\def#2##1 {2585,85294
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2587,85377
+\exdentamount=\defbodyindentbodyindent2588,85451
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2591,85536
+\def#1{2595,85697
+\def#2##1 ##2 {2596,85733
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2599,85833
+\exdentamount=\defbodyindentbodyindent2600,85907
+\def\defvarparsebody #1#2#3{\defvarparsebody2607,86178
+\def#1{2611,86365
+\def#2{2612,86401
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2614,86460
+\exdentamount=\defbodyindentbodyindent2615,86534
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2620,86625
+\def#1{2624,86784
+\def#2##1 {2625,86820
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2627,86890
+\exdentamount=\defbodyindentbodyindent2628,86964
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2631,87036
+\def#1{2635,87200
+\def#2##1 ##2 {2636,87236
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2639,87323
+\exdentamount=\defbodyindentbodyindent2640,87397
+\def\defunargs #1{\defunargs2663,88157
+\def\deftypefunargs #1{\deftypefunargs2675,88539
+\def\deffn{\deffn2689,88921
+\def\deffnheader #1#2#3{\deffnheader2691,88978
+\begingroup\defname {name2692,89026
+\def\defun{\defun2698,89171
+\def\defunheader #1#2{\defunheader2700,89224
+\begingroup\defname {name2701,89299
+\defunargs {unargs2702,89335
+\def\deftypefun{\deftypefun2708,89483
+\def\deftypefunheader #1#2{\deftypefunheader2711,89605
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2713,89714
+\begingroup\defname {name2715,89806
+\deftypefunargs {typefunargs2716,89852
+\def\deftypefn{\deftypefn2722,90023
+\def\deftypefnheader #1#2#3{\deftypefnheader2725,90172
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2727,90308
+\begingroup\defname {name2729,90401
+\deftypefunargs {typefunargs2730,90441
+\def\defmac{\defmac2736,90562
+\def\defmacheader #1#2{\defmacheader2738,90619
+\begingroup\defname {name2739,90695
+\defunargs {unargs2740,90728
+\def\defspec{\defspec2746,90852
+\def\defspecheader #1#2{\defspecheader2748,90913
+\begingroup\defname {name2749,90990
+\defunargs {unargs2750,91030
+\def\deffnx #1 {\deffnx2757,91225
+\def\defunx #1 {\defunx2758,91282
+\def\defmacx #1 {\defmacx2759,91339
+\def\defspecx #1 {\defspecx2760,91398
+\def\deftypefnx #1 {\deftypefnx2761,91459
+\def\deftypeunx #1 {\deftypeunx2762,91524
+\def\defop #1 {\defop2768,91670
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2769,91705
+\def\defopheader #1#2#3{\defopheader2771,91759
+\begingroup\defname {name2773,91848
+\defunargs {unargs2774,91894
+\def\defmethod{\defmethod2779,91955
+\def\defmethodheader #1#2#3{\defmethodheader2781,92028
+\begingroup\defname {name2783,92116
+\defunargs {unargs2784,92156
+\def\defcv #1 {\defcv2789,92230
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2790,92265
+\def\defcvarheader #1#2#3{\defcvarheader2792,92324
+\begingroup\defname {name2794,92410
+\defvarargs {varargs2795,92456
+\def\defivar{\defivar2800,92529
+\def\defivarheader #1#2#3{\defivarheader2802,92592
+\begingroup\defname {name2804,92678
+\defvarargs {varargs2805,92729
+\def\defopx #1 {\defopx2811,92878
+\def\defmethodx #1 {\defmethodx2812,92935
+\def\defcvx #1 {\defcvx2813,93000
+\def\defivarx #1 {\defivarx2814,93057
+\def\defvarargs #1{\defvarargs2821,93328
+\def\defvr{\defvr2827,93472
+\def\defvrheader #1#2#3{\defvrheader2829,93527
+\begingroup\defname {name2830,93575
+\def\defvar{\defvar2834,93660
+\def\defvarheader #1#2{\defvarheader2836,93720
+\begingroup\defname {name2837,93791
+\defvarargs {varargs2838,93827
+\def\defopt{\defopt2843,93893
+\def\defoptheader #1#2{\defoptheader2845,93953
+\begingroup\defname {name2846,94024
+\defvarargs {varargs2847,94063
+\def\deftypevar{\deftypevar2852,94120
+\def\deftypevarheader #1#2{\deftypevarheader2855,94236
+\begingroup\defname {name2857,94319
+\def\deftypevr{\deftypevr2864,94493
+\def\deftypevrheader #1#2#3{\deftypevrheader2866,94564
+\begingroup\defname {name2867,94616
+\def\defvrx #1 {\defvrx2875,94853
+\def\defvarx #1 {\defvarx2876,94910
+\def\defoptx #1 {\defoptx2877,94969
+\def\deftypevarx #1 {\deftypevarx2878,95028
+\def\deftypevrx #1 {\deftypevrx2879,95095
+\def\deftpargs #1{\deftpargs2884,95244
+\def\deftp{\deftp2888,95324
+\def\deftpheader #1#2#3{\deftpheader2890,95379
+\begingroup\defname {name2891,95427
+\def\deftpx #1 {\deftpx2896,95586
+\def\setref#1{\setref2907,95907
+\def\unnumbsetref#1{\unnumbsetref2912,96021
+\def\appendixsetref#1{\appendixsetref2917,96128
+\def\pxref#1{\pxref2928,96539
+\def\xref#1{\xref2929,96575
+\def\ref#1{\ref2930,96610
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2931,96640
+\def\printedmanual{\printedmanual2932,96683
+\def\printednodename{\printednodename2933,96721
+\def\printednodename{\printednodename2938,96846
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2953,97479
+\refx{x2956,97557
+\def\dosetq #1#2{\dosetq2964,97777
+\def\internalsetq #1#2{\internalsetq2972,98035
+\def\Ypagenumber{\Ypagenumber2976,98136
+\def\Ytitle{\Ytitle2978,98162
+\def\Ynothing{\Ynothing2980,98189
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2982,98206
+\def\Yappendixletterandtype{\Yappendixletterandtype2991,98522
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2992,98552
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno
%no.\the\secno2993,98607
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno
%no.\the\secno.\the\subsecno2995,98711
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
%no.\the\secno.\the\subsecno.\the\subsubsecno2997,98782
+ \def\linenumber{\linenumber3008,99121
+\def\refx#1#2{\refx3014,99305
+\def\xrdef #1#2{\xrdef3036,99931
+\def\readauxfile{\readauxfile3039,100016
+\def\supereject{\supereject3109,101797
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3130,102482
+\def\openindices{\openindices3138,102668
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3150,102893
+\parindent = \defaultparindentaultparindent3151,102945
+\def\smallbook{\smallbook3174,103669
+\global\def\Esmallexample{\Esmallexample3191,104096
+\def\afourpaper{\afourpaper3195,104187
+\def\finalout{\finalout3223,104995
+\def\normaldoublequote{\normaldoublequote3234,105256
+\def\normaltilde{\normaltilde3235,105282
+\def\normalcaret{\normalcaret3236,105302
+\def\normalunderscore{\normalunderscore3237,105322
+\def\normalverticalbar{\normalverticalbar3238,105347
+\def\normalless{\normalless3239,105373
+\def\normalgreater{\normalgreater3240,105392
+\def\normalplus{\normalplus3241,105414
+\def\ifusingtt#1#2{\ifusingtt3252,105906
+\def\activedoublequote{\activedoublequote3260,106234
+\def~{~3263,106320
+\def^{^3266,106381
+\def_{_3269,106420
+\def\_{\_3271,106494
+\def\lvvmode{\lvvmode3278,106831
+\def|{|3281,106881
+\def<{<3284,106944
+\def>{>3287,107001
+\def+{+3289,107039
+\def\turnoffactive{\turnoffactive3295,107200
+\global\def={=3306,107486
+\def\normalbackslash{\normalbackslash3320,107868
+
+c-src//c.c,76
+T f(1,0
+}T i;2,14
+void bar(5,69
+int foobar(6,94
+interface_locate(9,131
+
+c.c,1663
+my_printf 135,
+void fatala 138,
+max 141,
+struct bar 143,
+__attribute__ ((always_inline)) max 147,
+struct foo150,
+char stack[stack155,
+struct S 156,
+} wait_status_ptr_t 161,
+Some_Class A 162,
+typedef T1 T3 163,
+T3 z 164,
+typedef int more_aligned_int 165,
+struct S __attribute__ ((vector_size (16))) foo;166,
+int foo 167,
+char *__attribute__((aligned(8))) *f;f168,
+int i 169,
+extern void foobar 170,
+typedef struct cacheLRUEntry_s172,
+__attribute__ ((packed)) cacheLRUEntry_t;177,
+struct foo 178,
+ f1 183,
+void f2 184,
+int x 188,
+struct foo 189,
+short array[array190,
+int f193,
+DEAFUN 196,
+XDEFUN 203,
+DEFUN ("x-get-selection-internal",
Fx_get_selection_internal,x-get-selection-internal206,
+ Fx_get_selection_internal,x-get-selection-internal212,
+ Fy_get_selection_internal,y-get-selection-internal216,
+defun_func1(218,
+DEFUN_func2(220,
+typedef int bool;222,
+bool funcboo 223,
+struct my_struct 226,
+typedef struct my_struct my_typedef;228,
+int bla 229,
+a(234,
+int func1237,
+static struct cca_control init_control 239,
+static tpcmd rbtp 240,
+static byte ring1 241,
+static byte ring2 242,
+request request 243,
+int func2 246,
+ aaa;249,
+ bbb;251,
+struct sss1 252,
+struct sss2253,
+ struct ss3255,
+struct a b;259,
+struct aa *b;b260,
+ **b;b262,
+caccacacca 263,
+a 267,
+ typedef struct aa 269,
+ typedef struct aa {} aaa;269,
+static void inita 271,
+node *lasta lasta272,
+b 273,
+ typedef int bb;275,
+static void initb 277,
+node *lastb lastb278,
+typedef enum { REG_ENOSYS 279,
+typedef enum { REG_ENOSYS = -1, aa 279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279,
+
+c-src/a/b/b.c,18
+#define this 1,0
+
+../c/c.web,20
+#define questo 34,
+
+y-src/parse.y,738
+#define obstack_chunk_alloc 46,1111
+#define obstack_chunk_free 47,1149
+VOIDSTAR parse_hash;63,1400
+unsigned char fnin[fnin67,1519
+#define YYSTYPE 71,1617
+typedef struct node *YYSTYPE;YYSTYPE72,1648
+YYSTYPE parse_return;73,1678
+char *instr;instr80,1790
+int parse_error 81,1803
+line:line86,1862
+exp:exp94,1975
+exp_list:exp_list262,5642
+range_exp:range_exp268,5740
+range_exp_list:range_exp_list272,5770
+cell:cell278,5888
+yyerror FUN1(285,5935
+make_list FUN2(292,6015
+#define ERROR 303,6215
+yylex FUN0(314,6392
+parse_cell_or_range FUN2(586,11758
+#define CK_ABS_R(670,13200
+#define CK_REL_R(674,13279
+#define CK_ABS_C(679,13408
+#define CK_REL_C(683,13487
+#define MAYBEREL(688,13616
+str_to_col FUN1(846,16817
+
+y-src/parse.c,520
+#define YYBISON 4,64
+# define NE 6,114
+# define LE 7,130
+# define GE 8,146
+# define NEG 9,162
+# define L_CELL 10,179
+# define L_RANGE 11,199
+# define L_VAR 12,220
+# define L_CONST 13,239
+# define L_FN0 14,260
+# define L_FN1 15,279
+# define L_FN2 16,298
+# define L_FN3 17,317
+# define L_FN4 18,336
+# define L_FNN 19,355
+# define L_FN1R 20,374
+# define L_FN2R 21,394
+# define L_FN3R 22,414
+# define L_FN4R 23,434
+# define L_FNNR 24,454
+# define L_LE 25,474
+# define L_NE 26,492
+# define L_GE 27,510
+
+parse.y,1181
+#define obstack_chunk_alloc 46,
+#define obstack_chunk_free 47,
+VOIDSTAR parse_hash;63,
+unsigned char fnin[fnin67,
+#define YYSTYPE 71,
+typedef struct node *YYSTYPE;YYSTYPE72,
+YYSTYPE parse_return;73,
+char *instr;instr80,
+int parse_error 81,
+#define YYSTYPE 85,
+# define YYDEBUG 88,
+#define YYFINAL 93,
+#define YYFLAG 94,
+#define YYNTBASE 95,
+#define YYTRANSLATE(98,
+static const char yytranslate[yytranslate101,
+static const short yyprhs[yyprhs134,
+static const short yyrhs[yyrhs142,
+static const short yyrline[yyrline171,
+static const char *const yytname[yytname185,
+static const short yyr1[yyr1197,
+static const short yyr2[yyr2207,
+static const short yydefact[yydefact219,
+static const short yydefgoto[yydefgoto237,
+static const short yypact[yypact242,
+static const short yypgoto[yypgoto260,
+#define YYLAST 266,
+static const short yytable[yytable269,
+static const short yycheck[yycheck330,
+yyerror FUN1(285,
+make_list FUN2(292,
+#define ERROR 303,
+yylex FUN0(314,
+parse_cell_or_range FUN2(586,
+#define CK_ABS_R(670,
+#define CK_REL_R(674,
+#define CK_ABS_C(679,
+#define CK_REL_C(683,
+#define MAYBEREL(688,
+str_to_col FUN1(846,
+
+/usr/share/bison/bison.simple,2110
+# define YYSTD(40,
+# define YYSTD(42,
+# define YYSTACK_ALLOC 50,
+# define YYSIZE_T 51,
+# define YYSTACK_ALLOC 55,
+# define YYSIZE_T 56,
+# define YYSTACK_ALLOC 59,
+# define YYSTACK_FREE(67,
+# define YYSIZE_T 71,
+# define YYSIZE_T 75,
+# define YYSTACK_ALLOC 78,
+# define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+# define YYSTACK_BYTES(98,
+# define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+# define YYSIZE_T 136,
+# define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok 148,
+#define yyclearin 149,
+#define YYEMPTY 150,
+#define YYEOF 151,
+#define YYACCEPT 152,
+#define YYABORT 153,
+#define YYERROR 154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR 177,
+#define YYERRCODE 178,
+# define YYLLOC_DEFAULT(189,
+# define YYLEX 200,
+# define YYLEX 202,
+# define YYLEX 206,
+# define YYLEX 208,
+# define YYLEX 212,
+# define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+# define yymemcpy 264,
+yymemcpy 271,
+# define yystrlen 293,
+yystrlen 298,
+# define yystpcpy 316,
+yystpcpy 322,
+# define YYPARSE_PARAM_ARG 351,
+# define YYPARSE_PARAM_DECL352,
+# define YYPARSE_PARAM_ARG 354,
+# define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES 374,
+# define YY_DECL_VARIABLES 385,
+# define YY_DECL_VARIABLES 391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+ *++yyvsp yyvsp746,
+ *++yylsp yylsp748,
+ yyn 755,
+ yystate 757,
+ yystate 761,
+ goto yynewstate;763,
+ goto yyerrlab1;823,
+ yyerrstatus 846,
+ goto yyerrhandle;848,
+ yyn 861,
+ yystate 875,
+ yyn 895,
+ yyn 903,
+ *++yyvsp yyvsp919,
+ *++yylsp yylsp921,
+ yystate 924,
+ goto yynewstate;925,
+ yyresult 932,
+ goto yyreturn;933,
+ yyresult 939,
+ goto yyreturn;940,
+ yyresult 947,
+
+y-src/atest.y,9
+exp 2,3
+
+y-src/cccp.c,303
+#define YYBISON 4,63
+# define INT 6,113
+# define CHAR 7,130
+# define NAME 8,148
+# define ERROR 9,166
+# define OR 10,185
+# define AND 11,201
+# define EQUAL 12,218
+# define NOTEQUAL 13,237
+# define LEQ 14,259
+# define GEQ 15,276
+# define LSH 16,293
+# define RSH 17,310
+# define UNARY 18,327
+
+cccp.y,1579
+typedef unsigned char U_CHAR;38,
+struct arglist 41,
+#define NULL 51,
+#define GENERIC_PTR 56,
+#define GENERIC_PTR 58,
+#define NULL_PTR 63,
+int expression_value;68,
+static jmp_buf parse_return_error;70,
+static int keyword_parsing 73,
+#define CHAR_TYPE_SIZE 87,
+#define INT_TYPE_SIZE 91,
+#define LONG_TYPE_SIZE 95,
+#define WCHAR_TYPE_SIZE 99,
+#define possible_sum_sign(104,
+ struct constant 113,
+ struct name 114,
+} yystype;118,
+# define YYSTYPE 119,
+# define YYDEBUG 122,
+#define YYFINAL 127,
+#define YYFLAG 128,
+#define YYNTBASE 129,
+#define YYTRANSLATE(132,
+static const char yytranslate[yytranslate135,
+static const short yyprhs[yyprhs167,
+static const short yyrhs[yyrhs174,
+static const short yyrline[yyrline195,
+static const char *const yytname[yytname208,
+static const short yyr1[yyr1219,
+static const short yyr2[yyr2228,
+static const short yydefact[yydefact239,
+static const short yydefgoto[yydefgoto251,
+static const short yypact[yypact256,
+static const short yypgoto[yypgoto268,
+#define YYLAST 274,
+static const short yytable[yytable277,
+static const short yycheck[yycheck301,
+static char *lexptr;lexptr332,
+parse_number 341,
+struct token 437,
+static struct token tokentab2[tokentab2442,
+yylex 459,
+parse_escape 740,
+yyerror 836,
+integer_overflow 844,
+left_shift 851,
+right_shift 873,
+parse_c_expression 893,
+main 923,
+unsigned char is_idchar[is_idchar948,
+unsigned char is_idstart[is_idstart950,
+char is_hor_space[is_hor_space953,
+initialize_random_junk 958,
+error 988,
+warning 993,
+lookup 999,
+
+/usr/share/bison/bison.simple,2110
+# define YYSTD(40,
+# define YYSTD(42,
+# define YYSTACK_ALLOC 50,
+# define YYSIZE_T 51,
+# define YYSTACK_ALLOC 55,
+# define YYSIZE_T 56,
+# define YYSTACK_ALLOC 59,
+# define YYSTACK_FREE(67,
+# define YYSIZE_T 71,
+# define YYSIZE_T 75,
+# define YYSTACK_ALLOC 78,
+# define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+# define YYSTACK_BYTES(98,
+# define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+# define YYSIZE_T 136,
+# define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok 148,
+#define yyclearin 149,
+#define YYEMPTY 150,
+#define YYEOF 151,
+#define YYACCEPT 152,
+#define YYABORT 153,
+#define YYERROR 154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR 177,
+#define YYERRCODE 178,
+# define YYLLOC_DEFAULT(189,
+# define YYLEX 200,
+# define YYLEX 202,
+# define YYLEX 206,
+# define YYLEX 208,
+# define YYLEX 212,
+# define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+# define yymemcpy 264,
+yymemcpy 271,
+# define yystrlen 293,
+yystrlen 298,
+# define yystpcpy 316,
+yystpcpy 322,
+# define YYPARSE_PARAM_ARG 351,
+# define YYPARSE_PARAM_DECL352,
+# define YYPARSE_PARAM_ARG 354,
+# define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES 374,
+# define YY_DECL_VARIABLES 385,
+# define YY_DECL_VARIABLES 391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+ *++yyvsp yyvsp746,
+ *++yylsp yylsp748,
+ yyn 755,
+ yystate 757,
+ yystate 761,
+ goto yynewstate;763,
+ goto yyerrlab1;823,
+ yyerrstatus 846,
+ goto yyerrhandle;848,
+ yyn 861,
+ yystate 875,
+ yyn 895,
+ yyn 903,
+ *++yyvsp yyvsp919,
+ *++yylsp yylsp921,
+ yystate 924,
+ goto yynewstate;925,
+ yyresult 932,
+ goto yyreturn;933,
+ yyresult 939,
+ goto yyreturn;940,
+ yyresult 947,
+
+y-src/cccp.y,1107
+typedef unsigned char U_CHAR;38,1201
+struct arglist 41,1301
+#define NULL 51,1468
+#define GENERIC_PTR 56,1578
+#define GENERIC_PTR 58,1611
+#define NULL_PTR 63,1670
+int expression_value;68,1743
+static jmp_buf parse_return_error;70,1766
+static int keyword_parsing 73,1865
+#define CHAR_TYPE_SIZE 87,2162
+#define INT_TYPE_SIZE 91,2229
+#define LONG_TYPE_SIZE 95,2296
+#define WCHAR_TYPE_SIZE 99,2365
+#define possible_sum_sign(104,2556
+ struct constant 112,2733
+ struct name 113,2789
+start 143,3226
+exp1 148,3330
+exp 156,3505
+exp 185,4295
+keywords 306,7835
+static char *lexptr;lexptr332,8579
+parse_number 341,8842
+struct token 437,11038
+static struct token tokentab2[tokentab2442,11088
+yylex 459,11367
+parse_escape 740,17718
+yyerror 836,19599
+integer_overflow 844,19690
+left_shift 851,19804
+right_shift 873,20194
+parse_c_expression 893,20732
+main 923,21483
+unsigned char is_idchar[is_idchar948,21901
+unsigned char is_idstart[is_idstart950,21996
+char is_hor_space[is_hor_space953,22160
+initialize_random_junk 958,22259
+error 988,22915
+warning 993,22963
+lookup 999,23033
+
+tex-src/nonewline.tex,0
+
+php-src/sendmail.php,0
+
+c-src/fail.c,0
+
+a-src/empty.zz,0
diff --git a/test/etags/ETAGS.good_2 b/test/etags/ETAGS.good_2
new file mode 100644
index 0000000..737a6f9
--- /dev/null
+++ b/test/etags/ETAGS.good_2
@@ -0,0 +1,6440 @@
+
+Makefile,701
+ADASRC=1,0
+ASRC=2,91
+CSRC=3,139
+CPSRC=7,410
+ELSRC=10,624
+ERLSRC=11,694
+FORTHSRC=12,759
+FSRC=13,809
+HTMLSRC=14,881
+JAVASRC=15,974
+LUASRC=16,1062
+MAKESRC=17,1105
+OBJCSRC=18,1147
+OBJCPPSRC=19,1228
+PASSRC=20,1291
+PERLSRC=21,1333
+PHPSRC=22,1413
+PSSRC=23,1485
+PROLSRC=24,1525
+PYTSRC=25,1587
+TEXSRC=26,1628
+YSRC=27,1707
+SRCS=28,1772
+NONSRCS=32,2024
+ETAGS_PROG=34,2098
+CTAGS_PROG=35,2129
+REGEX=37,2161
+xx=38,2207
+RUN=40,2256
+OPTIONS=42,2262
+ARGS=43,2314
+infiles 45,2332
+check:check47,2394
+ediff%:ediff%55,2697
+cdiff:cdiff58,2798
+ETAGS:ETAGS61,2895
+CTAGS:CTAGS64,2965
+srclist:srclist67,3043
+regexfile:regexfile71,3134
+.PRECIOUS:.PRECIOUS77,3311
+FRC:FRC79,3345
+
+ada-src/etags-test-for.ada,1969
+ type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0
+ function Body_RequiredBody_Required/f3,78
+ type Type_Specific_Data Type_Specific_Data/t11,280
+ function "abs"abs/f19,504
+ type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577
+ function "="=/f27,722
+ type usfreelock_ptr usfreelock_ptr/t30,803
+ function p p/f33,891
+ procedure LL_Wrapper LL_Wrapper/p37,1054
+function p p/f39,1094
+package Pkg1 Pkg1/s44,1203
+ type Private_T Private_T/t46,1220
+ package Inner1 Inner1/s48,1250
+ procedure Private_T;Private_T/p49,1270
+ package Inner2 Inner2/s52,1310
+ task Private_T;Private_T/k53,1330
+ type Public_T Public_T/t56,1365
+ procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450
+ procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475
+ function Pkg1_Func1 Pkg1_Func1/f66,1514
+ function Pkg1_Func2 Pkg1_Func2/f68,1553
+ package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622
+ procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645
+ task type Task_Type Task_Type/k75,1694
+ type Private_T Private_T/t82,1786
+package body Pkg1 Pkg1/b89,1882
+ procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904
+ package body Inner1 Inner1/b96,1956
+ procedure Private_T Private_T/p97,1981
+ package body Inner2 Inner2/b103,2054
+ task body Private_T Private_T/b104,2079
+ task body Task_Type Task_Type/b112,2181
+ procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367
+ function Pkg1_Func1 Pkg1_Func1/f132,2445
+ function Pkg1_Func2 Pkg1_Func2/f134,2496
+ package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596
+package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663
+ procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689
+function Pkg1_Func1 Pkg1_Func1/f155,2778
+package Truc Truc/s162,2887
+package Truc.Bidule Truc.Bidule/s166,2929
+ protected Bidule Bidule/t168,2953
+ protected type Machin_T Machin_T/t172,3007
+package body Truc.Bidule Truc.Bidule/b178,3087
+ protected body Bidule Bidule/b179,3115
+ protected Machin_T Machin_T/t186,3207
+
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives System.Task_Primitives/b64,2603
+ package RTE RTE/s69,2712
+ package TSL TSL/s70,2759
+ function To_void_ptr To_void_ptr/f86,3287
+ function To_TCB_Ptr To_TCB_Ptr/f89,3366
+ function
pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444
+ function
pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728
+ procedure Abort_WrapperAbort_Wrapper/p115,4302
+ procedure LL_Wrapper LL_Wrapper/p122,4526
+ procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830
+ function Self Self/f160,5586
+ procedure Initialize_LockInitialize_Lock/p174,5958
+ procedure Finalize_Lock Finalize_Lock/p210,6927
+ procedure Write_Lock Write_Lock/p226,7338
+ procedure Read_Lock Read_Lock/p239,7700
+ procedure Unlock Unlock/p246,7850
+ procedure Initialize_Cond Initialize_Cond/p258,8160
+ procedure Finalize_Cond Finalize_Cond/p286,8979
+ procedure Cond_Wait Cond_Wait/p300,9303
+ procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661
+ procedure Cond_Signal Cond_Signal/p343,10510
+ procedure Set_PrioritySet_Priority/p355,10836
+ procedure Set_Own_Priority Set_Own_Priority/p372,11243
+ function Get_Priority Get_Priority/f385,11598
+ function Get_Own_Priority Get_Own_Priority/f398,12023
+ procedure Create_LL_TaskCreate_LL_Task/p412,12438
+ function To_Start_Addr To_Start_Addr/f426,12873
+ procedure Exit_LL_Task Exit_LL_Task/p491,14995
+ procedure Abort_Task Abort_Task/p500,15158
+ procedure Test_Abort Test_Abort/p518,15716
+ procedure Install_Abort_Handler Install_Abort_Handler/p527,15878
+ procedure Abort_WrapperAbort_Wrapper/p557,16939
+ function Address_To_Call_State Address_To_Call_State/f562,17062
+ procedure Install_Error_Handler Install_Error_Handler/p573,17351
+ procedure LL_Assert LL_Assert/p599,18146
+ procedure LL_Wrapper LL_Wrapper/p608,18299
+ procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010
+ procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129
+ procedure Clear Clear/p640,19236
+ procedure Test_And_Set Test_And_Set/p645,19330
+ function Is_Set Is_Set/f659,19676
+
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives System.Task_Primitives/s58,3169
+ type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253
+ type Pre_Call_State Pre_Call_State/t64,3331
+ type Task_Storage_Size Task_Storage_Size/t66,3378
+ type Machine_Exceptions Machine_Exceptions/t68,3433
+ type Error_Information Error_Information/t70,3499
+ type Lock Lock/t72,3569
+ type Condition_Variable Condition_Variable/t73,3594
+ type Task_Control_Block Task_Control_Block/t81,3955
+ type TCB_Ptr TCB_Ptr/t89,4241
+ function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333
+ procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425
+ function Self Self/f100,4602
+ procedure Initialize_Lock Initialize_Lock/p103,4707
+ procedure Finalize_Lock Finalize_Lock/p107,4879
+ procedure Write_Lock Write_Lock/p111,5034
+ procedure Read_Lock Read_Lock/p118,5428
+ procedure Unlock Unlock/p128,5995
+ procedure Initialize_Cond Initialize_Cond/p135,6300
+ procedure Finalize_Cond Finalize_Cond/p138,6413
+ procedure Cond_Wait Cond_Wait/p142,6591
+ procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396
+ procedure Cond_Signal Cond_Signal/p164,7812
+ procedure Set_Priority Set_Priority/p169,8040
+ procedure Set_Own_Priority Set_Own_Priority/p173,8200
+ function Get_Priority Get_Priority/f177,8348
+ function Get_Own_Priority Get_Own_Priority/f181,8504
+ procedure Create_LL_TaskCreate_LL_Task/p185,8647
+ procedure Exit_LL_Task;Exit_LL_Task/p198,9282
+ procedure Abort_Task Abort_Task/p203,9516
+ procedure Test_Abort;Test_Abort/p210,9878
+ type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233
+ procedure Install_Abort_Handler Install_Abort_Handler/p219,10312
+ procedure Install_Error_Handler Install_Error_Handler/p226,10741
+ procedure LL_Assert LL_Assert/p231,10983
+ type Proc Proc/t238,11240
+ type TAS_Cell TAS_Cell/t242,11328
+ procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670
+ procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941
+ procedure Clear Clear/p260,12157
+ procedure Test_And_Set Test_And_Set/p267,12462
+ function Is_Set Is_Set/f275,12877
+ type Lock Lock/t283,13155
+ type Condition_Variable Condition_Variable/t288,13267
+ type TAS_Cell TAS_Cell/t293,13389
+
+ada-src/waroquiers.ada,1503
+package Pkg1 Pkg1/s3,89
+ type Private_T Private_T/t5,106
+ package Inner1 Inner1/s7,136
+ procedure Private_T;Private_T/p8,156
+ package Inner2 Inner2/s11,196
+ task Private_T;Private_T/k12,216
+ type Public_T Public_T/t15,251
+ procedure Pkg1_Proc1;Pkg1_Proc1/p21,336
+ procedure Pkg1_Proc2 Pkg1_Proc2/p23,361
+ function Pkg1_Func1 Pkg1_Func1/f25,400
+ function Pkg1_Func2 Pkg1_Func2/f27,439
+ package Pkg1_Pkg1 Pkg1_Pkg1/s30,508
+ procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531
+ task type Task_Type Task_Type/k34,580
+ type Private_T Private_T/t40,671
+package body Pkg1 Pkg1/b46,766
+ procedure Pkg1_Proc1 Pkg1_Proc1/p48,788
+ package body Inner1 Inner1/b53,840
+ procedure Private_T Private_T/p54,865
+ package body Inner2 Inner2/b60,938
+ task body Private_T Private_T/b61,963
+ task body Task_Type Task_Type/b68,1064
+ procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250
+ function Pkg1_Func1 Pkg1_Func1/f88,1328
+ function Pkg1_Func2 Pkg1_Func2/f90,1379
+ package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479
+package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544
+ procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570
+function Pkg1_Func1 Pkg1_Func1/f107,1657
+package Truc Truc/s112,1764
+package Truc.Bidule Truc.Bidule/s116,1816
+ protected Bidule Bidule/t125,1964
+ protected type Machin_T Machin_T/t131,2046
+package body Truc.Bidule Truc.Bidule/b138,2153
+ protected body Bidule Bidule/b139,2181
+ protected body Machin_T Machin_T/b146,2281
+
+c-src/abbrev.c,1432
+Lisp_Object Vabbrev_table_name_list;42,1416
+Lisp_Object Vglobal_abbrev_table;47,1561
+Lisp_Object Vfundamental_mode_abbrev_table;51,1672
+int abbrevs_changed;55,1773
+int abbrev_all_caps;57,1795
+Lisp_Object Vabbrev_start_location;62,1944
+Lisp_Object Vabbrev_start_location_buffer;65,2033
+Lisp_Object Vlast_abbrev;69,2142
+Lisp_Object Vlast_abbrev_text;74,2311
+int last_abbrev_point;78,2401
+Lisp_Object Vpre_abbrev_expand_hook,82,2474
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;82,2474
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table84,2538
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table91,2730
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev106,3111
+DEFUN ("define-global-abbrev",
Fdefine_global_abbrev,define-global-abbrev148,4430
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev159,4801
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol173,5269
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion201,6233
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev217,6748
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev388,11669
+write_abbrev 425,12876
+describe_abbrev 444,13311
+DEFUN ("insert-abbrev-table-description",
Finsert_abbrev_table_description,insert-abbrev-table-description465,13826
+DEFUN ("define-abbrev-table",
Fdefine_abbrev_table,define-abbrev-table505,14982
+syms_of_abbrev 539,16059
+
+c-src/torture.c,197
+(*tag1 tag118,452
+#define notag2 26,553
+(*tag2 tag229,630
+(*tag3 tag339,772
+#define notag4 45,861
+(*tag4 tag448,955
+tag5 57,1081
+tag6 66,1208
+int pp1(74,1317
+pp287,1419
+pp3(100,1518
+
+c-src/getopt.h,538
+#define _GETOPT_H 19,801
+extern char *optarg;optarg31,1109
+extern int optind;45,1617
+extern int opterr;50,1743
+struct option73,2797
+#define no_argument 89,3124
+#define required_argument 90,3147
+#define optional_argument 91,3175
+extern int getopt 98,3440
+extern int getopt 100,3544
+extern int getopt_long 102,3599
+extern int getopt_long_only 104,3731
+extern int _getopt_internal 109,3942
+extern int getopt 114,4140
+extern int getopt_long 115,4162
+extern int getopt_long_only 116,4189
+extern int _getopt_internal 118,4222
+
+c-src/etags.c,12175
+char pot_etags_version[pot_etags_version81,3470
+# undef DEBUG84,3552
+# define DEBUG 85,3567
+# define DEBUG 87,3594
+# define NDEBUG 88,3617
+# define _GNU_SOURCE 94,3705
+# undef MSDOS100,3876
+# undef WINDOWSNT101,3890
+# define WINDOWSNT102,3909
+# undef MSDOS106,3968
+# define MSDOS 107,3982
+# define MSDOS 110,4032
+# define MAXPATHLEN 115,4111
+# undef HAVE_NTGUI116,4141
+# undef DOS_NT117,4160
+# define DOS_NT118,4176
+# undef assert 135,4482
+# define assert(136,4541
+# undef CTAGS146,4857
+# define CTAGS 147,4872
+# define CTAGS 149,4898
+#define streq(152,4927
+#define strcaseeq(153,4996
+#define strneq(154,5075
+#define strncaseeq(155,5151
+#define CHARS 157,5238
+#define CHAR(158,5278
+#define iswhite(159,5329
+#define notinname(160,5394
+#define begtoken(161,5469
+#define intoken(162,5542
+#define endtoken(163,5614
+#define ISALNUM(165,5684
+#define ISALPHA(166,5722
+#define ISDIGIT(167,5760
+#define ISLOWER(168,5798
+#define lowcase(170,5837
+#define xnew(179,6015
+#define xrnew(180,6083
+typedef void Lang_function 182,6164
+} compressor;188,6365
+} language;199,6835
+typedef struct fdesc201,6848
+} fdesc;212,7366
+typedef struct node_st214,7376
+} node;225,7894
+} linebuffer;239,8248
+ at_language,245,8344
+ at_regexp,246,8393
+ at_filename,247,8437
+ at_stdin,248,8473
+ at_end 249,8516
+} argument;253,8698
+typedef struct regexp256,8758
+} regexp;268,9325
+static void Ada_funcs 274,9428
+static void Asm_labels 275,9460
+static void C_entries 276,9493
+static void default_C_entries 277,9536
+static void plain_C_entries 278,9576
+static void Cjava_entries 279,9614
+static void Cobol_paragraphs 280,9650
+static void Cplusplus_entries 281,9689
+static void Cstar_entries 282,9729
+static void Erlang_functions 283,9765
+static void Forth_words 284,9804
+static void Fortran_functions 285,9838
+static void HTML_labels 286,9878
+static void Lisp_functions 287,9912
+static void Lua_functions 288,9949
+static void Makefile_targets 289,9985
+static void Pascal_functions 290,10024
+static void Perl_functions 291,10063
+static void PHP_functions 292,10100
+static void PS_functions 293,10136
+static void Prolog_functions 294,10171
+static void Python_functions 295,10210
+static void Scheme_functions 296,10249
+static void TeX_commands 297,10288
+static void Texinfo_nodes 298,10323
+static void Yacc_entries 299,10359
+static void just_read_file 300,10394
+static language *get_language_from_langname
get_language_from_langname302,10432
+static void readline 303,10492
+static long readline_internal 304,10537
+static bool nocase_tail 305,10591
+static void get_tag 306,10631
+static void analyze_regex 308,10671
+static void free_regexps 309,10707
+static void regex_tag_multiline 310,10740
+static void error 311,10780
+# undef STDIN408,15073
+#define STDIN 411,15095
+static compressor compressors[compressors457,17664
+static const char *Ada_suffixes Ada_suffixes473,17907
+static const char Ada_help 475,17977
+static const char *Asm_suffixes Asm_suffixes493,18580
+static const char Asm_help 504,18976
+static const char *default_C_suffixes default_C_suffixes512,19312
+static const char default_C_help 515,19413
+static const char default_C_help 523,19850
+static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460
+static const char Cplusplus_help 540,20658
+static const char *Cjava_suffixes Cjava_suffixes549,21113
+static char Cjava_help 551,21172
+static const char *Cobol_suffixes Cobol_suffixes556,21337
+static char Cobol_help 558,21402
+static const char *Cstar_suffixes Cstar_suffixes562,21543
+static const char *Erlang_suffixes Erlang_suffixes565,21607
+static const char Erlang_help 567,21673
+const char *Forth_suffixes Forth_suffixes571,21799
+static const char Forth_help 573,21857
+static const char *Fortran_suffixes Fortran_suffixes577,22008
+static const char Fortran_help 579,22085
+static const char *HTML_suffixes HTML_suffixes582,22190
+static const char HTML_help 584,22264
+static const char *Lisp_suffixes Lisp_suffixes589,22452
+static const char Lisp_help 591,22556
+static const char *Lua_suffixes Lua_suffixes598,22871
+static const char Lua_help 600,22934
+static const char *Makefile_filenames Makefile_filenames603,23010
+static const char Makefile_help 605,23133
+static const char *Objc_suffixes Objc_suffixes609,23277
+static const char Objc_help 613,23399
+static const char *Pascal_suffixes Pascal_suffixes619,23714
+static const char Pascal_help 621,23778
+static const char *Perl_suffixes Perl_suffixes626,23966
+static const char *Perl_interpreters Perl_interpreters628,24028
+static const char Perl_help 630,24100
+static const char *PHP_suffixes PHP_suffixes637,24451
+static const char PHP_help 639,24523
+static const char *plain_C_suffixes plain_C_suffixes643,24678
+static const char *PS_suffixes PS_suffixes647,24762
+static const char PS_help 649,24848
+static const char *Prolog_suffixes Prolog_suffixes652,24931
+static const char Prolog_help 654,24993
+static const char *Python_suffixes Python_suffixes658,25107
+static const char Python_help 660,25165
+static const char *Scheme_suffixes Scheme_suffixes665,25347
+static const char Scheme_help 667,25460
+static const char *TeX_suffixes TeX_suffixes672,25683
+static const char TeX_help 674,25781
+static const char *Texinfo_suffixes Texinfo_suffixes686,26316
+static const char Texinfo_help 688,26395
+static const char *Yacc_suffixes Yacc_suffixes691,26492
+static const char Yacc_help 693,26606
+static const char auto_help 699,26856
+static const char none_help 703,27020
+static const char no_lang_help 707,27143
+static language lang_names 718,27355
+print_language_names 753,29532
+# define EMACS_NAME 786,30755
+# define VERSION 789,30811
+print_version 792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173
+print_help 808,31250
+main 981,37438
+get_compressor_from_suffix 1319,46217
+get_language_from_langname 1355,47158
+get_language_from_interpreter 1377,47545
+get_language_from_filename 1399,47976
+process_file_name 1433,48834
+process_file 1555,51665
+init 1632,54150
+find_entries 1656,54901
+make_tag 1814,59707
+pfnote 1856,60942
+free_tree 1917,62744
+free_fdesc 1935,63029
+add_node 1955,63472
+invalidate_nodes 2035,65537
+static int total_size_of_entries 2067,66150
+static int number_len 2068,66193
+total_size_of_entries 2087,66694
+put_entries 2107,67154
+#define C_EXT 2193,68995
+#define C_PLAIN 2194,69037
+#define C_PLPL 2195,69070
+#define C_STAR 2196,69104
+#define C_JAVA 2197,69137
+#define C_AUTO 2198,69172
+#define YACC 2199,69242
+enum sym_type2204,69312
+ st_none,2206,69328
+ st_C_objprot,2207,69339
+ st_C_objprot, st_C_objimpl,2207,69339
+ st_C_objprot, st_C_objimpl, st_C_objend,2207,69339
+ st_C_gnumacro,2208,69382
+ st_C_ignore,2209,69399
+ st_C_ignore, st_C_attribute,2209,69399
+ st_C_javastruct,2210,69430
+ st_C_operator,2211,69449
+ st_C_class,2212,69466
+ st_C_class, st_C_template,2212,69466
+ st_C_struct,2213,69495
+ st_C_struct, st_C_extern,2213,69495
+ st_C_struct, st_C_extern, st_C_enum,2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495
+struct C_stab_entry 2271,71278
+hash 2275,71409
+in_word_set 2321,72937
+ TOTAL_KEYWORDS 2325,73018
+ MIN_WORD_LENGTH 2326,73045
+ MAX_WORD_LENGTH 2327,73072
+ MIN_HASH_VALUE 2328,73100
+ MAX_HASH_VALUE 2329,73126
+C_symtype 2387,74985
+static bool inattribute;2400,75234
+ fvnone,2408,75435
+ fdefunkey,2409,75466
+ fdefunname,2410,75512
+ foperator,2411,75556
+ fvnameseen,2412,75613
+ fstartlist,2413,75666
+ finlist,2414,75722
+ flistseen,2415,75765
+ fignore,2416,75813
+ vignore 2417,75856
+} fvdef;2418,75901
+static bool fvextern;2420,75911
+ tnone,2428,76089
+ tkeyseen,2429,76119
+ ttypeseen,2430,76160
+ tinbody,2431,76199
+ tend,2432,76238
+ tignore 2433,76279
+} typdef;2434,76320
+ snone,2443,76499
+ skeyseen,2445,76575
+ stagseen,2446,76620
+ scolonseen 2447,76661
+} structdef;2448,76715
+static const char *objtag objtag2453,76809
+ dnone,2460,76942
+ dsharpseen,2461,76972
+ ddefineseen,2462,77025
+ dignorerest 2463,77070
+} definedef;2464,77112
+ onone,2472,77267
+ oprotocol,2473,77297
+ oimplementation,2474,77347
+ otagseen,2475,77395
+ oparenseen,2476,77431
+ ocatseen,2477,77486
+ oinbody,2478,77525
+ omethodsign,2479,77568
+ omethodtag,2480,77626
+ omethodcolon,2481,77666
+ omethodparm,2482,77709
+ oignore 2483,77755
+} objdef;2484,77787
+static struct tok2491,77944
+} token;2508,78626
+static void pushclass_above 2514,78784
+static void popclass_above 2515,78832
+static void write_classname 2516,78866
+} cstack;2523,79136
+#define nestlev 2525,79264
+#define instruct 2527,79369
+pushclass_above 2531,79489
+popclass_above 2550,79948
+write_classname 2564,80162
+static bool consider_token 2592,80761
+static void make_C_tag 2593,80833
+consider_token 2613,81341
+} lbs[lbs2924,88532
+#define current_lb_is_new 2926,88543
+#define switch_line_buffers(2927,88588
+#define curlb 2929,88641
+#define newlb 2930,88672
+#define curlinepos 2931,88703
+#define newlinepos 2932,88744
+#define plainc 2934,88786
+#define cplpl 2935,88830
+#define cjava 2936,88861
+#define CNL_SAVE_DEFINEDEF(2938,88905
+#define CNL(2947,89117
+make_C_tag 2960,89375
+C_entries 2986,90194
+default_C_entries 3833,110156
+plain_C_entries 3840,110276
+Cplusplus_entries 3847,110364
+Cjava_entries 3854,110460
+Cstar_entries 3861,110550
+Yacc_entries 3868,110642
+#define LOOP_ON_INPUT_LINES(3875,110720
+#define LOOKING_AT(3884,111056
+#define LOOKING_AT_NOCASE(3891,111461
+just_read_file 3901,111861
+static void F_takeprec 3910,111965
+static void F_getit 3911,111996
+F_takeprec 3914,112039
+F_getit 3937,112366
+Fortran_functions 3961,112840
+Ada_getit 4052,114669
+Ada_funcs 4115,116044
+Asm_labels 4228,118582
+Perl_functions 4261,119549
+Python_functions 4357,122057
+PHP_functions 4387,122684
+Cobol_paragraphs 4466,124471
+Makefile_targets 4494,125029
+Pascal_functions 4529,125950
+static void L_getit 4706,130277
+L_getit 4709,130318
+Lisp_functions 4725,130664
+Lua_functions 4785,131850
+PS_functions 4811,132385
+Forth_words 4841,133053
+Scheme_functions 4877,134092
+static linebuffer *TEX_toktab TEX_toktab4908,134781
+static const char *TEX_defenv TEX_defenv4912,134974
+static void TEX_mode 4917,135172
+static void TEX_decode_env 4918,135203
+static char TEX_esc 4920,135261
+static char TEX_opgrp 4921,135289
+static char TEX_clgrp 4922,135318
+TeX_commands 4928,135395
+#define TEX_LESC 4986,136652
+#define TEX_SESC 4987,136674
+TEX_mode 4992,136804
+TEX_decode_env 5026,137509
+Texinfo_nodes 5071,138554
+HTML_labels 5094,139013
+static size_t prolog_pr 5214,142192
+static void prolog_skip_comment 5215,142234
+static size_t prolog_atom 5216,142290
+Prolog_functions 5219,142347
+prolog_skip_comment 5255,143128
+prolog_pr 5281,143736
+prolog_atom 5319,144628
+static int erlang_func 5374,145540
+static void erlang_attribute 5375,145581
+static int erlang_atom 5376,145620
+Erlang_functions 5379,145666
+erlang_func 5438,146965
+erlang_attribute 5476,147642
+erlang_atom 5496,148061
+static char *scan_separators scan_separators5520,148487
+static void add_regex 5521,148526
+static char *substitute substitute5522,148570
+scan_separators 5534,149080
+analyze_regex 5586,150460
+add_regex 5654,152050
+substitute 5767,154797
+free_regexps 5814,155837
+regex_tag_multiline 5836,156291
+nocase_tail 5913,158263
+get_tag 5928,158519
+readline_internal 5959,159455
+readline 6037,161296
+savestr 6230,167243
+savenstr 6240,167473
+skip_spaces 6249,167679
+skip_non_spaces 6258,167833
+skip_name 6267,167983
+fatal 6277,168156
+pfatal 6284,168253
+suggest_asking_for_help 6291,168332
+error 6300,168554
+concat 6313,168846
+etags_getcwd 6329,169259
+relative_filename 6350,169725
+absolute_filename 6389,170751
+absolute_dirname 6453,172416
+filename_is_absolute 6472,172845
+canonicalize_filename 6484,173096
+# define ISUPPER(6491,173235
+linebuffer_init 6514,173656
+linebuffer_setlen 6524,173887
+xmalloc 6536,174148
+xrealloc 6545,174314
+
+c-src/exit.c,47
+ } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/exit.strange_suffix,47
+ } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/sysdep.h,491
+#define ENTRY(21,865
+#define PSEUDO(26,972
+ movl $SYS_##syscall_nam$SYS_##syscall_na31,1132
+ movl $SYS_##syscall_name, %eax;eax31,1132
+ int $0x80;32,1180
+ test %eax,eax33,1210
+ test %eax, %eax;eax33,1210
+ jl syscall_error;34,1245
+#define XCHG_0 47,1562
+#define XCHG_1 48,1606
+#define XCHG_2 49,1648
+#define XCHG_3 50,1691
+#define XCHG_4 51,1734
+#define XCHG_5 52,1777
+#define r0 54,1821
+#define r1 55,1875
+#define scratch 56,1932
+#define MOVE(57,2001
+
+c-src/tab.c,196
+static int count_words(15,263
+static char *get_word(get_word35,553
+void tab_free(59,966
+char **tab_fill(tab_fill70,1129
+int tab_delete_first(91,1638
+int tab_count_words(103,1820
+
+c-src/dostorture.c,197
+(*tag1 tag118,451
+#define notag2 26,552
+(*tag2 tag229,629
+(*tag3 tag339,771
+#define notag4 45,860
+(*tag4 tag448,954
+tag5 57,1080
+tag6 66,1207
+int pp1(74,1316
+pp287,1418
+pp3(100,1517
+
+c-src/emacs/src/gmalloc.c,6643
+#define USE_PTHREAD25,1002
+#undef get_current_dir_name33,1126
+extern void emacs_abort 47,1305
+#undef malloc64,2110
+#undef realloc65,2124
+#undef calloc66,2139
+#undef free67,2153
+#define malloc 68,2165
+#define realloc 69,2188
+#define calloc 70,2213
+#define aligned_alloc 71,2236
+#define free 72,2273
+extern void *bss_sbrk bss_sbrk76,2335
+extern int bss_sbrk_did_unexec;77,2375
+extern char bss_sbrk_buffer[bss_sbrk_buffer78,2407
+extern void *bss_sbrk_buffer_end;bss_sbrk_buffer_end79,2438
+#define DUMPED 80,2472
+#define ALLOCATED_BEFORE_DUMPING(81,2507
+extern void *malloc malloc94,2718
+#define INT_BIT 124,3934
+#define BLOCKLOG 125,3977
+#define BLOCKSIZE 126,4018
+#define BLOCKIFY(127,4052
+#define HEAP 131,4215
+#define FINAL_FREE_BLOCKS 135,4391
+ } malloc_info;167,5388
+extern char *_heapbase;_heapbase170,5449
+extern malloc_info *_heapinfo;_heapinfo173,5541
+#define BLOCK(176,5620
+#define ADDRESS(177,5682
+extern size_t _heapindex;180,5797
+extern size_t _heaplimit;183,5866
+struct list186,5939
+extern struct list _fraghead[_fraghead193,6056
+struct alignlist196,6153
+extern struct alignlist *_aligned_blocks;_aligned_blocks202,6334
+extern size_t _chunks_used;205,6401
+extern size_t _bytes_used;206,6429
+extern size_t _chunks_free;207,6456
+extern size_t _bytes_free;208,6484
+extern void *_malloc_internal _malloc_internal213,6673
+extern void *_realloc_internal _realloc_internal214,6713
+extern void _free_internal 215,6762
+extern void *_malloc_internal_nolock _malloc_internal_nolock216,6799
+extern void *_realloc_internal_nolock _realloc_internal_nolock217,6846
+extern void _free_internal_nolock 218,6902
+extern pthread_mutex_t _malloc_mutex,221,6966
+extern pthread_mutex_t _malloc_mutex, _aligned_blocks_mutex;221,6966
+extern int _malloc_thread_enabled_p;222,7027
+#define LOCK(223,7064
+#define UNLOCK(228,7195
+#define LOCK_ALIGNED_BLOCKS(233,7329
+#define UNLOCK_ALIGNED_BLOCKS(238,7484
+#define LOCK(244,7649
+#define UNLOCK(245,7664
+#define LOCK_ALIGNED_BLOCKS(246,7681
+#define UNLOCK_ALIGNED_BLOCKS(247,7711
+extern void *malloc_find_object_address malloc_find_object_address252,7865
+extern void *(*__morecore)__morecore256,8021
+extern void *__default_morecore __default_morecore259,8105
+extern void (*__after_morecore_hook)__after_morecore_hook263,8269
+extern size_t __malloc_extra_blocks;267,8442
+extern int __malloc_initialized;270,8552
+extern int __malloc_initialize 272,8646
+extern void (*__malloc_initialize_hook)__malloc_initialize_hook275,8723
+extern void (*__free_hook)__free_hook276,8771
+extern void *(*__malloc_hook)__malloc_hook277,8811
+extern void *(*__realloc_hook)__realloc_hook278,8856
+extern void *(*__memalign_hook)__memalign_hook279,8913
+enum mcheck_status283,9092
+ MCHECK_DISABLED 285,9115
+ MCHECK_OK,286,9187
+ MCHECK_FREE,287,9226
+ MCHECK_HEAD,288,9270
+ MCHECK_TAIL 289,9334
+extern int mcheck 296,9701
+extern enum mcheck_status mprobe 301,9952
+extern void mtrace 304,10055
+extern void muntrace 305,10082
+struct mstats308,10153
+extern struct mstats mstats 318,10518
+extern void memory_warnings 321,10625
+void *(*__malloc_hook)__malloc_hook352,11743
+char *_heapbase;_heapbase355,11829
+malloc_info *_heapinfo;_heapinfo358,11927
+static size_t heapsize;361,11983
+size_t _heapindex;364,12047
+size_t _heaplimit;367,12109
+struct list _fraghead[_fraghead370,12171
+size_t _chunks_used;373,12229
+size_t _bytes_used;374,12250
+size_t _chunks_free;375,12270
+size_t _bytes_free;376,12291
+int __malloc_initialized;379,12340
+size_t __malloc_extra_blocks;381,12367
+void (*__malloc_initialize_hook)__malloc_initialize_hook383,12398
+void (*__after_morecore_hook)__after_morecore_hook384,12439
+static int state_protected_p;400,12912
+static size_t last_state_size;401,12942
+static malloc_info *last_heapinfo;last_heapinfo402,12973
+protect_malloc_state 405,13014
+#define PROTECT_MALLOC_STATE(426,13627
+#define PROTECT_MALLOC_STATE(429,13697
+align 435,13794
+get_contiguous_space 466,14616
+register_heapinfo 497,15325
+pthread_mutex_t _malloc_mutex 517,15879
+pthread_mutex_t _aligned_blocks_mutex 518,15938
+int _malloc_thread_enabled_p;519,16005
+malloc_atfork_handler_prepare 522,16048
+malloc_atfork_handler_parent 529,16139
+malloc_atfork_handler_child 536,16233
+malloc_enable_thread 544,16375
+malloc_initialize_1 563,16961
+__malloc_initialize 594,17793
+static int morecore_recursing;604,17926
+morecore_nolock 609,18066
+_malloc_internal_nolock 722,21584
+_malloc_internal 920,28102
+malloc 932,28247
+extern void *_malloc _malloc956,29033
+extern void _free 957,29064
+extern void *_realloc _realloc958,29092
+_malloc 961,29140
+_free 967,29196
+_realloc 973,29240
+void (*__free_hook)__free_hook1001,30259
+struct alignlist *_aligned_blocks _aligned_blocks1004,30345
+_free_internal_nolock 1009,30474
+_free_internal 1255,38476
+free 1265,38603
+weak_alias 1277,38799
+#define min(1306,39813
+void *(*__realloc_hook)__realloc_hook1310,39898
+_realloc_internal_nolock 1319,40309
+_realloc_internal 1435,43563
+realloc 1447,43726
+calloc 1478,44894
+#define __sbrk 1513,46042
+extern void *__sbrk __sbrk1518,46247
+__default_morecore 1525,46511
+void *(*__memalign_hook)__memalign_hook1554,47456
+aligned_alloc 1557,47522
+memalign 1647,49704
+posix_memalign 1656,49909
+extern void *valloc valloc1695,51140
+extern int getpagesize 1700,51278
+static size_t pagesize;1703,51317
+valloc 1706,51349
+#undef malloc1715,51490
+#undef realloc1716,51504
+#undef calloc1717,51519
+#undef aligned_alloc1718,51533
+#undef free1719,51554
+extern void *malloc malloc1722,51609
+extern void *realloc realloc1723,51644
+extern void *calloc calloc1724,51691
+extern void free 1725,51740
+extern void *aligned_alloc aligned_alloc1727,51796
+extern int posix_memalign 1729,51890
+hybrid_malloc 1736,52083
+hybrid_calloc 1744,52188
+hybrid_free 1752,52319
+hybrid_aligned_alloc 1765,52626
+hybrid_realloc 1780,52984
+char *gget_current_dir_name gget_current_dir_name1808,53753
+hybrid_get_current_dir_name 1811,53797
+static void (*old_free_hook)old_free_hook1846,54921
+static void *(*old_malloc_hook)old_malloc_hook1847,54963
+static void *(*old_realloc_hook)old_realloc_hook1848,55010
+static void (*abortfunc)abortfunc1851,55124
+#define MAGICWORD 1854,55206
+#define MAGICFREE 1855,55261
+#define MAGICBYTE 1856,55316
+#define MALLOCFLOOD 1857,55348
+#define FREEFLOOD 1858,55382
+struct hdr1860,55415
+checkhdr 1867,55581
+freehook 1891,56022
+mallochook 1927,56804
+reallochook 1944,57143
+mabort 1978,57901
+static int mcheck_used 2012,58586
+mcheck 2015,58619
+mprobe 2035,59138
+
+c-src/emacs/src/regex.h,4576
+#define _REGEX_H 21,836
+typedef unsigned long reg_syntax_t;43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749
+#define RE_BK_PLUS_QM 52,1969
+#define RE_CHAR_CLASSES 58,2298
+#define RE_CONTEXT_INDEP_ANCHORS 72,3032
+#define RE_CONTEXT_INDEP_OPS 80,3458
+#define RE_CONTEXT_INVALID_OPS 84,3658
+#define RE_DOT_NEWLINE 88,3801
+#define RE_DOT_NOT_NULL 92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE 96,4082
+#define RE_INTERVALS 101,4292
+#define RE_LIMITED_OPS 105,4441
+#define RE_NEWLINE_ALT 109,4583
+#define RE_NO_BK_BRACES 114,4773
+#define RE_NO_BK_PARENS 118,4964
+#define RE_NO_BK_REFS 122,5120
+#define RE_NO_BK_VBAR 126,5316
+#define RE_NO_EMPTY_RANGES 132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766
+#define RE_NO_POSIX_BACKTRACKING 140,5937
+#define RE_NO_GNU_OPS 144,6133
+#define RE_FRUGAL 147,6253
+#define RE_SHY_GROUPS 150,6360
+#define RE_NO_NEWLINE_ANCHOR 153,6468
+#define RE_DEBUG 161,6884
+extern reg_syntax_t re_syntax_options;167,7170
+extern Lisp_Object re_match_object;172,7344
+extern size_t re_max_failures;176,7454
+#define RE_SYNTAX_EMACS 183,7684
+#define RE_SYNTAX_AWK 186,7780
+#define RE_SYNTAX_GNU_AWK 193,8084
+#define RE_SYNTAX_POSIX_AWK 197,8255
+#define RE_SYNTAX_GREP 201,8393
+#define RE_SYNTAX_EGREP 206,8549
+#define RE_SYNTAX_POSIX_EGREP 212,8765
+#define RE_SYNTAX_ED 216,8910
+#define RE_SYNTAX_SED 218,8954
+#define _RE_SYNTAX_POSIX_COMMON 221,9072
+#define RE_SYNTAX_POSIX_BASIC 225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC 231,9508
+#define RE_SYNTAX_POSIX_EXTENDED 234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 242,9967
+# undef RE_DUP_MAX253,10454
+#define RE_DUP_MAX 256,10540
+#define REG_EXTENDED 263,10762
+#define REG_ICASE 267,10886
+#define REG_NEWLINE 272,11070
+#define REG_NOSUB 276,11248
+#define REG_NOTBOL 286,11614
+#define REG_NOTEOL 289,11688
+ REG_ENOSYS 297,11859
+ REG_NOERROR 300,11941
+ REG_NOMATCH,301,11976
+ REG_BADPAT,305,12123
+ REG_ECOLLATE,306,12162
+ REG_ECTYPE,307,12203
+ REG_EESCAPE,308,12255
+ REG_ESUBREG,309,12298
+ REG_EBRACK,310,12345
+ REG_EPAREN,311,12391
+ REG_EBRACE,312,12436
+ REG_BADBR,313,12472
+ REG_ERANGE,314,12519
+ REG_ESPACE,315,12560
+ REG_BADRPT,316,12601
+ REG_EEND,319,12693
+ REG_ESIZE,320,12728
+ REG_ERPAREN,321,12790
+ REG_ERANGEX 322,12859
+} reg_errcode_t;323,12911
+# define RE_TRANSLATE_TYPE 332,13273
+struct re_pattern_buffer335,13315
+#define REGS_UNALLOCATED 376,14889
+#define REGS_REALLOCATE 377,14916
+#define REGS_FIXED 378,14942
+typedef struct re_pattern_buffer regex_t;416,16098
+typedef ssize_t regoff_t;423,16492
+struct re_registers428,16652
+# define RE_NREGS 440,16942
+} regmatch_t;451,17317
+extern reg_syntax_t re_set_syntax 457,17512
+extern const char *re_compile_pattern re_compile_pattern462,17776
+extern int re_compile_fastmap 469,18058
+extern regoff_t re_search 477,18466
+extern regoff_t re_search_2 485,18781
+extern regoff_t re_match 495,19177
+extern regoff_t re_match_2 501,19407
+extern void re_set_registers 520,20197
+extern char *re_comp re_comp528,20469
+extern int re_exec 529,20506
+# define _Restrict_ 540,20886
+# define _Restrict_ 542,20979
+# define _Restrict_544,21018
+# define _Restrict_arr_ 555,21418
+# define _Restrict_arr_557,21461
+extern reg_errcode_t regcomp 562,21530
+extern reg_errcode_t regexec 566,21656
+extern size_t regerror 571,21850
+extern void regfree 574,21956
+# define CHAR_CLASS_MAX_LENGTH 593,22470
+# define CHAR_CLASS_MAX_LENGTH 597,22648
+typedef wctype_t re_wctype_t;599,22692
+typedef wchar_t re_wchar_t;600,22722
+# define re_wctype 601,22750
+# define re_iswctype 602,22776
+# define re_wctype_to_bit(603,22806
+# define CHAR_CLASS_MAX_LENGTH 605,22844
+# define btowc(606,22906
+typedef enum { RECC_ERROR 609,22953
+ RECC_ALNUM,610,22984
+ RECC_ALNUM, RECC_ALPHA,610,22984
+ RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984
+ RECC_GRAPH,611,23027
+ RECC_GRAPH, RECC_PRINT,611,23027
+ RECC_LOWER,612,23059
+ RECC_LOWER, RECC_UPPER,612,23059
+ RECC_PUNCT,613,23091
+ RECC_PUNCT, RECC_CNTRL,613,23091
+ RECC_DIGIT,614,23123
+ RECC_DIGIT, RECC_XDIGIT,614,23123
+ RECC_BLANK,615,23156
+ RECC_BLANK, RECC_SPACE,615,23156
+ RECC_MULTIBYTE,616,23188
+ RECC_MULTIBYTE, RECC_NONASCII,616,23188
+ RECC_ASCII,617,23227
+ RECC_ASCII, RECC_UNIBYTE617,23227
+} re_wctype_t;618,23260
+extern char re_iswctype 620,23276
+extern re_wctype_t re_wctype 621,23329
+typedef int re_wchar_t;623,23387
+extern void re_set_whitespace_regexp 625,23412
+
+c-src/emacs/src/keyboard.c,15493
+volatile int interrupt_input_blocked;76,1808
+volatile bool pending_signals;80,1944
+#define KBD_BUFFER_SIZE 82,1976
+KBOARD *initial_kboard;initial_kboard84,2006
+KBOARD *current_kboard;current_kboard85,2030
+static KBOARD *all_kboards;all_kboards86,2054
+static bool single_kboard;89,2154
+#define NUM_RECENT_KEYS 91,2182
+static int recent_keys_index;94,2269
+static int total_keys;97,2357
+static Lisp_Object recent_keys;100,2443
+Lisp_Object this_command_keys;107,2777
+ptrdiff_t this_command_key_count;108,2808
+static bool this_command_key_count_reset;112,2922
+static Lisp_Object raw_keybuf;116,3074
+static int raw_keybuf_count;117,3105
+#define GROW_RAW_KEYBUF 119,3135
+static ptrdiff_t this_single_command_key_start;125,3350
+static ptrdiff_t before_command_key_count;129,3498
+static ptrdiff_t before_command_echo_length;130,3541
+sigjmp_buf return_to_command_loop;135,3677
+static Lisp_Object recover_top_level_message;138,3791
+static Lisp_Object regular_top_level_message;143,3930
+static sys_jmp_buf getcjmp;147,4031
+bool waiting_for_input;150,4095
+static bool echoing;154,4186
+static struct kboard
*ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328
+struct kboard *echo_kboard;echo_kboard166,4632
+Lisp_Object echo_message_buffer;171,4744
+bool immediate_quit;174,4837
+int quit_char;192,5623
+EMACS_INT command_loop_level;195,5680
+Lisp_Object unread_switch_frame;204,6108
+static ptrdiff_t last_non_minibuf_size;207,6216
+uintmax_t num_input_events;210,6334
+static EMACS_INT last_auto_save;214,6428
+static ptrdiff_t last_point_position;217,6523
+Lisp_Object internal_last_event_frame;228,7028
+static Lisp_Object read_key_sequence_cmd;232,7168
+static Lisp_Object read_key_sequence_remapped;233,7210
+static FILE *dribble;dribble236,7310
+bool input_pending;239,7368
+static bool input_was_pending;287,10022
+static struct input_event kbd_buffer[kbd_buffer291,10107
+static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386
+static struct input_event * volatile kbd_store_ptr;302,10601
+static void recursive_edit_unwind 313,11088
+static Lisp_Object command_loop 314,11144
+static void echo_now 316,11185
+static ptrdiff_t echo_length 317,11214
+unsigned timers_run;320,11296
+struct timespec
*input_available_clear_time;input_available_clear_time324,11408
+bool interrupt_input;328,11573
+bool interrupts_deferred;331,11671
+static struct timespec timer_idleness_start_time;335,11746
+static struct timespec timer_last_idleness_start_time;340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW 346,12046
+#define READABLE_EVENTS_FILTER_EVENTS 347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES 348,12142
+static void (*keyboard_init_hook)keyboard_init_hook351,12264
+static bool get_input_pending 353,12307
+static bool readable_events 354,12344
+static Lisp_Object read_char_x_menu_prompt 355,12379
+static Lisp_Object read_char_minibuf_menu_prompt 357,12502
+static Lisp_Object make_lispy_event 358,12571
+static Lisp_Object make_lispy_movement 359,12631
+static Lisp_Object modify_event_symbol 363,12840
+static Lisp_Object make_lispy_switch_frame 366,13050
+static Lisp_Object make_lispy_focus_in 367,13108
+static Lisp_Object make_lispy_focus_out 369,13188
+static bool help_char_p 371,13275
+static void save_getcjmp 372,13314
+static void restore_getcjmp 373,13354
+static Lisp_Object apply_modifiers 374,13397
+static void clear_event 375,13452
+static void restore_kboard_configuration 376,13500
+static void deliver_input_available_signal 378,13568
+static void handle_interrupt 380,13631
+static _Noreturn void quit_throw_to_read_char 381,13668
+static void process_special_events 382,13722
+static void timer_start_idle 383,13765
+static void timer_stop_idle 384,13802
+static void timer_resume_idle 385,13838
+static void deliver_user_signal 386,13876
+static char *find_user_signal_name find_user_signal_name387,13915
+static void store_user_signal_events 388,13957
+kset_echo_string 392,14088
+kset_kbd_queue 397,14184
+kset_keyboard_translate_table 402,14276
+kset_last_prefix_arg 407,14399
+kset_last_repeatable_command 412,14504
+kset_local_function_key_map 417,14625
+kset_overriding_terminal_local_map 422,14744
+kset_real_last_command 427,14877
+kset_system_key_syms 432,14986
+echo_add_key 443,15249
+echo_char 527,17527
+echo_dash 541,17813
+echo_now 586,19140
+cancel_echoing 635,20614
+echo_length 648,20922
+echo_truncate 660,21253
+add_command_key 672,21582
+recursive_edit_1 697,22406
+record_auto_save 742,23848
+force_auto_save_soon 751,24016
+DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137
+recursive_edit_unwind 804,25747
+any_kboard_state 817,26013
+single_kboard_state 838,26665
+not_single_kboard_state 848,26803
+struct kboard_stack858,27065
+static struct kboard_stack *kboard_stack;kboard_stack864,27138
+push_kboard 867,27186
+pop_kboard 879,27375
+temporarily_switch_to_single_kboard 914,28263
+record_single_kboard_state 943,29437
+restore_kboard_configuration 952,29621
+cmd_error 970,30077
+cmd_error_internal 1024,31510
+DEFUN ("command-error-default-function",
Fcommand_error_default_function,command-error-default-function1043,32030
+static Lisp_Object command_loop_2 1086,33637
+static Lisp_Object top_level_1 1087,33686
+command_loop 1094,33916
+command_loop_2 1134,35135
+top_level_2 1146,35339
+top_level_1 1152,35417
+DEFUN ("top-level", Ftop_level,top-level1164,35787
+user_error 1183,36288
+DEFUN ("exit-recursive-edit",
Fexit_recursive_edit,exit-recursive-edit1189,36429
+DEFUN ("abort-recursive-edit",
Fabort_recursive_edit,abort-recursive-edit1201,36819
+tracking_off 1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816
+bool ignore_mouse_drag_p;1256,38392
+some_mouse_moved 1259,38441
+static int read_key_sequence 1282,38799
+static void adjust_point_for_property 1284,38917
+Lisp_Object last_undo_boundary;1287,39032
+command_loop_1 1294,39273
+read_menu_command 1649,50889
+adjust_point_for_property 1678,51617
+safe_run_hooks_1 1831,57339
+safe_run_hooks_error 1841,57569
+safe_run_hook_funcall 1878,58576
+safe_run_hooks 1893,59058
+int poll_suppress_count;1908,59397
+static struct atimer *poll_timer;poll_timer1915,59487
+poll_for_input_1 1919,59589
+poll_for_input 1930,59789
+start_polling 1942,60053
+input_polling_used 1979,61091
+stop_polling 1994,61390
+set_poll_suppress_count 2009,61759
+bind_polling_period 2029,62141
+make_ctrl_char 2048,62492
+show_help_echo 2113,64455
+static Lisp_Object kbd_buffer_get_event 2152,65484
+static void record_char 2154,65596
+static Lisp_Object help_form_saved_window_configs;2156,65638
+read_char_help_form_unwind 2158,65701
+#define STOP_POLLING 2166,65959
+#define RESUME_POLLING 2170,66084
+read_event_from_main_queue 2175,66229
+read_decoded_event_from_main_queue 2249,68417
+#define MAX_ENCODED_BYTES 2254,68664
+echo_keystrokes_p 2342,71556
+read_char 2376,72848
+record_menu_key 3225,98949
+help_char_p 3258,99674
+record_char 3273,99953
+save_getcjmp 3412,104235
+restore_getcjmp 3418,104326
+readable_events 3430,104697
+int stop_character EXTERNALLY_VISIBLE;3497,106437
+event_to_kboard 3500,106493
+kbd_buffer_nr_stored 3522,107142
+kbd_buffer_store_event 3534,107483
+kbd_buffer_store_event_hold 3550,108025
+kbd_buffer_unget_event 3684,111617
+#define INPUT_EVENT_POS_MAX 3698,112018
+#define INPUT_EVENT_POS_MIN 3701,112147
+position_to_Time 3706,112287
+Time_to_position 3716,112514
+gen_help_event 3738,113171
+kbd_buffer_store_help_event 3756,113611
+discard_mouse_events 3773,113976
+kbd_buffer_events_waiting 3803,114711
+clear_event 3823,115068
+kbd_buffer_get_event 3836,115408
+process_special_events 4258,127881
+swallow_events 4322,129705
+timer_start_idle 4339,130098
+timer_stop_idle 4355,130576
+timer_resume_idle 4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912
+Lisp_Object pending_funcalls;4377,131172
+decode_timer 4381,131293
+timer_check_2 4414,132246
+timer_check 4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662
+static Lisp_Object accent_key_syms;4625,138239
+static Lisp_Object func_key_syms;4626,138275
+static Lisp_Object mouse_syms;4627,138309
+static Lisp_Object wheel_syms;4628,138340
+static Lisp_Object drag_n_drop_syms;4629,138371
+static const int lispy_accent_codes[lispy_accent_codes4634,138516
+static const char *const lispy_accent_keys[lispy_accent_keys4741,139878
+#define FUNCTION_KEY_OFFSET 4766,140314
+const char *const lispy_function_keys[lispy_function_keys4768,140347
+static const char *const
lispy_multimedia_keys[lispy_multimedia_keys4962,148901
+static const char *const lispy_kana_keys[lispy_kana_keys5026,150135
+#define FUNCTION_KEY_OFFSET 5061,151751
+static const char *const lispy_function_keys[lispy_function_keys5065,151894
+#define ISO_FUNCTION_KEY_OFFSET 5149,154429
+static const char *const
iso_lispy_function_keys[iso_lispy_function_keys5151,154469
+static Lisp_Object Vlispy_mouse_stem;5172,155328
+static const char *const lispy_wheel_names[lispy_wheel_names5174,155367
+static const char *const
lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619
+static short const scroll_bar_parts[scroll_bar_parts5189,155885
+static Lisp_Object button_down_location;5210,156910
+static int last_mouse_button;5215,157065
+static int last_mouse_x;5216,157095
+static int last_mouse_y;5217,157120
+static Time button_down_time;5218,157145
+static int double_click_count;5222,157229
+make_lispy_position 5228,157390
+toolkit_menubar_in_use 5456,163953
+make_scroll_bar_position 5469,164321
+make_lispy_event 5485,164967
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers",
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list",
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static void menu_bar_item 7362,218341
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+static void init_tool_bar_items 7978,236664
+static void process_tool_bar_item 7979,236711
+static bool parse_tool_bar_item 7981,236801
+static void append_tool_bar_item 7982,236861
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector",
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector",
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys",
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys",
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths",
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys",
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode",
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control",
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode",
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode",
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+
+c-src/emacs/src/lisp.h,33973
+#define EMACS_LISP_H22,800
+#define DECLARE_GDB_SYM(47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(49,1508
+# define DEFINE_GDB_SYMBOL_END(50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(52,1625
+# define DEFINE_GDB_SYMBOL_END(53,1702
+#undef min57,1790
+#undef max58,1801
+#define max(59,1812
+#define min(60,1854
+#define ARRAYELTS(63,1936
+#define GCTYPEBITS 67,2079
+DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037
+# define NONPOINTER_BITS 78,2567
+# define NONPOINTER_BITS 80,2600
+typedef int EMACS_INT;91,3023
+typedef unsigned int EMACS_UINT;92,3046
+# define EMACS_INT_MAX 93,3079
+# define pI 94,3111
+typedef long int EMACS_INT;96,3203
+typedef unsigned long EMACS_UINT;97,3231
+# define EMACS_INT_MAX 98,3265
+# define pI 99,3298
+typedef long long int EMACS_INT;103,3477
+typedef unsigned long long int EMACS_UINT;104,3510
+# define EMACS_INT_MAX 105,3553
+# define pI 106,3587
+enum { BOOL_VECTOR_BITS_PER_CHAR 114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR 115,3840
+typedef size_t bits_word;123,4165
+# define BITS_WORD_MAX 124,4191
+enum { BITS_PER_BITS_WORD 125,4223
+typedef unsigned char bits_word;127,4290
+# define BITS_WORD_MAX 128,4323
+enum { BITS_PER_BITS_WORD 129,4386
+verify 131,4450
+ BITS_PER_CHAR 136,4570
+ BITS_PER_SHORT 137,4605
+ BITS_PER_LONG 138,4657
+ BITS_PER_EMACS_INT 139,4712
+typedef intmax_t printmax_t;148,5089
+typedef uintmax_t uprintmax_t;149,5118
+# define pMd 150,5149
+# define pMu 151,5170
+typedef EMACS_INT printmax_t;153,5197
+typedef EMACS_UINT uprintmax_t;154,5227
+# define pMd 155,5259
+# define pMu 156,5278
+# define pD 165,5664
+# define pD 167,5709
+# define pD 169,5756
+# define pD 171,5779
+# define eassert(200,7062
+# define eassume(201,7140
+extern _Noreturn void die 204,7206
+extern bool suppress_checking EXTERNALLY_VISIBLE;206,7268
+# define eassert(208,7319
+# define eassume(212,7450
+enum Lisp_Bits239,8519
+#define GCALIGNMENT 243,8647
+ VALBITS 246,8742
+ INTTYPEBITS 249,8838
+ FIXNUM_BITS 252,8945
+#define VAL_MAX 263,9327
+#define USE_LSB_TAG 271,9777
+DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733
+# define alignas(281,10077
+# define GCALIGNED 288,10227
+# define GCALIGNED 290,10292
+# define lisp_h_XLI(327,11642
+# define lisp_h_XIL(328,11673
+# define lisp_h_XLI(330,11724
+# define lisp_h_XIL(331,11751
+#define lisp_h_CHECK_LIST_CONS(333,11785
+#define lisp_h_CHECK_NUMBER(334,11856
+#define lisp_h_CHECK_SYMBOL(335,11927
+#define lisp_h_CHECK_TYPE(336,11996
+#define lisp_h_CONSP(338,12107
+#define lisp_h_EQ(339,12156
+#define lisp_h_FLOATP(340,12201
+#define lisp_h_INTEGERP(341,12252
+#define lisp_h_MARKERP(342,12333
+#define lisp_h_MISCP(343,12408
+#define lisp_h_NILP(344,12457
+#define lisp_h_SET_SYMBOL_VAL(345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(347,12607
+#define lisp_h_SYMBOL_VAL(348,12671
+#define lisp_h_SYMBOLP(350,12772
+#define lisp_h_VECTORLIKEP(351,12825
+#define lisp_h_XCAR(352,12886
+#define lisp_h_XCDR(353,12924
+#define lisp_h_XCONS(354,12964
+#define lisp_h_XHASH(356,13059
+#define lisp_h_XPNTR(357,13093
+# define lisp_h_check_cons_list(360,13221
+# define lisp_h_make_number(363,13289
+# define lisp_h_XFASTINT(365,13392
+# define lisp_h_XINT(366,13429
+# define lisp_h_XSYMBOL(367,13478
+# define lisp_h_XTYPE(371,13631
+# define lisp_h_XUNTAG(372,13696
+# define XLI(381,14086
+# define XIL(382,14117
+# define CHECK_LIST_CONS(383,14148
+# define CHECK_NUMBER(384,14209
+# define CHECK_SYMBOL(385,14258
+# define CHECK_TYPE(386,14307
+# define CONSP(387,14382
+# define EQ(388,14417
+# define FLOATP(389,14452
+# define INTEGERP(390,14489
+# define MARKERP(391,14530
+# define MISCP(392,14569
+# define NILP(393,14604
+# define SET_SYMBOL_VAL(394,14637
+# define SYMBOL_CONSTANT_P(395,14700
+# define SYMBOL_VAL(396,14763
+# define SYMBOLP(397,14812
+# define VECTORLIKEP(398,14851
+# define XCAR(399,14898
+# define XCDR(400,14931
+# define XCONS(401,14964
+# define XHASH(402,14999
+# define XPNTR(403,15034
+# define check_cons_list(405,15097
+# define make_number(408,15176
+# define XFASTINT(409,15224
+# define XINT(410,15266
+# define XSYMBOL(411,15300
+# define XTYPE(412,15340
+# define XUNTAG(413,15376
+#define LISP_MACRO_DEFUN(421,15672
+#define LISP_MACRO_DEFUN_VOID(425,15845
+#define INTMASK 437,16289
+#define case_Lisp_Int 438,16342
+#define ENUM_BF(445,16681
+#define ENUM_BF(447,16722
+enum Lisp_Type451,16763
+ Lisp_Symbol 454,16851
+ Lisp_Misc 458,16993
+ Lisp_Int0 461,17067
+ Lisp_Int1 462,17086
+ Lisp_String 466,17264
+ Lisp_Vectorlike 472,17543
+ Lisp_Cons 475,17632
+ Lisp_Float 477,17670
+enum Lisp_Misc_Type485,18016
+ Lisp_Misc_Free 487,18040
+ Lisp_Misc_Marker,488,18069
+ Lisp_Misc_Overlay,489,18091
+ Lisp_Misc_Save_Value,490,18114
+ Lisp_Misc_Finalizer,491,18140
+ Lisp_Misc_Float,494,18275
+ Lisp_Misc_Limit496,18359
+enum Lisp_Fwd_Type502,18543
+ Lisp_Fwd_Int,504,18566
+ Lisp_Fwd_Bool,505,18619
+ Lisp_Fwd_Obj,506,18670
+ Lisp_Fwd_Buffer_Obj,507,18729
+ Lisp_Fwd_Kboard_Obj 508,18800
+typedef struct { EMACS_INT i; } Lisp_Object;567,21781
+#define LISP_INITIALLY(569,21827
+#undef CHECK_LISP_OBJECT_TYPE571,21858
+enum CHECK_LISP_OBJECT_TYPE 572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888
+typedef EMACS_INT Lisp_Object;577,22064
+#define LISP_INITIALLY(578,22095
+enum CHECK_LISP_OBJECT_TYPE 579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125
+#define LISP_INITIALLY_ZERO 582,22226
+INLINE bool BOOL_VECTOR_P 588,22350
+INLINE bool BUFFER_OBJFWDP 589,22391
+INLINE bool BUFFERP 590,22438
+INLINE bool CHAR_TABLE_P 591,22473
+INLINE Lisp_Object CHAR_TABLE_REF_ASCII 592,22513
+INLINE bool 593,22579
+INLINE bool 594,22614
+INLINE bool functionp 595,22650
+INLINE bool 596,22687
+INLINE bool 597,22725
+INLINE bool 598,22762
+INLINE bool 599,22797
+INLINE bool OVERLAYP 600,22831
+INLINE bool PROCESSP 601,22867
+INLINE bool PSEUDOVECTORP 602,22903
+INLINE bool SAVE_VALUEP 603,22949
+INLINE bool FINALIZERP 604,22988
+INLINE void set_sub_char_table_contents 605,23026
+INLINE bool STRINGP 607,23116
+INLINE bool SUB_CHAR_TABLE_P 608,23151
+INLINE bool SUBRP 609,23195
+INLINE bool 610,23228
+INLINE bool 611,23265
+INLINE bool WINDOWP 612,23306
+INLINE bool TERMINALP 613,23341
+INLINE struct Lisp_Save_Value *XSAVE_VALUE XSAVE_VALUE614,23378
+INLINE struct Lisp_Finalizer *XFINALIZER XFINALIZER615,23436
+INLINE struct Lisp_Symbol *(XSYMBOL)616,23492
+INLINE void 617,23544
+extern Lisp_Object char_table_ref 620,23616
+extern void char_table_set 621,23670
+extern _Noreturn Lisp_Object wrong_type_argument 624,23757
+extern _Noreturn void wrong_choice 625,23834
+extern bool might_dump;628,23925
+extern bool initialized;631,24061
+extern double extract_float 634,24117
+enum symbol_interned639,24199
+ SYMBOL_UNINTERNED 641,24222
+ SYMBOL_INTERNED 642,24247
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270
+enum symbol_redirect646,24315
+ SYMBOL_PLAINVAL 648,24338
+ SYMBOL_VARALIAS 649,24362
+ SYMBOL_LOCALIZED 650,24386
+ SYMBOL_FORWARDED 651,24410
+struct Lisp_Symbol654,24437
+ ENUM_BF 663,24793
+#define EXFUN(707,26252
+#define DEFUN_ARGS_MANY 712,26446
+#define DEFUN_ARGS_UNEVALLED 713,26498
+#define DEFUN_ARGS_0 714,26541
+#define DEFUN_ARGS_1 715,26569
+#define DEFUN_ARGS_2 716,26604
+#define DEFUN_ARGS_3 717,26652
+#define DEFUN_ARGS_4 718,26713
+#define DEFUN_ARGS_5 719,26787
+#define DEFUN_ARGS_6 721,26880
+#define DEFUN_ARGS_7 723,26986
+#define DEFUN_ARGS_8 725,27105
+#define TAG_PTR(729,27296
+#define TAG_SYMOFFSET(734,27543
+#define XLI_BUILTIN_LISPSYM(741,27842
+#define DEFINE_LISP_SYMBOL(746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572
+LISP_MACRO_DEFUN 762,28777
+# define ARRAY_MARK_FLAG 768,29024
+# define PSEUDOVECTOR_FLAG 774,29267
+enum pvec_type780,29568
+ PVEC_NORMAL_VECTOR,782,29585
+ PVEC_FREE,783,29607
+ PVEC_PROCESS,784,29620
+ PVEC_FRAME,785,29636
+ PVEC_WINDOW,786,29650
+ PVEC_BOOL_VECTOR,787,29665
+ PVEC_BUFFER,788,29685
+ PVEC_HASH_TABLE,789,29700
+ PVEC_TERMINAL,790,29719
+ PVEC_WINDOW_CONFIGURATION,791,29736
+ PVEC_SUBR,792,29765
+ PVEC_OTHER,793,29778
+ PVEC_COMPILED,795,29856
+ PVEC_CHAR_TABLE,796,29873
+ PVEC_SUB_CHAR_TABLE,797,29892
+ PVEC_FONT 798,29915
+enum More_Lisp_Bits801,29991
+ PSEUDOVECTOR_SIZE_BITS 808,30382
+ PSEUDOVECTOR_SIZE_MASK 809,30415
+ PSEUDOVECTOR_REST_BITS 813,30625
+ PSEUDOVECTOR_REST_MASK 814,30658
+ PSEUDOVECTOR_AREA_BITS 818,30823
+ PVEC_TYPE_MASK 819,30901
+# define VALMASK 829,31302
+DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257
+#define MOST_POSITIVE_FIXNUM 834,31532
+#define MOST_NEGATIVE_FIXNUM 835,31592
+XINT 874,32684
+XFASTINT 889,33035
+XSYMBOL 899,33263
+XTYPE 910,33481
+XUNTAG 918,33661
+LISP_MACRO_DEFUN 927,33857
+LISP_MACRO_DEFUN 940,34242
+#define FIXNUM_OVERFLOW_P(958,34855
+LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632
+LISP_MACRO_DEFUN 970,35171
+XSTRING 980,35391
+#define SYMBOL_INDEX(988,35575
+XFLOAT 991,35636
+XPROCESS 1000,35778
+XWINDOW 1007,35895
+XTERMINAL 1014,36012
+XSUBR 1021,36134
+XBUFFER 1028,36245
+XCHAR_TABLE 1035,36369
+XSUB_CHAR_TABLE 1042,36506
+XBOOL_VECTOR 1049,36648
+make_lisp_ptr 1058,36827
+make_lisp_symbol 1066,37013
+builtin_lisp_symbol 1074,37197
+#define XSETINT(1079,37279
+#define XSETFASTINT(1080,37325
+#define XSETCONS(1081,37375
+#define XSETVECTOR(1082,37435
+#define XSETSTRING(1083,37503
+#define XSETSYMBOL(1084,37567
+#define XSETFLOAT(1085,37621
+#define XSETMISC(1086,37683
+#define XSETPVECTYPE(1090,37772
+#define XSETPVECTYPESIZE(1092,37888
+#define XSETPSEUDOVECTOR(1099,38185
+#define XSETTYPED_PSEUDOVECTOR(1105,38369
+#define XSETWINDOW_CONFIGURATION(1110,38579
+#define XSETPROCESS(1112,38675
+#define XSETWINDOW(1113,38741
+#define XSETTERMINAL(1114,38805
+#define XSETSUBR(1115,38873
+#define XSETCOMPILED(1116,38933
+#define XSETBUFFER(1117,39001
+#define XSETCHAR_TABLE(1118,39065
+#define XSETBOOL_VECTOR(1119,39137
+#define XSETSUB_CHAR_TABLE(1120,39211
+XINTPTR 1128,39581
+make_pointer_integer 1134,39661
+LISP_MACRO_DEFUN_VOID 1143,39826
+typedef struct interval *INTERVAL;INTERVAL1149,39987
+xcar_addr 1174,40760
+xcdr_addr 1179,40837
+LISP_MACRO_DEFUN 1185,40931
+XSETCDR 1198,41307
+CAR 1205,41457
+CDR 1212,41591
+CAR_SAFE 1221,41791
+CDR_SAFE 1226,41877
+STRING_MULTIBYTE 1243,42250
+#define STRING_BYTES_BOUND 1261,43057
+#define STRING_SET_UNIBYTE(1265,43201
+#define STRING_SET_MULTIBYTE(1275,43516
+SDATA 1286,43830
+SSDATA 1291,43908
+SREF 1297,44037
+SSET 1302,44128
+SCHARS 1307,44242
+extern ptrdiff_t string_bytes 1313,44337
+STRING_BYTES 1316,44415
+SBYTES 1326,44595
+STRING_SET_CHARS 1331,44681
+struct vectorlike_header1343,45232
+struct Lisp_Vector1369,46482
+ ALIGNOF_STRUCT_LISP_VECTOR1378,46681
+struct Lisp_Bool_Vector1384,46864
+bool_vector_size 1399,47385
+bool_vector_data 1407,47523
+bool_vector_uchar_data 1413,47617
+bool_vector_words 1421,47803
+bool_vector_bytes 1428,47998
+bool_vector_bitref 1437,48238
+bool_vector_ref 1445,48478
+bool_vector_set 1453,48618
+ header_size 1471,49047
+ bool_header_size 1472,49106
+ word_size 1473,49171
+AREF 1479,49284
+aref_addr 1485,49391
+ASIZE 1491,49501
+ASET 1497,49583
+gc_aset 1504,49742
+enum { NIL_IS_ZERO 1515,50269
+memclear 1520,50464
+#define VECSIZE(1531,50762
+#define PSEUDOVECSIZE(1538,51047
+#define UNSIGNED_CMP(1546,51480
+#define ASCII_CHAR_P(1552,51734
+enum CHARTAB_SIZE_BITS1565,52489
+ CHARTAB_SIZE_BITS_0 1567,52516
+ CHARTAB_SIZE_BITS_1 1568,52545
+ CHARTAB_SIZE_BITS_2 1569,52574
+ CHARTAB_SIZE_BITS_3 1570,52603
+extern const int chartab_size[chartab_size1573,52637
+struct Lisp_Char_Table1575,52672
+struct Lisp_Sub_Char_Table1606,53752
+CHAR_TABLE_REF_ASCII 1628,54566
+CHAR_TABLE_REF 1648,55113
+CHAR_TABLE_SET 1658,55402
+struct Lisp_Subr1670,55786
+enum char_table_specials1692,56798
+ CHAR_TABLE_STANDARD_SLOTS 1697,56993
+ SUB_CHAR_TABLE_OFFSET 1701,57214
+CHAR_TABLE_EXTRA_SLOTS 1707,57377
+verify 1714,57596
+LISP_MACRO_DEFUN 1723,57921
+SYMBOL_BLV 1732,58181
+SYMBOL_FWD 1738,58316
+LISP_MACRO_DEFUN_VOID 1744,58428
+SET_SYMBOL_BLV 1754,58691
+SET_SYMBOL_FWD 1760,58850
+SYMBOL_NAME 1767,59001
+SYMBOL_INTERNED_P 1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299
+#define DEFSYM(1796,59809
+LISP_MACRO_DEFUN DEFSYM1792,59630
+struct hash_table_test1805,60062
+struct Lisp_Hash_Table1823,60555
+XHASH_TABLE 1880,62531
+#define XSET_HASH_TABLE(1885,62602
+HASH_TABLE_P 1889,62703
+HASH_KEY 1896,62860
+HASH_VALUE 1903,63040
+HASH_NEXT 1911,63254
+HASH_HASH 1918,63431
+HASH_INDEX 1926,63677
+HASH_TABLE_SIZE 1933,63826
+enum DEFAULT_HASH_SIZE 1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956
+static double const DEFAULT_REHASH_THRESHOLD 1946,64176
+static double const DEFAULT_REHASH_SIZE 1950,64299
+sxhash_combine 1956,64465
+SXHASH_REDUCE 1964,64648
+struct Lisp_Misc_Any 1971,64806
+ ENUM_BF 1973,64866
+struct Lisp_Marker1978,64980
+ ENUM_BF 1980,65001
+struct Lisp_Overlay2021,66838
+ ENUM_BF 2034,67346
+ SAVE_UNUSED,2047,67641
+ SAVE_INTEGER,2048,67658
+ SAVE_FUNCPOINTER,2049,67676
+ SAVE_POINTER,2050,67698
+ SAVE_OBJECT2051,67716
+enum { SAVE_SLOT_BITS 2055,67801
+enum { SAVE_VALUE_SLOTS 2058,67898
+enum { SAVE_TYPE_BITS 2062,68006
+enum Lisp_Save_Type2064,68072
+ SAVE_TYPE_INT_INT 2066,68096
+ SAVE_TYPE_INT_INT_INT2067,68169
+ SAVE_TYPE_OBJ_OBJ 2069,68259
+ SAVE_TYPE_OBJ_OBJ_OBJ 2070,68330
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68411
+ SAVE_TYPE_PTR_INT 2073,68506
+ SAVE_TYPE_PTR_OBJ 2074,68579
+ SAVE_TYPE_PTR_PTR 2075,68651
+ SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68724
+ SAVE_TYPE_MEMORY 2080,68882
+typedef void (*voidfuncptr)voidfuncptr2108,69836
+struct Lisp_Save_Value2110,69873
+ ENUM_BF 2112,69900
+save_type 2134,70752
+XSAVE_POINTER 2143,70982
+set_save_pointer 2149,71144
+XSAVE_FUNCPOINTER 2155,71326
+XSAVE_INTEGER 2164,71546
+set_save_integer 2170,71708
+XSAVE_OBJECT 2179,71929
+struct Lisp_Finalizer2186,72106
+struct Lisp_Free2201,72581
+ ENUM_BF 2203,72602
+union Lisp_Misc2212,72882
+XMISC 2223,73181
+XMISCANY 2229,73270
+XMISCTYPE 2236,73379
+XMARKER 2242,73467
+XOVERLAY 2249,73582
+XSAVE_VALUE 2256,73703
+XFINALIZER 2263,73832
+struct Lisp_Intfwd2274,74117
+struct Lisp_Boolfwd2284,74411
+struct Lisp_Objfwd2294,74702
+struct Lisp_Buffer_Objfwd2302,74934
+struct Lisp_Buffer_Local_Value2334,76470
+struct Lisp_Kboard_Objfwd2362,77729
+union Lisp_Fwd2368,77838
+XFWDTYPE 2378,78084
+XBUFFER_OBJFWD 2384,78180
+struct Lisp_Float2391,78316
+XFLOAT_DATA 2401,78434
+ IEEE_FLOATING_POINT2415,78943
+#define _UCHAR_T2423,79266
+typedef unsigned char UCHAR;2424,79283
+enum Lisp_Compiled2429,79366
+ COMPILED_ARGLIST 2431,79389
+ COMPILED_BYTECODE 2432,79415
+ COMPILED_CONSTANTS 2433,79442
+ COMPILED_STACK_DEPTH 2434,79470
+ COMPILED_DOC_STRING 2435,79500
+ COMPILED_INTERACTIVE 2436,79529
+enum char_bits2443,79831
+ CHAR_ALT 2445,79850
+ CHAR_SUPER 2446,79876
+ CHAR_HYPER 2447,79904
+ CHAR_SHIFT 2448,79932
+ CHAR_CTL 2449,79960
+ CHAR_META 2450,79986
+ CHAR_MODIFIER_MASK 2452,80014
+ CHARACTERBITS 2457,80209
+LISP_MACRO_DEFUN 2462,80267
+NATNUMP 2470,80409
+RANGED_INTEGERP 2476,80490
+#define TYPE_RANGED_INTEGERP(2481,80612
+LISP_MACRO_DEFUN 2486,80797
+VECTORP 2500,81270
+OVERLAYP 2505,81373
+SAVE_VALUEP 2510,81472
+FINALIZERP 2516,81578
+AUTOLOADP 2522,81682
+BUFFER_OBJFWDP 2528,81773
+PSEUDOVECTOR_TYPEP 2534,81871
+PSEUDOVECTORP 2542,82124
+WINDOW_CONFIGURATIONP 2558,82476
+PROCESSP 2564,82586
+WINDOWP 2570,82670
+TERMINALP 2576,82752
+SUBRP 2582,82838
+COMPILEDP 2588,82916
+BUFFERP 2594,83002
+CHAR_TABLE_P 2600,83084
+SUB_CHAR_TABLE_P 2606,83175
+BOOL_VECTOR_P 2612,83274
+FRAMEP 2618,83367
+IMAGEP 2625,83484
+ARRAYP 2632,83589
+CHECK_LIST 2638,83708
+LISP_MACRO_DEFUN_VOID 2643,83789
+CHECK_STRING_CAR 2653,84086
+CHECK_CONS 2658,84190
+CHECK_VECTOR 2663,84270
+CHECK_BOOL_VECTOR 2668,84356
+CHECK_VECTOR_OR_STRING 2674,84533
+CHECK_ARRAY 2683,84707
+CHECK_BUFFER 2688,84815
+CHECK_WINDOW 2693,84901
+CHECK_PROCESS 2699,85007
+CHECK_NATNUM 2705,85103
+#define CHECK_RANGED_INTEGER(2710,85180
+#define CHECK_TYPE_RANGED_INTEGER(2721,85563
+#define CHECK_NUMBER_COERCE_MARKER(2729,85833
+XFLOATINT 2738,86086
+CHECK_NUMBER_OR_FLOAT 2744,86157
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86256
+CHECK_NUMBER_CAR 2760,86666
+CHECK_NUMBER_CDR 2768,86788
+#define DEFUN(2803,88383
+#define DEFUN(2812,88851
+FUNCTIONP 2822,89206
+extern void defsubr 2829,89358
+enum maxargs2831,89401
+ MANY 2833,89418
+ UNEVALLED 2834,89433
+#define CALLMANY(2838,89536
+#define CALLN(2844,89889
+extern void defvar_lisp 2846,89959
+extern void defvar_lisp_nopro 2847,90036
+extern void defvar_bool 2848,90119
+extern void defvar_int 2849,90190
+extern void defvar_kboard 2850,90264
+#define DEFVAR_LISP(2869,91094
+#define DEFVAR_LISP_NOPRO(2874,91266
+#define DEFVAR_BOOL(2879,91448
+#define DEFVAR_INT(2884,91621
+#define DEFVAR_BUFFER_DEFAULTS(2890,91792
+#define DEFVAR_KBOARD(2896,91996
+typedef jmp_buf sys_jmp_buf;2906,92320
+# define sys_setjmp(2907,92349
+# define sys_longjmp(2908,92384
+typedef sigjmp_buf sys_jmp_buf;2910,92456
+# define sys_setjmp(2911,92488
+# define sys_longjmp(2912,92528
+typedef jmp_buf sys_jmp_buf;2916,92687
+# define sys_setjmp(2917,92716
+# define sys_longjmp(2918,92750
+enum specbind_tag 2943,93802
+ SPECPDL_UNWIND,2944,93822
+ SPECPDL_UNWIND_PTR,2945,93891
+ SPECPDL_UNWIND_INT,2946,93942
+ SPECPDL_UNWIND_VOID,2947,93990
+ SPECPDL_BACKTRACE,2948,94044
+ SPECPDL_LET,2949,94102
+ SPECPDL_LET_LOCAL,2951,94232
+ SPECPDL_LET_DEFAULT 2952,94289
+union specbinding2955,94361
+ ENUM_BF 2957,94383
+ ENUM_BF 2959,94440
+ ENUM_BF 2964,94570
+ ENUM_BF 2969,94693
+ ENUM_BF 2974,94811
+ ENUM_BF 2978,94916
+ ENUM_BF 2983,95091
+enum handlertype 3021,96407
+enum handlertype { CATCHER,3021,96407
+enum handlertype { CATCHER, CONDITION_CASE 3021,96407
+struct handler3023,96454
+#define PUSH_HANDLER(3053,97443
+extern Lisp_Object memory_signal_data;3075,98149
+extern char *stack_bottom;stack_bottom3079,98282
+extern void process_pending_signals 3097,99099
+extern bool volatile pending_signals;3098,99143
+extern void process_quit_flag 3100,99182
+#define QUIT 3101,99220
+#define QUITP 3112,99470
+extern Lisp_Object Vascii_downcase_table;3114,99531
+extern Lisp_Object Vascii_canon_table;3115,99573
+extern struct gcpro *gcprolist;gcprolist3130,100280
+struct gcpro3132,100313
+#define GC_USE_GCPROS_AS_BEFORE 3171,101294
+#define GC_MAKE_GCPROS_NOOPS 3172,101329
+#define GC_MARK_STACK_CHECK_GCPROS 3173,101361
+#define GC_USE_GCPROS_CHECK_ZOMBIES 3174,101398
+#define GC_MARK_STACK 3177,101459
+#define BYTE_MARK_STACK 3181,101559
+#define GCPRO1(3190,101830
+#define GCPRO2(3191,101870
+#define GCPRO3(3192,101936
+#define GCPRO4(3194,102031
+#define GCPRO5(3196,102151
+#define GCPRO6(3198,102296
+#define GCPRO7(3201,102471
+#define UNGCPRO 3202,102550
+#define GCPRO1(3208,102650
+#define GCPRO2(3212,102772
+#define GCPRO3(3217,102964
+#define GCPRO4(3223,103226
+#define GCPRO5(3230,103557
+#define GCPRO6(3238,103958
+#define GCPRO7(3247,104428
+#define UNGCPRO 3257,104968
+extern int gcpro_level;3261,105037
+#define GCPRO1(3263,105062
+#define GCPRO2(3269,105296
+#define GCPRO3(3278,105714
+#define GCPRO4(3289,106271
+#define GCPRO5(3302,106969
+#define GCPRO6(3317,107809
+#define GCPRO7(3334,108790
+#define UNGCPRO 3353,109913
+#define RETURN_UNGCPRO(3363,110180
+void staticpro 3375,110453
+vcopy 3384,110654
+set_hash_key_slot 3393,110929
+set_hash_value_slot 3399,111068
+set_symbol_function 3408,111303
+set_symbol_plist 3414,111418
+set_symbol_next 3420,111521
+blv_found 3428,111694
+set_overlay_plist 3437,111877
+string_intervals 3445,112028
+set_string_intervals 3453,112150
+set_char_table_defalt 3462,112352
+set_char_table_purpose 3467,112464
+set_char_table_extras 3475,112633
+set_char_table_contents 3482,112842
+set_sub_char_table_contents 3489,113037
+extern Lisp_Object indirect_function 3495,113196
+extern Lisp_Object find_symbol_value 3496,113248
+enum Arith_Comparison 3497,113300
+ ARITH_EQUAL,3498,113324
+ ARITH_NOTEQUAL,3499,113339
+ ARITH_LESS,3500,113357
+ ARITH_GRTR,3501,113371
+ ARITH_LESS_OR_EQUAL,3502,113385
+ ARITH_GRTR_OR_EQUAL3503,113408
+extern Lisp_Object arithcompare 3505,113433
+#define INTEGER_TO_CONS(3511,113759
+#define CONS_TO_INTEGER(3529,114622
+extern intmax_t cons_to_signed 3533,114837
+extern uintmax_t cons_to_unsigned 3534,114903
+extern struct Lisp_Symbol *indirect_variable indirect_variable3536,114964
+extern _Noreturn void args_out_of_range 3537,115033
+extern _Noreturn void args_out_of_range_3 3538,115101
+extern Lisp_Object do_symval_forwarding 3540,115192
+extern void set_internal 3541,115252
+extern void syms_of_data 3542,115324
+extern void swap_in_global_binding 3543,115357
+extern void syms_of_cmds 3546,115441
+extern void keys_of_cmds 3547,115474
+extern Lisp_Object detect_coding_system 3550,115536
+extern void init_coding 3552,115689
+extern void init_coding_once 3553,115721
+extern void syms_of_coding 3554,115758
+extern ptrdiff_t chars_in_text 3557,115825
+extern ptrdiff_t multibyte_chars_in_text 3558,115892
+extern void syms_of_character 3559,115969
+extern void init_charset 3562,116037
+extern void init_charset_once 3563,116070
+extern void syms_of_charset 3564,116108
+extern void init_syntax_once 3569,116228
+extern void syms_of_syntax 3570,116265
+enum { NEXT_ALMOST_PRIME_LIMIT 3573,116326
+extern EMACS_INT next_almost_prime 3574,116365
+enum constype 3739,123817
+enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123817
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123817
+extern Lisp_Object listn 3740,123863
+list2i 3745,124007
+list3i 3751,124116
+list4i 3757,124255
+extern Lisp_Object make_uninit_bool_vector 3763,124407
+extern Lisp_Object bool_vector_fill 3764,124463
+extern _Noreturn void string_overflow 3765,124527
+extern Lisp_Object make_string 3766,124573
+extern Lisp_Object make_formatted_string 3767,124631
+extern Lisp_Object make_multibyte_string 3779,124985
+extern Lisp_Object make_event_array 3780,125064
+extern Lisp_Object make_uninit_string 3781,125128
+extern Lisp_Object make_uninit_multibyte_string 3782,125179
+extern Lisp_Object make_string_from_bytes 3783,125251
+extern Lisp_Object make_specified_string 3784,125331
+extern Lisp_Object make_pure_string 3786,125423
+extern Lisp_Object make_pure_c_string 3787,125503
+build_pure_c_string 3792,125659
+build_string 3801,125864
+extern Lisp_Object pure_cons 3806,125942
+extern void make_byte_code 3807,125999
+extern struct Lisp_Vector *allocate_vector allocate_vector3808,126050
+make_uninit_vector 3820,126435
+make_uninit_sub_char_table 3833,126654
+extern struct Lisp_Vector *allocate_pseudovector
allocate_pseudovector3844,126963
+#define ALLOCATE_PSEUDOVECTOR(3850,127198
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127534
+extern bool gc_in_progress;3863,127735
+extern bool abort_on_gc;3864,127763
+extern Lisp_Object make_float 3865,127788
+extern void display_malloc_warning 3866,127828
+extern ptrdiff_t inhibit_garbage_collection 3867,127871
+extern Lisp_Object make_save_int_int_int 3868,127923
+extern Lisp_Object make_save_obj_obj_obj_obj 3869,127999
+extern Lisp_Object make_save_ptr 3871,128109
+extern Lisp_Object make_save_ptr_int 3872,128152
+extern Lisp_Object make_save_ptr_ptr 3873,128210
+extern Lisp_Object make_save_funcptr_ptr_obj 3874,128265
+extern Lisp_Object make_save_memory 3876,128361
+extern void free_save_value 3877,128425
+extern Lisp_Object build_overlay 3878,128468
+extern void free_marker 3879,128542
+extern void free_cons 3880,128581
+extern void init_alloc_once 3881,128625
+extern void init_alloc 3882,128661
+extern void syms_of_alloc 3883,128692
+extern struct buffer * allocate_buffer 3884,128726
+extern int valid_lisp_object_p 3885,128773
+extern int relocatable_string_data_p 3886,128819
+extern void check_cons_list 3888,128898
+INLINE void 3890,128940
+extern void *r_alloc r_alloc3895,129061
+#define FLOAT_TO_STRING_BUFSIZE 3927,130524
+extern int openp 3957,131673
+extern Lisp_Object string_to_number 3959,131783
+extern void map_obarray 3960,131846
+extern void dir_warning 3962,131960
+extern void init_obarray 3963,132013
+extern void init_lread 3964,132046
+extern void syms_of_lread 3965,132077
+intern 3968,132131
+intern_c_string 3974,132219
+extern EMACS_INT lisp_eval_depth;3980,132332
+extern Lisp_Object Vautoload_queue;3981,132366
+extern Lisp_Object Vrun_hooks;3982,132402
+extern Lisp_Object Vsignaling_function;3983,132433
+extern Lisp_Object inhibit_lisp_code;3984,132473
+extern struct handler *handlerlist;handlerlist3985,132511
+extern void run_hook 3994,132753
+extern void run_hook_with_args_2 3995,132789
+extern Lisp_Object run_hook_with_args 3996,132863
+extern _Noreturn void xsignal 3999,133022
+extern _Noreturn void xsignal0 4000,133080
+extern _Noreturn void xsignal1 4001,133126
+extern _Noreturn void xsignal2 4002,133185
+extern _Noreturn void xsignal3 4003,133257
+extern _Noreturn void signal_error 4005,133346
+extern Lisp_Object eval_sub 4006,133410
+extern Lisp_Object apply1 4007,133458
+extern Lisp_Object call0 4008,133512
+extern Lisp_Object call1 4009,133552
+extern Lisp_Object call2 4010,133605
+extern Lisp_Object call3 4011,133671
+extern Lisp_Object call4 4012,133750
+extern Lisp_Object call5 4013,133842
+extern Lisp_Object call6 4014,133947
+extern Lisp_Object call7 4015,134065
+extern Lisp_Object internal_catch 4016,134196
+extern Lisp_Object internal_lisp_condition_case 4017,134289
+extern Lisp_Object internal_condition_case 4018,134378
+extern Lisp_Object internal_condition_case_1 4019,134491
+extern Lisp_Object internal_condition_case_2 4020,134626
+extern Lisp_Object internal_condition_case_n4021,134787
+extern void specbind 4024,134983
+extern void record_unwind_protect 4025,135032
+extern void record_unwind_protect_ptr 4026,135105
+extern void record_unwind_protect_int 4027,135172
+extern void record_unwind_protect_void 4028,135233
+extern void record_unwind_protect_nothing 4029,135291
+extern void clear_unwind_protect 4030,135341
+extern void set_unwind_protect 4031,135387
+extern void set_unwind_protect_ptr 4032,135468
+extern Lisp_Object unbind_to 4033,135543
+extern _Noreturn void error 4034,135598
+fast_string_match_ignore_case 4136,140086
+extern ptrdiff_t fast_c_string_match_ignore_case 4141,140236
+extern ptrdiff_t fast_looking_at 4143,140333
+extern ptrdiff_t find_newline 4145,140472
+extern ptrdiff_t scan_newline 4147,140601
+extern ptrdiff_t scan_newline_from_point 4149,140704
+extern ptrdiff_t find_newline_no_quit 4150,140784
+extern ptrdiff_t find_before_next_newline 4152,140881
+extern void syms_of_search 4154,140979
+extern void clear_regexp_cache 4155,141014
+extern Lisp_Object Vminibuffer_list;4159,141084
+extern Lisp_Object last_minibuf_string;4160,141121
+extern Lisp_Object get_minibuffer 4161,141161
+extern void init_minibuf_once 4162,141208
+extern void syms_of_minibuf 4163,141246
+extern void syms_of_callint 4167,141313
+extern void syms_of_casefiddle 4171,141383
+extern void keys_of_casefiddle 4172,141422
+extern void init_casetab_once 4176,141492
+extern void syms_of_casetab 4177,141530
+extern Lisp_Object echo_message_buffer;4181,141598
+extern struct kboard *echo_kboard;echo_kboard4182,141638
+extern void cancel_echoing 4183,141673
+extern Lisp_Object last_undo_boundary;4184,141708
+extern bool input_pending;4185,141747
+extern sigjmp_buf return_to_command_loop;4187,141810
+extern Lisp_Object menu_bar_items 4189,141859
+extern Lisp_Object tool_bar_items 4190,141908
+extern void discard_mouse_events 4191,141964
+void handle_input_available_signal 4193,142025
+extern Lisp_Object pending_funcalls;4195,142074
+extern bool detect_input_pending 4196,142111
+extern bool detect_input_pending_ignore_squeezables 4197,142152
+extern bool detect_input_pending_run_timers 4198,142212
+extern void safe_run_hooks 4199,142264
+extern void cmd_error_internal 4200,142306
+extern Lisp_Object command_loop_1 4201,142366
+extern Lisp_Object read_menu_command 4202,142408
+extern Lisp_Object recursive_edit_1 4203,142453
+extern void record_auto_save 4204,142497
+extern void force_auto_save_soon 4205,142534
+extern void init_keyboard 4206,142575
+extern void syms_of_keyboard 4207,142609
+extern void keys_of_keyboard 4208,142646
+extern ptrdiff_t current_column 4211,142712
+extern void invalidate_current_column 4212,142752
+extern bool indented_beyond_p 4213,142798
+extern void syms_of_indent 4214,142863
+extern void store_frame_param 4217,142926
+extern void store_in_alist 4218,143000
+extern Lisp_Object do_switch_frame 4219,143070
+extern Lisp_Object get_frame_param 4220,143143
+extern void frames_discard_buffer 4221,143209
+extern void syms_of_frame 4222,143258
+extern char **initial_argv;initial_argv4225,143320
+extern int initial_argc;4226,143348
+extern bool display_arg;4228,143423
+extern Lisp_Object decode_env_path 4230,143455
+extern Lisp_Object empty_unibyte_string,4231,143526
+extern Lisp_Object empty_unibyte_string, empty_multibyte_string;4231,143526
+extern _Noreturn void terminate_due_to_signal 4232,143591
+extern Lisp_Object Vlibrary_cache;4234,143666
+void fixup_locale 4237,143727
+void synchronize_system_messages_locale 4238,143753
+void synchronize_system_time_locale 4239,143801
+INLINE void fixup_locale 4241,143851
+INLINE void synchronize_system_messages_locale 4242,143886
+INLINE void synchronize_system_time_locale 4243,143943
+extern void shut_down_emacs 4245,144003
+extern bool noninteractive;4248,144129
+extern bool no_site_lisp;4251,144221
+extern int daemon_pipe[daemon_pipe4256,144389
+#define IS_DAEMON 4257,144416
+#define DAEMON_RUNNING 4258,144456
+extern void *w32_daemon_event;w32_daemon_event4260,144524
+#define IS_DAEMON 4261,144555
+#define DAEMON_RUNNING 4262,144600
+extern bool fatal_error_in_progress;4266,144721
+extern bool inhibit_window_system;4269,144827
+extern bool running_asynch_code;4271,144920
+extern void kill_buffer_processes 4274,144983
+extern int wait_reading_process_output 4275,145032
+# define WAIT_READING_MAX 4281,145419
+# define WAIT_READING_MAX 4283,145491
+extern void add_timer_wait_descriptor 4286,145555
+extern void add_keyboard_wait_descriptor 4288,145607
+extern void delete_keyboard_wait_descriptor 4289,145655
+extern void add_gpm_wait_descriptor 4291,145722
+extern void delete_gpm_wait_descriptor 4292,145765
+extern void init_process_emacs 4294,145818
+extern void syms_of_process 4295,145857
+extern void setup_process_coding_systems 4296,145893
+extern int child_setup 4302,146013
+extern void init_callproc_1 4303,146081
+extern void init_callproc 4304,146117
+extern void set_initial_environment 4305,146151
+extern void syms_of_callproc 4306,146195
+extern Lisp_Object read_doc_string 4309,146258
+extern Lisp_Object get_doc_string 4310,146308
+extern void syms_of_doc 4311,146369
+extern int read_bytecode_char 4312,146401
+extern void syms_of_bytecode 4315,146470
+extern struct byte_stack *byte_stack_list;byte_stack_list4316,146507
+extern void mark_byte_stack 4318,146570
+extern void unmark_byte_stack 4320,146613
+extern Lisp_Object exec_byte_code 4321,146651
+extern void init_macros 4325,146801
+extern void syms_of_macros 4326,146833
+extern void truncate_undo_list 4329,146895
+extern void record_insert 4330,146945
+extern void record_delete 4331,146995
+extern void record_first_change 4332,147053
+extern void record_change 4333,147093
+extern void record_property_change 4334,147143
+extern void syms_of_undo 4337,147285
+extern void report_interval_modification 4340,147349
+extern void syms_of_menu 4343,147445
+extern void syms_of_xmenu 4346,147506
+extern char *get_current_dir_name get_current_dir_name4356,147708
+extern void stuff_char 4358,147757
+extern void init_foreground_group 4359,147790
+extern void sys_subshell 4360,147832
+extern void sys_suspend 4361,147865
+extern void discard_tty_input 4362,147897
+extern void init_sys_modes 4363,147935
+extern void reset_sys_modes 4364,147991
+extern void init_all_sys_modes 4365,148048
+extern void reset_all_sys_modes 4366,148087
+extern void child_setup_tty 4367,148127
+extern void setup_pty 4368,148162
+extern int set_window_size 4369,148191
+extern EMACS_INT get_random 4370,148235
+extern void seed_random 4371,148271
+extern void init_random 4372,148316
+extern void emacs_backtrace 4373,148348
+extern _Noreturn void emacs_abort 4374,148383
+extern void xputenv 4527,152697
+extern char *egetenv_internal egetenv_internal4529,152734
+egetenv 4532,152806
+extern void init_system_name 4539,153009
+#define eabs(4545,153302
+#define make_fixnum_or_float(4550,153435
+enum MAX_ALLOCA 4556,153686
+enum MAX_ALLOCA { MAX_ALLOCA 4556,153686
+extern void *record_xmalloc record_xmalloc4558,153731
+#define USE_SAFE_ALLOCA 4560,153797
+#define AVAIL_ALLOCA(4564,153930
+#define SAFE_ALLOCA(4568,154041
+#define SAFE_NALLOCA(4576,154382
+#define SAFE_ALLOCA_STRING(4590,154858
+#define SAFE_FREE(4598,155110
+#define SAFE_ALLOCA_LISP(4625,155688
+# define USE_STACK_LISP_OBJECTS 4652,156810
+# undef USE_STACK_LISP_OBJECTS4658,156976
+# define USE_STACK_LISP_OBJECTS 4659,157007
+enum { defined_GC_CHECK_STRING_BYTES 4663,157082
+enum { defined_GC_CHECK_STRING_BYTES 4665,157135
+union Aligned_Cons4670,157269
+union Aligned_String4676,157349
+ USE_STACK_CONS 4689,157704
+ USE_STACK_STRING 4691,157810
+#define STACK_CONS(4699,158147
+#define AUTO_CONS_EXPR(4701,158244
+#define AUTO_CONS(4709,158607
+#define AUTO_LIST1(4710,158678
+#define AUTO_LIST2(4712,158786
+#define AUTO_LIST3(4716,158941
+#define AUTO_LIST4(4720,159116
+extern const char *verify_ascii verify_ascii4730,159453
+# define verify_ascii(4732,159507
+#define AUTO_STRING(4740,159815
+#define FOR_EACH_TAIL(4752,160279
+#define FOR_EACH_ALIST_VALUE(4766,160770
+maybe_gc 4774,161057
+functionp 4784,161296
+
+c-src/machsyscalls.c,23
+#define SYSCALL(6,113
+
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,1,0
+SYSCALL (mach_reply_port,13,314
+SYSCALL (mach_thread_self,18,377
+SYSCALL (mach_task_self,23,441
+SYSCALL (mach_host_self,28,503
+
+c-src/fail.c,30
+void (*prt_call(prt_call1,0
+
+c-src/h.h,1962
+ ELEM_I/ELEM_I3,15
+} Fails_t;5,85
+typedef void Lang_function 6,96
+void Asm_labels 7,127
+typedef struct tpcmd8,147
+#define ggg 10,170
+tpcmd;15,209
+typedef struct foobar2_ 16,216
+} foobar2;20,307
+ DEVICE_SWP,23,333
+ DEVICE_LAST24,349
+} bsp_DevId;25,365
+ struct constant_args 27,394
+} args;30,457
+typedef int *regset;regset31,465
+typedef int INT;32,486
+typedef union abc33,503
+} ghi1;36,534
+typedef union abc 37,542
+} ghi2;39,573
+typedef struct a 40,581
+} b;41,600
+#define c(42,605
+typedef struct an_extern_linkage
*an_extern_linkage_ptr;an_extern_linkage_ptr43,619
+typedef struct an_extern_linkage 44,676
+} an_extern_linkage;56,1054
+typedef struct pollfd pfdset[pfdset57,1075
+typedef union rtunion_def58,1119
+ } womboid 63,1206
+typedef union rtunion_def64,1220
+womboid75,1330
+enum {dog,dog81,1416
+enum {dog, cat}cat81,1416
+enum {dog, cat} animals;81,1416
+typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441
+typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489
+/* comment */ #define ANSIC84,1538
+ #define ANSIC85,1566
+typedef void (proc)87,1588
+typedef void OperatorFun(88,1612
+typedef int f(89,1648
+struct my_struct 91,1691
+typedef struct my_struct my_typedef;93,1713
+typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750
+ Date 04 May 87 235311 PDT 96,1802
+typedef unsigned char unchar;99,1880
+typedef int X,100,1910
+typedef int X, Y,100,1910
+typedef int X, Y, Z;100,1910
+typedef mio mao;101,1931
+extern void ab(102,1948
+typedef struct a 103,1966
+typedef struct a { } b;103,1966
+typedef struct b104,1990
+} c;106,2009
+int (*oldhup)oldhup107,2014
+request (*oldhup)oldhup108,2031
+int extvar;109,2053
+#define tag1110,2065
+#define aaaaaa 111,2078
+#define bbbbbb\bbbbbb113,2102
+#define cccccccccc115,2125
+#define enter_critical_section 116,2144
+#define exit_critical_to_previous 117,2199
+#define UNDEFINED118,2259
+struct re_pattern_buffer 119,2277
+
+cp-src/c.C,2567
+template <typename ipc3dIslandHierarchy,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned
numOfChannels,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned
numOfChannels, typename ipc3dLinkControl,1,0
+class CMultiChannelCSC19_3D2,151
+ void execute(CMultiChannelCSC19_3D::execute11,493
+static void my_function1(24,984
+int main 25,1026
+double base 26,1088
+operator += operator +=29,1174
+class TestRecord;31,1233
+typedef struct s1 32,1251
+} t1;34,1287
+struct s2 35,1293
+typedef struct s2 t2;38,1324
+class A 39,1346
+ enum { rosso,A::rosso40,1356
+ enum { rosso, giallo,A::giallo40,1356
+ enum { rosso, giallo, verde A::verde40,1356
+ const A& operator+(A::operator+41,1396
+const A& A::operator+(43,1431
+void operator+(44,1467
+void operator -(operator -45,1495
+void operator int(operator int46,1524
+A<int>* f(48,1556
+int f(49,1571
+int A<int>::f(f50,1590
+A<float,B<int> > A<B<float>,int>::f(f51,1618
+template <class C, int n> class AT 52,1668
+class AU 53,1716
+class B<B54,1735
+class B<int> { void f(B::f54,1735
+const A::B::T& abt 55,1765
+class A 56,1791
+class A { class B A::B56,1791
+class A { class B { int f(A::B::f56,1791
+class A 57,1826
+ int get_data(A::get_data58,1836
+ A operator+(A::operator+59,1860
+is_muldiv_operation(61,1887
+domain foo 68,1955
+ void f(foo::f69,1968
+void A::A(72,1989
+struct A 73,2004
+struct A { A(A::A73,2004
+struct B 74,2022
+struct B { B(B::B74,2022
+void B::B(75,2041
+void BE_Node::BE_Node(76,2056
+class BE_Node 77,2083
+struct foo 79,2102
+class test 86,2156
+ int f(test::f87,2169
+ int ff(test::ff89,2231
+ int g(test::g90,2254
+class AST_Root 92,2278
+class AST_Root;96,2327
+AST_ConcreteType::AST_ConcreteType(99,2393
+AST_Array::AST_Array(107,2532
+ void f(::f115,2733
+struct A 117,2753
+ ~A(A::~A118,2764
+A::~A(120,2777
+struct B 122,2789
+ ~B(B::~B123,2800
+enum {dog,::dog126,2817
+enum {dog, cat}::cat126,2817
+enum {dog, cat} animals;126,2817
+struct {int teats;} cow;127,2842
+class Boo 129,2868
+ enum {dog,Boo::dog130,2880
+ enum {dog, cat}Boo::cat130,2880
+ foo(Boo::foo133,2954
+ Boo(Boo::Boo137,2995
+ Boo(Boo::Boo138,3052
+Boo::Boo(141,3070
+typedef int should_see_this_one_enclosed_in_extern_C;149,3155
+typedef int
(*should_see_this_function_pointer)should_see_this_function_pointer153,3228
+typedef int should_see_this_array_type[should_see_this_array_type156,3310
+
+cp-src/abstract.C,11317
+Half_Container::Half_Container(34,703
+void Half_Container::SetPosition(45,941
+void Half_Container::SetDimensions(58,1259
+void Half_Container::SetFather(81,1697
+void Half_Container::SetCollapsed(87,1787
+Specification::Specification(98,1958
+void Specification::SetPosition(119,2453
+void Specification::SetDimensions(164,3742
+void Specification::SetFather(188,4616
+void Specification::SetPath(202,4908
+Coord Specification::GetMaxX(212,5125
+Coord Specification::GetMaxY(215,5174
+Process::Process(222,5298
+void Process::SetPosition(242,5697
+void Process::SetDimensions(291,6959
+void Process::SetFather(315,7913
+void Process::SetPath(326,8123
+Coord Process::GetMaxX(335,8323
+Coord Process::GetMaxY(338,8365
+Choice::Choice(346,8482
+void Choice::SetPosition(357,8698
+void Choice::SetDimensions(405,10053
+void Choice::ChangeH(466,12014
+void Choice::ChangeW(495,12947
+void Choice::SetFather(522,13700
+void Choice::SetTextual(532,13918
+void Choice::SetCollapsed(540,14041
+int Choice::Get_Textual_H(549,14168
+int Choice::Get_Textual_W(557,14408
+void Choice::SetTerminalPos(566,14615
+Stop::Stop(588,15087
+void Stop::SetPosition(595,15207
+void Stop::SetDimensions(605,15373
+void Stop::SetFather(644,16369
+void Stop::SetTextual(652,16537
+void Stop::SetCollapsed(655,16616
+Exit::Exit(667,16768
+void Exit::SetPosition(676,16935
+void Exit::SetDimensions(687,17164
+void Exit::SetFather(695,17350
+Exit_Bex::Exit_Bex(703,17476
+void Exit_Bex::SetPosition(713,17678
+void Exit_Bex::SetDimensions(740,18430
+void Exit_Bex::SetFather(798,20444
+void Exit_Bex::SetTextual(807,20646
+void Exit_Bex::SetCollapsed(814,20757
+NoExit::NoExit(826,20943
+void NoExit::SetPosition(835,21092
+void NoExit::SetDimensions(845,21266
+void NoExit::SetFather(852,21359
+ID_Place::ID_Place(861,21488
+void ID_Place::SetIdent(875,21745
+void ID_Place::SetPosition(886,21936
+void ID_Place::SetDimensions(897,22173
+void ID_Place::SetFather(928,23017
+ID_Place::~ID_Place(932,23073
+void ID_Place::SetVisible(935,23112
+void ID_Place::ClearID(941,23193
+ID_List::ID_List(953,23379
+void ID_List::SetPosition(967,23644
+void ID_List::SetDimensions(999,24385
+void ID_List::SetFather(1038,25456
+void ID_List::SetCollapsed(1047,25595
+void ID_List::HideMe(1056,25734
+void ID_List::SetRBubble(1065,25862
+void ID_List::SetAlignement(1073,25980
+int ID_List::GetCardinality(1082,26123
+void ID_List::SetVisible(1093,26291
+void ID_List::BuildSigSorts(1103,26518
+void ID_List::ClearIDs(1126,27081
+Id_Decl::Id_Decl(1139,27280
+void Id_Decl::SetPosition(1156,27659
+void Id_Decl::SetDimensions(1174,28016
+void Id_Decl::SetFather(1191,28417
+void Id_Decl::SetCollapsed(1200,28568
+Id_Decl_List::Id_Decl_List(1214,28799
+void Id_Decl_List::SetPosition(1227,29069
+void Id_Decl_List::SetDimensions(1245,29424
+void Id_Decl_List::SetFather(1262,29844
+void Id_Decl_List::SetCollapsed(1271,29988
+Comment::Comment(1286,30209
+void Comment::SetComment(1299,30446
+void Comment::SetFather(1317,30800
+void Comment::SetPosition(1321,30854
+void Comment::SetDimensions(1331,31031
+Comment::~Comment(1345,31265
+Comment_List::Comment_List(1352,31382
+void Comment_List::SetPosition(1362,31541
+void Comment_List::SetDimensions(1380,31860
+void Comment_List::SetFather(1392,32139
+Parallel::Parallel(1406,32360
+void Parallel::SetPosition(1417,32573
+void Parallel::SetDimensions(1473,34272
+void Parallel::SetTextual(1534,36167
+int Parallel::Get_Textual_W(1543,36313
+int Parallel::Get_Textual_H(1559,36722
+void Parallel::SetTerminalPos(1570,37191
+void Parallel::SetFather(1590,37698
+void Parallel::SetCollapsed(1601,37950
+Ident_Eq::Ident_Eq(1615,38177
+void Ident_Eq::SetPosition(1632,38546
+void Ident_Eq::SetDimensions(1647,38851
+void Ident_Eq::SetFather(1662,39191
+void Ident_Eq::SetCollapsed(1669,39295
+Ident_Eq_List::Ident_Eq_List(1681,39480
+void Ident_Eq_List::SetPosition(1694,39753
+void Ident_Eq_List::SetDimensions(1712,40111
+void Ident_Eq_List::SetCollapsed(1729,40538
+void Ident_Eq_List::SetFather(1738,40683
+Local_Def::Local_Def(1751,40904
+void Local_Def::SetPosition(1761,41102
+void Local_Def::SetDimensions(1791,41833
+void Local_Def::SetFather(1832,43262
+void Local_Def::SetCollapsed(1839,43370
+void Local_Def::SetTextual(1848,43504
+Hide::Hide(1860,43681
+void Hide::SetPosition(1871,43872
+void Hide::SetDimensions(1901,44569
+void Hide::SetFather(1944,45771
+void Hide::SetCollapsed(1951,45873
+void Hide::SetTextual(1961,46003
+Interl::Interl(1972,46175
+void Interl::SetPosition(1982,46361
+void Interl::SetDimensions(1993,46593
+void Interl::SetFather(2021,47103
+Syncr::Syncr(2031,47257
+void Syncr::SetPosition(2041,47438
+void Syncr::SetDimensions(2051,47609
+void Syncr::SetFather(2079,48153
+Enable::Enable(2090,48436
+void Enable::SetPosition(2102,48690
+void Enable::SetDimensions(2169,50473
+void Enable::SetTextual(2243,53017
+void Enable::SetTerminalPos(2251,53140
+int Enable::Get_Textual_W(2271,53720
+int Enable::Get_Textual_H(2282,53985
+void Enable::SetFather(2285,54104
+void Enable::SetCollapsed(2298,54418
+Disable::Disable(2314,54780
+void Disable::SetPosition(2325,55001
+void Disable::SetDimensions(2376,56251
+void Disable::SetFather(2436,58064
+void Disable::SetCollapsed(2446,58284
+void Disable::SetTextual(2455,58412
+void Disable::SetTerminalPos(2463,58536
+int Disable::Get_Textual_W(2479,58987
+int Disable::Get_Textual_H(2488,59190
+Gen_Paral::Gen_Paral(2500,59630
+void Gen_Paral::SetPosition(2513,59899
+void Gen_Paral::SetDimensions(2540,60659
+void Gen_Paral::SetFather(2590,62171
+void Gen_Paral::SetCollapsed(2597,62290
+Action_Pref::Action_Pref(2609,62583
+void Action_Pref::SetPosition(2620,62829
+void Action_Pref::SetDimensions(2669,63937
+void Action_Pref::SetFather(2724,65777
+void Action_Pref::SetCollapsed(2734,66010
+void Action_Pref::SetTextual(2743,66147
+Internal::Internal(2757,66484
+void Internal::SetPosition(2768,66658
+void Internal::SetDimensions(2778,66838
+void Internal::SetFather(2806,67442
+Communication::Communication(2816,67702
+void Communication::SetPosition(2827,67956
+void Communication::SetDimensions(2897,70390
+void Communication::SetFather(2935,71706
+void Communication::SetCollapsed(2942,71837
+void Communication::SetTextual(2949,71968
+NoGuard::NoGuard(2961,72262
+void NoGuard::SetPosition(2974,72462
+void NoGuard::SetDimensions(2984,72639
+void NoGuard::SetFather(2987,72678
+Guard::Guard(2996,72929
+void Guard::SetPosition(3008,73118
+void Guard::SetDimensions(3022,73428
+void Guard::SetFather(3044,73894
+void Guard::SetCollapsed(3050,73974
+NoExperiment::NoExperiment(3062,74258
+void NoExperiment::SetPosition(3075,74478
+void NoExperiment::SetDimensions(3085,74670
+void NoExperiment::SetFather(3088,74714
+Experiment::Experiment(3097,74978
+void Experiment::SetPosition(3110,75245
+void Experiment::SetDimensions(3128,75611
+void Experiment::SetFather(3150,76066
+void Experiment::SetCollapsed(3157,76188
+void Experiment::SetTextual(3165,76311
+Proc_Inst::Proc_Inst(3175,76476
+void Proc_Inst::SetPosition(3191,76777
+void Proc_Inst::SetDimensions(3236,77965
+void Proc_Inst::SetFather(3286,79596
+void Proc_Inst::SetCollapsed(3294,79739
+void Proc_Inst::SetTextual(3304,79909
+Value_Expr::Value_Expr(3316,80100
+void Value_Expr::SetPosition(3329,80327
+void Value_Expr::SetDimensions(3340,80572
+void Value_Expr::SetFather(3343,80614
+Value_Expr_List::Value_Expr_List(3351,80755
+void Value_Expr_List::SetPosition(3364,81042
+void Value_Expr_List::SetDimensions(3382,81406
+void Value_Expr_List::SetFather(3399,81830
+void Value_Expr_List::SetCollapsed(3408,81977
+Sum_Ident::Sum_Ident(3423,82203
+void Sum_Ident::SetPosition(3435,82445
+void Sum_Ident::SetDimensions(3466,83196
+void Sum_Ident::SetFather(3509,84540
+void Sum_Ident::SetCollapsed(3516,84653
+void Sum_Ident::SetTextual(3525,84793
+void Sum_Ident::SetTerminalPos(3532,84897
+Value::Value(3552,85432
+void Value::SetPosition(3569,85792
+void Value::SetDimensions(3583,86091
+void Value::SetFather(3606,86628
+void Value::SetCollapsed(3613,86731
+Term::Term(3626,86908
+void Term::SetPosition(3646,87323
+void Term::SetDimensions(3671,87942
+void Term::SetFather(3697,88599
+void Term::SetCollapsed(3705,88732
+Exit_Entry::Exit_Entry(3719,88947
+void Exit_Entry::SetPosition(3732,89176
+void Exit_Entry::SetDimensions(3743,89421
+void Exit_Entry::SetFather(3746,89463
+Exit_Entry_List::Exit_Entry_List(3754,89604
+void Exit_Entry_List::SetPosition(3766,89875
+void Exit_Entry_List::SetDimensions(3785,90304
+void Exit_Entry_List::SetFather(3802,90753
+void Exit_Entry_List::SetCollapsed(3811,90900
+Sum_Gate::Sum_Gate(3826,91125
+void Sum_Gate::SetPosition(3837,91363
+void Sum_Gate::SetDimensions(3873,92120
+void Sum_Gate::SetFather(3915,93438
+void Sum_Gate::SetCollapsed(3922,93549
+void Sum_Gate::SetTextual(3931,93687
+void Sum_Gate::SetTerminalPos(3938,93790
+Gate_Decl::Gate_Decl(3959,94421
+void Gate_Decl::SetPosition(3977,94900
+void Gate_Decl::SetDimensions(3995,95298
+void Gate_Decl::SetFather(4011,95694
+void Gate_Decl::SetCollapsed(4020,95871
+Gate_Decl_List::Gate_Decl_List(4034,96130
+void Gate_Decl_List::SetPosition(4047,96414
+void Gate_Decl_List::SetDimensions(4065,96779
+void Gate_Decl_List::SetFather(4082,97207
+void Gate_Decl_List::SetCollapsed(4091,97353
+Par::Par(4106,97572
+void Par::SetPosition(4126,97957
+void Par::SetDimensions(4174,99236
+void Par::SetFather(4226,100814
+void Par::SetCollapsed(4234,100943
+void Par::SetTextual(4245,101100
+Sort_Id_Exit::Sort_Id_Exit(4258,101329
+void Sort_Id_Exit::SetPosition(4270,101556
+void Sort_Id_Exit::SetDimensions(4283,101834
+void Sort_Id_Exit::SetFather(4297,102142
+void Sort_Id_Exit::SetCollapsed(4303,102228
+Equality::Equality(4314,102512
+Equality::Equality(4327,102736
+void Equality::SetPosition(4340,102987
+void Equality::SetDimensions(4357,103329
+void Equality::SetFather(4377,103720
+void Equality::SetCollapsed(4387,103858
+Guarded::Guarded(4401,104167
+void Guarded::SetPosition(4413,104384
+void Guarded::SetDimensions(4441,105084
+void Guarded::SetFather(4482,106273
+void Guarded::SetCollapsed(4489,106377
+void Guarded::SetTextual(4499,106509
+Exper_Off::Exper_Off(4510,106813
+void Exper_Off::SetPosition(4523,107035
+void Exper_Off::SetDimensions(4533,107220
+void Exper_Off::SetFather(4536,107261
+Exper_Off_List::Exper_Off_List(4544,107521
+void Exper_Off_List::SetPosition(4557,107802
+void Exper_Off_List::SetDimensions(4575,108167
+void Exper_Off_List::SetFather(4592,108594
+void Exper_Off_List::SetCollapsed(4601,108740
+Exclam::Exclam(4616,109087
+void Exclam::SetPosition(4629,109300
+void Exclam::SetDimensions(4641,109541
+void Exclam::SetFather(4655,109830
+void Exclam::SetCollapsed(4661,109912
+Query::Query(4673,110194
+void Query::SetPosition(4686,110399
+void Query::SetDimensions(4698,110636
+void Query::SetFather(4712,110918
+void Query::SetCollapsed(4718,110997
+Definition::Definition(4729,111279
+void Definition::SetPosition(4741,111448
+void Definition::SetDimensions(4752,111658
+void Definition::SetFather(4766,111896
+void Definition::SetPath(4777,112089
+Proc_List::Proc_List(4790,112374
+void Proc_List::SetPosition(4799,112505
+void Proc_List::SetDimensions(4809,112686
+void Proc_List::SetFather(4815,112767
+void Proc_List::SetPath(4824,112908
+char *Proc_List::GetPath(Proc_List::GetPath4832,113068
+
+cp-src/abstract.H,17065
+#define abstract_hh16,453
+class SignatureSorts;21,513
+class ID_Place:ID_Place23,536
+ ID_Place(ID_Place::ID_Place31,637
+ void SetIdent(ID_Place::SetIdent32,650
+ void SetPosition(ID_Place::SetPosition33,675
+ void SetDimensions(ID_Place::SetDimensions34,708
+ void SetVisible(ID_Place::SetVisible35,735
+ void SetFather(ID_Place::SetFather36,759
+ void ClearID(ID_Place::ClearID37,789
+ virtual ~ID_Place(ID_Place::~ID_Place38,810
+ char *GetIdent(ID_Place::GetIdent41,857
+ void SetRBubble(ID_Place::SetRBubble42,891
+ char GetRBubble(ID_Place::GetRBubble43,934
+class ID_List:ID_List47,1012
+ ID_List(ID_List::ID_List57,1134
+ void SetPosition(ID_List::SetPosition58,1167
+ void SetDimensions(ID_List::SetDimensions59,1200
+ void SetFather(ID_List::SetFather60,1227
+ ID_Place *GetElem(ID_List::GetElem61,1257
+ void HideMe(ID_List::HideMe62,1279
+ void SetCollapsed(ID_List::SetCollapsed63,1299
+ void SetRBubble(ID_List::SetRBubble64,1325
+ void BuildSigSorts(ID_List::BuildSigSorts65,1349
+ void SetVisible(ID_List::SetVisible66,1409
+ void SetAlignement(ID_List::SetAlignement67,1433
+ void ClearIDs(ID_List::ClearIDs68,1460
+ int GetCardinality(ID_List::GetCardinality69,1482
+class Id_Decl:Id_Decl73,1540
+ Id_Decl(Id_Decl::Id_Decl81,1648
+ void SetPosition(Id_Decl::SetPosition82,1681
+ void SetDimensions(Id_Decl::SetDimensions83,1714
+ void SetFather(Id_Decl::SetFather84,1741
+ void SetCollapsed(Id_Decl::SetCollapsed85,1771
+class Id_Decl_List:Id_Decl_List89,1829
+ Id_Decl_List(Id_Decl_List::Id_Decl_List97,1945
+ void SetPosition(Id_Decl_List::SetPosition98,1987
+ void SetDimensions(Id_Decl_List::SetDimensions99,2020
+ void SetFather(Id_Decl_List::SetFather100,2047
+ void SetCollapsed(Id_Decl_List::SetCollapsed101,2077
+class Comment:Comment105,2140
+ Comment(Comment::Comment112,2222
+ Comment(Comment::Comment113,2234
+ void SetComment(Comment::SetComment114,2271
+ void SetPosition(Comment::SetPosition115,2297
+ void SetDimensions(Comment::SetDimensions116,2330
+ void SetFather(Comment::SetFather117,2357
+ virtual ~Comment(Comment::~Comment118,2387
+class Comment_List:Comment_List122,2440
+ Comment_List(Comment_List::Comment_List128,2525
+ void SetPosition(Comment_List::SetPosition129,2567
+ void SetDimensions(Comment_List::SetDimensions130,2600
+ void SetFather(Comment_List::SetFather131,2627
+class Value_Expr:Value_Expr135,2694
+ Value_Expr(Value_Expr::Value_Expr141,2769
+ void SetPosition(Value_Expr::SetPosition142,2784
+ void SetDimensions(Value_Expr::SetDimensions143,2817
+ void SetFather(Value_Expr::SetFather144,2844
+class Value_Expr_List:Value_Expr_List149,2911
+ Value_Expr_List(Value_Expr_List::Value_Expr_List157,3038
+ void SetPosition(Value_Expr_List::SetPosition158,3088
+ void SetDimensions(Value_Expr_List::SetDimensions159,3121
+ void SetFather(Value_Expr_List::SetFather160,3148
+ void SetCollapsed(Value_Expr_List::SetCollapsed161,3178
+class Exit_Entry:Exit_Entry165,3244
+ Exit_Entry(Exit_Entry::Exit_Entry171,3319
+ void SetPosition(Exit_Entry::SetPosition172,3334
+ void SetDimensions(Exit_Entry::SetDimensions173,3367
+ void SetFather(Exit_Entry::SetFather174,3394
+class Exit_Entry_List:Exit_Entry_List179,3460
+ Exit_Entry_List(Exit_Entry_List::Exit_Entry_List187,3587
+ void SetPosition(Exit_Entry_List::SetPosition188,3637
+ void SetDimensions(Exit_Entry_List::SetDimensions189,3670
+ void SetFather(Exit_Entry_List::SetFather190,3697
+ void SetCollapsed(Exit_Entry_List::SetCollapsed191,3727
+class Exper_Off:Exper_Off195,3793
+ Exper_Off(Exper_Off::Exper_Off199,3838
+ void SetPosition(Exper_Off::SetPosition200,3852
+ void SetDimensions(Exper_Off::SetDimensions201,3885
+ void SetFather(Exper_Off::SetFather202,3912
+class Exper_Off_List:Exper_Off_List207,3977
+ Exper_Off_List(Exper_Off_List::Exper_Off_List215,4115
+ void SetPosition(Exper_Off_List::SetPosition216,4163
+ void SetDimensions(Exper_Off_List::SetDimensions217,4196
+ void SetFather(Exper_Off_List::SetFather218,4223
+ void SetCollapsed(Exper_Off_List::SetCollapsed219,4253
+class Gate_Decl:Gate_Decl223,4323
+ Gate_Decl(Gate_Decl::Gate_Decl231,4446
+ void SetPosition(Gate_Decl::SetPosition232,4480
+ void SetDimensions(Gate_Decl::SetDimensions233,4513
+ void SetFather(Gate_Decl::SetFather234,4540
+ void SetCollapsed(Gate_Decl::SetCollapsed235,4570
+class Gate_Decl_List:Gate_Decl_List239,4630
+ Gate_Decl_List(Gate_Decl_List::Gate_Decl_List247,4754
+ void SetPosition(Gate_Decl_List::SetPosition248,4802
+ void SetDimensions(Gate_Decl_List::SetDimensions249,4835
+ void SetFather(Gate_Decl_List::SetFather250,4862
+ void SetCollapsed(Gate_Decl_List::SetCollapsed251,4892
+class Ident_Eq:Ident_Eq255,4957
+ Ident_Eq(Ident_Eq::Ident_Eq263,5079
+ void SetPosition(Ident_Eq::SetPosition264,5116
+ void SetDimensions(Ident_Eq::SetDimensions265,5149
+ void SetFather(Ident_Eq::SetFather266,5176
+ void SetCollapsed(Ident_Eq::SetCollapsed267,5206
+class Ident_Eq_List:Ident_Eq_List271,5270
+ Ident_Eq_List(Ident_Eq_List::Ident_Eq_List279,5404
+ void SetPosition(Ident_Eq_List::SetPosition280,5449
+ void SetDimensions(Ident_Eq_List::SetDimensions281,5482
+ void SetFather(Ident_Eq_List::SetFather282,5509
+ void SetCollapsed(Ident_Eq_List::SetCollapsed283,5539
+class Half_Container:Half_Container287,5608
+ Half_Container(Half_Container::Half_Container294,5712
+ void SetPosition(Half_Container::SetPosition295,5740
+ void SetDimensions(Half_Container::SetDimensions296,5773
+ void SetFather(Half_Container::SetFather297,5800
+ void SetCollapsed(Half_Container::SetCollapsed298,5830
+class Specification:Specification308,5954
+class Definition;Specification::Definition310,5994
+ Specification(Specification::Specification326,6283
+ void SetPosition(Specification::SetPosition328,6418
+ void SetDimensions(Specification::SetDimensions329,6451
+ void SetFather(Specification::SetFather330,6478
+ void SetPath(Specification::SetPath331,6508
+ Coord GetMaxX(Specification::GetMaxX332,6535
+ Coord GetMaxY(Specification::GetMaxY333,6553
+class Process:Process337,6609
+ Process(Process::Process352,6874
+ void SetPosition(Process::SetPosition353,6966
+ void SetDimensions(Process::SetDimensions354,6999
+ void SetFather(Process::SetFather355,7026
+ void SetPath(Process::SetPath356,7056
+ void NewBex(Process::NewBex357,7097
+ Coord GetMaxY(Process::GetMaxY359,7125
+ Coord GetMaxX(Process::GetMaxX360,7143
+ char GetNesting(Process::GetNesting363,7186
+class Proc_List:Proc_List367,7257
+ Proc_List(Proc_List::Proc_List373,7350
+ void SetPosition(Proc_List::SetPosition374,7386
+ void SetDimensions(Proc_List::SetDimensions375,7419
+ void SetFather(Proc_List::SetFather376,7446
+ void SetPath(Proc_List::SetPath377,7476
+ char *GetPath(Proc_List::GetPath378,7517
+class Definition:Definition382,7574
+ Definition(Definition::Definition390,7732
+ void SetPosition(Definition::SetPosition391,7784
+ void SetDimensions(Definition::SetDimensions392,7817
+ void SetFather(Definition::SetFather393,7844
+ void SetPath(Definition::SetPath394,7874
+ char *GetPath(Definition::GetPath397,7940
+class Exit:Exit407,8071
+ Exit(Exit::Exit414,8155
+ void SetPosition(Exit::SetPosition415,8173
+ void SetDimensions(Exit::SetDimensions416,8220
+ void SetFather(Exit::SetFather417,8247
+class NoExit:NoExit421,8305
+ NoExit(NoExit::NoExit427,8372
+ void SetPosition(NoExit::SetPosition428,8383
+ void SetDimensions(NoExit::SetDimensions429,8416
+ void SetFather(NoExit::SetFather430,8443
+class Value:Value440,8560
+ Value(Value::Value448,8663
+ void SetPosition(Value::SetPosition449,8695
+ void SetDimensions(Value::SetDimensions450,8728
+ void SetFather(Value::SetFather451,8755
+ void SetCollapsed(Value::SetCollapsed452,8785
+class Term:Term456,8841
+ Term(Term::Term465,8974
+ void SetPosition(Term::SetPosition466,9024
+ void SetDimensions(Term::SetDimensions467,9057
+ void SetFather(Term::SetFather468,9084
+ void SetCollapsed(Term::SetCollapsed469,9114
+class Equality:Equality473,9169
+ Equality(Equality::Equality481,9298
+ Equality(Equality::Equality482,9311
+ void SetPosition(Equality::SetPosition483,9348
+ void SetDimensions(Equality::SetDimensions484,9381
+ void SetFather(Equality::SetFather485,9408
+ void SetCollapsed(Equality::SetCollapsed486,9438
+class Sort_Id_Exit:Sort_Id_Exit490,9504
+ Sort_Id_Exit(Sort_Id_Exit::Sort_Id_Exit497,9603
+ void SetPosition(Sort_Id_Exit::SetPosition498,9630
+ void SetDimensions(Sort_Id_Exit::SetDimensions499,9663
+ void SetFather(Sort_Id_Exit::SetFather500,9690
+ void SetCollapsed(Sort_Id_Exit::SetCollapsed501,9720
+class NoGuard:NoGuard511,9837
+ NoGuard(NoGuard::NoGuard517,9906
+ void SetPosition(NoGuard::SetPosition518,9918
+ void SetDimensions(NoGuard::SetDimensions519,9951
+ void SetFather(NoGuard::SetFather520,9978
+class Guard:Guard524,10045
+ Guard(Guard::Guard531,10138
+ void SetPosition(Guard::SetPosition532,10158
+ void SetDimensions(Guard::SetDimensions533,10191
+ void SetFather(Guard::SetFather534,10218
+ void SetCollapsed(Guard::SetCollapsed535,10248
+class NoExperiment:NoExperiment545,10368
+ NoExperiment(NoExperiment::NoExperiment551,10447
+ void SetPosition(NoExperiment::SetPosition552,10464
+ void SetDimensions(NoExperiment::SetDimensions553,10497
+ void SetFather(NoExperiment::SetFather554,10524
+class Experiment:Experiment558,10591
+ Experiment(Experiment::Experiment566,10739
+ void SetPosition(Experiment::SetPosition567,10783
+ void SetDimensions(Experiment::SetDimensions568,10816
+ void SetFather(Experiment::SetFather569,10843
+ void SetTextual(Experiment::SetTextual570,10873
+ void SetCollapsed(Experiment::SetCollapsed571,10911
+ Tree_Node *GetGuard(Experiment::GetGuard574,10962
+class Exclam:Exclam578,11053
+ Exclam(Exclam::Exclam585,11150
+ void SetPosition(Exclam::SetPosition586,11172
+ void SetDimensions(Exclam::SetDimensions587,11205
+ void SetFather(Exclam::SetFather588,11232
+ void SetCollapsed(Exclam::SetCollapsed589,11262
+class Query:Query593,11324
+ Query(Query::Query600,11415
+ void SetPosition(Query::SetPosition601,11434
+ void SetDimensions(Query::SetDimensions602,11467
+ void SetFather(Query::SetFather603,11494
+ void SetCollapsed(Query::SetCollapsed604,11524
+class Internal:Internal614,11643
+ Internal(Internal::Internal620,11714
+ void SetPosition(Internal::SetPosition621,11727
+ void SetDimensions(Internal::SetDimensions622,11760
+ void SetFather(Internal::SetFather623,11787
+class Communication:Communication627,11854
+ Communication(Communication::Communication637,12039
+ void SetPosition(Communication::SetPosition638,12080
+ void SetDimensions(Communication::SetDimensions639,12113
+ void SetFather(Communication::SetFather640,12140
+ void SetTextual(Communication::SetTextual641,12170
+ void SetCollapsed(Communication::SetCollapsed642,12208
+class Gen_Paral:Gen_Paral652,12337
+ Gen_Paral(Gen_Paral::Gen_Paral661,12470
+ void SetPosition(Gen_Paral::SetPosition662,12493
+ void SetDimensions(Gen_Paral::SetDimensions663,12526
+ void SetFather(Gen_Paral::SetFather664,12553
+ void SetCollapsed(Gen_Paral::SetCollapsed665,12583
+ void HideGate(Gen_Paral::HideGate668,12634
+class Interl:Interl672,12730
+ Interl(Interl::Interl678,12797
+ void SetPosition(Interl::SetPosition679,12808
+ void SetDimensions(Interl::SetDimensions680,12841
+ void SetFather(Interl::SetFather681,12868
+class Syncr:Syncr685,12929
+ Syncr(Syncr::Syncr691,12994
+ void SetPosition(Syncr::SetPosition692,13004
+ void SetDimensions(Syncr::SetDimensions693,13037
+ void SetFather(Syncr::SetFather694,13064
+class Action_Pref:Action_Pref704,13185
+ Action_Pref(Action_Pref::Action_Pref714,13346
+ void SetPosition(Action_Pref::SetPosition715,13386
+ void SetDimensions(Action_Pref::SetDimensions716,13419
+ void SetFather(Action_Pref::SetFather717,13446
+ void SetTextual(Action_Pref::SetTextual718,13476
+ void SetCollapsed(Action_Pref::SetCollapsed719,13514
+class Enable:Enable723,13577
+ Enable(Enable::Enable734,13780
+ void SetPosition(Enable::SetPosition735,13826
+ void SetDimensions(Enable::SetDimensions736,13859
+ void SetFather(Enable::SetFather737,13886
+ void SetTextual(Enable::SetTextual738,13916
+ int Get_Textual_H(Enable::Get_Textual_H739,13954
+ int Get_Textual_W(Enable::Get_Textual_W740,13980
+ void SetTerminalPos(Enable::SetTerminalPos741,14006
+ void SetCollapsed(Enable::SetCollapsed742,14034
+class Disable:Disable746,14097
+ Disable(Disable::Disable756,14254
+ void SetPosition(Disable::SetPosition757,14290
+ void SetDimensions(Disable::SetDimensions758,14323
+ void SetFather(Disable::SetFather759,14350
+ void SetTextual(Disable::SetTextual760,14380
+ int Get_Textual_H(Disable::Get_Textual_H761,14418
+ int Get_Textual_W(Disable::Get_Textual_W762,14444
+ void SetTerminalPos(Disable::SetTerminalPos763,14470
+ void SetCollapsed(Disable::SetCollapsed764,14498
+class Choice:Choice768,14561
+ Choice(Choice::Choice779,14714
+ void SetPosition(Choice::SetPosition780,14749
+ void SetDimensions(Choice::SetDimensions781,14782
+ void SetFather(Choice::SetFather782,14809
+ void SetTextual(Choice::SetTextual783,14839
+ void SetCollapsed(Choice::SetCollapsed784,14877
+ int Get_Textual_H(Choice::Get_Textual_H785,14903
+ int Get_Textual_W(Choice::Get_Textual_W786,14929
+ void SetTerminalPos(Choice::SetTerminalPos787,14955
+ void ChangeH(Choice::ChangeH788,14983
+ void ChangeW(Choice::ChangeW789,15003
+class Stop:Stop793,15054
+ Stop(Stop::Stop801,15146
+ void SetPosition(Stop::SetPosition802,15155
+ void SetDimensions(Stop::SetDimensions803,15188
+ void SetFather(Stop::SetFather804,15215
+ void SetTextual(Stop::SetTextual805,15245
+ void SetCollapsed(Stop::SetCollapsed806,15283
+class Exit_Bex:Exit_Bex810,15338
+ Exit_Bex(Exit_Bex::Exit_Bex820,15491
+ void SetPosition(Exit_Bex::SetPosition821,15521
+ void SetDimensions(Exit_Bex::SetDimensions822,15554
+ void SetFather(Exit_Bex::SetFather823,15581
+ void SetTextual(Exit_Bex::SetTextual824,15611
+ void SetCollapsed(Exit_Bex::SetCollapsed825,15649
+class Hide:Hide829,15707
+ Hide(Hide::Hide839,15833
+ void SetPosition(Hide::SetPosition840,15864
+ void SetDimensions(Hide::SetDimensions841,15897
+ void SetFather(Hide::SetFather842,15924
+ void SetTextual(Hide::SetTextual843,15954
+ void SetCollapsed(Hide::SetCollapsed844,15992
+class Guarded:Guarded848,16047
+ Guarded(Guarded::Guarded858,16197
+ void SetPosition(Guarded::SetPosition859,16232
+ void SetDimensions(Guarded::SetDimensions860,16265
+ void SetFather(Guarded::SetFather861,16292
+ void SetTextual(Guarded::SetTextual862,16322
+ void SetCollapsed(Guarded::SetCollapsed863,16360
+class Proc_Inst:Proc_Inst867,16425
+ Proc_Inst(Proc_Inst::Proc_Inst879,16626
+ void SetPosition(Proc_Inst::SetPosition880,16681
+ void SetDimensions(Proc_Inst::SetDimensions881,16714
+ void SetFather(Proc_Inst::SetFather882,16741
+ void SetTextual(Proc_Inst::SetTextual883,16771
+ void SetCollapsed(Proc_Inst::SetCollapsed884,16809
+class Parallel:Parallel888,16870
+ Parallel(Parallel::Parallel899,17034
+ void SetPosition(Parallel::SetPosition900,17084
+ void SetDimensions(Parallel::SetDimensions901,17117
+ void SetFather(Parallel::SetFather902,17144
+ void SetTextual(Parallel::SetTextual903,17174
+ int Get_Textual_W(Parallel::Get_Textual_W904,17212
+ int Get_Textual_H(Parallel::Get_Textual_H905,17238
+ void SetTerminalPos(Parallel::SetTerminalPos906,17264
+ void SetCollapsed(Parallel::SetCollapsed907,17292
+ char GetOperType(Parallel::GetOperType910,17343
+class Local_Def:Local_Def914,17429
+ Local_Def(Local_Def::Local_Def924,17571
+ void SetPosition(Local_Def::SetPosition925,17613
+ void SetDimensions(Local_Def::SetDimensions926,17646
+ void SetFather(Local_Def::SetFather927,17673
+ void SetTextual(Local_Def::SetTextual928,17703
+ void SetCollapsed(Local_Def::SetCollapsed929,17741
+class Par:Par933,17801
+ Par(Par::Par943,17948
+ void SetPosition(Par::SetPosition944,17998
+ void SetDimensions(Par::SetDimensions945,18031
+ void SetFather(Par::SetFather946,18058
+ void SetTextual(Par::SetTextual947,18088
+ void SetCollapsed(Par::SetCollapsed948,18126
+class Sum_Gate:Sum_Gate952,18180
+ Sum_Gate(Sum_Gate::Sum_Gate962,18356
+ void SetPosition(Sum_Gate::SetPosition963,18398
+ void SetDimensions(Sum_Gate::SetDimensions964,18431
+ void SetFather(Sum_Gate::SetFather965,18458
+ void SetTextual(Sum_Gate::SetTextual966,18488
+ void SetTerminalPos(Sum_Gate::SetTerminalPos967,18526
+ void SetCollapsed(Sum_Gate::SetCollapsed968,18554
+class Sum_Ident:Sum_Ident972,18613
+ Sum_Ident(Sum_Ident::Sum_Ident982,18790
+ void SetPosition(Sum_Ident::SetPosition983,18831
+ void SetDimensions(Sum_Ident::SetDimensions984,18864
+ void SetFather(Sum_Ident::SetFather985,18891
+ void SetTextual(Sum_Ident::SetTextual986,18921
+ void SetTerminalPos(Sum_Ident::SetTerminalPos987,18959
+ void SetCollapsed(Sum_Ident::SetCollapsed988,18987
+
+cp-src/cfront.H,12673
+extern bit old_fct_accepted;28,897
+extern bit fct_void;32,1028
+extern char* prog_name;42,1297
+extern int inline_restr;43,1351
+extern bit emode;44,1410
+extern Pname name_free;47,1457
+extern Pexpr expr_free;48,1496
+extern Pstmt stmt_free;49,1520
+extern int Nspy;52,1569
+extern int Nfile,53,1586
+extern int Nfile, Nline,53,1586
+extern int Nfile, Nline, Ntoken,53,1586
+extern int Nfile, Nline, Ntoken, Nname,53,1586
+extern int Nfile, Nline, Ntoken, Nname, Nfree_store,53,1586
+extern int Nfile, Nline, Ntoken, Nname, Nfree_store, Nalloc,53,1586
+extern int Nfile, Nline, Ntoken, Nname, Nfree_store, Nalloc, Nfree;53,1586
+extern int Nn,54,1654
+extern int Nn, Nbt,54,1654
+extern int Nn, Nbt, Nt,54,1654
+extern int Nn, Nbt, Nt, Ne,54,1654
+extern int Nn, Nbt, Nt, Ne, Ns,54,1654
+extern int Nn, Nbt, Nt, Ne, Ns, Nstr,54,1654
+extern int Nn, Nbt, Nt, Ne, Ns, Nstr, Nc,54,1654
+extern int Nn, Nbt, Nt, Ne, Ns, Nstr, Nc, Nl;54,1654
+extern int NFn,55,1700
+extern int NFn, NFtn,55,1700
+extern int NFn, NFtn, NFpv,55,1700
+extern int NFn, NFtn, NFpv, NFbt,55,1700
+extern int NFn, NFtn, NFpv, NFbt, NFf,55,1700
+extern int NFn, NFtn, NFpv, NFbt, NFf, NFs,55,1700
+extern int NFn, NFtn, NFpv, NFbt, NFf, NFs, NFc,55,1700
+extern int NFn, NFtn, NFpv, NFbt, NFf, NFs, NFc, NFe,55,1700
+extern int NFn, NFtn, NFpv, NFbt, NFf, NFs, NFc, NFe, NFl;55,1700
+extern TOK lex(57,1760
+extern Pname syn(58,1778
+extern void init_print(60,1799
+extern void init_lex(61,1847
+extern void int_syn(62,1871
+extern void ext(63,1894
+extern char* make_name(65,1917
+struct loc 67,1948
+ void put(loc::put72,2062
+ void putline(loc::putline73,2080
+extern Loc curloc;77,2108
+extern int curr_file;78,2127
+struct ea 80,2150
+ ea(ea::ea86,2249
+ ea(ea::ea87,2275
+ ea(ea::ea88,2301
+ ea(ea::ea89,2310
+extern ea* ea0;92,2332
+overload error;94,2349
+int error(95,2365
+int error(96,2437
+int error(97,2515
+int error(98,2592
+extern int error_count;101,2689
+extern bit debug;102,2713
+extern int vtbl_opt;103,2731
+extern FILE* out_file;104,2752
+extern FILE* in_file;105,2775
+extern char scan_started;106,2797
+extern bit warn;107,2823
+extern int br_level;110,2848
+extern int bl_level;111,2869
+extern Ptable ktbl;112,2890
+extern Ptable gtbl;113,2941
+extern char* oper_name(114,2978
+extern Pclass ccl;115,3007
+extern Pbase defa_type;116,3026
+extern Pbase moe_type;117,3050
+extern Pstmt Cstmt;120,3087
+extern Pname Cdcl;121,3135
+extern void put_dcl_context(122,3194
+extern Ptable any_tbl;124,3226
+extern Pbase any_type;125,3287
+extern Pbase int_type;128,3318
+extern Pbase char_type;129,3341
+extern Pbase short_type;130,3365
+extern Pbase long_type;131,3390
+extern Pbase uint_type;132,3414
+extern Pbase float_type;133,3438
+extern Pbase double_type;134,3463
+extern Pbase void_type;135,3489
+extern Pbase uchar_type;138,3527
+extern Pbase ushort_type;139,3552
+extern Pbase ulong_type;140,3578
+extern Ptype Pchar_type;141,3603
+extern Ptype Pint_type;142,3628
+extern Ptype Pfctvec_type;143,3652
+extern Ptype Pfctchar_type;144,3679
+extern Ptype Pvoid_type;145,3707
+extern Pbase zero_type;146,3732
+extern int byte_offset;148,3757
+extern int bit_offset;149,3781
+extern int max_align;150,3804
+extern int stack_size;151,3826
+extern int enum_count;152,3849
+extern int const_save;153,3872
+extern Pexpr dummy;156,3903
+extern Pexpr zero;157,3950
+extern Pexpr one;158,3969
+extern Pname sta_name;159,3987
+#define DEL(161,4040
+#define PERM(162,4092
+#define UNPERM(163,4123
+struct node 165,4157
+extern Pclass Ebase,172,4259
+extern Pclass Ebase, Epriv;172,4259
+struct table 175,4321
+ table(table::table192,4875
+ Pname look(table::look194,4906
+ Pname insert(table::insert195,4931
+ void grow(table::grow197,4971
+ void set_scope(table::set_scope198,4988
+ void set_name(table::set_name199,5029
+ Pname get_mem(table::get_mem200,5070
+ int max(table::max201,5091
+ void dcl_print(table::dcl_print202,5129
+ Pname lookc(table::lookc203,5155
+ Pexpr find_name(table::find_name204,5181
+ void del(table::del205,5218
+extern bit Nold;210,5255
+extern bit vec_const,211,5272
+extern bit vec_const, fct_const;211,5272
+extern void restore(214,5313
+extern void set_scope(215,5336
+extern Plist modified_tn;216,5366
+extern Pbase start_cl(217,5392
+extern void end_cl(218,5434
+extern Pbase end_enum(219,5456
+extern bit new_type;224,5581
+extern Pname cl_obj_vec;225,5602
+extern Pname eobj;226,5627
+#define DEFINED 230,5655
+#define SIMPLIFIED 231,5712
+#define DEF_SEEN 232,5754
+#define IN_ERROR 234,5859
+struct type 236,5881
+ char* signature(type::signature240,6005
+ void print(type::print242,6043
+ void dcl_print(type::dcl_print243,6058
+ void base_print(type::base_print244,6082
+ void del(type::del245,6102
+ Pname is_cl_obj(type::is_cl_obj247,6116
+ int is_ref(type::is_ref248,6158
+ void dcl(type::dcl249,6173
+ int tsizeof(type::tsizeof250,6192
+ bit tconst(type::tconst251,6208
+ TOK set_const(type::set_const252,6223
+ int align(type::align253,6244
+ TOK kind(type::kind254,6258
+ TOK integral(type::integral255,6278
+ TOK numeric(type::numeric256,6324
+ TOK num_ptr(type::num_ptr257,6370
+ bit vec_type(type::vec_type258,6416
+ bit check(type::check259,6433
+ Ptype deref(type::deref260,6457
+ Pptr addrof(type::addrof261,6473
+struct enumdef 265,6500
+ enumdef(enumdef::enumdef269,6586
+ void print(enumdef::print271,6641
+ void dcl_print(enumdef::dcl_print272,6656
+ void dcl(enumdef::dcl273,6680
+ void simpl(enumdef::simpl274,6706
+struct classdef 278,6732
+ classdef(classdef::classdef301,7490
+ TOK is_simple(classdef::is_simple302,7506
+ void print(classdef::print304,7568
+ void dcl_print(classdef::dcl_print305,7583
+ void simpl(classdef::simpl306,7607
+ void print_members(classdef::print_members308,7623
+ void dcl(classdef::dcl309,7646
+ bit has_friend(classdef::has_friend310,7672
+ bit baseof(classdef::baseof311,7696
+ bit baseof(classdef::baseof312,7716
+ Pname has_oper(classdef::has_oper313,7737
+ Pname has_ctor(classdef::has_ctor314,7759
+ Pname has_dtor(classdef::has_dtor315,7813
+ Pname has_itor(classdef::has_itor316,7867
+ Pname has_ictor(classdef::has_ictor317,7902
+struct basetype 323,7935
+ basetype(basetype::basetype350,8636
+ Pbase type_adj(basetype::type_adj352,8660
+ Pbase base_adj(basetype::base_adj353,8682
+ Pbase name_adj(basetype::name_adj354,8706
+ Pname aggr(basetype::aggr355,8730
+ void normalize(basetype::normalize356,8747
+ Pbase check(basetype::check358,8779
+ void dcl_print(basetype::dcl_print359,8800
+ Pbase arit_conv(basetype::arit_conv360,8819
+struct fct 365,8857
+ fct(fct::fct387,9517
+ void argdcl(fct::argdcl389,9543
+ Ptype normalize(fct::normalize391,9583
+ void dcl_print(fct::dcl_print392,9608
+ void dcl(fct::dcl393,9627
+ Pexpr base_init(fct::base_init394,9645
+ Pexpr mem_init(fct::mem_init395,9685
+ bit declared(fct::declared396,9724
+ void simpl(fct::simpl397,9765
+ Pexpr expand(fct::expand398,9780
+struct name_list 403,9827
+ name_list(name_list::name_list406,9866
+struct gen 410,9931
+ gen(gen::gen413,9996
+ Pname add(gen::add414,10010
+ Pname find(gen::find415,10034
+struct pvtyp 419,10071
+struct vec 423,10109
+ vec(vec::vec429,10182
+ Ptype normalize(vec::normalize431,10253
+struct ptr 435,10289
+ ptr(ptr::ptr440,10419
+ Ptype normalize(ptr::normalize442,10497
+inline Pptr type::addrof(447,10546
+extern bit vrp_equiv;449,10606
+extern Pexpr next_elem(461,10867
+extern void new_list(462,10893
+extern void list_check(463,10922
+extern Pexpr ref_init(464,10967
+extern Pexpr class_init(465,11009
+extern Pexpr check_cond(466,11060
+struct expr 469,11113
+ expr(expr::expr504,11716
+ ~expr(expr::~expr505,11742
+ void del(expr::del507,11765
+ void print(expr::print508,11778
+ Pexpr typ(expr::typ509,11793
+ int eval(expr::eval510,11813
+ int lval(expr::lval511,11826
+ Ptype fct_call(expr::fct_call512,11842
+ Pexpr address(expr::address513,11867
+ Pexpr contents(expr::contents514,11885
+ void simpl(expr::simpl515,11904
+ Pexpr expand(expr::expand516,11919
+ bit not_simple(expr::not_simple517,11936
+ Pexpr try_to_overload(expr::try_to_overload518,11955
+ Pexpr docast(expr::docast519,11987
+ Pexpr dovalue(expr::dovalue520,12010
+ Pexpr donew(expr::donew521,12034
+ void simpl_new(expr::simpl_new522,12056
+ void simpl_delete(expr::simpl_delete523,12075
+struct texpr 527,12108
+ texpr(texpr::texpr528,12149
+struct ival 531,12218
+ ival(ival::ival532,12258
+struct call 535,12308
+ call(call::call536,12338
+ void simpl(call::simpl538,12404
+ Pexpr expand(call::expand539,12419
+struct qexpr 543,12453
+ qexpr(qexpr::qexpr544,12500
+struct ref 547,12582
+ ref(ref::ref548,12632
+struct text_expr 551,12697
+ text_expr(text_expr::text_expr552,12731
+struct name 557,12884
+ name(name::name585,13815
+ ~name(name::~name586,13832
+ Pname normalize(name::normalize588,13843
+ Pname tdef(name::tdef589,13881
+ Pname tname(name::tname590,13896
+ void hide(name::hide591,13915
+ void unhide(name::unhide592,13929
+ Pname dcl(name::dcl594,13981
+ int no_of_names(name::no_of_names595,14005
+ void use(name::use596,14025
+ void assign(name::assign597,14053
+ void take_addr(name::take_addr598,14069
+ void check_oper(name::check_oper599,14108
+ void simpl(name::simpl600,14133
+ void del(name::del601,14148
+ void print(name::print602,14161
+ void dcl_print(name::dcl_print603,14176
+ void field_align(name::field_align604,14198
+ Pname dofct(name::dofct605,14219
+extern int friend_in_class;610,14269
+struct stmt 615,14374
+ stmt(stmt::stmt640,14757
+ ~stmt(stmt::~stmt641,14781
+ void del(stmt::del643,14804
+ void print(stmt::print644,14817
+ void dcl(stmt::dcl645,14832
+ void reached(stmt::reached646,14845
+ Pstmt simpl(stmt::simpl647,14862
+ Pstmt expand(stmt::expand648,14878
+ Pstmt copy(stmt::copy649,14895
+extern char* Neval;654,14934
+extern Pname dcl_temp(655,14954
+extern char* temp(656,14992
+extern Ptable scope;657,15032
+extern Ptable expand_tbl;658,15053
+extern Pname expand_fn;659,15079
+struct estmt 662,15111
+ estmt(estmt::estmt669,15303
+struct ifstmt 672,15379
+ ifstmt(ifstmt::ifstmt676,15484
+struct lstmt 680,15586
+ lstmt(lstmt::lstmt686,15650
+struct forstmt 689,15728
+ forstmt(forstmt::forstmt690,15759
+struct block 694,15880
+ block(block::block695,15919
+ void dcl(block::dcl697,16001
+ Pstmt simpl(block::simpl698,16020
+struct pair 703,16060
+ pair(pair::pair704,16096
+struct nlist 708,16173
+ nlist(nlist::nlist711,16214
+ void add(nlist::add712,16230
+ void add_list(nlist::add_list713,16282
+extern Pname name_unlist(716,16309
+struct slist 718,16344
+ slist(slist::slist721,16385
+ void add(slist::add722,16430
+extern Pstmt stmt_unlist(725,16486
+struct elist 727,16521
+ elist(elist::elist730,16562
+ void add(elist::add731,16607
+extern Pexpr expr_unlist(734,16659
+extern class dcl_context * cc;737,16707
+struct dcl_context 739,16739
+ void stack(dcl_context::stack747,17023
+ void unstack(dcl_context::unstack748,17064
+#define MAXCONT 751,17095
+extern dcl_context ccvec[ccvec752,17114
+extern void yyerror(755,17157
+extern TOK back;756,17185
+extern char* line_format;760,17217
+extern Plist isf_list;762,17244
+extern Pstmt st_ilist;763,17267
+extern Pstmt st_dlist;764,17290
+extern Ptable sti_tbl;765,17313
+extern Ptable std_tbl;766,17336
+Pexpr try_to_coerce(767,17359
+extern bit can_coerce(768,17409
+extern Ptype np_promote(769,17446
+extern void new_key(770,17505
+extern Pname dcl_list;772,17544
+extern int over_call(773,17567
+extern Pname Nover;774,17603
+extern Pname Ntncheck;775,17623
+extern Pname Ncoerce;776,17646
+extern Nover_coerce;777,17668
+const MIA 779,17690
+struct iline 780,17705
+extern Pexpr curr_expr;789,17938
+extern Pin curr_icall;790,17962
+#define FUDGE111 791,17985
+extern Pstmt curr_loop;793,18007
+extern Pblock curr_block;794,18031
+extern Pstmt curr_switch;795,18057
+extern bit arg_err_suppress;796,18083
+extern loc last_line;797,18112
+extern no_of_undcl;799,18135
+extern no_of_badcall;800,18155
+extern Pname undcl,801,18177
+extern Pname undcl, badcall;801,18177
+extern int strlen(803,18207
+extern char* strcpy(804,18239
+extern int str_to_int(805,18280
+extern int c_strlen(806,18316
+extern int strcmp(809,18360
+extern Pname vec_new_fct;812,18419
+extern Pname vec_del_fct;813,18445
+extern int Nstd;815,18472
+extern int stcount;817,18555
+extern Pname find_hidden(819,18623
+Pexpr replace_temp(820,18656
+void make_res(821,18689
+Pexpr ptr_init(822,18710
+extern bit fake_sizeof;826,18755
+extern TOK lalex(828,18823
+extern fprintf(830,18856
+#define DB(831,18890
+#define DB(833,18920
+
+cp-src/burton.cpp,103
+::dummy::dummy test::dummy1(1,0
+::dummy::dummy test::dummy2(6,64
+::dummy::dummy test::dummy3(11,143
+
+cp-src/functions.cpp,807
+void Date::setDate 5,148
+void Date::plus 32,939
+void Date::minus 42,1229
+void Date::shift 52,1407
+Date & Date::operator = Date::operator =62,1628
+Date & Date::operator += Date::operator +=69,1789
+Date & Date::operator -= Date::operator -=78,1939
+Date & Date::operator ++ Date::operator ++87,2080
+Date & Date::operator -- Date::operator --96,2216
+int Date::operator - Date::operator -104,2331
+int Date::operator < Date::operator <112,2483
+int Date::operator > Date::operator >116,2557
+int Date::operator == Date::operator ==120,2631
+ostream& operator << operator <<124,2707
+istream& operator >> operator >>133,2943
+bool isLeap 159,3543
+bool isHoliday 163,3629
+void asort(173,3865
+void ReadVacation 186,4064
+void Debug 201,4523
+int WorkingDays(211,4867
+Date StartDay(226,5129
+
+cp-src/MDiagArray2.h,1538
+#define octave_MDiagArray2_h 29,870
+#undef LTGT35,967
+#define LTGT39,1031
+#define LTGT 42,1051
+class MDiagArray2;45,1087
+operator += operator +=48,1145
+operator -= operator -=51,1242
+operator * operator *54,1339
+operator / operator /57,1428
+operator * operator *60,1517
+operator + operator +63,1605
+operator - operator -66,1707
+product 69,1808
+operator - operator -72,1907
+class MDiagArray2 78,2022
+ MDiagArray2 MDiagArray2::MDiagArray282,2077
+ MDiagArray2 MDiagArray2::MDiagArray286,2154
+ MDiagArray2 MDiagArray2::MDiagArray287,2198
+ MDiagArray2 MDiagArray2::MDiagArray288,2254
+ MDiagArray2 MDiagArray2::MDiagArray289,2329
+ MDiagArray2 MDiagArray2::MDiagArray290,2387
+ MDiagArray2 MDiagArray2::MDiagArray291,2450
+ ~MDiagArray2 MDiagArray2::~MDiagArray293,2515
+ MDiagArray2<T>& operator = MDiagArray2::operator =95,2542
+ DiagArray2<T>::operator = MDiagArray2::operator =97,2603
+ operator MArray2<T> MDiagArray2::operator MArray2<T>101,2667
+ operator += MDiagArray2::operator +=116,2966
+ operator -= MDiagArray2::operator -=119,3057
+ friend MDiagArray2<T> operator * MDiagArray2::operator *123,3174
+ friend MDiagArray2<T> operator / MDiagArray2::operator /124,3253
+ friend MDiagArray2<T> operator * MDiagArray2::operator *128,3384
+ operator + MDiagArray2::operator +133,3544
+ operator - MDiagArray2::operator -136,3640
+ friend MDiagArray2<T> operator - MDiagArray2::operator -141,3803
+#undef LTGT144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887
+
+cp-src/Pctest.h,658
+#define PCTEST_H24,837
+class TestRecord;42,1118
+ PctestActionValid,::PctestActionValid47,1286
+ PctestActionValidLasthop,::PctestActionValidLasthop49,1370
+ PctestActionFiltered,::PctestActionFiltered51,1481
+ PctestActionAbort ::PctestActionAbort53,1566
+} PctestActionType;54,1616
+class Pctest 56,1637
+ Pctest(Pctest::Pctest59,1663
+ virtual ~Pctest(Pctest::~Pctest65,1813
+ virtual void TimeSyscall(Pctest::TimeSyscall68,1889
+ virtual char *GeneratePayload(Pctest::GeneratePayload71,1975
+ virtual char *GetTargetName(Pctest::GetTargetName77,2171
+ virtual PctestActionType GetAction(Pctest::GetAction86,2555
+
+cp-src/Range.h,965
+#define octave_Range_h 24,765
+class istream;30,840
+class ostream;31,855
+class Matrix;32,870
+Range35,891
+ Range Range::Range39,909
+ Range Range::Range42,995
+ Range Range::Range46,1130
+ Range Range::Range50,1248
+ double base Range::base54,1376
+ double limit Range::limit55,1425
+ double inc Range::inc56,1475
+ int nelem Range::nelem57,1523
+ bool all_elements_are_ints Range::all_elements_are_ints59,1571
+ Matrix matrix_value Range::matrix_value61,1615
+ double min Range::min63,1652
+ double max Range::max64,1679
+ void sort Range::sort66,1707
+ void set_base Range::set_base68,1728
+ void set_limit Range::set_limit69,1774
+ void set_inc Range::set_inc70,1821
+ friend ostream& operator << Range::operator <<72,1867
+ friend istream& operator >> Range::operator >>73,1928
+ void print_range Range::print_range75,1984
+ int nelem_internal Range::nelem_internal85,2099
+extern Range operator - operator -88,2138
+
+cp-src/screen.cpp,228
+unsigned char cursor_x,15,548
+unsigned char cursor_x, cursor_y;15,548
+static union REGS regs;16,582
+void goto_xy(18,607
+void hide_cursor(27,774
+void cursor_position(32,836
+void clear_screen(41,997
+void write_xyc(55,1247
+
+cp-src/screen.hpp,791
+#define __COLORS9,401
+enum COLORS 11,419
+ BLACK,COLORS::BLACK12,433
+ BLUE,COLORS::BLUE13,471
+ GREEN,COLORS::GREEN14,481
+ CYAN,COLORS::CYAN15,492
+ RED,COLORS::RED16,502
+ MAGENTA,COLORS::MAGENTA17,511
+ BROWN,COLORS::BROWN18,524
+ LIGHTGRAY,COLORS::LIGHTGRAY19,535
+ DARKGRAY,COLORS::DARKGRAY20,550
+ LIGHTBLUE,COLORS::LIGHTBLUE21,589
+ LIGHTGREEN,COLORS::LIGHTGREEN22,604
+ LIGHTCYAN,COLORS::LIGHTCYAN23,620
+ LIGHTRED,COLORS::LIGHTRED24,635
+ LIGHTMAGENTA,COLORS::LIGHTMAGENTA25,649
+ YELLOW,COLORS::YELLOW26,667
+ WHITECOLORS::WHITE27,679
+#define SCREEN_FP(31,700
+#define SCREEN_START 33,795
+void goto_xy(35,835
+void hide_cursor(36,883
+void cursor_position(37,907
+void clear_screen(38,935
+void write_xyc(39,960
+
+cp-src/conway.cpp,270
+#define max(12,357
+#define min(13,393
+const int num_rows 15,430
+const int num_columns 16,470
+class site *field_of_play[field_of_play18,499
+int site::total_surrounding(20,550
+void display(37,958
+void glider(50,1239
+void traffic_light(59,1478
+void main(67,1633
+
+cp-src/conway.hpp,331
+class site:site5,235
+ int total_surrounding(site::total_surrounding8,303
+ site(site::site10,344
+ ~site(site::~site11,397
+ char read(site::read12,410
+ void set(site::set13,444
+ void clear(site::clear14,478
+ void compute_next_state(site::compute_next_state15,514
+ void step(site::step22,717
+
+cp-src/clheir.cpp,307
+const int max_num_generic_objects 9,298
+generic_object * object_registry[object_registry10,340
+void init_registry(12,400
+void step_everybody(19,527
+void discrete_location::clear_neighbors(31,852
+generic_object::generic_object(36,981
+generic_object::~generic_object(48,1255
+void agent::move(53,1353
+
+cp-src/clheir.hpp,1152
+extern void init_registry(10,452
+extern void step_everybody(11,485
+class generic_object13,520
+ generic_object(generic_object::generic_object17,582
+ ~generic_object(generic_object::~generic_object19,724
+ virtual void compute_next_state(generic_object::compute_next_state21,842
+ virtual void step(generic_object::step22,888
+const int max_num_directions 31,1219
+class location:location33,1289
+ location(location::location43,1642
+ ~location(location::~location44,1661
+class irregular_location:irregular_location47,1686
+ irregular_location(irregular_location::irregular_location51,1762
+ ~irregular_location(irregular_location::~irregular_location53,1854
+class discrete_location:discrete_location56,1889
+ void clear_neighbors(discrete_location::clear_neighbors60,2004
+ discrete_location(discrete_location::discrete_location62,2044
+ ~discrete_location(discrete_location::~discrete_location65,2154
+ void assign_neighbor(discrete_location::assign_neighbor66,2184
+class agent:agent75,2508
+ agent(agent::agent79,2578
+ ~agent(agent::~agent80,2591
+ void move(agent::move81,2605
+
+cp-src/fail.C,386
+struct A 7,263
+ struct B A::B8,274
+ struct C A::B::C9,289
+ C(A::B::C::C11,318
+ operator int(A::B::C::operator int12,342
+ typedef C T;A::B::T14,389
+ typedef B T2;A::T216,414
+class String;20,437
+class A 23,453
+ class B A::B24,463
+ class C A::B::C25,474
+ int f(A::B::f26,488
+int A::B::f(31,521
+main(37,571
+ class D 41,622
+ D(D::D43,659
+
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch 1,0
+(defalias 'pending-delete-mode pending-delete-mode5,102
+(defalias (quote explicitly-quoted-pending-delete-mode)8,175
+
+el-src/emacs/lisp/progmodes/etags.el,5188
+(defvar tags-file-name 34,1034
+(defgroup etags 43,1498
+(defcustom tags-case-fold-search 47,1566
+(defcustom tags-table-list 59,2051
+(defcustom tags-compression-info-list69,2449
+(defcustom tags-add-tables 88,3231
+(defcustom tags-revert-without-query 98,3627
+(defvar tags-table-computed-list 103,3778
+(defvar tags-table-computed-list-for 112,4262
+(defvar tags-table-list-pointer 117,4510
+(defvar tags-table-list-started-at 121,4701
+(defvar tags-table-set-list 124,4821
+(defcustom find-tag-hook 129,5000
+(defcustom find-tag-default-function 137,5263
+(define-obsolete-variable-alias
'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602
+(defcustom tags-tag-face 148,5699
+(defcustom tags-apropos-verbose 154,5834
+(defcustom tags-apropos-additional-actions 160,5998
+(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917
+(defvar default-tags-table-function 189,7097
+(defvar tags-location-ring 194,7323
+(defvar tags-table-files 201,7599
+(defvar tags-completion-table 206,7766
+(defvar tags-included-tables 209,7858
+(defvar next-file-list 212,7953
+(defvar tags-table-format-functions 217,8059
+(defvar file-of-tag-function 224,8440
+(defvar tags-table-files-function 228,8634
+(defvar tags-completion-table-function 230,8745
+(defvar snarf-tag-function 232,8840
+(defvar goto-tag-location-function 236,9049
+(defvar find-tag-regexp-search-function 239,9222
+(defvar find-tag-regexp-tag-order 241,9343
+(defvar find-tag-regexp-next-line-after-failure-p 243,9452
+(defvar find-tag-search-function 245,9572
+(defvar find-tag-tag-order 247,9679
+(defvar find-tag-next-line-after-failure-p 249,9774
+(defvar list-tags-function 251,9880
+(defvar tags-apropos-function 253,9968
+(defvar tags-included-tables-function 255,10062
+(defvar verify-tags-table-function 257,10181
+(defun initialize-new-tags-table 260,10292
+(defun tags-table-mode 276,10980
+(defun visit-tags-table 285,11245
+(defun tags-table-check-computed-list 321,12783
+(defun tags-table-extend-computed-list 360,14654
+(defun tags-expand-table-name 400,16367
+(defun tags-table-list-member 409,16710
+(defun tags-verify-table 421,17182
+(defun tags-table-including 470,19302
+(defun tags-next-table 522,21346
+(defun visit-tags-table-buffer 543,22203
+(defun tags-reset-tags-tables 712,28513
+(defun file-of-tag 731,29170
+(defun tags-table-files 740,29519
+(defun tags-included-tables 749,29869
+(defun tags-completion-table 755,30115
+(defun tags-lazy-completion-table 783,31309
+(defun tags-completion-at-point-function 799,31944
+(defun find-tag-tag 818,32694
+(defvar last-tag 837,33367
+(defun find-tag-interactive 840,33426
+(defvar find-tag-history 852,33841
+(defvar etags-case-fold-search)855,33906
+(defvar etags-syntax-table)856,33938
+(defvar local-find-tag-hook)857,33966
+(defun find-tag-noselect 860,34011
+(defun find-tag 932,37125
+(defun find-tag-other-window 959,38341
+(defun find-tag-other-frame 1000,40269
+(defun find-tag-regexp 1025,41443
+(defalias 'pop-tag-mark pop-tag-mark1049,42605
+(defvar tag-lines-already-matched 1052,42656
+(defun find-tag-in-order 1055,42763
+(defun tag-find-file-of-tag-noselect 1167,47109
+(defun tag-find-file-of-tag 1200,48955
+(defun etags-recognize-tags-table 1208,49181
+(defun etags-verify-tags-table 1241,50812
+(defun etags-file-of-tag 1246,51010
+(defun etags-tags-completion-table 1256,51345
+(defun etags-snarf-tag 1286,52551
+(defun etags-goto-tag-location 1324,54120
+(defun etags-list-tags 1388,56563
+(defmacro tags-with-face 1423,57838
+(defun etags-tags-apropos-additional 1431,58171
+(defun etags-tags-apropos 1465,59408
+(defun etags-tags-table-files 1527,61617
+(defun etags-tags-included-tables 1542,62053
+(defun tags-recognize-empty-tags-table 1559,62593
+(defun tag-exact-file-name-match-p 1587,63739
+(defun tag-file-name-match-p 1596,64132
+(defun tag-exact-match-p 1609,64688
+(defun tag-implicit-name-match-p 1620,65256
+(defun tag-symbol-match-p 1633,65856
+(defun tag-word-match-p 1643,66292
+(defun tag-partial-file-name-match-p 1652,66690
+(defun tag-any-match-p 1662,67134
+(defun tag-re-match-p 1667,67318
+(defcustom tags-loop-revert-buffers 1675,67567
+(defun next-file 1685,67976
+(defvar tags-loop-operate 1760,70890
+(defvar tags-loop-scan1763,70984
+(defun tags-loop-eval 1771,71314
+(defun tags-loop-continue 1782,71643
+(defun tags-search 1850,73949
+(defun tags-query-replace 1871,74775
+(defun tags-complete-tags-table-file 1896,75999
+(defun list-tags 1906,76378
+(defun tags-apropos 1934,77331
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78157
+(defun select-tags-table 1964,78396
+(defvar select-tags-table-mode-map 2019,80523
+(define-derived-mode select-tags-table-mode 2030,80906
+(defun select-tags-table-select 2034,81090
+(defun select-tags-table-quit 2043,81456
+(defun complete-tag 2049,81611
+(defconst etags--xref-limit 2074,82552
+(defvar etags-xref-find-definitions-tag-order 2076,82587
+(defun etags-xref-find 2082,82877
+(defun etags--xref-find-definitions 2096,83406
+(defclass xref-etags-location 2129,85121
+(defun xref-make-etags-location 2135,85344
+(cl-defmethod xref-location-marker 2139,85499
+(cl-defmethod xref-location-line 2146,85743
+
+erl-src/gs_dialog.erl,98
+-define(VERSION2,32
+behaviour_info(51,2177
+show(124,5458
+dialog_loop(219,9529
+test(252,10806
+
+erl-src/lines.erl,386
+-define(BREAK66,2377
+-define(dbg68,2437
+new(73,2565
+count(80,2686
+nth(87,2815
+append(104,3301
+replace(119,3816
+insert(138,4559
+insert_after(165,5501
+delete(192,6456
+convert_to_list(215,7110
+convert_from_list(220,7259
+replace_nth(229,7518
+insert_nth(234,7618
+insert_after_nth(239,7711
+delete_nth(244,7828
+split_at(252,8027
+balance_left(267,8451
+balance_right(282,8865
+
+erl-src/lists.erl,593
+member(21,663
+append(30,790
+reverse(48,1099
+nth(59,1310
+nthtail(64,1382
+prefix(73,1546
+suffix(83,1707
+last(92,1882
+seq(101,2058
+sum(109,2265
+duplicate(116,2432
+min(124,2628
+max(132,2837
+sublist(141,3083
+delete(152,3329
+sort(161,3483
+split_and_sort(165,3559
+merge(175,3811
+concat(190,4219
+thing_to_list(195,4300
+flatten(204,4606
+flat_length(222,5003
+keymember(239,5451
+keysearch(246,5609
+keydelete(253,5770
+keyreplace(260,5923
+keysort(266,6113
+split_and_keysort(270,6229
+keymerge(277,6504
+keymap(288,6851
+map(311,7829
+foldl(315,7919
+foldr(320,8037
+zf(325,8155
+
+f-src/entry.for,172
+ LOGICAL FUNCTION PRTPKG 3,75
+ ENTRY SETPRT 194,3866
+ ENTRY MSGSEL 395,8478
+ & intensity1(577,12231
+ character*(*) function foo(579,12307
+
+f-src/entry.strange_suffix,172
+ LOGICAL FUNCTION PRTPKG 3,75
+ ENTRY SETPRT 194,3866
+ ENTRY MSGSEL 395,8478
+ & intensity1(577,12231
+ character*(*) function foo(579,12307
+
+f-src/entry.strange,103
+ ENTRY MSGSEL 193,4382
+ & intensity1(375,8135
+ character*(*) function foo(377,8211
+
+forth-src/test-forth.fth,408
+: a-forth-word 20,301
+99 constant a-forth-constant!22,343
+55 value a-forth-value?23,373
+create :a-forth-dictionary-entry24,397
+defer #a-defer-word27,460
+: (another-forth-word)(another-forth-word29,481
+ 9 field >field136,582
+ 5 field >field237,605
+constant (a-forth-constant(a-forth-constant38,628
+2000 buffer: #some-storage41,657
+code assemby-code-word 43,685
+: a-forth-word 50,870
+
+html-src/softwarelibero.html,198
+Cos'� il software libero?4,38
+Licenze d'uso di un programmalicenze65,2474
+Sfatiamo alcuni miti138,6064
+Il movimento open sourceoss191,7968
+Impatto pratico del software liberoimpatto231,9986
+
+html-src/index.shtml,104
+ 8,281
+In evidenza15,446
+Comunicati e iniziative32,974
+Ultime notizie dall'associazione63,2027
+
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the
Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and
Quantizing Algorithms7,276
+Descriptionalgorithms10,477
+Generating the Datagenalgorithm48,1953
+Convolutionallyconalgorithm55,2463
+Nextstatetable262,11331
+Outputoutputtable350,13571
+Mapping the Channel Symbolsmapping433,15786
+Adding Noise to theaddnoise439,16174
+Quantizing the Receivedquantizing469,18637
+
+html-src/software.html,438
+Francesco Potort� Software Page9,280
+Software that I wrote for supporting my research activitysimulation36,1400
+MTGmtg41,1484
+Fracasfracas65,2626
+GaliLEOgalileo101,4234
+Leasqrleasqr114,4679
+Free software that I wrote for the GNU project or for my personal or
workgnu142,6067
+Etagsetags148,6182
+checkiso161,6731
+cgrep178,7549
+debian-bug.eldebian-bug190,7981
+tcpdump205,8566
+Links to interesting softwarelinks216,8893
+
+java-src/AWTEMul.java,4356
+public class AWTEventMulticaster 63,2111
+ protected
AWTEventMulticaster(AWTEventMulticaster.AWTEventMulticaster77,2555
+ protected EventListener remove(AWTEventMulticaster.remove86,2820
+ public void componentResized(AWTEventMulticaster.componentResized102,3294
+ public void componentMoved(AWTEventMulticaster.componentMoved112,3626
+ public void componentShown(AWTEventMulticaster.componentShown122,3952
+ public void componentHidden(AWTEventMulticaster.componentHidden132,4280
+ public void componentAdded(AWTEventMulticaster.componentAdded142,4619
+ public void componentRemoved(AWTEventMulticaster.componentRemoved152,4959
+ public void focusGained(AWTEventMulticaster.focusGained162,5281
+ public void focusLost(AWTEventMulticaster.focusLost172,5572
+ public void keyTyped(AWTEventMulticaster.keyTyped182,5853
+ public void keyPressed(AWTEventMulticaster.keyPressed192,6129
+ public void keyReleased(AWTEventMulticaster.keyReleased202,6413
+ public void mouseClicked(AWTEventMulticaster.mouseClicked212,6704
+ public void mousePressed(AWTEventMulticaster.mousePressed222,7004
+ public void mouseReleased(AWTEventMulticaster.mouseReleased232,7306
+ public void mouseEntered(AWTEventMulticaster.mouseEntered242,7609
+ public void mouseExited(AWTEventMulticaster.mouseExited252,7907
+ public void mouseDragged(AWTEventMulticaster.mouseDragged262,8204
+ public void mouseMoved(AWTEventMulticaster.mouseMoved272,8512
+ public void windowOpened(AWTEventMulticaster.windowOpened282,8819
+ public void windowClosing(AWTEventMulticaster.windowClosing292,9125
+ public void windowClosed(AWTEventMulticaster.windowClosed302,9432
+ public void windowIconified(AWTEventMulticaster.windowIconified312,9742
+ public void
windowDeiconified(AWTEventMulticaster.windowDeiconified322,10064
+ public void windowActivated(AWTEventMulticaster.windowActivated332,10389
+ public void
windowDeactivated(AWTEventMulticaster.windowDeactivated342,10712
+ public void actionPerformed(AWTEventMulticaster.actionPerformed352,11037
+ public void
itemStateChanged(AWTEventMulticaster.itemStateChanged362,11356
+ public void
adjustmentValueChanged(AWTEventMulticaster.adjustmentValueChanged372,11690
+ public void
textValueChanged(AWTEventMulticaster.textValueChanged376,11874
+ public static ComponentListener add(AWTEventMulticaster.add387,12225
+ public static ContainerListener add(AWTEventMulticaster.add397,12571
+ public static FocusListener add(AWTEventMulticaster.add407,12901
+ public static KeyListener add(AWTEventMulticaster.add417,13207
+ public static MouseListener add(AWTEventMulticaster.add427,13513
+ public static MouseMotionListener add(AWTEventMulticaster.add437,13855
+ public static WindowListener add(AWTEventMulticaster.add447,14197
+ public static ActionListener add(AWTEventMulticaster.add457,14519
+ public static ItemListener add(AWTEventMulticaster.add467,14833
+ public static AdjustmentListener add(AWTEventMulticaster.add477,15163
+ public static TextListener add(AWTEventMulticaster.add480,15310
+ public static ComponentListener
remove(AWTEventMulticaster.remove490,15664
+ public static ContainerListener
remove(AWTEventMulticaster.remove500,16044
+ public static FocusListener remove(AWTEventMulticaster.remove510,16408
+ public static KeyListener remove(AWTEventMulticaster.remove520,16748
+ public static MouseListener remove(AWTEventMulticaster.remove530,17088
+ public static MouseMotionListener
remove(AWTEventMulticaster.remove540,17465
+ public static WindowListener remove(AWTEventMulticaster.remove550,17841
+ public static ActionListener remove(AWTEventMulticaster.remove560,18197
+ public static ItemListener remove(AWTEventMulticaster.remove570,18545
+ public static AdjustmentListener
remove(AWTEventMulticaster.remove580,18909
+ public static TextListener remove(AWTEventMulticaster.remove583,19062
+ protected static EventListener
addInternal(AWTEventMulticaster.addInternal597,19608
+ protected static EventListener
removeInternal(AWTEventMulticaster.removeInternal614,20244
+ protected void saveInternal(AWTEventMulticaster.saveInternal628,20582
+ static void save(AWTEventMulticaster.save646,21131
+
+java-src/KeyEve.java,698
+public class KeyEvent 36,1075
+ public KeyEvent(KeyEvent.KeyEvent234,9912
+ public KeyEvent(KeyEvent.KeyEvent252,10510
+ public int getKeyCode(KeyEvent.getKeyCode261,10836
+ public void setKeyCode(KeyEvent.setKeyCode265,10897
+ public void setKeyChar(KeyEvent.setKeyChar269,10978
+ public void setModifiers(KeyEvent.setModifiers273,11060
+ public char getKeyChar(KeyEvent.getKeyChar282,11331
+ public static String getKeyText(KeyEvent.getKeyText290,11561
+ public static String
getKeyModifiersText(KeyEvent.getKeyModifiersText377,16662
+ public boolean isActionKey(KeyEvent.isActionKey403,17618
+ public String paramString(KeyEvent.paramString407,17704
+
+java-src/SMan.java,5533
+class SecurityManager 80,3387
+ public boolean getInCheck(SecurityManager.getInCheck101,4075
+ protected SecurityManager(SecurityManager.SecurityManager114,4497
+ protected native Class[]
getClassContext(SecurityManager.getClassContext130,5038
+ protected native ClassLoader
currentClassLoader(SecurityManager.currentClassLoader142,5529
+ protected Class
currentLoadedClass(SecurityManager.currentLoadedClass149,5707
+ protected native int classDepth(SecurityManager.classDepth162,6167
+ protected native int
classLoaderDepth(SecurityManager.classLoaderDepth174,6668
+ protected boolean inClass(SecurityManager.inClass184,7034
+ protected boolean inClassLoader(SecurityManager.inClassLoader196,7372
+ public Object
getSecurityContext(SecurityManager.getSecurityContext221,8485
+ public void
checkCreateClassLoader(SecurityManager.checkCreateClassLoader238,9069
+ public void checkAccess(SecurityManager.checkAccess268,10298
+ public void checkAccess(SecurityManager.checkAccess298,11632
+ public void checkExit(SecurityManager.checkExit323,12649
+ public void checkExec(SecurityManager.checkExec349,13734
+ public void checkLink(SecurityManager.checkLink375,14813
+ public void checkRead(SecurityManager.checkRead394,15485
+ public void checkRead(SecurityManager.checkRead412,16111
+ public void checkRead(SecurityManager.checkRead434,17017
+ public void checkWrite(SecurityManager.checkWrite453,17706
+ public void checkWrite(SecurityManager.checkWrite471,18337
+ public void checkDelete(SecurityManager.checkDelete493,19165
+ public void checkConnect(SecurityManager.checkConnect517,20119
+ public void checkConnect(SecurityManager.checkConnect543,21254
+ public void checkListen(SecurityManager.checkListen561,21910
+ public void checkAccept(SecurityManager.checkAccept585,22887
+ public void checkMulticast(SecurityManager.checkMulticast597,23272
+ public void checkMulticast(SecurityManager.checkMulticast610,23732
+ public void
checkPropertiesAccess(SecurityManager.checkPropertiesAccess632,24609
+ public void
checkPropertyAccess(SecurityManager.checkPropertyAccess654,25449
+ public boolean
checkTopLevelWindow(SecurityManager.checkTopLevelWindow680,26580
+ public void
checkPrintJobAccess(SecurityManager.checkPrintJobAccess689,26763
+ public void
checkSystemClipboardAccess(SecurityManager.checkSystemClipboardAccess698,26958
+ public void
checkAwtEventQueueAccess(SecurityManager.checkAwtEventQueueAccess707,27159
+ public void
checkPackageAccess(SecurityManager.checkPackageAccess729,27966
+ public void
checkPackageDefinition(SecurityManager.checkPackageDefinition751,28803
+ public void checkSetFactory(SecurityManager.checkSetFactory775,29929
+ public void checkMemberAccess(SecurityManager.checkMemberAccess786,30209
+ public void
checkSecurityAccess(SecurityManager.checkSecurityAccess796,30430
+ private native Class
currentLoadedClass0(SecurityManager.currentLoadedClass0800,30522
+ public ThreadGroup getThreadGroup(SecurityManager.getThreadGroup811,30923
+class NullSecurityManager 817,31025
+ public void
checkCreateClassLoader(NullSecurityManager.checkCreateClassLoader818,31077
+ public void checkAccess(NullSecurityManager.checkAccess819,31123
+ public void checkAccess(NullSecurityManager.checkAccess820,31165
+ public void checkExit(NullSecurityManager.checkExit821,31212
+ public void checkExec(NullSecurityManager.checkExec822,31254
+ public void checkLink(NullSecurityManager.checkLink823,31296
+ public void checkRead(NullSecurityManager.checkRead824,31338
+ public void checkRead(NullSecurityManager.checkRead825,31387
+ public void checkRead(NullSecurityManager.checkRead826,31430
+ public void checkWrite(NullSecurityManager.checkWrite827,31489
+ public void checkWrite(NullSecurityManager.checkWrite828,31539
+ public void checkDelete(NullSecurityManager.checkDelete829,31583
+ public void checkConnect(NullSecurityManager.checkConnect830,31628
+ public void checkConnect(NullSecurityManager.checkConnect831,31684
+ public void checkListen(NullSecurityManager.checkListen832,31756
+ public void checkAccept(NullSecurityManager.checkAccept833,31798
+ public void checkMulticast(NullSecurityManager.checkMulticast834,31853
+ public void checkMulticast(NullSecurityManager.checkMulticast835,31907
+ public void
checkPropertiesAccess(NullSecurityManager.checkPropertiesAccess836,31971
+ public void
checkPropertyAccess(NullSecurityManager.checkPropertyAccess837,32015
+ public void
checkPropertyAccess(NullSecurityManager.checkPropertyAccess838,32067
+ public boolean
checkTopLevelWindow(NullSecurityManager.checkTopLevelWindow839,32131
+ public void
checkPrintJobAccess(NullSecurityManager.checkPrintJobAccess840,32202
+ public void
checkSystemClipboardAccess(NullSecurityManager.checkSystemClipboardAccess841,32244
+ public void
checkAwtEventQueueAccess(NullSecurityManager.checkAwtEventQueueAccess842,32293
+ public void
checkPackageAccess(NullSecurityManager.checkPackageAccess843,32340
+ public void
checkPackageDefinition(NullSecurityManager.checkPackageDefinition844,32391
+ public void checkSetFactory(NullSecurityManager.checkSetFactory845,32446
+ public void
checkMemberAccess(NullSecurityManager.checkMemberAccess846,32484
+ public void
checkSecurityAccess(NullSecurityManager.checkSecurityAccess847,32546
+
+java-src/SysCol.java,336
+public final class SystemColor 37,1402
+ static SystemColor.static342,10478
+ private static void
updateSystemColors(SystemColor.updateSystemColors349,10617
+ private SystemColor(SystemColor.SystemColor357,10885
+ public int getRGB(SystemColor.getRGB370,11245
+ public String toString(SystemColor.toString377,11388
+
+java-src/TG.java,2041
+class ThreadGroup 54,2104
+ private ThreadGroup(ThreadGroup.ThreadGroup72,2495
+ public ThreadGroup(ThreadGroup.ThreadGroup84,2848
+ public ThreadGroup(ThreadGroup.ThreadGroup105,3714
+ public final String getName(ThreadGroup.getName124,4189
+ public final ThreadGroup getParent(ThreadGroup.getParent135,4492
+ public final int getMaxPriority(ThreadGroup.getMaxPriority148,4867
+ public final boolean isDaemon(ThreadGroup.isDaemon161,5305
+ public synchronized boolean isDestroyed(ThreadGroup.isDestroyed170,5470
+ public final void setDaemon(ThreadGroup.setDaemon192,6368
+ public final void setMaxPriority(ThreadGroup.setMaxPriority213,7110
+ public final boolean parentOf(ThreadGroup.parentOf246,8106
+ public final void checkAccess(ThreadGroup.checkAccess268,8834
+ public int activeCount(ThreadGroup.activeCount283,9286
+ public int enumerate(ThreadGroup.enumerate322,10497
+ public int enumerate(ThreadGroup.enumerate344,11481
+ private int enumerate(ThreadGroup.enumerate348,11584
+ public int activeGroupCount(ThreadGroup.activeGroupCount389,12588
+ public int enumerate(ThreadGroup.enumerate425,13727
+ public int enumerate(ThreadGroup.enumerate445,14595
+ private int enumerate(ThreadGroup.enumerate449,14703
+ public final void stop(ThreadGroup.stop499,16212
+ public final void suspend(ThreadGroup.suspend537,17477
+ public final void resume(ThreadGroup.resume575,18749
+ public final void destroy(ThreadGroup.destroy607,19779
+ private final void add(ThreadGroup.add643,20704
+ private void remove(ThreadGroup.remove668,21402
+ void add(ThreadGroup.add697,22142
+ void remove(ThreadGroup.remove722,22808
+ public void list(ThreadGroup.list751,23503
+ void list(ThreadGroup.list754,23556
+ public void uncaughtException(ThreadGroup.uncaughtException810,25512
+ public boolean
allowThreadSuspension(ThreadGroup.allowThreadSuspension823,25823
+ public String toString(ThreadGroup.toString837,26142
+
+lua-src/allegro.lua,400
+local function get_layer_by_name 7,175
+local function count_layers 33,621
+function GetLayerByName 54,980
+function GetUniqueLayerName 65,1204
+function SelectLayer 76,1415
+function NewLayer 86,1773
+function NewLayerSet 144,3226
+function RemoveLayer 170,3750
+function MoveLayerTop 211,4767
+function MoveLayerBottom 223,5079
+function MoveLayerBefore 236,5457
+function MoveLayerAfter 258,6090
+
+make-src/Makefile,1156
+LATEST=1,0
+NONSRCS=35,1578
+CPPFLAGS=49,2191
+LDFLAGS=50,2260
+FASTCFLAGS=55,2531
+FILTER=58,2642
+ @-$($72,3064
+ @-$($73,3113
+ @-$($74,3177
+ @-$($75,3223
+ @-$($76,3291
+ @-$($77,3383
+ @$(81,3466
+ @$(82,3514
+ @$(83,3577
+ @$(84,3622
+ @$(85,3689
+ @$(86,3780
+${CHECKOBJS}: CFLAGS=88,3806
+ @env CHECKEROPTS=92,3922
+ @$(98,4094
+ @$(106,4250
+ @$(110,4374
+ @$(114,4500
+ @for i in $(140,5315
+ @for i in $(SRCS); do echo $$i;140,5315
+ $(160,6053
+ $(163,6114
+ $(166,6177
+ $(169,6228
+ $(172,6317
+ sdiff --suppress-common-lines --width=width186,6614
+ sdiff --suppress-common-lines --width=width189,6703
+ sdiff --suppress-common-lines --width=width192,6791
+ sdiff --suppress-common-lines --width=width195,6880
+ TEXTAGS=204,7122
+ TEXTAGS=def:newcommand:newenvironment ${RUN} etags$*
--regex=regex204,7122
+ ${RUN} etags12 --members -o $@ --regex=regex207,7239
+ ${RUN} ./ctags -o $@ --regex=regex213,7388
+ ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7464
+ TEXTAGS=219,7583
+ TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@
--regex=regex219,7583
+ ${RUN} ./extags -e --regex-c=c222,7710
+
+objc-src/Subprocess.h,98
+#define Subprocess 41,1217
+#define BUFFERSIZE 43,1267
address@hidden Subprocess:Subprocess45,1292
+
+objc-src/Subprocess.m,505
+#define PTY_TEMPLATE 20,494
+#define PTY_LENGTH 21,528
+static void showError(23,551
address@hidden Subprocess(Private)Subprocess(Private)32,737
+- childDidExit39,851
+- fdHandler:67,1589
+showError 98,2360
+fdHandler 112,2785
+getptys 119,2907
+- init:183,4815
+ andStdErr:init:withDelegate:andPtySupport:andStdErr:197,5147
+- send:(const char *)string withNewline:send:withNewline:300,7436
+- send:308,7599
+- terminateInput314,7689
+- terminate:321,7810
+- setDelegate:332,7961
+- delegate338,8031
+
+objc-src/PackInsp.h,109
+#define NUMSTATS 36,1101
+#define TYPESTOSTAT 37,1120
address@hidden PackageInspector:PackageInspector39,1172
+
+objc-src/PackInsp.m,1360
+static const char RCSid[RCSid30,1032
+#define VERSION 34,1116
+# define DEBUG 37,1155
+#define LISTCONTENTS 39,1181
+#define OPENBUTTON 47,1352
+#define LISTCONTENTSBUTTON 48,1449
+#define LISTDESCRIPTIONBUTTON 49,1562
+#define STATE_UNINSTALLED 52,1687
+#define STATE_INSTALLED 53,1807
+#define STATE_COMPRESSD 54,1948
+#define SIZEFORMAT 57,2152
+#define KBYTES 58,2362
+#define MBYTES 59,2473
+#define LOCALIZE(61,2585
+#define LOCALIZE_ARCH(62,2668
++newnew67,2802
+-showInfo:showInfo:93,3417
+-revert:revert:107,3737
+-ok:ok:136,4297
+-loadload143,4424
+#define LOOKUP(156,4826
+#undef LOOKUP176,5694
+-loadKeyValuesFrom:(const char *)type
inTable:loadKeyValuesFrom:inTable:186,5852
+-loadContentsOf:(const char *)type inTable:loadContentsOf:inTable:238,7079
+-loadImageloadImage257,7552
+#define STAT_EQ(275,7940
+-(BOOL)shouldLoad280,8116
+-toggleDescriptiontoggleDescription301,8626
+-(const char *)getPath:(char *)buf forType:getPath:forType:317,8899
+-setRevertButtonTitlesetRevertButtonTitle333,9320
+-(const char *)formatSize:(const char *)size inBuf:formatSize:inBuf:344,9525
+#define WORKING 368,10045
+-(void)getArchs370,10100
+-(void)addArchs:385,10520
+-subprocess:(Subprocess *)sender output:subprocess:output:428,11351
+-subprocessDone:subprocessDone:436,11484
+static void openInWorkspace(446,11634
+-open:open:464,12063
+
+objcpp-src/SimpleCalc.H,41
address@hidden SimpleCalc:SimpleCalc14,400
+
+objcpp-src/SimpleCalc.M,300
+- init52,1747
+- appendToDisplay:60,1933
+- registerAction:70,2210
+- decimalKey:77,2348
+- numberKeys:91,2661
+- equalsKey:112,3192
+- operationKeys:131,3680
+- clearKey:153,4301
+- clearAllKey:160,4410
+- appDidInit:168,4591
+- windowWillClose:178,4882
+- infoPanel:186,5132
+- helpPanel:198,5482
+
+pas-src/common.pas,1875
+procedure InitializeStringPackage;26,527
+function newtextstring;34,874
+procedure disposetextstring;52,1404
+function ConcatT;78,2066
+function AppendTextString;112,3238
+function CopyTextString;132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;151,4505
+procedure append_string;172,5166
+function To_Upper;186,5462
+function To_Lower;194,5617
+function EmptyNmStr(209,6213
+function chartonmstr;219,6436
+function LowerCaseNmStr;230,6682
+function concatenatenamestrings;242,7007
+procedure writenamestring;263,7517
+function IsControlChar;277,7928
+function namestringequal;283,8079
+function NameStringLess;302,8539
+function IsControlCharName(343,9710
+function SubString;358,10208
+function SkipChars;379,10791
+function RemoveUnderlineControl;397,11311
+procedure First100Chars;427,12162
+procedure SkipSpaces;462,13298
+function SkipBlanks;477,13782
+function stripname;505,14595
+function Locate;522,15039
+function NameHasChar;543,15581
+function integertonmstr;561,16134
+function NmStrToInteger;585,16901
+function AddNullToNmStr;600,17317
+function ValToNmStr;611,17585
+function ChangeFileType;625,18037
+function StripPath;647,18734
+function ReprOfChar;675,19343
+procedure ExtractCommentInfo;702,20749
+procedure INSERT_TREE_NODE;784,24053
+function GetNameList;920,27926
+procedure DisposeANameList(925,28010
+procedure DisposeNameList;938,28340
+function GetNewNameListNode;943,28409
+function insertname;972,29051
+procedure InitNameList;988,29471
+procedure InitNameStringPool;998,29767
+procedure NewNameString;1004,29867
+procedure ReleaseNameString;1022,30232
+procedure SDTrefStringToRec 1045,30741
+procedure SDTrefSkipSpaces;1059,31092
+function SDTrefIsEnd 1070,31323
+function SDTrefGetInteger 1082,31529
+procedure SDTrefRecToString 1303,37546
+function NmStrToErrStr;1497,42305
+function ErrStrToNmStr;1509,42557
+function GetTextRef;1529,43112
+
+php-src/lce_functions.php,2152
+ define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38
+ define("LCE_UNKNOWN"LCE_UNKNOWN9,145
+ define("LCE_WS"LCE_WS11,194
+ define("LCE_COMMENT"LCE_COMMENT13,244
+ define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303
+ define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366
+ define("LCE_MSGID"LCE_MSGID19,430
+ define("LCE_MSGSTR"LCE_MSGSTR21,488
+ define("LCE_TEXT"LCE_TEXT23,541
+ define("STATE_ABORT"STATE_ABORT25,567
+ define("STATE_OK"STATE_OK26,595
+ define("STATE_LOOP"STATE_LOOP27,620
+ class POEntryAD 29,648
+ function validate(31,683
+ function checkQuotation(59,1384
+ class CommentAD 70,1639
+ function CommentAD(73,1693
+ function validate(83,1944
+ class POEntry 105,2410
+ function POEntry(119,2711
+ function lineCount(135,3255
+ function serializeToVars(141,3365
+ function write(151,3800
+ class POReader 163,4178
+ function gettext(177,4457
+ function parseFromVars(189,4705
+ function serializeToVars(215,5331
+ function POReader(229,5613
+ function read(243,5983
+ function write(259,6307
+ function isComment(277,6645
+ function comment(284,6822
+ function msgid(304,7247
+ function msgstr(320,7574
+ function start(340,8232
+ function createPOEntries(360,8644
+ function stripLine(394,9472
+ function printClassification(421,10056
+ function classifyLine(432,10301
+ function getTextDomains(471,11094
+ class PORManager 498,11756
+ function PORManager(502,11822
+ function addPOReader(507,11896
+ function &getPOReader(getPOReader512,11992
+ function getDomainNames(517,12081
+ function &loadPORManager(loadPORManager523,12174
+ function fileJoin(536,12436
+ function lce_bindtextdomain(557,12839
+ function lce_textdomain(614,14530
+ function lce_gettext(620,14641
+ function lce_dgettext(626,14767
+ function lce(634,14966
+ function lce_bindtextdomain(651,15488
+ function lce_textdomain(656,15592
+ function lce_gettext(661,15674
+ function lce_dgettext(666,15755
+ function lce(670,15855
+ function lce_geteditcode(676,15898
+
+php-src/ptest.php,46
+define("TEST"TEST1,0
+test 4,26
+foo(16,200
+
+perl-src/htlmify-cystic,1443
+my @section_name;section_name12,236
+my @appendix_name;appendix_name13,254
+my @section_toc;section_toc15,274
+my @appendix_toc;appendix_toc16,291
+my $new_tag new_tag18,310
+my $appendix;appendix24,409
+my $section;section25,423
+my $subsection;subsection26,436
+my $subsubsection;subsubsection27,452
+my $this_file_toc this_file_toc29,472
+my %file_tocs;file_tocs30,496
+my @output_files output_files32,512
+my $file_index file_index33,535
+my $output_file;output_file35,556
+my $line;line37,574
+my $subsection_marker;subsection_marker161,3883
+my $new;new163,3907
+sub read_toc main::read_toc165,3917
+ my $entry entry218,5621
+ my $entry entry234,6077
+ my $entry entry245,6351
+ my $entry entry252,6536
+ my $entry entry268,7010
+ my $entry entry276,7204
+ my $entry entry281,7328
+ my $entry entry296,7698
+sub finish_subsubsections main::finish_subsubsections302,7805
+sub finish_subsections main::finish_subsections309,7987
+sub finish_sections main::finish_sections320,8310
+sub finish_appendices main::finish_appendices331,8599
+sub section_url_base main::section_url_base337,8724
+sub section_url_name main::section_url_name342,8922
+sub section_url main::section_url355,9284
+ my $name name357,9336
+sub section_href main::section_href364,9452
+sub section_name main::section_name368,9551
+sub toc_line main::toc_line372,9655
+sub file_end main::file_end375,9750
+
+perl-src/yagrip.pl,258
+sub getopt main::getopt7,156
+ local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169
+sub usage main::usage38,856
+ local($prog,$_,@list)($prog,$_,@list39,868
+
local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897
+
+perl-src/kai-test.pl,244
+sub f1 main::f12,16
+sub main::f2 6,50
+package Foo;10,90
+sub f3 Foo::f312,104
+sub Bar::f4 16,138
+package Bar;20,177
+sub f5 Bar::f522,191
+package Foo::Bar;26,225
+sub f6 Foo::Bar::f628,244
+package main;32,278
+sub f7 main::f734,293
+
+perl-src/mirror.pl,13410
+sub msg_versionmain::msg_version459,18271
+ local( $arg )( $arg 468,18582
+ local( $flag, $p )( $flag, $p 480,18757
+ local( $site_path )( $site_path 525,19687
+ local( $site, $path )( $site, $path 539,19958
+ local( $key_val )( $key_val 578,20743
+ local( $user )( $user 595,21097
+ local( $c )( $c 634,21853
+ local( $sec,$min,$hour,$mday,$mon,$year,(
$sec,$min,$hour,$mday,$mon,$year,678,22807
+ local( $c )( $c 706,23393
+ local( $dir, $mp )( $dir, $mp 723,23695
+ local( $f )( $f 725,23740
+sub interpret_config_filesmain::interpret_config_files756,24304
+ local( $fname )( $fname 758,24333
+sub interpret_configmain::interpret_config785,24927
+sub parse_linemain::parse_line827,25710
+ local( $eqpl )( $eqpl 829,25727
+ local( $cont )( $cont 830,25744
+ local( $v )( $v 839,26029
+sub set_defaultsmain::set_defaults860,26448
+sub command_line_overridemain::command_line_override868,26579
+ local( $key, $val, $overrides )( $key, $val, $overrides 870,26607
+sub set_variablesmain::set_variables894,27072
+ local( $key, $val )( $key, $val 896,27092
+ local( $val_name )( $val_name 902,27259
+ local( $val )( $val 953,28825
+sub upd_valmain::upd_val962,28974
+ local( $key )( $key 964,28988
+sub pr_variablesmain::pr_variables970,29083
+ local( $msg )( $msg 972,29102
+ local( $nle )( $nle 973,29123
+ local( $out )( $out 974,29144
+ local( $key, $val, $str )( $key, $val, $str 975,29164
+sub do_mirrormain::do_mirror1007,29923
+ local( $get_one_package )( $get_one_package 1009,29939
+ local( $exit_status )( $exit_status 1030,30384
+ local( @t )( @t 1154,33165
+ local( $con )( $con 1241,35499
+ local( @rhelp )( @rhelp 1289,36702
+ local( @sub_dirs )( @sub_dirs 1329,37778
+ local( $now )( $now 1493,41348
+ local( $arg )( $arg 1506,41774
+sub disconnectmain::disconnect1528,42250
+sub connectmain::connect1546,42576
+ local( $attempts )( $attempts 1548,42590
+ local( $res )( $res 1549,42642
+sub prodmain::prod1573,43156
+sub checkout_regexpsmain::checkout_regexps1585,43327
+ local( $ret )( $ret 1587,43350
+ local( $t )( $t 1589,43395
+ local( $val )( $val 1597,43701
+ local( $err )( $err 1601,43786
+sub clear_localmain::clear_local1610,43909
+sub clear_remotemain::clear_remote1625,44172
+sub get_local_directory_detailsmain::get_local_directory_details1640,44445
+ local( @dirs, $dir )( @dirs, $dir 1642,44479
+ local( $last_prodded )( $last_prodded 1643,44502
+ local( $dir_level )( $dir_level 1691,45615
+ local( $i )( $i 1692,45641
+ local( $path, $time, $size, $type, $mode, $name, $isdir, $value,
$follow )( $path, $time, $size, $type, $mode, $name, $isdir, $value, $follow
1693,45659
+ local( $dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,(
$dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,1694,45736
+ local( $mapi )( $mapi 1763,47586
+sub get_remote_directory_detailsmain::get_remote_directory_details1789,48122
+ local( $type_changed )( $type_changed 1791,48157
+ local( $udirtmp )( $udirtmp 1792,48186
+ local( $storename )( $storename 1793,48206
+ local( $rls )( $rls 1825,48944
+ local( $dirtmp )( $dirtmp 1830,49002
+ local( $unsquish )( $unsquish 1832,49130
+ local( $f )( $f 1840,49360
+ local( $dirtmp )( $dirtmp 1859,49866
+ local( $unsquish )( $unsquish 1870,50215
+ local( $f, $uf )( $f, $uf 1878,50445
+ local( $flags )( $flags 1912,51259
+ local( $parse_state )( $parse_state 1946,52111
+ local( $msg )( $msg 1963,52486
+sub patch_ls_lR_filemain::patch_ls_lR_file1984,52955
+ local( $f, $fr, $flb, $flt, $flp, $flz, $frb, $frt )( $f, $fr, $flb,
$flt, $flp, $flz, $frb, $frt 1990,53055
+ local( $to , $tn )( $to , $tn 1991,53110
+ local( $tlb )( $tlb 1995,53225
+ local( $p, $s, $trz, $t, $m )( $p, $s, $trz, $t, $m 2030,54182
+ local( $tlz )( $tlz 2037,54467
+sub parse_timeoutmain::parse_timeout2089,55670
+sub parse_remote_detailsmain::parse_remote_details2095,55754
+ local( $ret )( $ret 2097,55781
+ local( $old_sig )( $old_sig 2098,55797
+sub parse_remote_details_realmain::parse_remote_details_real2125,56234
+ local( $path, $size, $time, $type, $mode, $rdir, $rcwd )( $path,
$size, $time, $type, $mode, $rdir, $rcwd 2127,56266
+ local( @dir_list )( @dir_list 2128,56325
+ local( $i )( $i 2129,56346
+ local( $old_path )( $old_path 2130,56364
+ local( $old_path )( $old_path 2143,56630
+ local( $ri )( $ri 2203,58078
+ local( $mapi )( $mapi 2214,58335
+ local( $done )( $done 2239,58911
+sub compare_dirsmain::compare_dirs2283,59825
+ local( *src_paths,( *src_paths,2286,59915
+ local( $src_path, $dest_path, $i )( $src_path, $dest_path, $i
2293,60099
+ local( $last_prodded )( $last_prodded 2294,60136
+ local( $desti, $srci, $compress, $srciZ, $srcigz, $split,
$dest_path_real )( $desti, $srci, $compress, $srciZ, $srcigz, $split,
$dest_path_real 2299,60350
+ local( $old_dest_path, $existing_path, $tmp, $restart )(
$old_dest_path, $existing_path, $tmp, $restart 2300,60428
+ local( $sp, $dp )( $sp, $dp 2301,60486
+ local( $real, $reali, $reali1 )( $real, $reali, $reali1
2352,62034
+ local( $count )( $count 2353,62072
+ local( $value )( $value 2408,63996
+ local( $real )( $real 2409,64028
+ local( $reali )( $reali 2410,64086
+ local( $old )( $old 2421,64571
+ local( $old_dest_path )( $old_dest_path 2432,64842
+ local( $dpp, $dps )( $dpp, $dps 2509,67031
+ local( $update )( $update 2534,67671
+sub map_namemain::map_name2651,71028
+ local( $name )( $name 2653,71043
+ local( $old_name )( $old_name 2656,71089
+ local( $tmp )( $tmp 2666,71252
+sub set_timestampsmain::set_timestamps2675,71362
+ local( $src_path )( $src_path 2677,71383
+ local( $dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime )(
$dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime 2685,71517
+sub set_timestampmain::set_timestamp2699,71901
+ local( $path, $time )( $path, $time 2701,71921
+ local( $pr_time )( $pr_time 2703,71953
+sub make_dirsmain::make_dirs2719,72284
+ local( $thing )( $thing 2721,72300
+sub make_symlinksmain::make_symlinks2736,72489
+ local( $thing )( $thing 2738,72509
+ local( $dest, $existing )( $dest, $existing 2745,72623
+ local( $dirpart )( $dirpart 2746,72663
+ local( $ft )( $ft 2747,72704
+ local( $p )( $p 2762,73261
+ local( $f )( $f 2770,73467
+ local( $dl )( $dl 2788,74038
+sub do_all_transfersmain::do_all_transfers2806,74439
+ local( $src_path )( $src_path 2808,74462
+ local( $dest_path, $attribs )( $dest_path, $attribs 2809,74483
+ local( $srci )( $srci 2810,74515
+ local( $newpath )( $newpath 2838,75124
+sub transfer_filemain::transfer_file2869,75847
+ local( $src_path, $dest_path, $attribs, $timestamp )( $src_path,
$dest_path, $attribs, $timestamp 2871,75867
+ local( $dir, $file, $temp, $compress, $split, $restart, $mesg,
$got_mesg )( $dir, $file, $temp, $compress, $split, $restart, $mesg, $got_mesg
2872,75927
+ local( $src_file )( $src_file 2915,76782
+ local( $comptemp )( $comptemp 2916,76816
+ local( $f )( $f 2921,76964
+ local($filesize)($filesize2944,77569
+ local( $ti )( $ti 2975,78401
+ local( $f )( $f 2997,78887
+ local( $comp )( $comp 2998,78912
+ local( $filesize )( $filesize 3015,79427
+ local( $sizemsg )( $sizemsg 3016,79469
+ local( $srcsize )( $srcsize 3017,79501
+ local( $time )( $time 3029,79865
+ local( $as )( $as 3046,80223
+ local( $locali )( $locali 3054,80499
+sub filename_to_tempnamemain::filename_to_tempname3062,80713
+ local( $dir, $file )( $dir, $file 3064,80740
+ local ( $dest_path )( $dest_path 3066,80769
+sub log_uploadmain::log_upload3090,81228
+ local( $src_path, $dest_path, $got_mesg, $size )( $src_path,
$dest_path, $got_mesg, $size 3092,81245
+sub do_deletesmain::do_deletes3118,81773
+ local( *src_paths,( *src_paths,3121,81861
+ local( $files_to_go, $dirs_to_go )( $files_to_go, $dirs_to_go
3125,81960
+ local( $src_path, $i )( $src_path, $i 3131,82055
+ local( $orig_do_deletes )( $orig_do_deletes 3132,82080
+ local( $orig_save_deletes )( $orig_save_deletes 3133,82122
+ local( $del_patt )( $del_patt 3135,82169
+ local( $per )( $per 3162,82843
+ local( $per )( $per 3184,83513
+ local( $save_dir_tail )( $save_dir_tail 3226,84617
+sub save_deletemain::save_delete3245,85019
+ local( $save, $kind )( $save, $kind 3247,85037
+ local( $real_save_dir, $save_dest )( $real_save_dir, $save_dest
3249,85067
+ local( $dirname )( $dirname 3284,85704
+sub save_mkdirmain::save_mkdir3304,86155
+ local( $dir )( $dir 3306,86172
+sub do_deletemain::do_delete3320,86459
+ local( $del, $kind )( $del, $kind 3322,86475
+sub filesizemain::filesize3377,87532
+ local( $fname )( $fname 3379,87547
+sub istruemain::istrue3390,87654
+ local( $val )( $val 3392,87667
+sub mksymlinkmain::mksymlink3398,87773
+ local( $dest_path, $existing_path )( $dest_path, $existing_path
3400,87789
+ local( $msg )( $msg 3417,88246
+ local( $msg )( $msg 3431,88590
+ local( $status )( $status 3442,88816
+sub mkdirsmain::mkdirs3457,89196
+ local( $dir )( $dir 3459,89209
+ local( @dir, $d, $path )( @dir, $d, $path 3460,89230
+sub make_dirmain::make_dir3497,90042
+ local( $dir, $mode )( $dir, $mode 3499,90057
+ local( $val )( $val 3500,90085
+sub dir_existsmain::dir_exists3528,90573
+ local( $dir )( $dir 3530,90590
+ local( $val )( $val 3531,90611
+ local($old_dir)($old_dir3539,90750
+sub set_attribsmain::set_attribs3553,91053
+ local( $path, $src_path, $type )( $path, $src_path, $type 3555,91071
+ local( $mode )( $mode 3556,91111
+ local( $pathi )( $pathi 3564,91229
+ local( $pathi )( $pathi 3568,91320
+sub get_passwdmain::get_passwd3606,91977
+ local( $user )( $user 3608,91994
+ local( $pass )( $pass 3609,92016
+ local( $| )( $| 3610,92033
+sub compare_timesmain::compare_times3631,92384
+ local( $t1, $t2 )( $t1, $t2 3637,92564
+ local( $diff )( $diff 3638,92589
+sub create_assocsmain::create_assocs3643,92688
+ local( $map )( $map 3645,92708
+sub delete_assocsmain::delete_assocs3657,92957
+ local( $map )( $map 3659,92977
+sub unlink_dbmmain::unlink_dbm3671,93247
+ local( $file )( $file 3673,93264
+sub bsplitmain::bsplit3681,93462
+ local( $temp, $dest_path, $time )( $temp, $dest_path, $time 3683,93475
+ local( $dest_dir )( $dest_dir 3684,93516
+ local( $bufsiz )( $bufsiz 3685,93558
+ local( $buffer, $in, $sofar )( $buffer, $in, $sofar 3686,93583
+ local( $d )( $d 3691,93721
+ local( $index )( $index 3697,93840
+ local( $part )( $part 3698,93865
+ local( $locali )( $locali 3714,94336
+ local( $readme )( $readme 3730,94740
+sub sysmain::sys3739,95116
+ local( $com )( $com 3741,95126
+sub set_assoc_from_arraymain::set_assoc_from_array3751,95355
+ local( *things )( *things 3754,95453
+sub find_progmain::find_prog3760,95537
+ local( $prog )( $prog 3762,95553
+ local( $path )( $path 3763,95575
+ local( $path )( $path 3766,95657
+sub real_dir_from_pathmain::real_dir_from_path3780,95842
+ local( $program )( $program 3782,95867
+ local( @prog_path )( @prog_path 3783,95892
+ local( $dir )( $dir 3784,95970
+sub msgmain::msg3807,96489
+ local( $todo, $msg )( $todo, $msg 3809,96499
+sub to_bytesmain::to_bytes3838,96979
+ local( $size )( $size 3840,96994
+sub unix2vmsmain::unix2vms3858,97332
+ local( $v, $kind )( $v, $kind 3860,97347
+ local( $dir, $rest )( $dir, $rest 3873,97559
+sub dirpartmain::dirpart3886,97730
+ local( $path )( $path 3888,97744
+sub expand_symlinkmain::expand_symlink3902,98076
+ local( $orig_path, $points_to )( $orig_path, $points_to 3904,98097
+ local( $dirpart )( $dirpart 3905,98136
+sub flatten_pathmain::flatten_path3913,98365
+ local( $path )( $path 3915,98384
+ local( $changed )( $changed 3916,98406
+ local( $i )( $i 3917,98430
+ local( $rooted )( $rooted 3919,98446
+ local( $count )( $count 3920,98482
+ local( $orig_path )( $orig_path 3921,98504
+ local( $in )( $in 3932,98741
+ local( @parts )( @parts 3933,98765
+sub fix_packagemain::fix_package3963,99438
+ local( $package )( $package 3965,99456
+sub will_compressmain::will_compress3970,99529
+sub will_splitmain::will_split3981,99859
+sub myflockmain::myflock3989,100001
+ local( $file, $kind )( $file, $kind 3991,100015
+sub t2strmain::t2str4004,100221
+ local( @t )( @t 4006,100233
+
local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst4013,100335
+sub handlermain::handler4022,100583
+ local( $sig )( $sig 4029,100651
+ local( $msg )( $msg 4030,100679
+ local( $package, $filename, $line )( $package, $filename, $line
4031,100737
+sub trap_signalsmain::trap_signals4036,100859
+ local( $sig )( $sig 4038,100878
+sub map_user_groupmain::map_user_group4047,101158
+sub keepmain::keep4069,101537
+ local( $pathi, $path, *keep, *keep_totals, *keep_map, $kind )( $pathi,
$path, *keep, *keep_totals, *keep_map, $kind 4071,101548
+sub alarmmain::alarm4104,102330
+ local( $time_to_sig )( $time_to_sig 4106,102342
+sub chownmain::chown4110,102405
+ local( $uid, $gid, $path )( $uid, $gid, $path 4112,102417
+sub utimemain::utime4116,102494
+ local( $atime, $mtime, $path )( $atime, $mtime, $path 4118,102506
+ local( $old_mode )( $old_mode 4124,102685
+ local( $tmp_mode )( $tmp_mode 4125,102730
+ local( $ret )( $ret 4126,102763
+sub cwdmain::cwd4135,102913
+ local( $lcwd )( $lcwd 4137,102923
+
+ps-src/rfc1245.ps,2478
+/FMversion 12,311
+/FrameDict 17,500
+/FMVERSION 47,1307
+/FMLOCAL 56,1494
+/FMDOCUMENT 73,1766
+/FMBEGINPAGE 95,2279
+/FMENDPAGE 109,2516
+/FMDEFINEFONT 115,2582
+/FMNORMALIZEGRAPHICS 126,2725
+/FMBEGINEPSF 142,2955
+/FMENDEPSF 153,3207
+/setmanualfeed 158,3283
+/max 163,3386
+/min 164,3426
+/inch 165,3466
+/pagedimen 166,3485
+/setpapername 172,3629
+/papersize 190,4214
+/manualpapersize 211,4789
+/desperatepapersize 230,5211
+/savematrix 239,5370
+/restorematrix 242,5425
+/dmatrix 245,5475
+/dpi 246,5495
+/freq 248,5583
+/sangle 249,5658
+/DiacriticEncoding 250,5717
+/.notdef 251,5738
+/.notdef 252,5801
+/.notdef 253,5864
+/.notdef 254,5927
+/.notdef 255,5990
+/numbersign 256,6051
+/parenright 257,6115
+/two 258,6184
+/less 259,6251
+/L 260,6320
+/bracketright 261,6389
+/i 262,6459
+/braceright 263,6529
+/Ntilde 264,6598
+/atilde 265,6668
+/iacute 266,6733
+/ocircumflex 267,6797
+/udieresis 268,6858
+/paragraph 269,6919
+/dieresis 270,6983
+/yen 271,7050
+/ordfeminine 272,7109
+/exclamdown 273,7171
+/guillemotleft 274,7230
+/Otilde 275,7296
+/quoteleft 276,7357
+/fraction 277,7420
+/periodcentered 278,7490
+/Acircumflex 279,7549
+/Icircumflex 280,7610
+/Uacute 281,7680
+/breve 282,7746
+/ReEncode 284,7814
+/graymode 300,8020
+/setpattern 310,8184
+/grayness 331,8725
+/normalize 394,9873
+/dnormalize 397,9942
+/lnormalize 400,10014
+/H 403,10104
+/Z 406,10147
+/X 409,10176
+/V 412,10219
+/N 415,10260
+/M 418,10286
+/E 419,10315
+/D 420,10336
+/O 421,10358
+/L 423,10394
+/Y 430,10489
+/R 439,10588
+/RR 450,10696
+/C 467,10959
+/U 473,11004
+/F 477,11039
+/T 481,11084
+/RF 484,11115
+/TF 488,11164
+/P 495,11219
+/PF 499,11270
+/S 506,11344
+/SF 510,11384
+/B 517,11446
+/BF 521,11505
+/W 538,11714
+/G 573,12382
+/A 582,12525
+/BEGINPRINTCODE 606,12918
+/ENDPRINTCODE 615,13131
+/gn 620,13259
+/cfs 631,13384
+/ic 636,13473
+/ms 658,14285
+/ip 668,14395
+/wh 678,14492
+/bl 684,14607
+/s1 690,14722
+/fl 691,14739
+/hx 698,14887
+/wbytes 709,15055
+/BEGINBITMAPBWc 713,15147
+/BEGINBITMAPGRAYc 716,15198
+/BEGINBITMAP2BITc 719,15251
+/COMMONBITMAPc 722,15304
+/BEGINBITMAPBW 739,15660
+/BEGINBITMAPGRAY 742,15709
+/BEGINBITMAP2BIT 745,15760
+/COMMONBITMAP 748,15811
+/Fmcc 765,16156
+/ngrayt 773,16371
+/nredt 774,16393
+/nbluet 775,16414
+/ngreent 776,16436
+/colorsetup 787,16603
+/fakecolorsetup 814,17370
+/BITMAPCOLOR 826,17636
+/BITMAPCOLORc 839,17926
+/BITMAPGRAY 855,18275
+/BITMAPGRAYc 858,18335
+/ENDBITMAP 861,18397
+/fillprocs 868,18497
+
+prol-src/ordsets.prolog,525
+is_ordset(47,1310
+list_to_ord_set(63,1688
+ord_add_element(71,1867
+ord_del_element(85,2344
+ord_disjoint(100,2783
+ord_intersect(108,2953
+ord_intersection(126,3552
+ord_intersection3(130,3691
+ord_intersection(150,4531
+ord_intersection4(154,4703
+ord_intersection(176,5664
+ord_intersection2(181,5812
+ord_member(200,6318
+ord_seteq(216,6683
+ord_setproduct(225,6971
+ord_subset(240,7377
+ord_subtract(257,7861
+ord_symdiff(265,8054
+ord_union(288,8887
+ord_union4(303,9352
+ord_union(324,10171
+ord_union_all(329,10313
+
+prol-src/natded.prolog,2319
+expandmng(100,2879
+normalize(116,3359
+fresh_vars(125,3716
+subst(138,4134
+normalize_fresh(159,4660
+reduce_subterm(171,5112
+reduce(185,5559
+free_var(196,5903
+free_for(209,6246
+compile_lex(231,6875
+consult_lex:-consult_lex248,7384
+lex(259,7754
+expandsyn(267,8068
+bas_syn(292,8897
+compile_empty:-compile_empty310,9376
+complete(328,10055
+add_active(340,10527
+parse(353,10949
+derived_analyses(364,11341
+build(378,11965
+buildact(392,12521
+mapsyn(412,13542
+add_edge(434,14278
+findcats(447,14758
+normalize_tree(465,15478
+normalize_trees(475,15856
+expandmng_tree(486,16248
+expandmng_trees(496,16614
+cat(511,17013
+subtree(644,21266
+hypothetical_mem(653,21565
+make_coor(667,22130
+start_up:-start_up688,23013
+tokenizeatom(710,23921
+tokenize(720,24348
+isoperator(752,25377
+isoptab(756,25431
+specialsymbol(765,25756
+sstab(771,25861
+parse_cgi(787,26347
+keyvalseq(792,26510
+andkeyvalseq(796,26609
+keyval(799,26688
+valseq(807,26920
+plusvalseq(810,27007
+val(816,27109
+argvals(824,27426
+commaargvals(828,27503
+atomval(833,27578
+atom(836,27640
+action(846,28004
+keyvalcgi(864,28649
+keyvalscgi(865,28670
+outsyn(868,28726
+act(876,29060
+actout(901,29906
+texttreelist(912,30089
+htmltreelist(918,30190
+fitchtreelist(924,30304
+pp_html_table_tree(938,30759
+pp_html_tree(949,31113
+pp_html_trees(988,32381
+pp_html_table_fitch_tree(999,32769
+pp_html_fitch_tree(1017,33672
+removeexp(1129,39002
+splitexp(1142,39490
+pp_exp(1155,39990
+map_word(1168,40249
+pp_exps(1180,40474
+pp_tree(1188,40777
+pp_trees(1216,41807
+pp_word_list(1225,42128
+pp_word(1231,42262
+pp_word_list_rest(1238,42569
+pp_cat(1248,42929
+pp_syn(1255,43196
+pp_syn_paren(1276,43899
+pp_paren(1293,44377
+pp_syn_back(1300,44661
+pp_bas_cat(1311,45001
+writecat(1322,45409
+writesubs(1351,46455
+writesups(1361,46757
+writelistsubs(1371,47090
+pp_lam(1380,47408
+pp_lam_bracket(1398,48022
+pp_lam_paren(1407,48338
+pp_rule(1429,49238
+member(1447,49866
+append_list(1451,49919
+append(1456,50010
+at_least_one_member(1460,50076
+numbervars(1464,50171
+reverse(1467,50209
+select(1471,50290
+select_last(1475,50357
+cat_atoms(1479,50436
+writelist(1485,50524
+write_lex_cat(1492,50676
+writebreaklex(1500,50988
+write_lex(1513,51265
+writebreak(1521,51541
+tt:-tt1531,51713
+mt:-mt1534,51784
+cmt:-cmt1537,51878
+
+pyt-src/server.py,1438
+class Controls:Controls17,358
+ def __init__(18,374
+ def __repr__(24,590
+ def __str__(34,871
+class Server:Server37,934
+ def __init__(38,948
+ def dump(73,2198
+ def __repr__(125,3896
+ def __str__(128,3945
+class User:User131,4014
+ def __init__(132,4026
+ def __repr__(172,5445
+ def __str__(206,6883
+def flag2str(223,7212
+class LabeledEntry(232,7442
+ def bind(234,7525
+ def focus_set(236,7584
+ def __init__(238,7629
+def ButtonBar(245,7909
+def helpwin(255,8280
+class ListEdit(267,8707
+ def __init__(269,8808
+ def handleList(303,10042
+ def handleNew(306,10094
+ def editItem(314,10426
+ def deleteItem(320,10596
+def ConfirmQuit(326,10760
+class ControlEdit(375,12377
+ def PostControls(376,12403
+ def GatherControls(421,13530
+class ServerEdit(512,16264
+ def __init__(513,16289
+ def post(525,16629
+ def gather(543,17191
+ def nosave(547,17304
+ def save(551,17408
+ def refreshPort(556,17509
+ def createWidgets(561,17663
+ def edituser(631,20708
+class UserEdit(645,20921
+ def __init__(646,20944
+ def post(658,21283
+ def gather(676,21841
+ def nosave(680,21950
+ def save(684,22052
+ def createWidgets(689,22151
+class Configure(760,24879
+ def __init__(761,24916
+ def MakeDispose(772,25211
+ def MakeSitelist(786,25706
+ def editsite(794,25949
+ def save(797,26022
+ def nosave(807,26310
+
+tex-src/testenv.tex,52
+\newcommand{\nm}\nm4,77
+\section{blah}blah8,139
+
+tex-src/gzip.texi,303
address@hidden Top,62,2139
address@hidden Copying,80,2652
address@hidden Overview,83,2705
address@hidden Sample,166,7272
address@hidden Invoking gzip,Invoking gzip210,8828
address@hidden Advanced usage,Advanced usage357,13495
address@hidden Environment,420,15207
address@hidden Tapes,437,15768
address@hidden Problems,460,16767
address@hidden Concept Index,Concept Index473,17287
+
+tex-src/texinfo.tex,30626
+\def\texinfoversion{\texinfoversion25,1019
+\def\tie{\tie48,1510
+\def\gloggingall{\gloggingall71,2260
+\def\loggingall{\loggingall72,2329
+\def\onepageout#1{\onepageout98,3266
+\def\croppageout#1{\croppageout114,4016
+\def\cropmarks{\cropmarks141,5076
+\def\pagebody#1{\pagebody143,5123
+\def\ewtop{\ewtop156,5578
+\def\nstop{\nstop157,5642
+\def\ewbot{\ewbot159,5725
+\def\nsbot{\nsbot160,5789
+\def\parsearg #1{\parsearg169,6088
+\def\parseargx{\parseargx171,6166
+\def\parseargline{\parseargline181,6406
+\def\flushcr{\flushcr185,6527
+\newif\ifENV \ENVfalse \def\inENV{\inENV189,6726
+\def\ENVcheck{\ENVcheck190,6790
+\outer\def\begin{\begin197,7037
+\def\beginxxx #1{\beginxxx199,7075
+\def\end{\end207,7330
+\def\endxxx #1{\endxxx209,7358
+\def\errorE#1{\errorE215,7547
+\def\singlespace{\singlespace221,7741
address@hidden@231,7964
+\def\`{\`235,8064
+\def\'{\'236,8076
+\def\mylbrace {\mylbrace240,8124
+\def\myrbrace {\myrbrace241,8157
+\def\:{\:246,8271
+\def\*{\*249,8325
+\def\.{\.252,8401
+\def\w#1{\w257,8632
+\def\group{\group267,9115
+ \def\Egroup{\Egroup272,9279
+\def\need{\need288,9721
+\def\needx#1{\needx299,9998
+\def\dots{\dots338,11384
+\def\page{\page342,11448
+\def\exdent{\exdent352,11775
+\def\exdentyyy #1{\exdentyyy353,11808
+\def\nofillexdent{\nofillexdent356,11952
+\def\nofillexdentyyy #1{\nofillexdentyyy357,11997
+\def\include{\include364,12181
+\def\includezzz #1{\includezzz365,12216
+\def\thisfile{\thisfile368,12267
+\def\center{\center372,12330
+\def\centerzzz #1{\centerzzz373,12363
+\def\sp{\sp379,12505
+\def\spxxx #1{\spxxx380,12530
+\def\comment{\comment386,12704
+\def\commentxxx #1{\commentxxx389,12801
+\def\ignoresections{\ignoresections395,12970
+\let\chapter=\relax=\relax396,12992
+\let\section=\relax=\relax405,13237
+\let\subsection=\relax=\relax408,13298
+\let\subsubsection=\relax=\relax409,13321
+\let\appendix=\relax=\relax410,13347
+\let\appendixsec=\relaxsec=\relax411,13368
+\let\appendixsection=\relaxsection=\relax412,13392
+\let\appendixsubsec=\relaxsubsec=\relax413,13420
+\let\appendixsubsection=\relaxsubsection=\relax414,13447
+\let\appendixsubsubsec=\relaxsubsubsec=\relax415,13478
+\let\appendixsubsubsection=\relaxsubsubsection=\relax416,13508
+\def\ignore{\ignore422,13610
+\long\def\ignorexxx #1\end ignore{\ignorexxx426,13750
+\def\direntry{\direntry428,13809
+\long\def\direntryxxx #1\end direntry{\direntryxxx429,13848
+\def\ifset{\ifset433,13958
+\def\ifsetxxx #1{\ifsetxxx435,14016
+\def\Eifset{\Eifset439,14143
+\def\ifsetfail{\ifsetfail440,14157
+\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx441,14213
+\def\ifclear{\ifclear443,14274
+\def\ifclearxxx #1{\ifclearxxx445,14336
+\def\Eifclear{\Eifclear449,14467
+\def\ifclearfail{\ifclearfail450,14483
+\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx451,14543
+\def\set{\set455,14694
+\def\setxxx #1{\setxxx456,14721
+\def\clear{\clear459,14783
+\def\clearxxx #1{\clearxxx460,14814
+\def\iftex{\iftex465,14931
+\def\Eiftex{\Eiftex466,14944
+\def\ifinfo{\ifinfo467,14958
+\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx468,15008
+\long\def\menu #1\end menu{\menu470,15067
+\def\asis#1{\asis471,15096
+\def\math#1{\math484,15639
+\def\node{\node486,15683
+\def\nodezzz#1{\nodezzz487,15721
+\def\nodexxx[#1,#2]{\nodexxx[488,15752
+\def\donoderef{\donoderef491,15814
+\def\unnumbnoderef{\unnumbnoderef495,15935
+\def\appendixnoderef{\appendixnoderef499,16066
+\expandafter\expandafter\expandafter\appendixsetref{setref500,16112
+\let\refill=\relaxill=\relax503,16201
+\def\setfilename{\setfilename508,16415
+\outer\def\bye{\bye517,16661
+\def\inforef #1{\inforef519,16717
+\def\inforefzzz #1,#2,#3,#4**{\inforefzzz520,16755
+\def\losespace #1{\losespace522,16852
+\def\sf{\sf531,17056
+\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10557,17851
+\font\deftt=cmtt10 scaled \magstep1tt=cmtt10558,17897
+\def\df{\df559,17933
+\def\resetmathfonts{\resetmathfonts634,20527
+\def\textfonts{\textfonts647,21116
+\def\chapfonts{\chapfonts652,21331
+\def\secfonts{\secfonts657,21547
+\def\subsecfonts{\subsecfonts662,21752
+\def\indexfonts{\indexfonts667,21969
+\def\smartitalicx{\smartitalicx690,22701
+\def\smartitalic#1{\smartitalic691,22777
+\let\cite=\smartitalic=\smartitalic697,22922
+\def\b#1{\b699,22946
+\def\t#1{\t702,22981
+\def\samp #1{\samp705,23133
+\def\key #1{\key706,23166
+\def\ctrl #1{\ctrl707,23227
+\def\tclose#1{\tclose715,23429
+\def\ {\719,23595
+\def\xkey{\xkey727,23864
+\def\kbdfoo#1#2#3\par{\kbdfoo728,23880
+\def\dmn#1{\dmn737,24181
+\def\kbd#1{\kbd739,24208
+\def\l#1{\l741,24265
+\def\r#1{\r743,24294
+\def\sc#1{\sc745,24362
+\def\ii#1{\ii746,24405
+\def\titlefont#1{\titlefont754,24638
+\def\titlepage{\titlepage760,24741
+ \def\subtitlefont{\subtitlefont765,24968
+ \def\authorfont{\authorfont767,25052
+ \def\title{\title773,25262
+ \def\titlezzz##1{\titlezzz774,25297
+ \def\subtitle{\subtitle782,25612
+ \def\subtitlezzz##1{\subtitlezzz783,25653
+ \def\author{\author786,25771
+ \def\authorzzz##1{\authorzzz787,25808
+ \def\page{\page793,26099
+\def\Etitlepage{\Etitlepage803,26268
+\def\finishtitlepage{\finishtitlepage816,26656
+\def\evenheading{\evenheading845,27664
+\def\oddheading{\oddheading846,27707
+\def\everyheading{\everyheading847,27748
+\def\evenfooting{\evenfooting849,27794
+\def\oddfooting{\oddfooting850,27837
+\def\everyfooting{\everyfooting851,27878
+\def\headings #1 {\headings892,29570
+\def\HEADINGSoff{\HEADINGSoff894,29619
+\def\HEADINGSdouble{\HEADINGSdouble903,30046
+\def\HEADINGSsingle{\HEADINGSsingle913,30366
+\def\HEADINGSon{\HEADINGSon921,30587
+\def\HEADINGSafter{\HEADINGSafter923,30621
+\def\HEADINGSdoublex{\HEADINGSdoublex925,30716
+\def\HEADINGSsingleafter{\HEADINGSsingleafter932,30904
+\def\HEADINGSsinglex{\HEADINGSsinglex933,30965
+\def\today{\today942,31240
+\def\thistitle{\thistitle957,31785
+\def\settitle{\settitle958,31810
+\def\settitlezzz #1{\settitlezzz959,31847
+\def\internalBitem{\internalBitem991,32777
+\def\internalBitemx{\internalBitemx992,32827
+\def\internalBxitem "#1"{\internalBxitem994,32872
+\def\internalBxitemx "#1"{\internalBxitemx995,32952
+\def\internalBkitem{\internalBkitem997,33027
+\def\internalBkitemx{\internalBkitemx998,33079
+\def\kitemzzz #1{\kitemzzz1000,33126
+\def\xitemzzz #1{\xitemzzz1003,33228
+\def\itemzzz #1{\itemzzz1006,33331
+\def\item{\item1036,34402
+\def\itemx{\itemx1037,34453
+\def\kitem{\kitem1038,34506
+\def\kitemx{\kitemx1039,34559
+\def\xitem{\xitem1040,34614
+\def\xitemx{\xitemx1041,34667
+\def\description{\description1044,34777
+\def\table{\table1046,34827
+\def\ftable{\ftable1051,34971
+\def\Eftable{\Eftable1055,35117
+\def\vtable{\vtable1058,35186
+\def\Evtable{\Evtable1062,35332
+\def\dontindex #1{\dontindex1065,35401
+\def\fnitemindex #1{\fnitemindex1066,35421
+\def\vritemindex #1{\vritemindex1067,35466
+\def\tablez #1#2#3#4#5#6{\tablez1073,35615
+\def\Edescription{\Edescription1076,35673
+\def\itemfont{\itemfont1081,35875
+\def\Etable{\Etable1089,36101
+\def\itemize{\itemize1102,36425
+\def\itemizezzz #1{\itemizezzz1104,36461
+\def\itemizey #1#2{\itemizey1109,36556
+\def#2{1118,36802
+\def\itemcontents{\itemcontents1119,36843
+\def\bullet{\bullet1122,36891
+\def\minus{\minus1123,36918
+\def\frenchspacing{\frenchspacing1127,37026
+\def\splitoff#1#2\endmark{\splitoff1133,37251
+\def\enumerate{\enumerate1139,37481
+\def\enumeratezzz #1{\enumeratezzz1140,37520
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1141,37573
+ \def\thearg{\thearg1145,37720
+ \ifx\thearg\empty \def\thearg{\thearg1146,37739
+\def\numericenumerate{\numericenumerate1183,39073
+\def\lowercaseenumerate{\lowercaseenumerate1189,39203
+\def\uppercaseenumerate{\uppercaseenumerate1202,39550
+\def\startenumeration#1{\startenumeration1218,40040
+\def\alphaenumerate{\alphaenumerate1226,40222
+\def\capsenumerate{\capsenumerate1227,40257
+\def\Ealphaenumerate{\Ealphaenumerate1228,40291
+\def\Ecapsenumerate{\Ecapsenumerate1229,40325
+\def\itemizeitem{\itemizeitem1233,40405
+\def\newindex #1{\newindex1258,41262
+\def\defindex{\defindex1267,41551
+\def\newcodeindex #1{\newcodeindex1271,41659
+\def\defcodeindex{\defcodeindex1278,41919
+\def\synindex #1 #2 {\synindex1282,42099
+\def\syncodeindex #1 #2 {\syncodeindex1291,42439
+\def\doindex#1{\doindex1308,43118
+\def\singleindexer #1{\singleindexer1309,43177
+\def\docodeindex#1{\docodeindex1312,43289
+\def\singlecodeindexer #1{\singlecodeindexer1313,43356
+\def\indexdummies{\indexdummies1315,43414
+\def\_{\_1316,43434
+\def\w{\w1317,43462
+\def\bf{\bf1318,43489
+\def\rm{\rm1319,43518
+\def\sl{\sl1320,43547
+\def\sf{\sf1321,43576
+\def\tt{\tt1322,43604
+\def\gtr{\gtr1323,43632
+\def\less{\less1324,43662
+\def\hat{\hat1325,43694
+\def\char{\char1326,43724
+\def\TeX{\TeX1327,43756
+\def\dots{\dots1328,43786
+\def\copyright{\copyright1329,43819
+\def\tclose##1{\tclose1330,43862
+\def\code##1{\code1331,43907
+\def\samp##1{\samp1332,43948
+\def\t##1{\t1333,43989
+\def\r##1{\r1334,44024
+\def\i##1{\i1335,44059
+\def\b##1{\b1336,44094
+\def\cite##1{\cite1337,44129
+\def\key##1{\key1338,44170
+\def\file##1{\file1339,44209
+\def\var##1{\var1340,44250
+\def\kbd##1{\kbd1341,44289
+\def\indexdummyfont#1{\indexdummyfont1346,44445
+\def\indexdummytex{\indexdummytex1347,44471
+\def\indexdummydots{\indexdummydots1348,44495
+\def\indexnofonts{\indexnofonts1350,44521
+\let\w=\indexdummyfontdummyfont1351,44541
+\let\t=\indexdummyfontdummyfont1352,44564
+\let\r=\indexdummyfontdummyfont1353,44587
+\let\i=\indexdummyfontdummyfont1354,44610
+\let\b=\indexdummyfontdummyfont1355,44633
+\let\emph=\indexdummyfontdummyfont1356,44656
+\let\strong=\indexdummyfontdummyfont1357,44682
+\let\cite=\indexdummyfont=\indexdummyfont1358,44710
+\let\sc=\indexdummyfontdummyfont1359,44736
+\let\tclose=\indexdummyfontdummyfont1363,44908
+\let\code=\indexdummyfontdummyfont1364,44936
+\let\file=\indexdummyfontdummyfont1365,44962
+\let\samp=\indexdummyfontdummyfont1366,44988
+\let\kbd=\indexdummyfontdummyfont1367,45014
+\let\key=\indexdummyfontdummyfont1368,45039
+\let\var=\indexdummyfontdummyfont1369,45064
+\let\TeX=\indexdummytexdummytex1370,45089
+\let\dots=\indexdummydotsdummydots1371,45113
+\let\indexbackslash=0 %overridden during \printindex.backslash=01381,45365
+\def\doind #1#2{\doind1383,45421
+{\indexdummies % Must do this here, since \bf, etc expand at this
stagedummies1385,45464
+\def\rawbackslashxx{\rawbackslashxx1388,45604
+{\indexnofontsnofonts1393,45866
+\def\dosubind #1#2#3{\dosubind1404,46177
+{\indexdummies % Must do this here, since \bf, etc expand at this
stagedummies1406,46225
+\def\rawbackslashxx{\rawbackslashxx1409,46329
+{\indexnofontsnofonts1413,46483
+\def\findex {\findex1442,47414
+\def\kindex {\kindex1443,47437
+\def\cindex {\cindex1444,47460
+\def\vindex {\vindex1445,47483
+\def\tindex {\tindex1446,47506
+\def\pindex {\pindex1447,47529
+\def\cindexsub {\cindexsub1449,47553
+\def\printindex{\printindex1461,47880
+\def\doprintindex#1{\doprintindex1463,47921
+ \def\indexbackslash{\indexbackslash1480,48406
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1481,48445
+\def\initial #1{\initial1516,49517
+\def\entry #1#2{\entry1522,49724
+ \null\nobreak\indexdotfill % Have leaders before the page
number.dotfill1539,50371
+\def\indexdotfill{\indexdotfill1548,50699
+\def\primary #1{\primary1551,50805
+\def\secondary #1#2{\secondary1555,50887
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1558,50969
+\newbox\partialpageialpage1565,51142
+\def\begindoublecolumns{\begindoublecolumns1571,51300
+ \output={\global\setbox\partialpage=ialpage=1572,51336
+\def\enddoublecolumns{\enddoublecolumns1576,51524
+\def\doublecolumnout{\doublecolumnout1579,51609
+ address@hidden \advance\dimen@ by-\ht\partialpageialpage1580,51678
+\def\pagesofar{\pagesofar1583,51856
+\def\balancecolumns{\balancecolumns1587,52093
+ address@hidden \advance\availdimen@ by-\ht\partialpageialpage1593,52264
+ address@hidden \advance\dimen@ by-\ht\partialpageialpage1599,52525
+\newcount \appendixno \appendixno = address@hidden,53430
+\def\appendixletter{\appendixletter1627,53471
+\def\opencontents{\opencontents1631,53574
+\def\thischapter{\thischapter1636,53755
+\def\seccheck#1{\seccheck1637,53793
+\def\chapternofonts{\chapternofonts1642,53897
+\def\result{\result1645,53972
+\def\equiv{\equiv1646,54007
+\def\expansion{\expansion1647,54040
+\def\print{\print1648,54081
+\def\TeX{\TeX1649,54114
+\def\dots{\dots1650,54143
+\def\copyright{\copyright1651,54174
+\def\tt{\tt1652,54215
+\def\bf{\bf1653,54242
+\def\w{\w1654,54270
+\def\less{\less1655,54295
+\def\gtr{\gtr1656,54326
+\def\hat{\hat1657,54355
+\def\char{\char1658,54384
+\def\tclose##1{\tclose1659,54415
+\def\code##1{\code1660,54459
+\def\samp##1{\samp1661,54499
+\def\r##1{\r1662,54539
+\def\b##1{\b1663,54573
+\def\key##1{\key1664,54607
+\def\file##1{\file1665,54645
+\def\kbd##1{\kbd1666,54685
+\def\i##1{\i1668,54793
+\def\cite##1{\cite1669,54827
+\def\var##1{\var1670,54867
+\def\emph##1{\emph1671,54905
+\def\dfn##1{\dfn1672,54945
+\def\thischaptername{\thischaptername1675,54986
+\outer\def\chapter{\chapter1676,55025
+\def\chapterzzz #1{\chapterzzz1677,55066
+{\chapternofonts%nofonts%1686,55462
+\global\let\section = \numberedsec=1691,55615
+\global\let\subsection = \numberedsubsec=1692,55650
+\global\let\subsubsection = \numberedsubsubsec=1693,55691
+\outer\def\appendix{\appendix1696,55742
+\def\appendixzzz #1{\appendixzzz1697,55785
+\global\advance \appendixno by 1 \message{no1699,55862
+\chapmacro {#1}{Appendix \appendixletter}letter1700,55931
+\xdef\thischapter{Appendix \appendixletter:
\noexpand\thischaptername}letter:1703,56024
+{\chapternofonts%nofonts%1704,56096
+ {#1}{Appendix \appendixletter}letter1706,56152
+\appendixnoderef %noderef1709,56252
+\global\let\section = \appendixsec=1710,56271
+\global\let\subsection = \appendixsubsec=1711,56306
+\global\let\subsubsection = \appendixsubsubsec=1712,56347
+\outer\def\top{\top1715,56398
+\outer\def\unnumbered{\unnumbered1716,56438
+\def\unnumberedzzz #1{\unnumberedzzz1717,56485
+{\chapternofonts%nofonts%1721,56648
+\global\let\section = \unnumberedsec=1726,56798
+\global\let\subsection = \unnumberedsubsec=1727,56835
+\global\let\subsubsection = \unnumberedsubsubsec=1728,56878
+\outer\def\numberedsec{\numberedsec1731,56931
+\def\seczzz #1{\seczzz1732,56972
+{\chapternofonts%nofonts%1735,57128
+\outer\def\appendixsection{\appendixsection1744,57314
+\outer\def\appendixsec{\appendixsec1745,57371
+\def\appendixsectionzzz #1{\appendixsectionzzz1746,57424
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1748,57536
+{\chapternofonts%nofonts%1749,57604
+{#1}{\appendixletter}letter1751,57660
+\appendixnoderef %noderef1754,57760
+\outer\def\unnumberedsec{\unnumberedsec1758,57800
+\def\unnumberedseczzz #1{\unnumberedseczzz1759,57853
+{\chapternofonts%nofonts%1761,57948
+\outer\def\numberedsubsec{\numberedsubsec1769,58116
+\def\numberedsubseczzz #1{\numberedsubseczzz1770,58171
+{\chapternofonts%nofonts%1773,58350
+\outer\def\appendixsubsec{\appendixsubsec1782,58554
+\def\appendixsubseczzz #1{\appendixsubseczzz1783,58609
+\subsecheading {#1}{\appendixletter}letter1785,58731
+{\chapternofonts%nofonts%1786,58796
+{#1}{\appendixletter}letter1788,58855
+\appendixnoderef %noderef1791,58970
+\outer\def\unnumberedsubsec{\unnumberedsubsec1795,59010
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1796,59069
+{\chapternofonts%nofonts%1798,59170
+\outer\def\numberedsubsubsec{\numberedsubsubsec1806,59341
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1807,59402
+{\chapternofonts%nofonts%1811,59599
+\outer\def\appendixsubsubsec{\appendixsubsubsec1822,59832
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1823,59893
+ {\appendixletter}letter1826,60032
+{\chapternofonts%nofonts%1827,60098
+ {\appendixletter}letter1829,60163
+\appendixnoderef %noderef1833,60297
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1837,60337
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1838,60402
+{\chapternofonts%nofonts%1840,60509
+\def\infotop{\infotop1850,60838
+\def\infounnumbered{\infounnumbered1851,60876
+\def\infounnumberedsec{\infounnumberedsec1852,60921
+\def\infounnumberedsubsec{\infounnumberedsubsec1853,60972
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1854,61029
+\def\infoappendix{\infoappendix1856,61093
+\def\infoappendixsec{\infoappendixsec1857,61134
+\def\infoappendixsubsec{\infoappendixsubsec1858,61181
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1859,61234
+\def\infochapter{\infochapter1861,61294
+\def\infosection{\infosection1862,61333
+\def\infosubsection{\infosubsection1863,61372
+\def\infosubsubsection{\infosubsubsection1864,61417
+\global\let\section = \numberedsec=1869,61654
+\global\let\subsection = \numberedsubsec=1870,61689
+\global\let\subsubsection = \numberedsubsubsec=1871,61730
+\def\majorheading{\majorheading1885,62237
+\def\majorheadingzzz #1{\majorheadingzzz1886,62282
+\def\chapheading{\chapheading1892,62515
+\def\chapheadingzzz #1{\chapheadingzzz1893,62558
+\def\heading{\heading1898,62753
+\def\subheading{\subheading1900,62790
+\def\subsubheading{\subsubheading1902,62833
+\def\dobreak#1#2{\dobreak1909,63110
+\def\setchapterstyle #1 {\setchapterstyle1911,63188
+\def\chapbreak{\chapbreak1918,63443
+\def\chappager{\chappager1919,63493
+\def\chapoddpage{\chapoddpage1920,63531
+\def\setchapternewpage #1 {\setchapternewpage1922,63610
+\def\CHAPPAGoff{\CHAPPAGoff1924,63667
+\def\CHAPPAGon{\CHAPPAGon1928,63761
+\global\def\HEADINGSon{\HEADINGSon1931,63852
+\def\CHAPPAGodd{\CHAPPAGodd1933,63894
+\global\def\HEADINGSon{\HEADINGSon1936,63990
+\def\CHAPFplain{\CHAPFplain1940,64044
+\def\chfplain #1#2{\chfplain1944,64136
+\def\unnchfplain #1{\unnchfplain1955,64359
+\def\unnchfopen #1{\unnchfopen1963,64588
+\def\chfopen #1#2{\chfopen1969,64796
+\def\CHAPFopen{\CHAPFopen1974,64940
+\def\subsecheadingbreak{\subsecheadingbreak1981,65158
+\def\secheadingbreak{\secheadingbreak1984,65287
+\def\secheading #1#2#3{\secheading1992,65569
+\def\plainsecheading #1{\plainsecheading1993,65625
+\def\secheadingi #1{\secheadingi1994,65668
+\def\subsecheading #1#2#3#4{\subsecheading2005,66036
+\def\subsecheadingi #1{\subsecheadingi2006,66103
+\def\subsubsecfonts{\subsubsecfonts2013,66400
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2016,66523
+\def\subsubsecheadingi #1{\subsubsecheadingi2017,66601
+\def\startcontents#1{\startcontents2031,67073
+ \unnumbchapmacro{#1}\def\thischapter{\thischapter2039,67346
+\outer\def\contents{\contents2048,67705
+\outer\def\summarycontents{\summarycontents2056,67849
+ \def\secentry ##1##2##3##4{\secentry2066,68220
+ \def\unnumbsecentry ##1##2{\unnumbsecentry2067,68255
+ \def\subsecentry ##1##2##3##4##5{\subsecentry2068,68290
+ \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2069,68331
+ \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2070,68369
+ \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2071,68416
+\def\chapentry#1#2#3{\chapentry2084,68850
+\def\shortchapentry#1#2#3{\shortchapentry2087,68967
+ {#2\labelspace #1}space2090,69077
+\def\unnumbchapentry#1#2{\unnumbchapentry2093,69131
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2094,69178
+\def\secentry#1#2#3#4{\secentry2101,69342
+\def\unnumbsecentry#1#2{\unnumbsecentry2102,69401
+\def\subsecentry#1#2#3#4#5{\subsecentry2105,69462
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2106,69532
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2109,69606
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2110,69640
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2111,69691
+\def\dochapentry#1#2{\dochapentry2122,70065
+\def\dosecentry#1#2{\dosecentry2137,70670
+\def\dosubsecentry#1#2{\dosubsecentry2144,70848
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2151,71033
+\def\labelspace{\labelspace2159,71284
+\def\dopageno#1{\dopageno2161,71319
+\def\doshortpageno#1{\doshortpageno2162,71345
+\def\chapentryfonts{\chapentryfonts2164,71377
+\def\secentryfonts{\secentryfonts2165,71412
+\def\point{\point2191,72371
+\def\result{\result2193,72392
+\def\expansion{\expansion2194,72465
+\def\print{\print2195,72536
+\def\equiv{\equiv2197,72603
+\def\error{\error2217,73376
+\def\tex{\tex2223,73605
address@hidden@2241,73988
+\gdef\sepspaces{\def {\ }}}\2264,74720
+\def\aboveenvbreak{\aboveenvbreak2267,74802
+\def\afterenvbreak{\afterenvbreak2271,74968
+\def\ctl{\ctl2285,75479
+\def\ctr{\ctr2286,75551
+\def\cbl{\cbl2287,75590
+\def\cbr{\cbr2288,75630
+\def\carttop{\carttop2289,75669
+\def\cartbot{\cartbot2292,75777
+\long\def\cartouche{\cartouche2298,75917
+\def\Ecartouche{\Ecartouche2325,76705
+\def\lisp{\lisp2337,76840
+\def\Elisp{\Elisp2347,77187
+\def\next##1{\next2359,77513
+\def\Eexample{\Eexample2363,77555
+\def\Esmallexample{\Esmallexample2366,77602
+\def\smalllispx{\smalllispx2372,77780
+\def\Esmalllisp{\Esmalllisp2382,78134
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2395,78490
+\def\next##1{\next2396,78547
+\def\display{\display2400,78627
+\def\Edisplay{\Edisplay2409,78946
+\def\next##1{\next2421,79257
+\def\format{\format2425,79360
+\def\Eformat{\Eformat2433,79656
+\def\next##1{\next2436,79745
+\def\flushleft{\flushleft2440,79797
+\def\Eflushleft{\Eflushleft2450,80168
+\def\next##1{\next2453,80261
+\def\flushright{\flushright2455,80283
+\def\Eflushright{\Eflushright2465,80655
+\def\next##1{\next2469,80786
+\def\quotation{\quotation2473,80844
+\def\Equotation{\Equotation2479,81036
+\def\setdeffont #1 {\setdeffont2492,81434
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2494,81480
+\newskip\defargsindent \defargsindent=50ptargsindent2495,81523
+\newskip\deftypemargin \deftypemargin=12pttypemargin2496,81566
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2497,81609
+\def\activeparens{\activeparens2502,81807
+\def\opnr{\opnr2528,83019
+\def\lbrb{\lbrb2529,83084
+\def\defname #1#2{\defname2535,83285
+\advance\dimen2 by -\defbodyindentbodyindent2539,83403
+\advance\dimen3 by -\defbodyindentbodyindent2541,83457
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2543,83511
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for
continuationsargsindent2545,83653
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2546,83728
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2553,84097
+\advance\leftskip by -\defbodyindentbodyindent2556,84231
+\exdentamount=\defbodyindentbodyindent2557,84268
+\def\defparsebody #1#2#3{\defparsebody2567,84627
+\def#1{2571,84811
+\def#2{2572,84847
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2574,84919
+\exdentamount=\defbodyindentbodyindent2575,84993
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2580,85097
+\def#1{2584,85258
+\def#2##1 {2585,85294
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2587,85377
+\exdentamount=\defbodyindentbodyindent2588,85451
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2591,85536
+\def#1{2595,85697
+\def#2##1 ##2 {2596,85733
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2599,85833
+\exdentamount=\defbodyindentbodyindent2600,85907
+\def\defvarparsebody #1#2#3{\defvarparsebody2607,86178
+\def#1{2611,86365
+\def#2{2612,86401
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2614,86460
+\exdentamount=\defbodyindentbodyindent2615,86534
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2620,86625
+\def#1{2624,86784
+\def#2##1 {2625,86820
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2627,86890
+\exdentamount=\defbodyindentbodyindent2628,86964
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2631,87036
+\def#1{2635,87200
+\def#2##1 ##2 {2636,87236
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2639,87323
+\exdentamount=\defbodyindentbodyindent2640,87397
+\def\defunargs #1{\defunargs2663,88157
+\def\deftypefunargs #1{\deftypefunargs2675,88539
+\def\deffn{\deffn2689,88921
+\def\deffnheader #1#2#3{\deffnheader2691,88978
+\begingroup\defname {name2692,89026
+\def\defun{\defun2698,89171
+\def\defunheader #1#2{\defunheader2700,89224
+\begingroup\defname {name2701,89299
+\defunargs {unargs2702,89335
+\def\deftypefun{\deftypefun2708,89483
+\def\deftypefunheader #1#2{\deftypefunheader2711,89605
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2713,89714
+\begingroup\defname {name2715,89806
+\deftypefunargs {typefunargs2716,89852
+\def\deftypefn{\deftypefn2722,90023
+\def\deftypefnheader #1#2#3{\deftypefnheader2725,90172
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2727,90308
+\begingroup\defname {name2729,90401
+\deftypefunargs {typefunargs2730,90441
+\def\defmac{\defmac2736,90562
+\def\defmacheader #1#2{\defmacheader2738,90619
+\begingroup\defname {name2739,90695
+\defunargs {unargs2740,90728
+\def\defspec{\defspec2746,90852
+\def\defspecheader #1#2{\defspecheader2748,90913
+\begingroup\defname {name2749,90990
+\defunargs {unargs2750,91030
+\def\deffnx #1 {\deffnx2757,91225
+\def\defunx #1 {\defunx2758,91282
+\def\defmacx #1 {\defmacx2759,91339
+\def\defspecx #1 {\defspecx2760,91398
+\def\deftypefnx #1 {\deftypefnx2761,91459
+\def\deftypeunx #1 {\deftypeunx2762,91524
+\def\defop #1 {\defop2768,91670
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2769,91705
+\def\defopheader #1#2#3{\defopheader2771,91759
+\begingroup\defname {name2773,91848
+\defunargs {unargs2774,91894
+\def\defmethod{\defmethod2779,91955
+\def\defmethodheader #1#2#3{\defmethodheader2781,92028
+\begingroup\defname {name2783,92116
+\defunargs {unargs2784,92156
+\def\defcv #1 {\defcv2789,92230
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2790,92265
+\def\defcvarheader #1#2#3{\defcvarheader2792,92324
+\begingroup\defname {name2794,92410
+\defvarargs {varargs2795,92456
+\def\defivar{\defivar2800,92529
+\def\defivarheader #1#2#3{\defivarheader2802,92592
+\begingroup\defname {name2804,92678
+\defvarargs {varargs2805,92729
+\def\defopx #1 {\defopx2811,92878
+\def\defmethodx #1 {\defmethodx2812,92935
+\def\defcvx #1 {\defcvx2813,93000
+\def\defivarx #1 {\defivarx2814,93057
+\def\defvarargs #1{\defvarargs2821,93328
+\def\defvr{\defvr2827,93472
+\def\defvrheader #1#2#3{\defvrheader2829,93527
+\begingroup\defname {name2830,93575
+\def\defvar{\defvar2834,93660
+\def\defvarheader #1#2{\defvarheader2836,93720
+\begingroup\defname {name2837,93791
+\defvarargs {varargs2838,93827
+\def\defopt{\defopt2843,93893
+\def\defoptheader #1#2{\defoptheader2845,93953
+\begingroup\defname {name2846,94024
+\defvarargs {varargs2847,94063
+\def\deftypevar{\deftypevar2852,94120
+\def\deftypevarheader #1#2{\deftypevarheader2855,94236
+\begingroup\defname {name2857,94319
+\def\deftypevr{\deftypevr2864,94493
+\def\deftypevrheader #1#2#3{\deftypevrheader2866,94564
+\begingroup\defname {name2867,94616
+\def\defvrx #1 {\defvrx2875,94853
+\def\defvarx #1 {\defvarx2876,94910
+\def\defoptx #1 {\defoptx2877,94969
+\def\deftypevarx #1 {\deftypevarx2878,95028
+\def\deftypevrx #1 {\deftypevrx2879,95095
+\def\deftpargs #1{\deftpargs2884,95244
+\def\deftp{\deftp2888,95324
+\def\deftpheader #1#2#3{\deftpheader2890,95379
+\begingroup\defname {name2891,95427
+\def\deftpx #1 {\deftpx2896,95586
+\def\setref#1{\setref2907,95907
+\def\unnumbsetref#1{\unnumbsetref2912,96021
+\def\appendixsetref#1{\appendixsetref2917,96128
+\def\pxref#1{\pxref2928,96539
+\def\xref#1{\xref2929,96575
+\def\ref#1{\ref2930,96610
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2931,96640
+\def\printedmanual{\printedmanual2932,96683
+\def\printednodename{\printednodename2933,96721
+\def\printednodename{\printednodename2938,96846
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2953,97479
+\refx{x2956,97557
+\def\dosetq #1#2{\dosetq2964,97777
+\def\internalsetq #1#2{\internalsetq2972,98035
+\def\Ypagenumber{\Ypagenumber2976,98136
+\def\Ytitle{\Ytitle2978,98162
+\def\Ynothing{\Ynothing2980,98189
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2982,98206
+\def\Yappendixletterandtype{\Yappendixletterandtype2991,98522
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2992,98552
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno
%no.\the\secno2993,98607
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno
%no.\the\secno.\the\subsecno2995,98711
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
%no.\the\secno.\the\subsecno.\the\subsubsecno2997,98782
+ \def\linenumber{\linenumber3008,99121
+\def\refx#1#2{\refx3014,99305
+\def\xrdef #1#2{\xrdef3036,99931
+\def\readauxfile{\readauxfile3039,100016
+\def\supereject{\supereject3109,101797
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3130,102482
+\def\openindices{\openindices3138,102668
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3150,102893
+\parindent = \defaultparindentaultparindent3151,102945
+\def\smallbook{\smallbook3174,103669
+\global\def\Esmallexample{\Esmallexample3191,104096
+\def\afourpaper{\afourpaper3195,104187
+\def\finalout{\finalout3223,104995
+\def\normaldoublequote{\normaldoublequote3234,105256
+\def\normaltilde{\normaltilde3235,105282
+\def\normalcaret{\normalcaret3236,105302
+\def\normalunderscore{\normalunderscore3237,105322
+\def\normalverticalbar{\normalverticalbar3238,105347
+\def\normalless{\normalless3239,105373
+\def\normalgreater{\normalgreater3240,105392
+\def\normalplus{\normalplus3241,105414
+\def\ifusingtt#1#2{\ifusingtt3252,105906
+\def\activedoublequote{\activedoublequote3260,106234
+\def~{~3263,106320
+\def^{^3266,106381
+\def_{_3269,106420
+\def\_{\_3271,106494
+\def\lvvmode{\lvvmode3278,106831
+\def|{|3281,106881
+\def<{<3284,106944
+\def>{>3287,107001
+\def+{+3289,107039
+\def\turnoffactive{\turnoffactive3295,107200
+\global\def={=3306,107486
+\def\normalbackslash{\normalbackslash3320,107868
+
+c-src//c.c,76
+T f(1,0
+}T i;2,14
+void bar(5,69
+int foobar(6,94
+interface_locate(9,131
+
+c.c,1836
+void (*fa)fa131,
+void 132,
+my_printf 135,
+void fatala 138,
+void fatalb 139,
+max 141,
+struct bar 143,
+__attribute__ ((always_inline)) max 147,
+extern int old_var 149,
+struct foo150,
+char stack[stack155,
+struct S 156,
+} wait_status_ptr_t 161,
+Some_Class A 162,
+typedef T1 T3 163,
+T3 z 164,
+typedef int more_aligned_int 165,
+struct S __attribute__ ((vector_size (16))) foo;166,
+int foo 167,
+char *__attribute__((aligned(8))) *f;f168,
+int i 169,
+extern void foobar 170,
+typedef struct cacheLRUEntry_s172,
+__attribute__ ((packed)) cacheLRUEntry_t;177,
+struct foo 178,
+ f1 183,
+void f2 184,
+__attribute__((noreturn)) void d0 185,
+ __attribute__((format(printf, 1, 2))) d1 186,
+ d2 187,
+int x 188,
+struct foo 189,
+short array[array190,
+int f193,
+DEAFUN 196,
+XDEFUN 203,
+DEFUN ("x-get-selection-internal",
Fx_get_selection_internal,x-get-selection-internal206,
+ Fx_get_selection_internal,x-get-selection-internal212,
+ Fy_get_selection_internal,y-get-selection-internal216,
+defun_func1(218,
+DEFUN_func2(220,
+typedef int bool;222,
+bool funcboo 223,
+struct my_struct 226,
+typedef struct my_struct my_typedef;228,
+int bla 229,
+a(234,
+int func1237,
+static struct cca_control init_control 239,
+static tpcmd rbtp 240,
+static byte ring1 241,
+static byte ring2 242,
+request request 243,
+int func2 246,
+ aaa;249,
+ bbb;251,
+struct sss1 252,
+struct sss2253,
+ struct ss3255,
+struct a b;259,
+struct aa *b;b260,
+ **b;b262,
+caccacacca 263,
+a 267,
+ typedef struct aa 269,
+ typedef struct aa {} aaa;269,
+static void inita 271,
+node *lasta lasta272,
+b 273,
+ typedef int bb;275,
+static void initb 277,
+node *lastb lastb278,
+typedef enum { REG_ENOSYS 279,
+typedef enum { REG_ENOSYS = -1, aa 279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279,
+
+c-src/a/b/b.c,18
+#define this 1,0
+
+../c/c.web,20
+#define questo 34,
+
+y-src/parse.y,1061
+#define obstack_chunk_alloc 46,1111
+#define obstack_chunk_free 47,1149
+int yylex 57,1317
+void yyerror 59,1347
+void yyerror 61,1376
+VOIDSTAR parse_hash;63,1400
+extern VOIDSTAR hash_find(64,1421
+unsigned char fnin[fnin67,1519
+#define YYSTYPE 71,1617
+typedef struct node *YYSTYPE;YYSTYPE72,1648
+YYSTYPE parse_return;73,1678
+YYSTYPE make_list 75,1716
+YYSTYPE make_list 77,1760
+char *instr;instr80,1790
+int parse_error 81,1803
+extern struct obstack tmp_mem;82,1824
+line:line86,1862
+exp:exp94,1975
+exp_list:exp_list262,5642
+range_exp:range_exp268,5740
+range_exp_list:range_exp_list272,5770
+cell:cell278,5888
+yyerror FUN1(285,5935
+make_list FUN2(292,6015
+#define ERROR 303,6215
+extern struct node *yylval;yylval305,6233
+unsigned char parse_cell_or_range 308,6278
+unsigned char parse_cell_or_range 310,6342
+yylex FUN0(314,6392
+parse_cell_or_range FUN2(586,11758
+#define CK_ABS_R(670,13200
+#define CK_REL_R(674,13279
+#define CK_ABS_C(679,13408
+#define CK_REL_C(683,13487
+#define MAYBEREL(688,13616
+str_to_col FUN1(846,16817
+
+y-src/parse.c,520
+#define YYBISON 4,64
+# define NE 6,114
+# define LE 7,130
+# define GE 8,146
+# define NEG 9,162
+# define L_CELL 10,179
+# define L_RANGE 11,199
+# define L_VAR 12,220
+# define L_CONST 13,239
+# define L_FN0 14,260
+# define L_FN1 15,279
+# define L_FN2 16,298
+# define L_FN3 17,317
+# define L_FN4 18,336
+# define L_FNN 19,355
+# define L_FN1R 20,374
+# define L_FN2R 21,394
+# define L_FN3R 22,414
+# define L_FN4R 23,434
+# define L_FNNR 24,454
+# define L_LE 25,474
+# define L_NE 26,492
+# define L_GE 27,510
+
+parse.y,1464
+#define obstack_chunk_alloc 46,
+#define obstack_chunk_free 47,
+int yylex 57,
+void yyerror 59,
+void yyerror 61,
+VOIDSTAR parse_hash;63,
+extern VOIDSTAR hash_find(64,
+unsigned char fnin[fnin67,
+#define YYSTYPE 71,
+typedef struct node *YYSTYPE;YYSTYPE72,
+YYSTYPE parse_return;73,
+YYSTYPE make_list 75,
+YYSTYPE make_list 77,
+char *instr;instr80,
+int parse_error 81,
+extern struct obstack tmp_mem;82,
+#define YYSTYPE 85,
+# define YYDEBUG 88,
+#define YYFINAL 93,
+#define YYFLAG 94,
+#define YYNTBASE 95,
+#define YYTRANSLATE(98,
+static const char yytranslate[yytranslate101,
+static const short yyprhs[yyprhs134,
+static const short yyrhs[yyrhs142,
+static const short yyrline[yyrline171,
+static const char *const yytname[yytname185,
+static const short yyr1[yyr1197,
+static const short yyr2[yyr2207,
+static const short yydefact[yydefact219,
+static const short yydefgoto[yydefgoto237,
+static const short yypact[yypact242,
+static const short yypgoto[yypgoto260,
+#define YYLAST 266,
+static const short yytable[yytable269,
+static const short yycheck[yycheck330,
+yyerror FUN1(285,
+make_list FUN2(292,
+#define ERROR 303,
+extern struct node *yylval;yylval305,
+unsigned char parse_cell_or_range 308,
+unsigned char parse_cell_or_range 310,
+yylex FUN0(314,
+parse_cell_or_range FUN2(586,
+#define CK_ABS_R(670,
+#define CK_REL_R(674,
+#define CK_ABS_C(679,
+#define CK_REL_C(683,
+#define MAYBEREL(688,
+str_to_col FUN1(846,
+
+/usr/share/bison/bison.simple,2180
+# define YYSTD(40,
+# define YYSTD(42,
+# define YYSTACK_ALLOC 50,
+# define YYSIZE_T 51,
+# define YYSTACK_ALLOC 55,
+# define YYSIZE_T 56,
+# define YYSTACK_ALLOC 59,
+# define YYSTACK_FREE(67,
+# define YYSIZE_T 71,
+# define YYSIZE_T 75,
+# define YYSTACK_ALLOC 78,
+# define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+# define YYSTACK_BYTES(98,
+# define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+# define YYSIZE_T 136,
+# define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok 148,
+#define yyclearin 149,
+#define YYEMPTY 150,
+#define YYEOF 151,
+#define YYACCEPT 152,
+#define YYABORT 153,
+#define YYERROR 154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR 177,
+#define YYERRCODE 178,
+# define YYLLOC_DEFAULT(189,
+# define YYLEX 200,
+# define YYLEX 202,
+# define YYLEX 206,
+# define YYLEX 208,
+# define YYLEX 212,
+# define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+# define yymemcpy 264,
+yymemcpy 271,
+# define yystrlen 293,
+yystrlen 298,
+# define yystpcpy 316,
+yystpcpy 322,
+# define YYPARSE_PARAM_ARG 351,
+# define YYPARSE_PARAM_DECL352,
+# define YYPARSE_PARAM_ARG 354,
+# define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+int yyparse 365,
+int yyparse 367,
+#define YY_DECL_NON_LSP_VARIABLES 374,
+# define YY_DECL_VARIABLES 385,
+# define YY_DECL_VARIABLES 391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+ *++yyvsp yyvsp746,
+ *++yylsp yylsp748,
+ yyn 755,
+ yystate 757,
+ yystate 761,
+ goto yynewstate;763,
+ goto yyerrlab1;823,
+ yyerrstatus 846,
+ goto yyerrhandle;848,
+ yyn 861,
+ yystate 875,
+ yyn 895,
+ yyn 903,
+ YYDPRINTF 917,
+ *++yyvsp yyvsp919,
+ *++yylsp yylsp921,
+ yystate 924,
+ goto yynewstate;925,
+ yyresult 932,
+ goto yyreturn;933,
+ yyresult 939,
+ goto yyreturn;940,
+ yyerror 946,
+ yyresult 947,
+
+y-src/atest.y,9
+exp 2,3
+
+y-src/cccp.c,303
+#define YYBISON 4,63
+# define INT 6,113
+# define CHAR 7,130
+# define NAME 8,148
+# define ERROR 9,166
+# define OR 10,185
+# define AND 11,201
+# define EQUAL 12,218
+# define NOTEQUAL 13,237
+# define LEQ 14,259
+# define GEQ 15,276
+# define LSH 16,293
+# define RSH 17,310
+# define UNARY 18,327
+
+cccp.y,2005
+typedef unsigned char U_CHAR;38,
+struct arglist 41,
+#define NULL 51,
+#define GENERIC_PTR 56,
+#define GENERIC_PTR 58,
+#define NULL_PTR 63,
+int yylex 66,
+void yyerror 67,
+int expression_value;68,
+static jmp_buf parse_return_error;70,
+static int keyword_parsing 73,
+extern unsigned char is_idstart[is_idstart76,
+extern unsigned char is_idstart[], is_idchar[is_idchar76,
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[is_hor_space76,
+extern char *xmalloc xmalloc78,
+extern int pedantic;81,
+extern int traditional;84,
+#define CHAR_TYPE_SIZE 87,
+#define INT_TYPE_SIZE 91,
+#define LONG_TYPE_SIZE 95,
+#define WCHAR_TYPE_SIZE 99,
+#define possible_sum_sign(104,
+static void integer_overflow 106,
+static long left_shift 107,
+static long right_shift 108,
+ struct constant 113,
+ struct name 114,
+} yystype;118,
+# define YYSTYPE 119,
+# define YYDEBUG 122,
+#define YYFINAL 127,
+#define YYFLAG 128,
+#define YYNTBASE 129,
+#define YYTRANSLATE(132,
+static const char yytranslate[yytranslate135,
+static const short yyprhs[yyprhs167,
+static const short yyrhs[yyrhs174,
+static const short yyrline[yyrline195,
+static const char *const yytname[yytname208,
+static const short yyr1[yyr1219,
+static const short yyr2[yyr2228,
+static const short yydefact[yydefact239,
+static const short yydefgoto[yydefgoto251,
+static const short yypact[yypact256,
+static const short yypgoto[yypgoto268,
+#define YYLAST 274,
+static const short yytable[yytable277,
+static const short yycheck[yycheck301,
+static char *lexptr;lexptr332,
+parse_number 341,
+struct token 437,
+static struct token tokentab2[tokentab2442,
+yylex 459,
+parse_escape 740,
+yyerror 836,
+integer_overflow 844,
+left_shift 851,
+right_shift 873,
+parse_c_expression 893,
+extern int yydebug;919,
+main 923,
+unsigned char is_idchar[is_idchar948,
+unsigned char is_idstart[is_idstart950,
+char is_hor_space[is_hor_space953,
+initialize_random_junk 958,
+error 988,
+warning 993,
+lookup 999,
+
+/usr/share/bison/bison.simple,2180
+# define YYSTD(40,
+# define YYSTD(42,
+# define YYSTACK_ALLOC 50,
+# define YYSIZE_T 51,
+# define YYSTACK_ALLOC 55,
+# define YYSIZE_T 56,
+# define YYSTACK_ALLOC 59,
+# define YYSTACK_FREE(67,
+# define YYSIZE_T 71,
+# define YYSIZE_T 75,
+# define YYSTACK_ALLOC 78,
+# define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+# define YYSTACK_BYTES(98,
+# define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+# define YYSIZE_T 136,
+# define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok 148,
+#define yyclearin 149,
+#define YYEMPTY 150,
+#define YYEOF 151,
+#define YYACCEPT 152,
+#define YYABORT 153,
+#define YYERROR 154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR 177,
+#define YYERRCODE 178,
+# define YYLLOC_DEFAULT(189,
+# define YYLEX 200,
+# define YYLEX 202,
+# define YYLEX 206,
+# define YYLEX 208,
+# define YYLEX 212,
+# define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+# define yymemcpy 264,
+yymemcpy 271,
+# define yystrlen 293,
+yystrlen 298,
+# define yystpcpy 316,
+yystpcpy 322,
+# define YYPARSE_PARAM_ARG 351,
+# define YYPARSE_PARAM_DECL352,
+# define YYPARSE_PARAM_ARG 354,
+# define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+int yyparse 365,
+int yyparse 367,
+#define YY_DECL_NON_LSP_VARIABLES 374,
+# define YY_DECL_VARIABLES 385,
+# define YY_DECL_VARIABLES 391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+ *++yyvsp yyvsp746,
+ *++yylsp yylsp748,
+ yyn 755,
+ yystate 757,
+ yystate 761,
+ goto yynewstate;763,
+ goto yyerrlab1;823,
+ yyerrstatus 846,
+ goto yyerrhandle;848,
+ yyn 861,
+ yystate 875,
+ yyn 895,
+ yyn 903,
+ YYDPRINTF 917,
+ *++yyvsp yyvsp919,
+ *++yylsp yylsp921,
+ yystate 924,
+ goto yynewstate;925,
+ yyresult 932,
+ goto yyreturn;933,
+ yyresult 939,
+ goto yyreturn;940,
+ yyerror 946,
+ yyresult 947,
+
+y-src/cccp.y,1582
+typedef unsigned char U_CHAR;38,1201
+struct arglist 41,1301
+#define NULL 51,1468
+#define GENERIC_PTR 56,1578
+#define GENERIC_PTR 58,1611
+#define NULL_PTR 63,1670
+int yylex 66,1712
+void yyerror 67,1726
+int expression_value;68,1743
+static jmp_buf parse_return_error;70,1766
+static int keyword_parsing 73,1865
+extern unsigned char is_idstart[is_idstart76,1944
+extern unsigned char is_idstart[], is_idchar[is_idchar76,1944
+extern unsigned char is_idstart[], is_idchar[],
is_hor_space[is_hor_space76,1944
+extern char *xmalloc xmalloc78,2009
+extern int pedantic;81,2062
+extern int traditional;84,2114
+#define CHAR_TYPE_SIZE 87,2162
+#define INT_TYPE_SIZE 91,2229
+#define LONG_TYPE_SIZE 95,2296
+#define WCHAR_TYPE_SIZE 99,2365
+#define possible_sum_sign(104,2556
+static void integer_overflow 106,2632
+static long left_shift 107,2665
+static long right_shift 108,2692
+ struct constant 112,2733
+ struct name 113,2789
+start 143,3226
+exp1 148,3330
+exp 156,3505
+exp 185,4295
+keywords 306,7835
+static char *lexptr;lexptr332,8579
+parse_number 341,8842
+struct token 437,11038
+static struct token tokentab2[tokentab2442,11088
+yylex 459,11367
+parse_escape 740,17718
+yyerror 836,19599
+integer_overflow 844,19690
+left_shift 851,19804
+right_shift 873,20194
+parse_c_expression 893,20732
+extern int yydebug;919,21416
+main 923,21483
+unsigned char is_idchar[is_idchar948,21901
+unsigned char is_idstart[is_idstart950,21996
+char is_hor_space[is_hor_space953,22160
+initialize_random_junk 958,22259
+error 988,22915
+warning 993,22963
+lookup 999,23033
+
+tex-src/nonewline.tex,0
+
+php-src/sendmail.php,0
+
+a-src/empty.zz,0
diff --git a/test/etags/ETAGS.good_3 b/test/etags/ETAGS.good_3
new file mode 100644
index 0000000..1e4d565
--- /dev/null
+++ b/test/etags/ETAGS.good_3
@@ -0,0 +1,6118 @@
+
+Makefile,701
+ADASRC=1,0
+ASRC=2,91
+CSRC=3,139
+CPSRC=7,410
+ELSRC=10,624
+ERLSRC=11,694
+FORTHSRC=12,759
+FSRC=13,809
+HTMLSRC=14,881
+JAVASRC=15,974
+LUASRC=16,1062
+MAKESRC=17,1105
+OBJCSRC=18,1147
+OBJCPPSRC=19,1228
+PASSRC=20,1291
+PERLSRC=21,1333
+PHPSRC=22,1413
+PSSRC=23,1485
+PROLSRC=24,1525
+PYTSRC=25,1587
+TEXSRC=26,1628
+YSRC=27,1707
+SRCS=28,1772
+NONSRCS=32,2024
+ETAGS_PROG=34,2098
+CTAGS_PROG=35,2129
+REGEX=37,2161
+xx=38,2207
+RUN=40,2256
+OPTIONS=42,2262
+ARGS=43,2314
+infiles 45,2332
+check:check47,2394
+ediff%:ediff%55,2697
+cdiff:cdiff58,2798
+ETAGS:ETAGS61,2895
+CTAGS:CTAGS64,2965
+srclist:srclist67,3043
+regexfile:regexfile71,3134
+.PRECIOUS:.PRECIOUS77,3311
+FRC:FRC79,3345
+
+ada-src/etags-test-for.ada,1969
+ type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0
+ function Body_RequiredBody_Required/f3,78
+ type Type_Specific_Data Type_Specific_Data/t11,280
+ function "abs"abs/f19,504
+ type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577
+ function "="=/f27,722
+ type usfreelock_ptr usfreelock_ptr/t30,803
+ function p p/f33,891
+ procedure LL_Wrapper LL_Wrapper/p37,1054
+function p p/f39,1094
+package Pkg1 Pkg1/s44,1203
+ type Private_T Private_T/t46,1220
+ package Inner1 Inner1/s48,1250
+ procedure Private_T;Private_T/p49,1270
+ package Inner2 Inner2/s52,1310
+ task Private_T;Private_T/k53,1330
+ type Public_T Public_T/t56,1365
+ procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450
+ procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475
+ function Pkg1_Func1 Pkg1_Func1/f66,1514
+ function Pkg1_Func2 Pkg1_Func2/f68,1553
+ package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622
+ procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645
+ task type Task_Type Task_Type/k75,1694
+ type Private_T Private_T/t82,1786
+package body Pkg1 Pkg1/b89,1882
+ procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904
+ package body Inner1 Inner1/b96,1956
+ procedure Private_T Private_T/p97,1981
+ package body Inner2 Inner2/b103,2054
+ task body Private_T Private_T/b104,2079
+ task body Task_Type Task_Type/b112,2181
+ procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367
+ function Pkg1_Func1 Pkg1_Func1/f132,2445
+ function Pkg1_Func2 Pkg1_Func2/f134,2496
+ package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596
+package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663
+ procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689
+function Pkg1_Func1 Pkg1_Func1/f155,2778
+package Truc Truc/s162,2887
+package Truc.Bidule Truc.Bidule/s166,2929
+ protected Bidule Bidule/t168,2953
+ protected type Machin_T Machin_T/t172,3007
+package body Truc.Bidule Truc.Bidule/b178,3087
+ protected body Bidule Bidule/b179,3115
+ protected Machin_T Machin_T/t186,3207
+
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives System.Task_Primitives/b64,2603
+ package RTE RTE/s69,2712
+ package TSL TSL/s70,2759
+ function To_void_ptr To_void_ptr/f86,3287
+ function To_TCB_Ptr To_TCB_Ptr/f89,3366
+ function
pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444
+ function
pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728
+ procedure Abort_WrapperAbort_Wrapper/p115,4302
+ procedure LL_Wrapper LL_Wrapper/p122,4526
+ procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830
+ function Self Self/f160,5586
+ procedure Initialize_LockInitialize_Lock/p174,5958
+ procedure Finalize_Lock Finalize_Lock/p210,6927
+ procedure Write_Lock Write_Lock/p226,7338
+ procedure Read_Lock Read_Lock/p239,7700
+ procedure Unlock Unlock/p246,7850
+ procedure Initialize_Cond Initialize_Cond/p258,8160
+ procedure Finalize_Cond Finalize_Cond/p286,8979
+ procedure Cond_Wait Cond_Wait/p300,9303
+ procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661
+ procedure Cond_Signal Cond_Signal/p343,10510
+ procedure Set_PrioritySet_Priority/p355,10836
+ procedure Set_Own_Priority Set_Own_Priority/p372,11243
+ function Get_Priority Get_Priority/f385,11598
+ function Get_Own_Priority Get_Own_Priority/f398,12023
+ procedure Create_LL_TaskCreate_LL_Task/p412,12438
+ function To_Start_Addr To_Start_Addr/f426,12873
+ procedure Exit_LL_Task Exit_LL_Task/p491,14995
+ procedure Abort_Task Abort_Task/p500,15158
+ procedure Test_Abort Test_Abort/p518,15716
+ procedure Install_Abort_Handler Install_Abort_Handler/p527,15878
+ procedure Abort_WrapperAbort_Wrapper/p557,16939
+ function Address_To_Call_State Address_To_Call_State/f562,17062
+ procedure Install_Error_Handler Install_Error_Handler/p573,17351
+ procedure LL_Assert LL_Assert/p599,18146
+ procedure LL_Wrapper LL_Wrapper/p608,18299
+ procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010
+ procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129
+ procedure Clear Clear/p640,19236
+ procedure Test_And_Set Test_And_Set/p645,19330
+ function Is_Set Is_Set/f659,19676
+
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives System.Task_Primitives/s58,3169
+ type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253
+ type Pre_Call_State Pre_Call_State/t64,3331
+ type Task_Storage_Size Task_Storage_Size/t66,3378
+ type Machine_Exceptions Machine_Exceptions/t68,3433
+ type Error_Information Error_Information/t70,3499
+ type Lock Lock/t72,3569
+ type Condition_Variable Condition_Variable/t73,3594
+ type Task_Control_Block Task_Control_Block/t81,3955
+ type TCB_Ptr TCB_Ptr/t89,4241
+ function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333
+ procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425
+ function Self Self/f100,4602
+ procedure Initialize_Lock Initialize_Lock/p103,4707
+ procedure Finalize_Lock Finalize_Lock/p107,4879
+ procedure Write_Lock Write_Lock/p111,5034
+ procedure Read_Lock Read_Lock/p118,5428
+ procedure Unlock Unlock/p128,5995
+ procedure Initialize_Cond Initialize_Cond/p135,6300
+ procedure Finalize_Cond Finalize_Cond/p138,6413
+ procedure Cond_Wait Cond_Wait/p142,6591
+ procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396
+ procedure Cond_Signal Cond_Signal/p164,7812
+ procedure Set_Priority Set_Priority/p169,8040
+ procedure Set_Own_Priority Set_Own_Priority/p173,8200
+ function Get_Priority Get_Priority/f177,8348
+ function Get_Own_Priority Get_Own_Priority/f181,8504
+ procedure Create_LL_TaskCreate_LL_Task/p185,8647
+ procedure Exit_LL_Task;Exit_LL_Task/p198,9282
+ procedure Abort_Task Abort_Task/p203,9516
+ procedure Test_Abort;Test_Abort/p210,9878
+ type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233
+ procedure Install_Abort_Handler Install_Abort_Handler/p219,10312
+ procedure Install_Error_Handler Install_Error_Handler/p226,10741
+ procedure LL_Assert LL_Assert/p231,10983
+ type Proc Proc/t238,11240
+ type TAS_Cell TAS_Cell/t242,11328
+ procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670
+ procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941
+ procedure Clear Clear/p260,12157
+ procedure Test_And_Set Test_And_Set/p267,12462
+ function Is_Set Is_Set/f275,12877
+ type Lock Lock/t283,13155
+ type Condition_Variable Condition_Variable/t288,13267
+ type TAS_Cell TAS_Cell/t293,13389
+
+ada-src/waroquiers.ada,1503
+package Pkg1 Pkg1/s3,89
+ type Private_T Private_T/t5,106
+ package Inner1 Inner1/s7,136
+ procedure Private_T;Private_T/p8,156
+ package Inner2 Inner2/s11,196
+ task Private_T;Private_T/k12,216
+ type Public_T Public_T/t15,251
+ procedure Pkg1_Proc1;Pkg1_Proc1/p21,336
+ procedure Pkg1_Proc2 Pkg1_Proc2/p23,361
+ function Pkg1_Func1 Pkg1_Func1/f25,400
+ function Pkg1_Func2 Pkg1_Func2/f27,439
+ package Pkg1_Pkg1 Pkg1_Pkg1/s30,508
+ procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531
+ task type Task_Type Task_Type/k34,580
+ type Private_T Private_T/t40,671
+package body Pkg1 Pkg1/b46,766
+ procedure Pkg1_Proc1 Pkg1_Proc1/p48,788
+ package body Inner1 Inner1/b53,840
+ procedure Private_T Private_T/p54,865
+ package body Inner2 Inner2/b60,938
+ task body Private_T Private_T/b61,963
+ task body Task_Type Task_Type/b68,1064
+ procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250
+ function Pkg1_Func1 Pkg1_Func1/f88,1328
+ function Pkg1_Func2 Pkg1_Func2/f90,1379
+ package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479
+package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544
+ procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570
+function Pkg1_Func1 Pkg1_Func1/f107,1657
+package Truc Truc/s112,1764
+package Truc.Bidule Truc.Bidule/s116,1816
+ protected Bidule Bidule/t125,1964
+ protected type Machin_T Machin_T/t131,2046
+package body Truc.Bidule Truc.Bidule/b138,2153
+ protected body Bidule Bidule/b139,2181
+ protected body Machin_T Machin_T/b146,2281
+
+c-src/abbrev.c,1432
+Lisp_Object Vabbrev_table_name_list;42,1416
+Lisp_Object Vglobal_abbrev_table;47,1561
+Lisp_Object Vfundamental_mode_abbrev_table;51,1672
+int abbrevs_changed;55,1773
+int abbrev_all_caps;57,1795
+Lisp_Object Vabbrev_start_location;62,1944
+Lisp_Object Vabbrev_start_location_buffer;65,2033
+Lisp_Object Vlast_abbrev;69,2142
+Lisp_Object Vlast_abbrev_text;74,2311
+int last_abbrev_point;78,2401
+Lisp_Object Vpre_abbrev_expand_hook,82,2474
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;82,2474
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table84,2538
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table91,2730
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev106,3111
+DEFUN ("define-global-abbrev",
Fdefine_global_abbrev,define-global-abbrev148,4430
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev159,4801
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol173,5269
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion201,6233
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev217,6748
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev388,11669
+write_abbrev 425,12876
+describe_abbrev 444,13311
+DEFUN ("insert-abbrev-table-description",
Finsert_abbrev_table_description,insert-abbrev-table-description465,13826
+DEFUN ("define-abbrev-table",
Fdefine_abbrev_table,define-abbrev-table505,14982
+syms_of_abbrev 539,16059
+
+c-src/torture.c,197
+(*tag1 tag118,452
+#define notag2 26,553
+(*tag2 tag229,630
+(*tag3 tag339,772
+#define notag4 45,861
+(*tag4 tag448,955
+tag5 57,1081
+tag6 66,1208
+int pp1(74,1317
+pp287,1419
+pp3(100,1518
+
+c-src/getopt.h,275
+#define _GETOPT_H 19,801
+struct option73,2797
+ const char *name;name76,2826
+ char *name;name78,2852
+ int has_arg;82,3009
+ int *flag;flag83,3024
+ int val;84,3037
+#define no_argument 89,3124
+#define required_argument 90,3147
+#define optional_argument 91,3175
+
+c-src/etags.c,12045
+char pot_etags_version[pot_etags_version81,3470
+# undef DEBUG84,3552
+# define DEBUG 85,3567
+# define DEBUG 87,3594
+# define NDEBUG 88,3617
+# define _GNU_SOURCE 94,3705
+# undef MSDOS100,3876
+# undef WINDOWSNT101,3890
+# define WINDOWSNT102,3909
+# undef MSDOS106,3968
+# define MSDOS 107,3982
+# define MSDOS 110,4032
+# define MAXPATHLEN 115,4111
+# undef HAVE_NTGUI116,4141
+# undef DOS_NT117,4160
+# define DOS_NT118,4176
+# undef assert 135,4482
+# define assert(136,4541
+# undef CTAGS146,4857
+# define CTAGS 147,4872
+# define CTAGS 149,4898
+#define streq(152,4927
+#define strcaseeq(153,4996
+#define strneq(154,5075
+#define strncaseeq(155,5151
+#define CHARS 157,5238
+#define CHAR(158,5278
+#define iswhite(159,5329
+#define notinname(160,5394
+#define begtoken(161,5469
+#define intoken(162,5542
+#define endtoken(163,5614
+#define ISALNUM(165,5684
+#define ISALPHA(166,5722
+#define ISDIGIT(167,5760
+#define ISLOWER(168,5798
+#define lowcase(170,5837
+#define xnew(179,6015
+#define xrnew(180,6083
+typedef void Lang_function 182,6164
+ const char *suffix;suffix186,6219
+ const char *command;command187,6294
+} compressor;188,6365
+ const char *name;name192,6397
+ const char *help;help193,6449
+ Lang_function *function;function194,6508
+ const char **suffixes;suffixes195,6556
+ const char **filenames;filenames196,6633
+ const char **interpreters;interpreters197,6702
+ bool metasource;198,6771
+} language;199,6835
+typedef struct fdesc201,6848
+ struct fdesc *next;next203,6871
+ char *infname;infname204,6920
+ char *infabsname;infabsname205,6973
+ char *infabsdir;infabsdir206,7038
+ char *taggedfname;taggedfname207,7091
+ language *lang;lang208,7149
+ char *prop;prop209,7191
+ bool usecharno;210,7249
+ bool written;211,7311
+} fdesc;212,7366
+typedef struct node_st214,7376
+ struct node_st *left,left216,7428
+ struct node_st *left, *right;right216,7428
+ fdesc *fdp;fdp217,7486
+ char *name;name218,7548
+ char *regex;regex219,7580
+ bool valid;220,7617
+ bool is_func;221,7670
+ bool been_warned;222,7733
+ int lno;223,7801
+ long cno;224,7842
+} node;225,7894
+ long size;236,8208
+ int len;237,8221
+ char *buffer;buffer238,8232
+} linebuffer;239,8248
+ at_language,245,8344
+ at_regexp,246,8393
+ at_filename,247,8437
+ at_stdin,248,8473
+ at_end 249,8516
+ } arg_type;250,8557
+ language *lang;lang251,8593
+ char *what;what252,8656
+} argument;253,8698
+typedef struct regexp256,8758
+ struct regexp *p_next;p_next258,8782
+ language *lang;lang259,8837
+ char *pattern;pattern260,8897
+ char *name;name261,8940
+ struct re_pattern_buffer *pat;pat262,8971
+ struct re_registers regs;263,9031
+ bool error_signaled;264,9078
+ bool force_explicit_name;265,9141
+ bool ignore_case;266,9206
+ bool multi_line;267,9259
+} regexp;268,9325
+static void error 311,10780
+# undef STDIN408,15073
+#define STDIN 411,15095
+static compressor compressors[compressors457,17664
+static const char *Ada_suffixes Ada_suffixes473,17907
+static const char Ada_help 475,17977
+static const char *Asm_suffixes Asm_suffixes493,18580
+static const char Asm_help 504,18976
+static const char *default_C_suffixes default_C_suffixes512,19312
+static const char default_C_help 515,19413
+static const char default_C_help 523,19850
+static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460
+static const char Cplusplus_help 540,20658
+static const char *Cjava_suffixes Cjava_suffixes549,21113
+static char Cjava_help 551,21172
+static const char *Cobol_suffixes Cobol_suffixes556,21337
+static char Cobol_help 558,21402
+static const char *Cstar_suffixes Cstar_suffixes562,21543
+static const char *Erlang_suffixes Erlang_suffixes565,21607
+static const char Erlang_help 567,21673
+const char *Forth_suffixes Forth_suffixes571,21799
+static const char Forth_help 573,21857
+static const char *Fortran_suffixes Fortran_suffixes577,22008
+static const char Fortran_help 579,22085
+static const char *HTML_suffixes HTML_suffixes582,22190
+static const char HTML_help 584,22264
+static const char *Lisp_suffixes Lisp_suffixes589,22452
+static const char Lisp_help 591,22556
+static const char *Lua_suffixes Lua_suffixes598,22871
+static const char Lua_help 600,22934
+static const char *Makefile_filenames Makefile_filenames603,23010
+static const char Makefile_help 605,23133
+static const char *Objc_suffixes Objc_suffixes609,23277
+static const char Objc_help 613,23399
+static const char *Pascal_suffixes Pascal_suffixes619,23714
+static const char Pascal_help 621,23778
+static const char *Perl_suffixes Perl_suffixes626,23966
+static const char *Perl_interpreters Perl_interpreters628,24028
+static const char Perl_help 630,24100
+static const char *PHP_suffixes PHP_suffixes637,24451
+static const char PHP_help 639,24523
+static const char *plain_C_suffixes plain_C_suffixes643,24678
+static const char *PS_suffixes PS_suffixes647,24762
+static const char PS_help 649,24848
+static const char *Prolog_suffixes Prolog_suffixes652,24931
+static const char Prolog_help 654,24993
+static const char *Python_suffixes Python_suffixes658,25107
+static const char Python_help 660,25165
+static const char *Scheme_suffixes Scheme_suffixes665,25347
+static const char Scheme_help 667,25460
+static const char *TeX_suffixes TeX_suffixes672,25683
+static const char TeX_help 674,25781
+static const char *Texinfo_suffixes Texinfo_suffixes686,26316
+static const char Texinfo_help 688,26395
+static const char *Yacc_suffixes Yacc_suffixes691,26492
+static const char Yacc_help 693,26606
+static const char auto_help 699,26856
+static const char none_help 703,27020
+static const char no_lang_help 707,27143
+static language lang_names 718,27355
+print_language_names 753,29532
+# define EMACS_NAME 786,30755
+# define VERSION 789,30811
+print_version 792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173
+print_help 808,31250
+main 981,37438
+get_compressor_from_suffix 1319,46217
+get_language_from_langname 1355,47158
+get_language_from_interpreter 1377,47545
+get_language_from_filename 1399,47976
+process_file_name 1433,48834
+process_file 1555,51665
+init 1632,54150
+find_entries 1656,54901
+make_tag 1814,59707
+pfnote 1856,60942
+free_tree 1917,62744
+free_fdesc 1935,63029
+add_node 1955,63472
+invalidate_nodes 2035,65537
+static int number_len 2068,66193
+total_size_of_entries 2087,66694
+put_entries 2107,67154
+#define C_EXT 2193,68995
+#define C_PLAIN 2194,69037
+#define C_PLPL 2195,69070
+#define C_STAR 2196,69104
+#define C_JAVA 2197,69137
+#define C_AUTO 2198,69172
+#define YACC 2199,69242
+enum sym_type2204,69312
+ st_none,2206,69328
+ st_C_objprot,2207,69339
+ st_C_objprot, st_C_objimpl,2207,69339
+ st_C_objprot, st_C_objimpl, st_C_objend,2207,69339
+ st_C_gnumacro,2208,69382
+ st_C_ignore,2209,69399
+ st_C_ignore, st_C_attribute,2209,69399
+ st_C_javastruct,2210,69430
+ st_C_operator,2211,69449
+ st_C_class,2212,69466
+ st_C_class, st_C_template,2212,69466
+ st_C_struct,2213,69495
+ st_C_struct, st_C_extern,2213,69495
+ st_C_struct, st_C_extern, st_C_enum,2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495
+struct C_stab_entry 2271,71278
+struct C_stab_entry { const char *name;name2271,71278
+struct C_stab_entry { const char *name; int c_ext;2271,71278
+struct C_stab_entry { const char *name; int c_ext; enum sym_type
type;2271,71278
+hash 2275,71409
+in_word_set 2321,72937
+ TOTAL_KEYWORDS 2325,73018
+ MIN_WORD_LENGTH 2326,73045
+ MAX_WORD_LENGTH 2327,73072
+ MIN_HASH_VALUE 2328,73100
+ MAX_HASH_VALUE 2329,73126
+C_symtype 2387,74985
+static bool inattribute;2400,75234
+ fvnone,2408,75435
+ fdefunkey,2409,75466
+ fdefunname,2410,75512
+ foperator,2411,75556
+ fvnameseen,2412,75613
+ fstartlist,2413,75666
+ finlist,2414,75722
+ flistseen,2415,75765
+ fignore,2416,75813
+ vignore 2417,75856
+} fvdef;2418,75901
+static bool fvextern;2420,75911
+ tnone,2428,76089
+ tkeyseen,2429,76119
+ ttypeseen,2430,76160
+ tinbody,2431,76199
+ tend,2432,76238
+ tignore 2433,76279
+} typdef;2434,76320
+ snone,2443,76499
+ skeyseen,2445,76575
+ stagseen,2446,76620
+ scolonseen 2447,76661
+} structdef;2448,76715
+static const char *objtag objtag2453,76809
+ dnone,2460,76942
+ dsharpseen,2461,76972
+ ddefineseen,2462,77025
+ dignorerest 2463,77070
+} definedef;2464,77112
+ onone,2472,77267
+ oprotocol,2473,77297
+ oimplementation,2474,77347
+ otagseen,2475,77395
+ oparenseen,2476,77431
+ ocatseen,2477,77486
+ oinbody,2478,77525
+ omethodsign,2479,77568
+ omethodtag,2480,77626
+ omethodcolon,2481,77666
+ omethodparm,2482,77709
+ oignore 2483,77755
+} objdef;2484,77787
+static struct tok2491,77944
+ char *line;line2493,77964
+ int offset;2494,78014
+ int length;2495,78067
+ bool valid;2502,78352
+ bool named;2505,78487
+ int lineno;2506,78528
+ long linepos;2507,78576
+} token;2508,78626
+ char **cname;cname2519,78950
+ int *bracelev;bracelev2520,78993
+ int nl;2521,79042
+ int size;2522,79096
+} cstack;2523,79136
+#define nestlev 2525,79264
+#define instruct 2527,79369
+pushclass_above 2531,79489
+popclass_above 2550,79948
+write_classname 2564,80162
+consider_token 2613,81341
+ long linepos;2922,88499
+ linebuffer lb;2923,88515
+} lbs[lbs2924,88532
+#define current_lb_is_new 2926,88543
+#define switch_line_buffers(2927,88588
+#define curlb 2929,88641
+#define newlb 2930,88672
+#define curlinepos 2931,88703
+#define newlinepos 2932,88744
+#define plainc 2934,88786
+#define cplpl 2935,88830
+#define cjava 2936,88861
+#define CNL_SAVE_DEFINEDEF(2938,88905
+#define CNL(2947,89117
+make_C_tag 2960,89375
+C_entries 2986,90194
+default_C_entries 3833,110156
+plain_C_entries 3840,110276
+Cplusplus_entries 3847,110364
+Cjava_entries 3854,110460
+Cstar_entries 3861,110550
+Yacc_entries 3868,110642
+#define LOOP_ON_INPUT_LINES(3875,110720
+#define LOOKING_AT(3884,111056
+#define LOOKING_AT_NOCASE(3891,111461
+just_read_file 3901,111861
+F_takeprec 3914,112039
+F_getit 3937,112366
+Fortran_functions 3961,112840
+Ada_getit 4052,114669
+Ada_funcs 4115,116044
+Asm_labels 4228,118582
+Perl_functions 4261,119549
+Python_functions 4357,122057
+PHP_functions 4387,122684
+Cobol_paragraphs 4466,124471
+Makefile_targets 4494,125029
+Pascal_functions 4529,125950
+L_getit 4709,130318
+Lisp_functions 4725,130664
+Lua_functions 4785,131850
+PS_functions 4811,132385
+Forth_words 4841,133053
+Scheme_functions 4877,134092
+static linebuffer *TEX_toktab TEX_toktab4908,134781
+static const char *TEX_defenv TEX_defenv4912,134974
+static char TEX_esc 4920,135261
+static char TEX_opgrp 4921,135289
+static char TEX_clgrp 4922,135318
+TeX_commands 4928,135395
+#define TEX_LESC 4986,136652
+#define TEX_SESC 4987,136674
+TEX_mode 4992,136804
+TEX_decode_env 5026,137509
+Texinfo_nodes 5071,138554
+HTML_labels 5094,139013
+Prolog_functions 5219,142347
+prolog_skip_comment 5255,143128
+prolog_pr 5281,143736
+prolog_atom 5319,144628
+Erlang_functions 5379,145666
+erlang_func 5438,146965
+erlang_attribute 5476,147642
+erlang_atom 5496,148061
+scan_separators 5534,149080
+analyze_regex 5586,150460
+add_regex 5654,152050
+substitute 5767,154797
+free_regexps 5814,155837
+regex_tag_multiline 5836,156291
+nocase_tail 5913,158263
+get_tag 5928,158519
+readline_internal 5959,159455
+readline 6037,161296
+savestr 6230,167243
+savenstr 6240,167473
+skip_spaces 6249,167679
+skip_non_spaces 6258,167833
+skip_name 6267,167983
+fatal 6277,168156
+pfatal 6284,168253
+suggest_asking_for_help 6291,168332
+error 6300,168554
+concat 6313,168846
+etags_getcwd 6329,169259
+relative_filename 6350,169725
+absolute_filename 6389,170751
+absolute_dirname 6453,172416
+filename_is_absolute 6472,172845
+canonicalize_filename 6484,173096
+# define ISUPPER(6491,173235
+linebuffer_init 6514,173656
+linebuffer_setlen 6524,173887
+xmalloc 6536,174148
+xrealloc 6545,174314
+
+c-src/exit.c,99
+ size_t n;28,961
+ void EXFUN((*fn[fn29,975
+ } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/exit.strange_suffix,99
+ size_t n;28,961
+ void EXFUN((*fn[fn29,975
+ } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/sysdep.h,491
+#define ENTRY(21,865
+#define PSEUDO(26,972
+ movl $SYS_##syscall_nam$SYS_##syscall_na31,1132
+ movl $SYS_##syscall_name, %eax;eax31,1132
+ int $0x80;32,1180
+ test %eax,eax33,1210
+ test %eax, %eax;eax33,1210
+ jl syscall_error;34,1245
+#define XCHG_0 47,1562
+#define XCHG_1 48,1606
+#define XCHG_2 49,1648
+#define XCHG_3 50,1691
+#define XCHG_4 51,1734
+#define XCHG_5 52,1777
+#define r0 54,1821
+#define r1 55,1875
+#define scratch 56,1932
+#define MOVE(57,2001
+
+c-src/tab.c,196
+static int count_words(15,263
+static char *get_word(get_word35,553
+void tab_free(59,966
+char **tab_fill(tab_fill70,1129
+int tab_delete_first(91,1638
+int tab_count_words(103,1820
+
+c-src/dostorture.c,197
+(*tag1 tag118,451
+#define notag2 26,552
+(*tag2 tag229,629
+(*tag3 tag339,771
+#define notag4 45,860
+(*tag4 tag448,954
+tag5 57,1080
+tag6 66,1207
+int pp1(74,1316
+pp287,1418
+pp3(100,1517
+
+c-src/emacs/src/gmalloc.c,4207
+#define USE_PTHREAD25,1002
+#undef get_current_dir_name33,1126
+#undef malloc64,2110
+#undef realloc65,2124
+#undef calloc66,2139
+#undef free67,2153
+#define malloc 68,2165
+#define realloc 69,2188
+#define calloc 70,2213
+#define aligned_alloc 71,2236
+#define free 72,2273
+#define DUMPED 80,2472
+#define ALLOCATED_BEFORE_DUMPING(81,2507
+extern void *malloc malloc94,2718
+#define INT_BIT 124,3934
+#define BLOCKLOG 125,3977
+#define BLOCKSIZE 126,4018
+#define BLOCKIFY(127,4052
+#define HEAP 131,4215
+#define FINAL_FREE_BLOCKS 135,4391
+ int type;145,4676
+ size_t nfree;150,4720
+ size_t first;151,4777
+ } frag;152,4834
+ ptrdiff_t size;156,5055
+ } info;157,5076
+ } busy;158,5087
+ size_t size;163,5215
+ size_t next;164,5272
+ size_t prev;165,5321
+ } free;166,5374
+ } malloc_info;167,5388
+#define BLOCK(176,5620
+#define ADDRESS(177,5682
+struct list186,5939
+ struct list *next;next188,5955
+ struct list *prev;prev189,5978
+struct alignlist196,6153
+ struct alignlist *next;next198,6174
+ void *aligned;aligned199,6202
+ void *exact;exact200,6270
+#define LOCK(223,7064
+#define UNLOCK(228,7195
+#define LOCK_ALIGNED_BLOCKS(233,7329
+#define UNLOCK_ALIGNED_BLOCKS(238,7484
+#define LOCK(244,7649
+#define UNLOCK(245,7664
+#define LOCK_ALIGNED_BLOCKS(246,7681
+#define UNLOCK_ALIGNED_BLOCKS(247,7711
+enum mcheck_status283,9092
+ MCHECK_DISABLED 285,9115
+ MCHECK_OK,286,9187
+ MCHECK_FREE,287,9226
+ MCHECK_HEAD,288,9270
+ MCHECK_TAIL 289,9334
+struct mstats308,10153
+ size_t bytes_total;310,10171
+ size_t chunks_used;311,10225
+ size_t bytes_used;312,10285
+ size_t chunks_free;313,10351
+ size_t bytes_free;314,10406
+char *_heapbase;_heapbase355,11829
+malloc_info *_heapinfo;_heapinfo358,11927
+static size_t heapsize;361,11983
+size_t _heapindex;364,12047
+size_t _heaplimit;367,12109
+struct list _fraghead[_fraghead370,12171
+size_t _chunks_used;373,12229
+size_t _bytes_used;374,12250
+size_t _chunks_free;375,12270
+size_t _bytes_free;376,12291
+int __malloc_initialized;379,12340
+size_t __malloc_extra_blocks;381,12367
+static int state_protected_p;400,12912
+static size_t last_state_size;401,12942
+static malloc_info *last_heapinfo;last_heapinfo402,12973
+protect_malloc_state 405,13014
+#define PROTECT_MALLOC_STATE(426,13627
+#define PROTECT_MALLOC_STATE(429,13697
+align 435,13794
+get_contiguous_space 466,14616
+register_heapinfo 497,15325
+pthread_mutex_t _malloc_mutex 517,15879
+pthread_mutex_t _aligned_blocks_mutex 518,15938
+int _malloc_thread_enabled_p;519,16005
+malloc_atfork_handler_prepare 522,16048
+malloc_atfork_handler_parent 529,16139
+malloc_atfork_handler_child 536,16233
+malloc_enable_thread 544,16375
+malloc_initialize_1 563,16961
+__malloc_initialize 594,17793
+static int morecore_recursing;604,17926
+morecore_nolock 609,18066
+_malloc_internal_nolock 722,21584
+_malloc_internal 920,28102
+malloc 932,28247
+_malloc 961,29140
+_free 967,29196
+_realloc 973,29240
+struct alignlist *_aligned_blocks _aligned_blocks1004,30345
+_free_internal_nolock 1009,30474
+_free_internal 1255,38476
+free 1265,38603
+weak_alias 1277,38799
+#define min(1306,39813
+_realloc_internal_nolock 1319,40309
+_realloc_internal 1435,43563
+realloc 1447,43726
+calloc 1478,44894
+#define __sbrk 1513,46042
+__default_morecore 1525,46511
+aligned_alloc 1557,47522
+memalign 1647,49704
+posix_memalign 1656,49909
+static size_t pagesize;1703,51317
+valloc 1706,51349
+#undef malloc1715,51490
+#undef realloc1716,51504
+#undef calloc1717,51519
+#undef aligned_alloc1718,51533
+#undef free1719,51554
+hybrid_malloc 1736,52083
+hybrid_calloc 1744,52188
+hybrid_free 1752,52319
+hybrid_aligned_alloc 1765,52626
+hybrid_realloc 1780,52984
+hybrid_get_current_dir_name 1811,53797
+#define MAGICWORD 1854,55206
+#define MAGICFREE 1855,55261
+#define MAGICBYTE 1856,55316
+#define MALLOCFLOOD 1857,55348
+#define FREEFLOOD 1858,55382
+struct hdr1860,55415
+ size_t size;1862,55430
+ size_t magic;1863,55484
+checkhdr 1867,55581
+freehook 1891,56022
+mallochook 1927,56804
+reallochook 1944,57143
+mabort 1978,57901
+static int mcheck_used 2012,58586
+mcheck 2015,58619
+mprobe 2035,59138
+
+c-src/emacs/src/regex.h,4485
+#define _REGEX_H 21,836
+typedef unsigned long reg_syntax_t;43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749
+#define RE_BK_PLUS_QM 52,1969
+#define RE_CHAR_CLASSES 58,2298
+#define RE_CONTEXT_INDEP_ANCHORS 72,3032
+#define RE_CONTEXT_INDEP_OPS 80,3458
+#define RE_CONTEXT_INVALID_OPS 84,3658
+#define RE_DOT_NEWLINE 88,3801
+#define RE_DOT_NOT_NULL 92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE 96,4082
+#define RE_INTERVALS 101,4292
+#define RE_LIMITED_OPS 105,4441
+#define RE_NEWLINE_ALT 109,4583
+#define RE_NO_BK_BRACES 114,4773
+#define RE_NO_BK_PARENS 118,4964
+#define RE_NO_BK_REFS 122,5120
+#define RE_NO_BK_VBAR 126,5316
+#define RE_NO_EMPTY_RANGES 132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766
+#define RE_NO_POSIX_BACKTRACKING 140,5937
+#define RE_NO_GNU_OPS 144,6133
+#define RE_FRUGAL 147,6253
+#define RE_SHY_GROUPS 150,6360
+#define RE_NO_NEWLINE_ANCHOR 153,6468
+#define RE_DEBUG 161,6884
+#define RE_SYNTAX_EMACS 183,7684
+#define RE_SYNTAX_AWK 186,7780
+#define RE_SYNTAX_GNU_AWK 193,8084
+#define RE_SYNTAX_POSIX_AWK 197,8255
+#define RE_SYNTAX_GREP 201,8393
+#define RE_SYNTAX_EGREP 206,8549
+#define RE_SYNTAX_POSIX_EGREP 212,8765
+#define RE_SYNTAX_ED 216,8910
+#define RE_SYNTAX_SED 218,8954
+#define _RE_SYNTAX_POSIX_COMMON 221,9072
+#define RE_SYNTAX_POSIX_BASIC 225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC 231,9508
+#define RE_SYNTAX_POSIX_EXTENDED 234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 242,9967
+# undef RE_DUP_MAX253,10454
+#define RE_DUP_MAX 256,10540
+#define REG_EXTENDED 263,10762
+#define REG_ICASE 267,10886
+#define REG_NEWLINE 272,11070
+#define REG_NOSUB 276,11248
+#define REG_NOTBOL 286,11614
+#define REG_NOTEOL 289,11688
+ REG_ENOSYS 297,11859
+ REG_NOERROR 300,11941
+ REG_NOMATCH,301,11976
+ REG_BADPAT,305,12123
+ REG_ECOLLATE,306,12162
+ REG_ECTYPE,307,12203
+ REG_EESCAPE,308,12255
+ REG_ESUBREG,309,12298
+ REG_EBRACK,310,12345
+ REG_EPAREN,311,12391
+ REG_EBRACE,312,12436
+ REG_BADBR,313,12472
+ REG_ERANGE,314,12519
+ REG_ESPACE,315,12560
+ REG_BADRPT,316,12601
+ REG_EEND,319,12693
+ REG_ESIZE,320,12728
+ REG_ERPAREN,321,12790
+ REG_ERANGEX 322,12859
+} reg_errcode_t;323,12911
+# define RE_TRANSLATE_TYPE 332,13273
+struct re_pattern_buffer335,13315
+ unsigned char *buffer;buffer341,13538
+ size_t allocated;344,13614
+ size_t used;347,13686
+ reg_syntax_t syntax;350,13769
+ char *fastmap;fastmap355,13975
+ RE_TRANSLATE_TYPE translate;361,14241
+ size_t re_nsub;364,14329
+ unsigned can_be_null 370,14624
+#define REGS_UNALLOCATED 376,14889
+#define REGS_REALLOCATE 377,14916
+#define REGS_FIXED 378,14942
+ unsigned regs_allocated 379,14963
+ unsigned fastmap_accurate 383,15136
+ unsigned no_sub 387,15267
+ unsigned not_bol 391,15398
+ unsigned not_eol 394,15475
+ unsigned used_syntax 398,15655
+ unsigned multibyte 403,15805
+ unsigned target_multibyte 407,15941
+ int charset_unibyte;410,16032
+typedef struct re_pattern_buffer regex_t;416,16098
+typedef ssize_t regoff_t;423,16492
+struct re_registers428,16652
+ unsigned num_regs;430,16674
+ regoff_t *start;start431,16695
+ regoff_t *end;end432,16714
+# define RE_NREGS 440,16942
+ regoff_t rm_so;449,17159
+ regoff_t rm_eo;450,17239
+} regmatch_t;451,17317
+# define _Restrict_ 540,20886
+# define _Restrict_ 542,20979
+# define _Restrict_544,21018
+# define _Restrict_arr_ 555,21418
+# define _Restrict_arr_557,21461
+# define CHAR_CLASS_MAX_LENGTH 593,22470
+# define CHAR_CLASS_MAX_LENGTH 597,22648
+typedef wctype_t re_wctype_t;599,22692
+typedef wchar_t re_wchar_t;600,22722
+# define re_wctype 601,22750
+# define re_iswctype 602,22776
+# define re_wctype_to_bit(603,22806
+# define CHAR_CLASS_MAX_LENGTH 605,22844
+# define btowc(606,22906
+typedef enum { RECC_ERROR 609,22953
+ RECC_ALNUM,610,22984
+ RECC_ALNUM, RECC_ALPHA,610,22984
+ RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984
+ RECC_GRAPH,611,23027
+ RECC_GRAPH, RECC_PRINT,611,23027
+ RECC_LOWER,612,23059
+ RECC_LOWER, RECC_UPPER,612,23059
+ RECC_PUNCT,613,23091
+ RECC_PUNCT, RECC_CNTRL,613,23091
+ RECC_DIGIT,614,23123
+ RECC_DIGIT, RECC_XDIGIT,614,23123
+ RECC_BLANK,615,23156
+ RECC_BLANK, RECC_SPACE,615,23156
+ RECC_MULTIBYTE,616,23188
+ RECC_MULTIBYTE, RECC_NONASCII,616,23188
+ RECC_ASCII,617,23227
+ RECC_ASCII, RECC_UNIBYTE617,23227
+} re_wctype_t;618,23260
+typedef int re_wchar_t;623,23387
+
+c-src/emacs/src/keyboard.c,13949
+volatile int interrupt_input_blocked;76,1808
+volatile bool pending_signals;80,1944
+#define KBD_BUFFER_SIZE 82,1976
+KBOARD *initial_kboard;initial_kboard84,2006
+KBOARD *current_kboard;current_kboard85,2030
+static KBOARD *all_kboards;all_kboards86,2054
+static bool single_kboard;89,2154
+#define NUM_RECENT_KEYS 91,2182
+static int recent_keys_index;94,2269
+static int total_keys;97,2357
+static Lisp_Object recent_keys;100,2443
+Lisp_Object this_command_keys;107,2777
+ptrdiff_t this_command_key_count;108,2808
+static bool this_command_key_count_reset;112,2922
+static Lisp_Object raw_keybuf;116,3074
+static int raw_keybuf_count;117,3105
+#define GROW_RAW_KEYBUF 119,3135
+static ptrdiff_t this_single_command_key_start;125,3350
+static ptrdiff_t before_command_key_count;129,3498
+static ptrdiff_t before_command_echo_length;130,3541
+sigjmp_buf return_to_command_loop;135,3677
+static Lisp_Object recover_top_level_message;138,3791
+static Lisp_Object regular_top_level_message;143,3930
+static sys_jmp_buf getcjmp;147,4031
+bool waiting_for_input;150,4095
+static bool echoing;154,4186
+static struct kboard
*ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328
+struct kboard *echo_kboard;echo_kboard166,4632
+Lisp_Object echo_message_buffer;171,4744
+bool immediate_quit;174,4837
+int quit_char;192,5623
+EMACS_INT command_loop_level;195,5680
+Lisp_Object unread_switch_frame;204,6108
+static ptrdiff_t last_non_minibuf_size;207,6216
+uintmax_t num_input_events;210,6334
+static EMACS_INT last_auto_save;214,6428
+static ptrdiff_t last_point_position;217,6523
+Lisp_Object internal_last_event_frame;228,7028
+static Lisp_Object read_key_sequence_cmd;232,7168
+static Lisp_Object read_key_sequence_remapped;233,7210
+static FILE *dribble;dribble236,7310
+bool input_pending;239,7368
+static bool input_was_pending;287,10022
+static struct input_event kbd_buffer[kbd_buffer291,10107
+static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386
+static struct input_event * volatile kbd_store_ptr;302,10601
+unsigned timers_run;320,11296
+struct timespec
*input_available_clear_time;input_available_clear_time324,11408
+bool interrupt_input;328,11573
+bool interrupts_deferred;331,11671
+static struct timespec timer_idleness_start_time;335,11746
+static struct timespec timer_last_idleness_start_time;340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW 346,12046
+#define READABLE_EVENTS_FILTER_EVENTS 347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES 348,12142
+kset_echo_string 392,14088
+kset_kbd_queue 397,14184
+kset_keyboard_translate_table 402,14276
+kset_last_prefix_arg 407,14399
+kset_last_repeatable_command 412,14504
+kset_local_function_key_map 417,14625
+kset_overriding_terminal_local_map 422,14744
+kset_real_last_command 427,14877
+kset_system_key_syms 432,14986
+echo_add_key 443,15249
+echo_char 527,17527
+echo_dash 541,17813
+echo_now 586,19140
+cancel_echoing 635,20614
+echo_length 648,20922
+echo_truncate 660,21253
+add_command_key 672,21582
+recursive_edit_1 697,22406
+record_auto_save 742,23848
+force_auto_save_soon 751,24016
+DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137
+recursive_edit_unwind 804,25747
+any_kboard_state 817,26013
+single_kboard_state 838,26665
+not_single_kboard_state 848,26803
+struct kboard_stack858,27065
+ KBOARD *kboard;kboard860,27087
+ struct kboard_stack *next;next861,27105
+static struct kboard_stack *kboard_stack;kboard_stack864,27138
+push_kboard 867,27186
+pop_kboard 879,27375
+temporarily_switch_to_single_kboard 914,28263
+record_single_kboard_state 943,29437
+restore_kboard_configuration 952,29621
+cmd_error 970,30077
+cmd_error_internal 1024,31510
+DEFUN ("command-error-default-function",
Fcommand_error_default_function,command-error-default-function1043,32030
+command_loop 1094,33916
+command_loop_2 1134,35135
+top_level_2 1146,35339
+top_level_1 1152,35417
+DEFUN ("top-level", Ftop_level,top-level1164,35787
+user_error 1183,36288
+DEFUN ("exit-recursive-edit",
Fexit_recursive_edit,exit-recursive-edit1189,36429
+DEFUN ("abort-recursive-edit",
Fabort_recursive_edit,abort-recursive-edit1201,36819
+tracking_off 1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816
+bool ignore_mouse_drag_p;1256,38392
+some_mouse_moved 1259,38441
+Lisp_Object last_undo_boundary;1287,39032
+command_loop_1 1294,39273
+read_menu_command 1649,50889
+adjust_point_for_property 1678,51617
+safe_run_hooks_1 1831,57339
+safe_run_hooks_error 1841,57569
+safe_run_hook_funcall 1878,58576
+safe_run_hooks 1893,59058
+int poll_suppress_count;1908,59397
+static struct atimer *poll_timer;poll_timer1915,59487
+poll_for_input_1 1919,59589
+poll_for_input 1930,59789
+start_polling 1942,60053
+input_polling_used 1979,61091
+stop_polling 1994,61390
+set_poll_suppress_count 2009,61759
+bind_polling_period 2029,62141
+make_ctrl_char 2048,62492
+show_help_echo 2113,64455
+static Lisp_Object help_form_saved_window_configs;2156,65638
+read_char_help_form_unwind 2158,65701
+#define STOP_POLLING 2166,65959
+#define RESUME_POLLING 2170,66084
+read_event_from_main_queue 2175,66229
+read_decoded_event_from_main_queue 2249,68417
+#define MAX_ENCODED_BYTES 2254,68664
+echo_keystrokes_p 2342,71556
+read_char 2376,72848
+record_menu_key 3225,98949
+help_char_p 3258,99674
+record_char 3273,99953
+save_getcjmp 3412,104235
+restore_getcjmp 3418,104326
+readable_events 3430,104697
+int stop_character EXTERNALLY_VISIBLE;3497,106437
+event_to_kboard 3500,106493
+kbd_buffer_nr_stored 3522,107142
+kbd_buffer_store_event 3534,107483
+kbd_buffer_store_event_hold 3550,108025
+kbd_buffer_unget_event 3684,111617
+#define INPUT_EVENT_POS_MAX 3698,112018
+#define INPUT_EVENT_POS_MIN 3701,112147
+position_to_Time 3706,112287
+Time_to_position 3716,112514
+gen_help_event 3738,113171
+kbd_buffer_store_help_event 3756,113611
+discard_mouse_events 3773,113976
+kbd_buffer_events_waiting 3803,114711
+clear_event 3823,115068
+kbd_buffer_get_event 3836,115408
+process_special_events 4258,127881
+swallow_events 4322,129705
+timer_start_idle 4339,130098
+timer_stop_idle 4355,130576
+timer_resume_idle 4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912
+Lisp_Object pending_funcalls;4377,131172
+decode_timer 4381,131293
+timer_check_2 4414,132246
+timer_check 4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662
+static Lisp_Object accent_key_syms;4625,138239
+static Lisp_Object func_key_syms;4626,138275
+static Lisp_Object mouse_syms;4627,138309
+static Lisp_Object wheel_syms;4628,138340
+static Lisp_Object drag_n_drop_syms;4629,138371
+static const int lispy_accent_codes[lispy_accent_codes4634,138516
+static const char *const lispy_accent_keys[lispy_accent_keys4741,139878
+#define FUNCTION_KEY_OFFSET 4766,140314
+const char *const lispy_function_keys[lispy_function_keys4768,140347
+static const char *const
lispy_multimedia_keys[lispy_multimedia_keys4962,148901
+static const char *const lispy_kana_keys[lispy_kana_keys5026,150135
+#define FUNCTION_KEY_OFFSET 5061,151751
+static const char *const lispy_function_keys[lispy_function_keys5065,151894
+#define ISO_FUNCTION_KEY_OFFSET 5149,154429
+static const char *const
iso_lispy_function_keys[iso_lispy_function_keys5151,154469
+static Lisp_Object Vlispy_mouse_stem;5172,155328
+static const char *const lispy_wheel_names[lispy_wheel_names5174,155367
+static const char *const
lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619
+static short const scroll_bar_parts[scroll_bar_parts5189,155885
+static Lisp_Object button_down_location;5210,156910
+static int last_mouse_button;5215,157065
+static int last_mouse_x;5216,157095
+static int last_mouse_y;5217,157120
+static Time button_down_time;5218,157145
+static int double_click_count;5222,157229
+make_lispy_position 5228,157390
+toolkit_menubar_in_use 5456,163953
+make_scroll_bar_position 5469,164321
+make_lispy_event 5485,164967
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers",
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list",
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+ int sig;7238,215915
+ char *name;name7241,215956
+ int npending;7244,216007
+ struct user_signal_info *next;next7246,216024
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+ Lisp_Object parent;8745,259107
+ Lisp_Object map;8748,259224
+ int start,8753,259446
+ int start, end;8753,259446
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector",
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector",
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys",
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys",
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths",
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys",
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode",
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control",
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode",
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode",
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+ short var;11023,332716
+ short kind;11024,332729
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+
+c-src/emacs/src/lisp.h,25767
+#define EMACS_LISP_H22,800
+#define DECLARE_GDB_SYM(47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(49,1508
+# define DEFINE_GDB_SYMBOL_END(50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(52,1625
+# define DEFINE_GDB_SYMBOL_END(53,1702
+#undef min57,1790
+#undef max58,1801
+#define max(59,1812
+#define min(60,1854
+#define ARRAYELTS(63,1936
+#define GCTYPEBITS 67,2079
+DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037
+# define NONPOINTER_BITS 78,2567
+# define NONPOINTER_BITS 80,2600
+typedef int EMACS_INT;91,3023
+typedef unsigned int EMACS_UINT;92,3046
+# define EMACS_INT_MAX 93,3079
+# define pI 94,3111
+typedef long int EMACS_INT;96,3203
+typedef unsigned long EMACS_UINT;97,3231
+# define EMACS_INT_MAX 98,3265
+# define pI 99,3298
+typedef long long int EMACS_INT;103,3477
+typedef unsigned long long int EMACS_UINT;104,3510
+# define EMACS_INT_MAX 105,3553
+# define pI 106,3587
+enum { BOOL_VECTOR_BITS_PER_CHAR 114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR 115,3840
+typedef size_t bits_word;123,4165
+# define BITS_WORD_MAX 124,4191
+enum { BITS_PER_BITS_WORD 125,4223
+typedef unsigned char bits_word;127,4290
+# define BITS_WORD_MAX 128,4323
+enum { BITS_PER_BITS_WORD 129,4386
+ BITS_PER_CHAR 136,4570
+ BITS_PER_SHORT 137,4605
+ BITS_PER_LONG 138,4657
+ BITS_PER_EMACS_INT 139,4712
+typedef intmax_t printmax_t;148,5089
+typedef uintmax_t uprintmax_t;149,5118
+# define pMd 150,5149
+# define pMu 151,5170
+typedef EMACS_INT printmax_t;153,5197
+typedef EMACS_UINT uprintmax_t;154,5227
+# define pMd 155,5259
+# define pMu 156,5278
+# define pD 165,5664
+# define pD 167,5709
+# define pD 169,5756
+# define pD 171,5779
+# define eassert(200,7062
+# define eassume(201,7140
+# define eassert(208,7319
+# define eassume(212,7450
+enum Lisp_Bits239,8519
+#define GCALIGNMENT 243,8647
+ VALBITS 246,8742
+ INTTYPEBITS 249,8838
+ FIXNUM_BITS 252,8945
+#define VAL_MAX 263,9327
+#define USE_LSB_TAG 271,9777
+DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733
+# define alignas(281,10077
+# define GCALIGNED 288,10227
+# define GCALIGNED 290,10292
+# define lisp_h_XLI(327,11642
+# define lisp_h_XIL(328,11673
+# define lisp_h_XLI(330,11724
+# define lisp_h_XIL(331,11751
+#define lisp_h_CHECK_LIST_CONS(333,11785
+#define lisp_h_CHECK_NUMBER(334,11856
+#define lisp_h_CHECK_SYMBOL(335,11927
+#define lisp_h_CHECK_TYPE(336,11996
+#define lisp_h_CONSP(338,12107
+#define lisp_h_EQ(339,12156
+#define lisp_h_FLOATP(340,12201
+#define lisp_h_INTEGERP(341,12252
+#define lisp_h_MARKERP(342,12333
+#define lisp_h_MISCP(343,12408
+#define lisp_h_NILP(344,12457
+#define lisp_h_SET_SYMBOL_VAL(345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(347,12607
+#define lisp_h_SYMBOL_VAL(348,12671
+#define lisp_h_SYMBOLP(350,12772
+#define lisp_h_VECTORLIKEP(351,12825
+#define lisp_h_XCAR(352,12886
+#define lisp_h_XCDR(353,12924
+#define lisp_h_XCONS(354,12964
+#define lisp_h_XHASH(356,13059
+#define lisp_h_XPNTR(357,13093
+# define lisp_h_check_cons_list(360,13221
+# define lisp_h_make_number(363,13289
+# define lisp_h_XFASTINT(365,13392
+# define lisp_h_XINT(366,13429
+# define lisp_h_XSYMBOL(367,13478
+# define lisp_h_XTYPE(371,13631
+# define lisp_h_XUNTAG(372,13696
+# define XLI(381,14086
+# define XIL(382,14117
+# define CHECK_LIST_CONS(383,14148
+# define CHECK_NUMBER(384,14209
+# define CHECK_SYMBOL(385,14258
+# define CHECK_TYPE(386,14307
+# define CONSP(387,14382
+# define EQ(388,14417
+# define FLOATP(389,14452
+# define INTEGERP(390,14489
+# define MARKERP(391,14530
+# define MISCP(392,14569
+# define NILP(393,14604
+# define SET_SYMBOL_VAL(394,14637
+# define SYMBOL_CONSTANT_P(395,14700
+# define SYMBOL_VAL(396,14763
+# define SYMBOLP(397,14812
+# define VECTORLIKEP(398,14851
+# define XCAR(399,14898
+# define XCDR(400,14931
+# define XCONS(401,14964
+# define XHASH(402,14999
+# define XPNTR(403,15034
+# define check_cons_list(405,15097
+# define make_number(408,15176
+# define XFASTINT(409,15224
+# define XINT(410,15266
+# define XSYMBOL(411,15300
+# define XTYPE(412,15340
+# define XUNTAG(413,15376
+#define LISP_MACRO_DEFUN(421,15672
+#define LISP_MACRO_DEFUN_VOID(425,15845
+#define INTMASK 437,16289
+#define case_Lisp_Int 438,16342
+#define ENUM_BF(445,16681
+#define ENUM_BF(447,16722
+enum Lisp_Type451,16763
+ Lisp_Symbol 454,16851
+ Lisp_Misc 458,16993
+ Lisp_Int0 461,17067
+ Lisp_Int1 462,17086
+ Lisp_String 466,17264
+ Lisp_Vectorlike 472,17543
+ Lisp_Cons 475,17632
+ Lisp_Float 477,17670
+enum Lisp_Misc_Type485,18016
+ Lisp_Misc_Free 487,18040
+ Lisp_Misc_Marker,488,18069
+ Lisp_Misc_Overlay,489,18091
+ Lisp_Misc_Save_Value,490,18114
+ Lisp_Misc_Finalizer,491,18140
+ Lisp_Misc_Float,494,18275
+ Lisp_Misc_Limit496,18359
+enum Lisp_Fwd_Type502,18543
+ Lisp_Fwd_Int,504,18566
+ Lisp_Fwd_Bool,505,18619
+ Lisp_Fwd_Obj,506,18670
+ Lisp_Fwd_Buffer_Obj,507,18729
+ Lisp_Fwd_Kboard_Obj 508,18800
+typedef struct { EMACS_INT i;567,21781
+typedef struct { EMACS_INT i; } Lisp_Object;567,21781
+#define LISP_INITIALLY(569,21827
+#undef CHECK_LISP_OBJECT_TYPE571,21858
+enum CHECK_LISP_OBJECT_TYPE 572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888
+typedef EMACS_INT Lisp_Object;577,22064
+#define LISP_INITIALLY(578,22095
+enum CHECK_LISP_OBJECT_TYPE 579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125
+#define LISP_INITIALLY_ZERO 582,22226
+enum symbol_interned639,24199
+ SYMBOL_UNINTERNED 641,24222
+ SYMBOL_INTERNED 642,24247
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270
+enum symbol_redirect646,24315
+ SYMBOL_PLAINVAL 648,24338
+ SYMBOL_VARALIAS 649,24362
+ SYMBOL_LOCALIZED 650,24386
+ SYMBOL_FORWARDED 651,24410
+struct Lisp_Symbol654,24437
+ bool_bf gcmarkbit 656,24458
+ ENUM_BF 663,24793
+ Lisp_Object value;687,25631
+ struct Lisp_Symbol *alias;alias688,25654
+ struct Lisp_Buffer_Local_Value *blv;blv689,25685
+ union Lisp_Fwd *fwd;fwd690,25726
+ } val;691,25751
+ Lisp_Object function;694,25823
+ Lisp_Object plist;697,25885
+ struct Lisp_Symbol *next;next700,25974
+#define EXFUN(707,26252
+#define DEFUN_ARGS_MANY 712,26446
+#define DEFUN_ARGS_UNEVALLED 713,26498
+#define DEFUN_ARGS_0 714,26541
+#define DEFUN_ARGS_1 715,26569
+#define DEFUN_ARGS_2 716,26604
+#define DEFUN_ARGS_3 717,26652
+#define DEFUN_ARGS_4 718,26713
+#define DEFUN_ARGS_5 719,26787
+#define DEFUN_ARGS_6 721,26880
+#define DEFUN_ARGS_7 723,26986
+#define DEFUN_ARGS_8 725,27105
+#define TAG_PTR(729,27296
+#define TAG_SYMOFFSET(734,27543
+#define XLI_BUILTIN_LISPSYM(741,27842
+#define DEFINE_LISP_SYMBOL(746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572
+LISP_MACRO_DEFUN 762,28777
+# define ARRAY_MARK_FLAG 768,29024
+# define PSEUDOVECTOR_FLAG 774,29267
+enum pvec_type780,29568
+ PVEC_NORMAL_VECTOR,782,29585
+ PVEC_FREE,783,29607
+ PVEC_PROCESS,784,29620
+ PVEC_FRAME,785,29636
+ PVEC_WINDOW,786,29650
+ PVEC_BOOL_VECTOR,787,29665
+ PVEC_BUFFER,788,29685
+ PVEC_HASH_TABLE,789,29700
+ PVEC_TERMINAL,790,29719
+ PVEC_WINDOW_CONFIGURATION,791,29736
+ PVEC_SUBR,792,29765
+ PVEC_OTHER,793,29778
+ PVEC_COMPILED,795,29856
+ PVEC_CHAR_TABLE,796,29873
+ PVEC_SUB_CHAR_TABLE,797,29892
+ PVEC_FONT 798,29915
+enum More_Lisp_Bits801,29991
+ PSEUDOVECTOR_SIZE_BITS 808,30382
+ PSEUDOVECTOR_SIZE_MASK 809,30415
+ PSEUDOVECTOR_REST_BITS 813,30625
+ PSEUDOVECTOR_REST_MASK 814,30658
+ PSEUDOVECTOR_AREA_BITS 818,30823
+ PVEC_TYPE_MASK 819,30901
+# define VALMASK 829,31302
+DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257
+#define MOST_POSITIVE_FIXNUM 834,31532
+#define MOST_NEGATIVE_FIXNUM 835,31592
+XINT 874,32684
+XFASTINT 889,33035
+XSYMBOL 899,33263
+XTYPE 910,33481
+XUNTAG 918,33661
+LISP_MACRO_DEFUN 927,33857
+LISP_MACRO_DEFUN 940,34242
+#define FIXNUM_OVERFLOW_P(958,34855
+LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632
+LISP_MACRO_DEFUN 970,35171
+XSTRING 980,35391
+#define SYMBOL_INDEX(988,35575
+XFLOAT 991,35636
+XPROCESS 1000,35778
+XWINDOW 1007,35895
+XTERMINAL 1014,36012
+XSUBR 1021,36134
+XBUFFER 1028,36245
+XCHAR_TABLE 1035,36369
+XSUB_CHAR_TABLE 1042,36506
+XBOOL_VECTOR 1049,36648
+make_lisp_ptr 1058,36827
+make_lisp_symbol 1066,37013
+builtin_lisp_symbol 1074,37197
+#define XSETINT(1079,37279
+#define XSETFASTINT(1080,37325
+#define XSETCONS(1081,37375
+#define XSETVECTOR(1082,37435
+#define XSETSTRING(1083,37503
+#define XSETSYMBOL(1084,37567
+#define XSETFLOAT(1085,37621
+#define XSETMISC(1086,37683
+#define XSETPVECTYPE(1090,37772
+#define XSETPVECTYPESIZE(1092,37888
+#define XSETPSEUDOVECTOR(1099,38185
+#define XSETTYPED_PSEUDOVECTOR(1105,38369
+#define XSETWINDOW_CONFIGURATION(1110,38579
+#define XSETPROCESS(1112,38675
+#define XSETWINDOW(1113,38741
+#define XSETTERMINAL(1114,38805
+#define XSETSUBR(1115,38873
+#define XSETCOMPILED(1116,38933
+#define XSETBUFFER(1117,39001
+#define XSETCHAR_TABLE(1118,39065
+#define XSETBOOL_VECTOR(1119,39137
+#define XSETSUB_CHAR_TABLE(1120,39211
+XINTPTR 1128,39581
+make_pointer_integer 1134,39661
+LISP_MACRO_DEFUN_VOID 1143,39826
+typedef struct interval *INTERVAL;INTERVAL1149,39987
+ Lisp_Object cdr;1159,40162
+ struct Lisp_Cons *chain;chain1162,40236
+xcar_addr 1174,40760
+xcdr_addr 1179,40837
+LISP_MACRO_DEFUN 1185,40931
+XSETCDR 1198,41307
+CAR 1205,41457
+CDR 1212,41591
+CAR_SAFE 1221,41791
+CDR_SAFE 1226,41877
+STRING_MULTIBYTE 1243,42250
+#define STRING_BYTES_BOUND 1261,43057
+#define STRING_SET_UNIBYTE(1265,43201
+#define STRING_SET_MULTIBYTE(1275,43516
+SDATA 1286,43830
+SSDATA 1291,43908
+SREF 1297,44037
+SSET 1302,44128
+SCHARS 1307,44242
+STRING_BYTES 1316,44415
+SBYTES 1326,44595
+STRING_SET_CHARS 1331,44681
+struct vectorlike_header1343,45232
+ ptrdiff_t size;1364,46383
+struct Lisp_Vector1369,46482
+ struct vectorlike_header header;1371,46505
+ Lisp_Object contents[contents1372,46542
+ ALIGNOF_STRUCT_LISP_VECTOR1378,46681
+struct Lisp_Bool_Vector1384,46864
+ struct vectorlike_header header;1388,47012
+ EMACS_INT size;1390,47086
+ bits_word data[data1395,47319
+bool_vector_size 1399,47385
+bool_vector_data 1407,47523
+bool_vector_uchar_data 1413,47617
+bool_vector_words 1421,47803
+bool_vector_bytes 1428,47998
+bool_vector_bitref 1437,48238
+bool_vector_ref 1445,48478
+bool_vector_set 1453,48618
+ header_size 1471,49047
+ bool_header_size 1472,49106
+ word_size 1473,49171
+AREF 1479,49284
+aref_addr 1485,49391
+ASIZE 1491,49501
+ASET 1497,49583
+gc_aset 1504,49742
+enum { NIL_IS_ZERO 1515,50269
+memclear 1520,50464
+#define VECSIZE(1531,50762
+#define PSEUDOVECSIZE(1538,51047
+#define UNSIGNED_CMP(1546,51480
+#define ASCII_CHAR_P(1552,51734
+enum CHARTAB_SIZE_BITS1565,52489
+ CHARTAB_SIZE_BITS_0 1567,52516
+ CHARTAB_SIZE_BITS_1 1568,52545
+ CHARTAB_SIZE_BITS_2 1569,52574
+ CHARTAB_SIZE_BITS_3 1570,52603
+struct Lisp_Char_Table1575,52672
+ struct vectorlike_header header;1581,52928
+ Lisp_Object defalt;1585,53078
+ Lisp_Object parent;1590,53280
+ Lisp_Object purpose;1594,53398
+ Lisp_Object ascii;1598,53564
+ Lisp_Object contents[contents1600,53588
+ Lisp_Object extras[extras1603,53699
+struct Lisp_Sub_Char_Table1606,53752
+ struct vectorlike_header header;1610,53918
+ int depth;1618,54341
+ int min_char;1621,54417
+ Lisp_Object contents[contents1624,54492
+CHAR_TABLE_REF_ASCII 1628,54566
+CHAR_TABLE_REF 1648,55113
+CHAR_TABLE_SET 1658,55402
+struct Lisp_Subr1670,55786
+ struct vectorlike_header header;1672,55807
+ Lisp_Object (*a0)a01674,55856
+ Lisp_Object (*a1)a11675,55888
+ Lisp_Object (*a2)a21676,55927
+ Lisp_Object (*a3)a31677,55979
+ Lisp_Object (*a4)a41678,56044
+ Lisp_Object (*a5)a51679,56122
+ Lisp_Object (*a6)a61680,56213
+ Lisp_Object (*a7)a71681,56317
+ Lisp_Object (*a8)a81682,56434
+ Lisp_Object (*aUNEVALLED)aUNEVALLED1683,56564
+ Lisp_Object (*aMANY)aMANY1684,56616
+ } function;1685,56671
+ short min_args,1686,56687
+ short min_args, max_args;1686,56687
+ const char *symbol_name;symbol_name1687,56717
+ const char *intspec;intspec1688,56746
+ const char *doc;doc1689,56771
+enum char_table_specials1692,56798
+ CHAR_TABLE_STANDARD_SLOTS 1697,56993
+ SUB_CHAR_TABLE_OFFSET 1701,57214
+CHAR_TABLE_EXTRA_SLOTS 1707,57377
+LISP_MACRO_DEFUN 1723,57921
+SYMBOL_BLV 1732,58181
+SYMBOL_FWD 1738,58316
+LISP_MACRO_DEFUN_VOID 1744,58428
+SET_SYMBOL_BLV 1754,58691
+SET_SYMBOL_FWD 1760,58850
+SYMBOL_NAME 1767,59001
+SYMBOL_INTERNED_P 1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299
+#define DEFSYM(1796,59809
+LISP_MACRO_DEFUN DEFSYM1792,59630
+struct hash_table_test1805,60062
+ Lisp_Object name;1808,60139
+ Lisp_Object user_hash_function;1811,60206
+ Lisp_Object user_cmp_function;1814,60297
+ bool (*cmpfn)cmpfn1817,60372
+ EMACS_UINT (*hashfn)hashfn1820,60486
+struct Lisp_Hash_Table1823,60555
+ struct vectorlike_header header;1826,60649
+ Lisp_Object weak;1830,60783
+ Lisp_Object rehash_size;1835,61007
+ Lisp_Object rehash_threshold;1839,61129
+ Lisp_Object hash;1843,61260
+ Lisp_Object next;1848,61490
+ Lisp_Object next_free;1851,61560
+ Lisp_Object index;1856,61771
+ ptrdiff_t count;1863,62041
+ Lisp_Object key_and_value;1868,62240
+ struct hash_table_test test;1871,62314
+ struct Lisp_Hash_Table *next_weak;next_weak1875,62457
+XHASH_TABLE 1880,62531
+#define XSET_HASH_TABLE(1885,62602
+HASH_TABLE_P 1889,62703
+HASH_KEY 1896,62860
+HASH_VALUE 1903,63040
+HASH_NEXT 1911,63254
+HASH_HASH 1918,63431
+HASH_INDEX 1926,63677
+HASH_TABLE_SIZE 1933,63826
+enum DEFAULT_HASH_SIZE 1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956
+static double const DEFAULT_REHASH_THRESHOLD 1946,64176
+static double const DEFAULT_REHASH_SIZE 1950,64299
+sxhash_combine 1956,64465
+SXHASH_REDUCE 1964,64648
+struct Lisp_Misc_Any 1971,64806
+ ENUM_BF 1973,64866
+struct Lisp_Marker1978,64980
+ ENUM_BF 1980,65001
+struct Lisp_Overlay2021,66838
+ ENUM_BF 2034,67346
+ SAVE_UNUSED,2047,67641
+ SAVE_INTEGER,2048,67658
+ SAVE_FUNCPOINTER,2049,67676
+ SAVE_POINTER,2050,67698
+ SAVE_OBJECT2051,67716
+enum { SAVE_SLOT_BITS 2055,67801
+enum { SAVE_VALUE_SLOTS 2058,67898
+enum { SAVE_TYPE_BITS 2062,68006
+enum Lisp_Save_Type2064,68072
+ SAVE_TYPE_INT_INT 2066,68096
+ SAVE_TYPE_INT_INT_INT2067,68169
+ SAVE_TYPE_OBJ_OBJ 2069,68259
+ SAVE_TYPE_OBJ_OBJ_OBJ 2070,68330
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68411
+ SAVE_TYPE_PTR_INT 2073,68506
+ SAVE_TYPE_PTR_OBJ 2074,68579
+ SAVE_TYPE_PTR_PTR 2075,68651
+ SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68724
+ SAVE_TYPE_MEMORY 2080,68882
+typedef void (*voidfuncptr)voidfuncptr2108,69836
+struct Lisp_Save_Value2110,69873
+ ENUM_BF 2112,69900
+ void *pointer;pointer2125,70555
+ voidfuncptr funcpointer;2126,70576
+ ptrdiff_t integer;2127,70607
+ Lisp_Object object;2128,70632
+ } data[data2129,70658
+save_type 2134,70752
+XSAVE_POINTER 2143,70982
+set_save_pointer 2149,71144
+XSAVE_FUNCPOINTER 2155,71326
+XSAVE_INTEGER 2164,71546
+set_save_integer 2170,71708
+XSAVE_OBJECT 2179,71929
+struct Lisp_Finalizer2186,72106
+ struct Lisp_Misc_Any base;2188,72132
+ struct Lisp_Finalizer *prev;prev2191,72220
+ struct Lisp_Finalizer *next;next2192,72253
+ Lisp_Object function;2197,72490
+struct Lisp_Free2201,72581
+ ENUM_BF 2203,72602
+union Lisp_Misc2212,72882
+ struct Lisp_Misc_Any u_any;2214,72902
+ struct Lisp_Free u_free;2215,72973
+ struct Lisp_Marker u_marker;2216,73002
+ struct Lisp_Overlay u_overlay;2217,73035
+ struct Lisp_Save_Value u_save_value;2218,73070
+ struct Lisp_Finalizer u_finalizer;2219,73111
+XMISC 2223,73181
+XMISCANY 2229,73270
+XMISCTYPE 2236,73379
+XMARKER 2242,73467
+XOVERLAY 2249,73582
+XSAVE_VALUE 2256,73703
+XFINALIZER 2263,73832
+struct Lisp_Intfwd2274,74117
+ enum Lisp_Fwd_Type type;2276,74140
+ EMACS_INT *intvar;intvar2277,74190
+struct Lisp_Boolfwd2284,74411
+ enum Lisp_Fwd_Type type;2286,74435
+ bool *boolvar;boolvar2287,74486
+struct Lisp_Objfwd2294,74702
+ enum Lisp_Fwd_Type type;2296,74725
+ Lisp_Object *objvar;objvar2297,74775
+struct Lisp_Buffer_Objfwd2302,74934
+ enum Lisp_Fwd_Type type;2304,74964
+ int offset;2305,75021
+ Lisp_Object predicate;2307,75113
+struct Lisp_Buffer_Local_Value2334,76470
+ bool_bf local_if_set 2338,76615
+ bool_bf frame_local 2341,76797
+ bool_bf found 2344,76939
+ union Lisp_Fwd *fwd;fwd2346,77041
+ Lisp_Object where;2348,77184
+ Lisp_Object defcell;2351,77310
+ Lisp_Object valcell;2357,77614
+struct Lisp_Kboard_Objfwd2362,77729
+ enum Lisp_Fwd_Type type;2364,77759
+ int offset;2365,77816
+union Lisp_Fwd2368,77838
+ struct Lisp_Intfwd u_intfwd;2370,77857
+ struct Lisp_Boolfwd u_boolfwd;2371,77890
+ struct Lisp_Objfwd u_objfwd;2372,77925
+ struct Lisp_Buffer_Objfwd u_buffer_objfwd;2373,77958
+ struct Lisp_Kboard_Objfwd u_kboard_objfwd;2374,78005
+XFWDTYPE 2378,78084
+XBUFFER_OBJFWD 2384,78180
+struct Lisp_Float2391,78316
+ double data;2395,78354
+ struct Lisp_Float *chain;chain2396,78373
+ } u;2397,78405
+XFLOAT_DATA 2401,78434
+ IEEE_FLOATING_POINT2415,78943
+#define _UCHAR_T2423,79266
+typedef unsigned char UCHAR;2424,79283
+enum Lisp_Compiled2429,79366
+ COMPILED_ARGLIST 2431,79389
+ COMPILED_BYTECODE 2432,79415
+ COMPILED_CONSTANTS 2433,79442
+ COMPILED_STACK_DEPTH 2434,79470
+ COMPILED_DOC_STRING 2435,79500
+ COMPILED_INTERACTIVE 2436,79529
+enum char_bits2443,79831
+ CHAR_ALT 2445,79850
+ CHAR_SUPER 2446,79876
+ CHAR_HYPER 2447,79904
+ CHAR_SHIFT 2448,79932
+ CHAR_CTL 2449,79960
+ CHAR_META 2450,79986
+ CHAR_MODIFIER_MASK 2452,80014
+ CHARACTERBITS 2457,80209
+LISP_MACRO_DEFUN 2462,80267
+NATNUMP 2470,80409
+RANGED_INTEGERP 2476,80490
+#define TYPE_RANGED_INTEGERP(2481,80612
+LISP_MACRO_DEFUN 2486,80797
+VECTORP 2500,81270
+OVERLAYP 2505,81373
+SAVE_VALUEP 2510,81472
+FINALIZERP 2516,81578
+AUTOLOADP 2522,81682
+BUFFER_OBJFWDP 2528,81773
+PSEUDOVECTOR_TYPEP 2534,81871
+PSEUDOVECTORP 2542,82124
+WINDOW_CONFIGURATIONP 2558,82476
+PROCESSP 2564,82586
+WINDOWP 2570,82670
+TERMINALP 2576,82752
+SUBRP 2582,82838
+COMPILEDP 2588,82916
+BUFFERP 2594,83002
+CHAR_TABLE_P 2600,83084
+SUB_CHAR_TABLE_P 2606,83175
+BOOL_VECTOR_P 2612,83274
+FRAMEP 2618,83367
+IMAGEP 2625,83484
+ARRAYP 2632,83589
+CHECK_LIST 2638,83708
+LISP_MACRO_DEFUN_VOID 2643,83789
+CHECK_STRING_CAR 2653,84086
+CHECK_CONS 2658,84190
+CHECK_VECTOR 2663,84270
+CHECK_BOOL_VECTOR 2668,84356
+CHECK_VECTOR_OR_STRING 2674,84533
+CHECK_ARRAY 2683,84707
+CHECK_BUFFER 2688,84815
+CHECK_WINDOW 2693,84901
+CHECK_PROCESS 2699,85007
+CHECK_NATNUM 2705,85103
+#define CHECK_RANGED_INTEGER(2710,85180
+#define CHECK_TYPE_RANGED_INTEGER(2721,85563
+#define CHECK_NUMBER_COERCE_MARKER(2729,85833
+XFLOATINT 2738,86086
+CHECK_NUMBER_OR_FLOAT 2744,86157
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86256
+CHECK_NUMBER_CAR 2760,86666
+CHECK_NUMBER_CDR 2768,86788
+#define DEFUN(2803,88383
+#define DEFUN(2812,88851
+FUNCTIONP 2822,89206
+enum maxargs2831,89401
+ MANY 2833,89418
+ UNEVALLED 2834,89433
+#define CALLMANY(2838,89536
+#define CALLN(2844,89889
+#define DEFVAR_LISP(2869,91094
+#define DEFVAR_LISP_NOPRO(2874,91266
+#define DEFVAR_BOOL(2879,91448
+#define DEFVAR_INT(2884,91621
+#define DEFVAR_BUFFER_DEFAULTS(2890,91792
+#define DEFVAR_KBOARD(2896,91996
+typedef jmp_buf sys_jmp_buf;2906,92320
+# define sys_setjmp(2907,92349
+# define sys_longjmp(2908,92384
+typedef sigjmp_buf sys_jmp_buf;2910,92456
+# define sys_setjmp(2911,92488
+# define sys_longjmp(2912,92528
+typedef jmp_buf sys_jmp_buf;2916,92687
+# define sys_setjmp(2917,92716
+# define sys_longjmp(2918,92750
+enum specbind_tag 2943,93802
+ SPECPDL_UNWIND,2944,93822
+ SPECPDL_UNWIND_PTR,2945,93891
+ SPECPDL_UNWIND_INT,2946,93942
+ SPECPDL_UNWIND_VOID,2947,93990
+ SPECPDL_BACKTRACE,2948,94044
+ SPECPDL_LET,2949,94102
+ SPECPDL_LET_LOCAL,2951,94232
+ SPECPDL_LET_DEFAULT 2952,94289
+union specbinding2955,94361
+ ENUM_BF 2957,94383
+ ENUM_BF 2959,94440
+ ENUM_BF 2964,94570
+ ENUM_BF 2969,94693
+ ENUM_BF 2974,94811
+ ENUM_BF 2978,94916
+ ENUM_BF 2983,95091
+enum handlertype 3021,96407
+enum handlertype { CATCHER,3021,96407
+enum handlertype { CATCHER, CONDITION_CASE 3021,96407
+struct handler3023,96454
+ enum handlertype type;3025,96471
+ Lisp_Object tag_or_ch;3026,96496
+ Lisp_Object val;3027,96521
+ struct handler *next;next3028,96540
+ struct handler *nextfree;nextfree3029,96564
+ Lisp_Object *bytecode_top;bytecode_top3036,96922
+ int bytecode_dest;3037,96951
+ struct gcpro *gcpro;gcpro3042,97188
+ sys_jmp_buf jmp;3044,97218
+ EMACS_INT lisp_eval_depth;3045,97237
+ ptrdiff_t pdlcount;3046,97266
+ int poll_suppress_count;3047,97288
+ int interrupt_input_blocked;3048,97315
+ struct byte_stack *byte_stack;byte_stack3049,97346
+#define PUSH_HANDLER(3053,97443
+#define QUIT 3101,99220
+#define QUITP 3112,99470
+struct gcpro3132,100313
+ struct gcpro *next;next3134,100328
+ volatile Lisp_Object *var;var3137,100397
+ ptrdiff_t nvars;3140,100479
+ const char *name;name3144,100564
+ int lineno;3147,100620
+ int idx;3150,100681
+ int level;3153,100717
+#define GC_USE_GCPROS_AS_BEFORE 3171,101294
+#define GC_MAKE_GCPROS_NOOPS 3172,101329
+#define GC_MARK_STACK_CHECK_GCPROS 3173,101361
+#define GC_USE_GCPROS_CHECK_ZOMBIES 3174,101398
+#define GC_MARK_STACK 3177,101459
+#define BYTE_MARK_STACK 3181,101559
+#define GCPRO1(3190,101830
+#define GCPRO2(3191,101870
+#define GCPRO3(3192,101936
+#define GCPRO4(3194,102031
+#define GCPRO5(3196,102151
+#define GCPRO6(3198,102296
+#define GCPRO7(3201,102471
+#define UNGCPRO 3202,102550
+#define GCPRO1(3208,102650
+#define GCPRO2(3212,102772
+#define GCPRO3(3217,102964
+#define GCPRO4(3223,103226
+#define GCPRO5(3230,103557
+#define GCPRO6(3238,103958
+#define GCPRO7(3247,104428
+#define UNGCPRO 3257,104968
+#define GCPRO1(3263,105062
+#define GCPRO2(3269,105296
+#define GCPRO3(3278,105714
+#define GCPRO4(3289,106271
+#define GCPRO5(3302,106969
+#define GCPRO6(3317,107809
+#define GCPRO7(3334,108790
+#define UNGCPRO 3353,109913
+#define RETURN_UNGCPRO(3363,110180
+vcopy 3384,110654
+set_hash_key_slot 3393,110929
+set_hash_value_slot 3399,111068
+set_symbol_function 3408,111303
+set_symbol_plist 3414,111418
+set_symbol_next 3420,111521
+blv_found 3428,111694
+set_overlay_plist 3437,111877
+string_intervals 3445,112028
+set_string_intervals 3453,112150
+set_char_table_defalt 3462,112352
+set_char_table_purpose 3467,112464
+set_char_table_extras 3475,112633
+set_char_table_contents 3482,112842
+set_sub_char_table_contents 3489,113037
+enum Arith_Comparison 3497,113300
+ ARITH_EQUAL,3498,113324
+ ARITH_NOTEQUAL,3499,113339
+ ARITH_LESS,3500,113357
+ ARITH_GRTR,3501,113371
+ ARITH_LESS_OR_EQUAL,3502,113385
+ ARITH_GRTR_OR_EQUAL3503,113408
+#define INTEGER_TO_CONS(3511,113759
+#define CONS_TO_INTEGER(3529,114622
+enum { NEXT_ALMOST_PRIME_LIMIT 3573,116326
+extern EMACS_INT next_almost_prime 3574,116365
+enum constype 3739,123817
+enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123817
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123817
+list2i 3745,124007
+list3i 3751,124116
+list4i 3757,124255
+extern Lisp_Object make_formatted_string 3767,124631
+build_pure_c_string 3792,125659
+build_string 3801,125864
+make_uninit_vector 3820,126435
+make_uninit_sub_char_table 3833,126654
+#define ALLOCATE_PSEUDOVECTOR(3850,127198
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127534
+INLINE void 3890,128940
+extern void *r_alloc r_alloc3895,129061
+#define FLOAT_TO_STRING_BUFSIZE 3927,130524
+intern 3968,132131
+intern_c_string 3974,132219
+extern _Noreturn void error 4034,135598
+fast_string_match_ignore_case 4136,140086
+INLINE void fixup_locale 4241,143851
+INLINE void synchronize_system_messages_locale 4242,143886
+INLINE void synchronize_system_time_locale 4243,143943
+#define IS_DAEMON 4257,144416
+#define DAEMON_RUNNING 4258,144456
+#define IS_DAEMON 4261,144555
+#define DAEMON_RUNNING 4262,144600
+# define WAIT_READING_MAX 4281,145419
+# define WAIT_READING_MAX 4283,145491
+extern _Noreturn void emacs_abort 4374,148383
+egetenv 4532,152806
+#define eabs(4545,153302
+#define make_fixnum_or_float(4550,153435
+enum MAX_ALLOCA 4556,153686
+enum MAX_ALLOCA { MAX_ALLOCA 4556,153686
+extern void *record_xmalloc record_xmalloc4558,153731
+#define USE_SAFE_ALLOCA 4560,153797
+#define AVAIL_ALLOCA(4564,153930
+#define SAFE_ALLOCA(4568,154041
+#define SAFE_NALLOCA(4576,154382
+#define SAFE_ALLOCA_STRING(4590,154858
+#define SAFE_FREE(4598,155110
+#define SAFE_ALLOCA_LISP(4625,155688
+# define USE_STACK_LISP_OBJECTS 4652,156810
+# undef USE_STACK_LISP_OBJECTS4658,156976
+# define USE_STACK_LISP_OBJECTS 4659,157007
+enum { defined_GC_CHECK_STRING_BYTES 4663,157082
+enum { defined_GC_CHECK_STRING_BYTES 4665,157135
+union Aligned_Cons4670,157269
+ struct Lisp_Cons s;4672,157290
+ double d;4673,157312
+ double d; intmax_t i;4673,157312
+ double d; intmax_t i; void *p;p4673,157312
+union Aligned_String4676,157349
+ struct Lisp_String s;4678,157372
+ double d;4679,157396
+ double d; intmax_t i;4679,157396
+ double d; intmax_t i; void *p;p4679,157396
+ USE_STACK_CONS 4689,157704
+ USE_STACK_STRING 4691,157810
+#define STACK_CONS(4699,158147
+#define AUTO_CONS_EXPR(4701,158244
+#define AUTO_CONS(4709,158607
+#define AUTO_LIST1(4710,158678
+#define AUTO_LIST2(4712,158786
+#define AUTO_LIST3(4716,158941
+#define AUTO_LIST4(4720,159116
+# define verify_ascii(4732,159507
+#define AUTO_STRING(4740,159815
+#define FOR_EACH_TAIL(4752,160279
+#define FOR_EACH_ALIST_VALUE(4766,160770
+maybe_gc 4774,161057
+functionp 4784,161296
+
+c-src/machsyscalls.c,23
+#define SYSCALL(6,113
+
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,1,0
+SYSCALL (mach_reply_port,13,314
+SYSCALL (mach_thread_self,18,377
+SYSCALL (mach_task_self,23,441
+SYSCALL (mach_host_self,28,503
+
+c-src/h.h,2394
+ ELEM_I/ELEM_I3,15
+} Fails_t;5,85
+typedef void Lang_function 6,96
+typedef struct tpcmd8,147
+#define ggg 10,170
+ } arg;13,198
+tpcmd;15,209
+typedef struct foobar2_ 16,216
+ fu int (*funcptr)funcptr17,242
+ long foo;18,279
+ char bar;19,293
+} foobar2;20,307
+ DEVICE_SWP,23,333
+ DEVICE_LAST24,349
+} bsp_DevId;25,365
+ struct constant_args 27,394
+ unsigned int burst;28,419
+ } constant;29,443
+} args;30,457
+typedef int *regset;regset31,465
+typedef int INT;32,486
+typedef union abc33,503
+ int def;35,523
+} ghi1;36,534
+typedef union abc 37,542
+ int def;38,562
+} ghi2;39,573
+typedef struct a 40,581
+} b;41,600
+#define c(42,605
+typedef struct an_extern_linkage
*an_extern_linkage_ptr;an_extern_linkage_ptr43,619
+typedef struct an_extern_linkage 44,676
+ kind;46,733
+ is_explicit;49,812
+ a_byte_boolean is_curly_brace_form;54,1009
+} an_extern_linkage;56,1054
+typedef struct pollfd pfdset[pfdset57,1075
+typedef union rtunion_def58,1119
+ int rtint;60,1149
+ char *rtstr;rtstr61,1164
+ struct rtx_def *rtx;rtx62,1181
+ } womboid 63,1206
+typedef union rtunion_def64,1220
+ int rtint;68,1250
+ char *rtstr;rtstr69,1263
+ struct rtx_def *rtxp;rtxp70,1278
+ struct rtx_def rtxnp;71,1302
+womboid75,1330
+enum {dog,dog81,1416
+enum {dog, cat}cat81,1416
+enum {dog, cat} animals;81,1416
+typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441
+typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489
+/* comment */ #define ANSIC84,1538
+ #define ANSIC85,1566
+typedef void (proc)87,1588
+typedef void OperatorFun(88,1612
+typedef int f(89,1648
+struct my_struct 91,1691
+typedef struct my_struct my_typedef;93,1713
+typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750
+ Date 04 May 87 235311 PDT 96,1802
+typedef unsigned char unchar;99,1880
+typedef int X,100,1910
+typedef int X, Y,100,1910
+typedef int X, Y, Z;100,1910
+typedef mio mao;101,1931
+typedef struct a 103,1966
+typedef struct a { } b;103,1966
+typedef struct b104,1990
+} c;106,2009
+int extvar;109,2053
+#define tag1110,2065
+#define aaaaaa 111,2078
+#define bbbbbb\bbbbbb113,2102
+#define cccccccccc115,2125
+#define enter_critical_section 116,2144
+#define exit_critical_to_previous 117,2199
+#define UNDEFINED118,2259
+struct re_pattern_buffer 119,2277
+struct re_pattern_buffer { unsigned char *buffer;buffer119,2277
+
+cp-src/c.C,3287
+template <typename ipc3dIslandHierarchy,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned
numOfChannels,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned
numOfChannels, typename ipc3dLinkControl,1,0
+class CMultiChannelCSC19_3D2,151
+ ipc3dLinkControlSetup setup;CMultiChannelCSC19_3D::setup5,190
+ ipc3dCSC19<CMultiChannelCSC19_3D::ipc3dCSC196,227
+
ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl>
mcCSC;CMultiChannelCSC19_3D::mcCSC6,227
+ advTimer cscInitTime;CMultiChannelCSC19_3D::cscInitTime7,388
+ advTimer
cscSegmentationTime;CMultiChannelCSC19_3D::cscSegmentationTime8,418
+ advTimer outputTime;CMultiChannelCSC19_3D::outputTime9,456
+ void execute(CMultiChannelCSC19_3D::execute11,493
+int main 25,1026
+double base 26,1088
+typedef struct s1 32,1251
+ int counter;s1::counter33,1271
+} t1;34,1287
+struct s2 35,1293
+ int counter;s2::counter36,1305
+typedef struct s2 t2;38,1324
+class A 39,1346
+ enum { rosso,A::rosso40,1356
+ enum { rosso, giallo,A::giallo40,1356
+ enum { rosso, giallo, verde A::verde40,1356
+ enum { rosso, giallo, verde } colori;A::colori40,1356
+const A& A::operator+(43,1431
+void operator+(44,1467
+void operator -(operator -45,1495
+void operator int(operator int46,1524
+A<int>* f(48,1556
+int f(49,1571
+int A<int>::f(f50,1590
+A<float,B<int> > A<B<float>,int>::f(f51,1618
+template <class C, int n> class AT 52,1668
+template <class C, int n> class AT { C t[AT::t52,1668
+class AU 53,1716
+class AU { T x;AU::x53,1716
+class B<B54,1735
+class B<int> { void f(B::f54,1735
+const A::B::T& abt 55,1765
+class A 56,1791
+class A { class B A::B56,1791
+class A 57,1826
+ A operator+(A::operator+59,1860
+is_muldiv_operation(61,1887
+domain foo 68,1955
+ void f(foo::f69,1968
+void A::A(72,1989
+struct A 73,2004
+struct B 74,2022
+void B::B(75,2041
+void BE_Node::BE_Node(76,2056
+class BE_Node 77,2083
+struct foo 79,2102
+ int x;foo::x80,2115
+class test 86,2156
+ int f(test::f87,2169
+ int ff(test::ff89,2231
+ int g(test::g90,2254
+class AST_Root 92,2278
+AST_ConcreteType::AST_ConcreteType(99,2393
+AST_Array::AST_Array(107,2532
+ void f(::f115,2733
+struct A 117,2753
+A::~A(120,2777
+struct B 122,2789
+ ~B(B::~B123,2800
+enum {dog,::dog126,2817
+enum {dog, cat}::cat126,2817
+enum {dog, cat} animals;126,2817
+struct {int teats;::teats127,2842
+struct {int teats;} cow;127,2842
+class Boo 129,2868
+ enum {dog,Boo::dog130,2880
+ enum {dog, cat}Boo::cat130,2880
+ enum {dog, cat} animals;Boo::animals130,2880
+ struct {int treats;Boo::treats131,2909
+ struct {int treats;} cow;Boo::cow131,2909
+ int i,Boo::i132,2939
+ int i,a,Boo::a132,2939
+ int i,a,b;Boo::b132,2939
+ foo(Boo::foo133,2954
+ Boo(Boo::Boo137,2995
+Boo::Boo(141,3070
+typedef int should_see_this_one_enclosed_in_extern_C;149,3155
+typedef int
(*should_see_this_function_pointer)should_see_this_function_pointer153,3228
+typedef int should_see_this_array_type[should_see_this_array_type156,3310
+
+cp-src/abstract.C,11317
+Half_Container::Half_Container(34,703
+void Half_Container::SetPosition(45,941
+void Half_Container::SetDimensions(58,1259
+void Half_Container::SetFather(81,1697
+void Half_Container::SetCollapsed(87,1787
+Specification::Specification(98,1958
+void Specification::SetPosition(119,2453
+void Specification::SetDimensions(164,3742
+void Specification::SetFather(188,4616
+void Specification::SetPath(202,4908
+Coord Specification::GetMaxX(212,5125
+Coord Specification::GetMaxY(215,5174
+Process::Process(222,5298
+void Process::SetPosition(242,5697
+void Process::SetDimensions(291,6959
+void Process::SetFather(315,7913
+void Process::SetPath(326,8123
+Coord Process::GetMaxX(335,8323
+Coord Process::GetMaxY(338,8365
+Choice::Choice(346,8482
+void Choice::SetPosition(357,8698
+void Choice::SetDimensions(405,10053
+void Choice::ChangeH(466,12014
+void Choice::ChangeW(495,12947
+void Choice::SetFather(522,13700
+void Choice::SetTextual(532,13918
+void Choice::SetCollapsed(540,14041
+int Choice::Get_Textual_H(549,14168
+int Choice::Get_Textual_W(557,14408
+void Choice::SetTerminalPos(566,14615
+Stop::Stop(588,15087
+void Stop::SetPosition(595,15207
+void Stop::SetDimensions(605,15373
+void Stop::SetFather(644,16369
+void Stop::SetTextual(652,16537
+void Stop::SetCollapsed(655,16616
+Exit::Exit(667,16768
+void Exit::SetPosition(676,16935
+void Exit::SetDimensions(687,17164
+void Exit::SetFather(695,17350
+Exit_Bex::Exit_Bex(703,17476
+void Exit_Bex::SetPosition(713,17678
+void Exit_Bex::SetDimensions(740,18430
+void Exit_Bex::SetFather(798,20444
+void Exit_Bex::SetTextual(807,20646
+void Exit_Bex::SetCollapsed(814,20757
+NoExit::NoExit(826,20943
+void NoExit::SetPosition(835,21092
+void NoExit::SetDimensions(845,21266
+void NoExit::SetFather(852,21359
+ID_Place::ID_Place(861,21488
+void ID_Place::SetIdent(875,21745
+void ID_Place::SetPosition(886,21936
+void ID_Place::SetDimensions(897,22173
+void ID_Place::SetFather(928,23017
+ID_Place::~ID_Place(932,23073
+void ID_Place::SetVisible(935,23112
+void ID_Place::ClearID(941,23193
+ID_List::ID_List(953,23379
+void ID_List::SetPosition(967,23644
+void ID_List::SetDimensions(999,24385
+void ID_List::SetFather(1038,25456
+void ID_List::SetCollapsed(1047,25595
+void ID_List::HideMe(1056,25734
+void ID_List::SetRBubble(1065,25862
+void ID_List::SetAlignement(1073,25980
+int ID_List::GetCardinality(1082,26123
+void ID_List::SetVisible(1093,26291
+void ID_List::BuildSigSorts(1103,26518
+void ID_List::ClearIDs(1126,27081
+Id_Decl::Id_Decl(1139,27280
+void Id_Decl::SetPosition(1156,27659
+void Id_Decl::SetDimensions(1174,28016
+void Id_Decl::SetFather(1191,28417
+void Id_Decl::SetCollapsed(1200,28568
+Id_Decl_List::Id_Decl_List(1214,28799
+void Id_Decl_List::SetPosition(1227,29069
+void Id_Decl_List::SetDimensions(1245,29424
+void Id_Decl_List::SetFather(1262,29844
+void Id_Decl_List::SetCollapsed(1271,29988
+Comment::Comment(1286,30209
+void Comment::SetComment(1299,30446
+void Comment::SetFather(1317,30800
+void Comment::SetPosition(1321,30854
+void Comment::SetDimensions(1331,31031
+Comment::~Comment(1345,31265
+Comment_List::Comment_List(1352,31382
+void Comment_List::SetPosition(1362,31541
+void Comment_List::SetDimensions(1380,31860
+void Comment_List::SetFather(1392,32139
+Parallel::Parallel(1406,32360
+void Parallel::SetPosition(1417,32573
+void Parallel::SetDimensions(1473,34272
+void Parallel::SetTextual(1534,36167
+int Parallel::Get_Textual_W(1543,36313
+int Parallel::Get_Textual_H(1559,36722
+void Parallel::SetTerminalPos(1570,37191
+void Parallel::SetFather(1590,37698
+void Parallel::SetCollapsed(1601,37950
+Ident_Eq::Ident_Eq(1615,38177
+void Ident_Eq::SetPosition(1632,38546
+void Ident_Eq::SetDimensions(1647,38851
+void Ident_Eq::SetFather(1662,39191
+void Ident_Eq::SetCollapsed(1669,39295
+Ident_Eq_List::Ident_Eq_List(1681,39480
+void Ident_Eq_List::SetPosition(1694,39753
+void Ident_Eq_List::SetDimensions(1712,40111
+void Ident_Eq_List::SetCollapsed(1729,40538
+void Ident_Eq_List::SetFather(1738,40683
+Local_Def::Local_Def(1751,40904
+void Local_Def::SetPosition(1761,41102
+void Local_Def::SetDimensions(1791,41833
+void Local_Def::SetFather(1832,43262
+void Local_Def::SetCollapsed(1839,43370
+void Local_Def::SetTextual(1848,43504
+Hide::Hide(1860,43681
+void Hide::SetPosition(1871,43872
+void Hide::SetDimensions(1901,44569
+void Hide::SetFather(1944,45771
+void Hide::SetCollapsed(1951,45873
+void Hide::SetTextual(1961,46003
+Interl::Interl(1972,46175
+void Interl::SetPosition(1982,46361
+void Interl::SetDimensions(1993,46593
+void Interl::SetFather(2021,47103
+Syncr::Syncr(2031,47257
+void Syncr::SetPosition(2041,47438
+void Syncr::SetDimensions(2051,47609
+void Syncr::SetFather(2079,48153
+Enable::Enable(2090,48436
+void Enable::SetPosition(2102,48690
+void Enable::SetDimensions(2169,50473
+void Enable::SetTextual(2243,53017
+void Enable::SetTerminalPos(2251,53140
+int Enable::Get_Textual_W(2271,53720
+int Enable::Get_Textual_H(2282,53985
+void Enable::SetFather(2285,54104
+void Enable::SetCollapsed(2298,54418
+Disable::Disable(2314,54780
+void Disable::SetPosition(2325,55001
+void Disable::SetDimensions(2376,56251
+void Disable::SetFather(2436,58064
+void Disable::SetCollapsed(2446,58284
+void Disable::SetTextual(2455,58412
+void Disable::SetTerminalPos(2463,58536
+int Disable::Get_Textual_W(2479,58987
+int Disable::Get_Textual_H(2488,59190
+Gen_Paral::Gen_Paral(2500,59630
+void Gen_Paral::SetPosition(2513,59899
+void Gen_Paral::SetDimensions(2540,60659
+void Gen_Paral::SetFather(2590,62171
+void Gen_Paral::SetCollapsed(2597,62290
+Action_Pref::Action_Pref(2609,62583
+void Action_Pref::SetPosition(2620,62829
+void Action_Pref::SetDimensions(2669,63937
+void Action_Pref::SetFather(2724,65777
+void Action_Pref::SetCollapsed(2734,66010
+void Action_Pref::SetTextual(2743,66147
+Internal::Internal(2757,66484
+void Internal::SetPosition(2768,66658
+void Internal::SetDimensions(2778,66838
+void Internal::SetFather(2806,67442
+Communication::Communication(2816,67702
+void Communication::SetPosition(2827,67956
+void Communication::SetDimensions(2897,70390
+void Communication::SetFather(2935,71706
+void Communication::SetCollapsed(2942,71837
+void Communication::SetTextual(2949,71968
+NoGuard::NoGuard(2961,72262
+void NoGuard::SetPosition(2974,72462
+void NoGuard::SetDimensions(2984,72639
+void NoGuard::SetFather(2987,72678
+Guard::Guard(2996,72929
+void Guard::SetPosition(3008,73118
+void Guard::SetDimensions(3022,73428
+void Guard::SetFather(3044,73894
+void Guard::SetCollapsed(3050,73974
+NoExperiment::NoExperiment(3062,74258
+void NoExperiment::SetPosition(3075,74478
+void NoExperiment::SetDimensions(3085,74670
+void NoExperiment::SetFather(3088,74714
+Experiment::Experiment(3097,74978
+void Experiment::SetPosition(3110,75245
+void Experiment::SetDimensions(3128,75611
+void Experiment::SetFather(3150,76066
+void Experiment::SetCollapsed(3157,76188
+void Experiment::SetTextual(3165,76311
+Proc_Inst::Proc_Inst(3175,76476
+void Proc_Inst::SetPosition(3191,76777
+void Proc_Inst::SetDimensions(3236,77965
+void Proc_Inst::SetFather(3286,79596
+void Proc_Inst::SetCollapsed(3294,79739
+void Proc_Inst::SetTextual(3304,79909
+Value_Expr::Value_Expr(3316,80100
+void Value_Expr::SetPosition(3329,80327
+void Value_Expr::SetDimensions(3340,80572
+void Value_Expr::SetFather(3343,80614
+Value_Expr_List::Value_Expr_List(3351,80755
+void Value_Expr_List::SetPosition(3364,81042
+void Value_Expr_List::SetDimensions(3382,81406
+void Value_Expr_List::SetFather(3399,81830
+void Value_Expr_List::SetCollapsed(3408,81977
+Sum_Ident::Sum_Ident(3423,82203
+void Sum_Ident::SetPosition(3435,82445
+void Sum_Ident::SetDimensions(3466,83196
+void Sum_Ident::SetFather(3509,84540
+void Sum_Ident::SetCollapsed(3516,84653
+void Sum_Ident::SetTextual(3525,84793
+void Sum_Ident::SetTerminalPos(3532,84897
+Value::Value(3552,85432
+void Value::SetPosition(3569,85792
+void Value::SetDimensions(3583,86091
+void Value::SetFather(3606,86628
+void Value::SetCollapsed(3613,86731
+Term::Term(3626,86908
+void Term::SetPosition(3646,87323
+void Term::SetDimensions(3671,87942
+void Term::SetFather(3697,88599
+void Term::SetCollapsed(3705,88732
+Exit_Entry::Exit_Entry(3719,88947
+void Exit_Entry::SetPosition(3732,89176
+void Exit_Entry::SetDimensions(3743,89421
+void Exit_Entry::SetFather(3746,89463
+Exit_Entry_List::Exit_Entry_List(3754,89604
+void Exit_Entry_List::SetPosition(3766,89875
+void Exit_Entry_List::SetDimensions(3785,90304
+void Exit_Entry_List::SetFather(3802,90753
+void Exit_Entry_List::SetCollapsed(3811,90900
+Sum_Gate::Sum_Gate(3826,91125
+void Sum_Gate::SetPosition(3837,91363
+void Sum_Gate::SetDimensions(3873,92120
+void Sum_Gate::SetFather(3915,93438
+void Sum_Gate::SetCollapsed(3922,93549
+void Sum_Gate::SetTextual(3931,93687
+void Sum_Gate::SetTerminalPos(3938,93790
+Gate_Decl::Gate_Decl(3959,94421
+void Gate_Decl::SetPosition(3977,94900
+void Gate_Decl::SetDimensions(3995,95298
+void Gate_Decl::SetFather(4011,95694
+void Gate_Decl::SetCollapsed(4020,95871
+Gate_Decl_List::Gate_Decl_List(4034,96130
+void Gate_Decl_List::SetPosition(4047,96414
+void Gate_Decl_List::SetDimensions(4065,96779
+void Gate_Decl_List::SetFather(4082,97207
+void Gate_Decl_List::SetCollapsed(4091,97353
+Par::Par(4106,97572
+void Par::SetPosition(4126,97957
+void Par::SetDimensions(4174,99236
+void Par::SetFather(4226,100814
+void Par::SetCollapsed(4234,100943
+void Par::SetTextual(4245,101100
+Sort_Id_Exit::Sort_Id_Exit(4258,101329
+void Sort_Id_Exit::SetPosition(4270,101556
+void Sort_Id_Exit::SetDimensions(4283,101834
+void Sort_Id_Exit::SetFather(4297,102142
+void Sort_Id_Exit::SetCollapsed(4303,102228
+Equality::Equality(4314,102512
+Equality::Equality(4327,102736
+void Equality::SetPosition(4340,102987
+void Equality::SetDimensions(4357,103329
+void Equality::SetFather(4377,103720
+void Equality::SetCollapsed(4387,103858
+Guarded::Guarded(4401,104167
+void Guarded::SetPosition(4413,104384
+void Guarded::SetDimensions(4441,105084
+void Guarded::SetFather(4482,106273
+void Guarded::SetCollapsed(4489,106377
+void Guarded::SetTextual(4499,106509
+Exper_Off::Exper_Off(4510,106813
+void Exper_Off::SetPosition(4523,107035
+void Exper_Off::SetDimensions(4533,107220
+void Exper_Off::SetFather(4536,107261
+Exper_Off_List::Exper_Off_List(4544,107521
+void Exper_Off_List::SetPosition(4557,107802
+void Exper_Off_List::SetDimensions(4575,108167
+void Exper_Off_List::SetFather(4592,108594
+void Exper_Off_List::SetCollapsed(4601,108740
+Exclam::Exclam(4616,109087
+void Exclam::SetPosition(4629,109300
+void Exclam::SetDimensions(4641,109541
+void Exclam::SetFather(4655,109830
+void Exclam::SetCollapsed(4661,109912
+Query::Query(4673,110194
+void Query::SetPosition(4686,110399
+void Query::SetDimensions(4698,110636
+void Query::SetFather(4712,110918
+void Query::SetCollapsed(4718,110997
+Definition::Definition(4729,111279
+void Definition::SetPosition(4741,111448
+void Definition::SetDimensions(4752,111658
+void Definition::SetFather(4766,111896
+void Definition::SetPath(4777,112089
+Proc_List::Proc_List(4790,112374
+void Proc_List::SetPosition(4799,112505
+void Proc_List::SetDimensions(4809,112686
+void Proc_List::SetFather(4815,112767
+void Proc_List::SetPath(4824,112908
+char *Proc_List::GetPath(Proc_List::GetPath4832,113068
+
+cp-src/abstract.H,10509
+#define abstract_hh16,453
+class ID_Place:ID_Place23,536
+ char *str;ID_Place::str25,571
+ char RBubble;ID_Place::RBubble26,583
+ char *GetIdent(ID_Place::GetIdent41,857
+ void SetRBubble(ID_Place::SetRBubble42,891
+ char GetRBubble(ID_Place::GetRBubble43,934
+class ID_List:ID_List47,1012
+ ID_Place *elem;ID_List::elem49,1046
+ ID_List *next;ID_List::next50,1063
+class Id_Decl:Id_Decl73,1540
+ ID_List *id_list;Id_Decl::id_list75,1574
+ ID_Place *sort_id;Id_Decl::sort_id76,1593
+class Id_Decl_List:Id_Decl_List89,1829
+ Id_Decl *elem;Id_Decl_List::elem91,1868
+ Id_Decl_List *next;Id_Decl_List::next92,1884
+class Comment:Comment105,2140
+ char *comm;Comment::comm107,2174
+class Comment_List:Comment_List122,2440
+ Comment *elem;Comment_List::elem124,2479
+ Comment_List *next;Comment_List::next125,2495
+class Value_Expr:Value_Expr135,2694
+class Value_Expr_List:Value_Expr_List149,2911
+ Tree_Node *elem;Value_Expr_List::elem151,2953
+ Value_Expr_List *next;Value_Expr_List::next152,2971
+class Exit_Entry:Exit_Entry165,3244
+class Exit_Entry_List:Exit_Entry_List179,3460
+ Tree_Node *elem;Exit_Entry_List::elem181,3502
+ Exit_Entry_List *next;Exit_Entry_List::next182,3520
+class Exper_Off:Exper_Off195,3793
+class Exper_Off_List:Exper_Off_List207,3977
+ Exper_Off *elem;Exper_Off_List::elem209,4018
+ Exper_Off_List *next;Exper_Off_List::next210,4043
+class Gate_Decl:Gate_Decl223,4323
+ ID_List *gate_id_list1;Gate_Decl::gate_id_list1225,4359
+ ID_List *gate_id_list2;Gate_Decl::gate_id_list2226,4384
+class Gate_Decl_List:Gate_Decl_List239,4630
+ Gate_Decl *elem;Gate_Decl_List::elem241,4671
+ Gate_Decl_List *next;Gate_Decl_List::next242,4689
+class Ident_Eq:Ident_Eq255,4957
+ Id_Decl *iddecl;Ident_Eq::iddecl257,4992
+ Value_Expr *expr;Ident_Eq::expr258,5017
+class Ident_Eq_List:Ident_Eq_List271,5270
+ Ident_Eq *elem;Ident_Eq_List::elem273,5310
+ Ident_Eq_List *next;Ident_Eq_List::next274,5334
+class Half_Container:Half_Container287,5608
+ ID_List *gate_list;Half_Container::gate_list289,5649
+class Specification:Specification308,5954
+ Comment_List *com_list;Specification::com_list312,6013
+ ID_Place *ident;Specification::ident313,6045
+ ID_List *gate_list;Specification::gate_list314,6063
+ Id_Decl_List *id_decl_list;Specification::id_decl_list315,6084
+ Comment_List *com_list1;Specification::com_list1316,6113
+ Tree_Node *func;Specification::func317,6146
+ Data_List *dt_list;Specification::dt_list318,6164
+ Definition *def;Specification::def319,6185
+ Coord yl1,Specification::yl1320,6203
+ Coord yl1,yl2,Specification::yl2320,6203
+ Coord yl1,yl2,yl3;Specification::yl3320,6203
+ Coord MaxX,Specification::MaxX321,6223
+ Coord MaxX, MaxY;Specification::MaxY321,6223
+class Process:Process337,6609
+ Comment_List *com_list;Process::com_list339,6643
+ ID_Place *ident;Process::ident340,6675
+ ID_List *gate_list;Process::gate_list341,6693
+ Id_Decl_List *id_decl_list;Process::id_decl_list342,6714
+ Definition *def;Process::def343,6743
+ Tree_Node *func;Process::func344,6761
+ char nesting;Process::nesting345,6779
+ Coord yl1,Process::yl1346,6794
+ Coord yl1,yl2,Process::yl2346,6794
+ Coord yl1,yl2,yl3,Process::yl3346,6794
+ Coord yl1,yl2,yl3,ypath;Process::ypath346,6794
+ Coord MaxX,Process::MaxX347,6820
+ Coord MaxX, MaxY;Process::MaxY347,6820
+ char GetNesting(Process::GetNesting363,7186
+class Proc_List:Proc_List367,7257
+ Process *elem;Proc_List::elem369,7293
+ Proc_List *next;Proc_List::next370,7316
+class Definition:Definition382,7574
+ Tree_Node *bex;Definition::bex384,7611
+ Proc_List *process_list;Definition::process_list385,7635
+ Data_List *data_list;Definition::data_list386,7668
+ char path[Definition::path387,7698
+ char *GetPath(Definition::GetPath397,7940
+class Exit:Exit407,8071
+ ID_List *sort_list;Exit::sort_list409,8102
+class NoExit:NoExit421,8305
+class Value:Value440,8560
+ ID_Place *ident;Value::ident442,8592
+ ID_Place *sort_id;Value::sort_id443,8610
+class Term:Term456,8841
+ ID_Place *op_ident;Term::op_ident458,8872
+ Value_Expr_List *expr_list;Term::expr_list459,8893
+ ID_Place *sort_id;Term::sort_id460,8922
+class Equality:Equality473,9169
+ Tree_Node *express1;Equality::express1475,9204
+ Tree_Node *express2;Equality::express2476,9233
+class Sort_Id_Exit:Sort_Id_Exit490,9504
+ ID_Place *sort_id;Sort_Id_Exit::sort_id492,9543
+class NoGuard:NoGuard511,9837
+class Guard:Guard524,10045
+ Equality *equality;Guard::equality526,10077
+class NoExperiment:NoExperiment545,10368
+class Experiment:Experiment558,10591
+ Exper_Off_List *exp_offer_list;Experiment::exp_offer_list560,10628
+ Tree_Node *guard_option;Experiment::guard_option561,10668
+ Tree_Node *GetGuard(Experiment::GetGuard574,10962
+class Exclam:Exclam578,11053
+ Tree_Node *value_exp;Exclam::value_exp580,11086
+class Query:Query593,11324
+ Id_Decl *id_decl;Query::id_decl595,11356
+class Internal:Internal614,11643
+class Communication:Communication627,11854
+ ID_Place *gate_identifier;Communication::gate_identifier629,11894
+ Tree_Node
*experiment_option;Communication::experiment_option630,11922
+ Coord xl,Communication::xl631,11960
+ Coord xl, yl;Communication::yl631,11960
+ int hr;Communication::hr632,11982
+class Gen_Paral:Gen_Paral652,12337
+ ID_List *gate_id_list;Gen_Paral::gate_id_list654,12373
+ Coord Xclose;Gen_Paral::Xclose655,12404
+ char border;Gen_Paral::border656,12419
+ void HideGate(Gen_Paral::HideGate668,12634
+class Interl:Interl672,12730
+class Syncr:Syncr685,12929
+class Action_Pref:Action_Pref704,13185
+ Tree_Node *action_den;Action_Pref::action_den706,13223
+ Tree_Node *bex;Action_Pref::bex707,13254
+ char havebox;Action_Pref::havebox708,13278
+ char border;Action_Pref::border709,13293
+class Enable:Enable723,13577
+ Tree_Node *bex1,Enable::bex1725,13610
+ Tree_Node *bex1, *bex2;Enable::bex2725,13610
+ ID_List *gate_id_list;Enable::gate_id_list726,13642
+ Coord xl,Enable::xl727,13666
+ Coord xl, yl1,Enable::yl1727,13666
+ Coord xl, yl1, xl2,Enable::xl2727,13666
+ Coord xl, yl1, xl2, yl2,Enable::yl2727,13666
+ Coord xl, yl1, xl2, yl2, xid,Enable::xid727,13666
+ Coord xl, yl1, xl2, yl2, xid, yid,Enable::yid727,13666
+ Coord xl, yl1, xl2, yl2, xid, yid, Yclose;Enable::Yclose727,13666
+ char havebox;Enable::havebox728,13717
+ char border;Enable::border729,13732
+class Disable:Disable746,14097
+ Tree_Node *bex1,Disable::bex1748,14131
+ Tree_Node *bex1, *bex2;Disable::bex2748,14131
+ Coord xl,Disable::xl749,14163
+ Coord xl, yl,Disable::yl749,14163
+ Coord xl, yl, yl2;Disable::yl2749,14163
+ char havebox;Disable::havebox750,14190
+ char border;Disable::border751,14205
+class Choice:Choice768,14561
+ Tree_Node *bex1,Choice::bex1770,14594
+ Tree_Node *bex1, *bex2;Choice::bex2770,14594
+ Coord xl,Choice::xl771,14619
+ Coord xl, yl,Choice::yl771,14619
+ Coord xl, yl, yl1;Choice::yl1771,14619
+ char havebox;Choice::havebox772,14639
+ int delta;Choice::delta773,14654
+ char border;Choice::border774,14666
+class Stop:Stop793,15054
+ char havebox;Stop::havebox795,15085
+ char border;Stop::border796,15100
+class Exit_Bex:Exit_Bex810,15338
+ Exit_Entry_List *entry_list;Exit_Bex::entry_list812,15373
+ Coord Xopen,Exit_Bex::Xopen813,15404
+ Coord Xopen, Xclose;Exit_Bex::Xclose813,15404
+ char havebox;Exit_Bex::havebox814,15426
+ char border;Exit_Bex::border815,15441
+class Hide:Hide829,15707
+ ID_List *gate_list;Hide::gate_list831,15738
+ Tree_Node *bex;Hide::bex832,15759
+ char border;Hide::border833,15776
+ Coord yl;Hide::yl834,15790
+class Guarded:Guarded848,16047
+ Equality *equality;Guarded::equality850,16081
+ Tree_Node *bex;Guarded::bex851,16109
+ Coord Xclose;Guarded::Xclose852,16133
+ char border;Guarded::border853,16148
+class Proc_Inst:Proc_Inst867,16425
+ ID_List *gate_list;Proc_Inst::gate_list869,16461
+ ID_Place *ident;Proc_Inst::ident870,16482
+ Value_Expr_List *value_expr_list;Proc_Inst::value_expr_list871,16500
+ Coord yp,Proc_Inst::yp872,16535
+ Coord yp, yl1,Proc_Inst::yl1872,16535
+ Coord yp, yl1, Xopen,Proc_Inst::Xopen872,16535
+ Coord yp, yl1, Xopen, Xclose;Proc_Inst::Xclose872,16535
+ int hp;Proc_Inst::hp873,16566
+ char border;Proc_Inst::border874,16575
+class Parallel:Parallel888,16870
+ Tree_Node *bex1,Parallel::bex1890,16905
+ Tree_Node *bex1, *bex2,Parallel::bex2890,16905
+ Tree_Node *bex1, *bex2, *oper;Parallel::oper890,16905
+ Coord xl,Parallel::xl891,16937
+ Coord xl, yl,Parallel::yl891,16937
+ Coord xl, yl, yl1;Parallel::yl1891,16937
+ char havebox;Parallel::havebox892,16957
+ int delta;Parallel::delta893,16972
+ char border;Parallel::border894,16984
+ char GetOperType(Parallel::GetOperType910,17343
+class Local_Def:Local_Def914,17429
+ Ident_Eq_List *equa_list;Local_Def::equa_list916,17465
+ Tree_Node *bex;Local_Def::bex917,17492
+ Coord yl;Local_Def::yl918,17509
+ char border;Local_Def::border919,17520
+class Par:Par933,17801
+ Gate_Decl_List *gate_decl_list;Par::gate_decl_list935,17831
+ Tree_Node *oper,Par::oper936,17864
+ Tree_Node *oper, *bex;Par::bex936,17864
+ Coord xl,Par::xl937,17888
+ Coord xl, yl;Par::yl937,17888
+ char border;Par::border938,17903
+class Sum_Gate:Sum_Gate952,18180
+ Gate_Decl_List *gate_decl_list;Sum_Gate::gate_decl_list954,18215
+ Tree_Node *bex;Sum_Gate::bex955,18248
+ Coord xl,Sum_Gate::xl956,18265
+ Coord xl, yl,Sum_Gate::yl956,18265
+ Coord xl, yl, Xch,Sum_Gate::Xch956,18265
+ Coord xl, yl, Xch, Ych,Sum_Gate::Ych956,18265
+ Coord xl, yl, Xch, Ych, Xclose,Sum_Gate::Xclose956,18265
+ Coord xl, yl, Xch, Ych, Xclose, Yclose;Sum_Gate::Yclose956,18265
+ char border;Sum_Gate::border957,18306
+class Sum_Ident:Sum_Ident972,18613
+ Id_Decl_List *ident_decl_list;Sum_Ident::ident_decl_list974,18649
+ Tree_Node *bex;Sum_Ident::bex975,18681
+ Coord xl,Sum_Ident::xl976,18698
+ Coord xl, yl,Sum_Ident::yl976,18698
+ Coord xl, yl, Xch,Sum_Ident::Xch976,18698
+ Coord xl, yl, Xch, Ych,Sum_Ident::Ych976,18698
+ Coord xl, yl, Xch, Ych, Xclose,Sum_Ident::Xclose976,18698
+ Coord xl, yl, Xch, Ych, Xclose, Yclose;Sum_Ident::Yclose976,18698
+ char border;Sum_Ident::border977,18739
+
+cp-src/cfront.H,8316
+struct loc 67,1948
+ short file;loc::file69,1988
+ short line;loc::line70,2036
+struct ea 80,2150
+ void* p;ea::p82,2224
+ int i;ea::i83,2235
+ ea(ea::ea86,2249
+ ea(ea::ea87,2275
+ ea(ea::ea88,2301
+ ea(ea::ea89,2310
+overload error;94,2349
+#define DEL(161,4040
+#define PERM(162,4092
+#define UNPERM(163,4123
+struct node 165,4157
+ TOK base;node::base166,4171
+ TOK n_key;node::n_key167,4182
+ bit permanent;node::permanent168,4226
+struct table 175,4321
+ char init_stat;table::init_stat177,4406
+ short size;table::size181,4571
+ short hashsize;table::hashsize182,4584
+ short free_slot;table::free_slot183,4601
+ Pname* entries;table::entries184,4651
+ short* hashtbl;table::hashtbl185,4668
+ Pstmt real_block;table::real_block186,4685
+ Ptable next;table::next189,4787
+ Pname t_name;table::t_name190,4834
+ void set_scope(table::set_scope198,4988
+ void set_name(table::set_name199,5029
+ int max(table::max201,5091
+#define DEFINED 230,5655
+#define SIMPLIFIED 231,5712
+#define DEF_SEEN 232,5754
+#define IN_ERROR 234,5859
+struct type 236,5881
+ bit defined;type::defined237,5902
+ TOK integral(type::integral255,6278
+ TOK numeric(type::numeric256,6324
+ TOK num_ptr(type::num_ptr257,6370
+struct enumdef 265,6500
+ bit e_body;enumdef::e_body266,6535
+ short no_of_enumerators;enumdef::no_of_enumerators267,6548
+ Pname mem;enumdef::mem268,6574
+ enumdef(enumdef::enumdef269,6586
+struct classdef 278,6732
+ bit pubbase;classdef::pubbase279,6769
+ bit c_body;classdef::c_body280,6783
+ TOK csu;classdef::csu281,6830
+ char obj_align;classdef::obj_align282,6877
+ char bit_ass;classdef::bit_ass283,6894
+ char virt_count;classdef::virt_count284,6943
+ Pname clbase;classdef::clbase286,7033
+ char* string;classdef::string287,7063
+ Pname mem_list;classdef::mem_list288,7099
+ Ptable memtbl;classdef::memtbl289,7116
+ int obj_size;classdef::obj_size290,7132
+ int real_size;classdef::real_size291,7147
+ Plist friend_list;classdef::friend_list292,7196
+ Pname pubdef;classdef::pubdef293,7216
+ Plist tn_list;classdef::tn_list294,7231
+ Pclass in_class;classdef::in_class295,7289
+ Ptype this_type;classdef::this_type296,7335
+ Pname* virt_init;classdef::virt_init297,7353
+ Pname itor;classdef::itor298,7412
+ Pname conv;classdef::conv299,7450
+ TOK is_simple(classdef::is_simple302,7506
+ Pname has_ctor(classdef::has_ctor314,7759
+ Pname has_dtor(classdef::has_dtor315,7813
+ Pname has_itor(classdef::has_itor316,7867
+struct basetype 323,7935
+ bit b_unsigned;basetype::b_unsigned334,8195
+ bit b_const;basetype::b_const335,8212
+ bit b_typedef;basetype::b_typedef336,8226
+ bit b_inline;basetype::b_inline337,8242
+ bit b_virtual;basetype::b_virtual338,8257
+ bit b_short;basetype::b_short339,8273
+ bit b_long;basetype::b_long340,8287
+ char b_bits;basetype::b_bits341,8300
+ char b_offset;basetype::b_offset342,8345
+ TOK b_sto;basetype::b_sto343,8384
+ Pname b_name;basetype::b_name344,8433
+ Ptable b_table;basetype::b_table345,8478
+ Pexpr b_field;basetype::b_field346,8525
+ Pname b_xname;basetype::b_xname347,8582
+ Ptype b_fieldtype;basetype::b_fieldtype348,8615
+struct fct 365,8857
+ TOK nargs;fct::nargs367,8885
+ TOK nargs_known;fct::nargs_known368,8897
+ char f_virtual;fct::f_virtual369,8940
+ char f_inline;fct::f_inline370,8991
+ Ptype returns;fct::returns371,9052
+ Pname argtype;fct::argtype372,9068
+ Ptype s_returns;fct::s_returns373,9084
+ Pname f_this;fct::f_this374,9102
+ Pclass memof;fct::memof375,9117
+ Pblock body;fct::body376,9158
+ Pname f_init;fct::f_init377,9172
+ Pexpr b_init;fct::b_init380,9295
+ Pexpr f_expr;fct::f_expr383,9389
+ Pexpr last_expanded;fct::last_expanded384,9441
+ Pname f_result;fct::f_result385,9463
+ bit declared(fct::declared396,9724
+struct name_list 403,9827
+ Pname f;name_list::f404,9846
+ Plist l;name_list::l405,9856
+ name_list(name_list::name_list406,9866
+struct gen 410,9931
+ Plist fct_list;gen::fct_list411,9964
+ char* string;gen::string412,9981
+struct pvtyp 419,10071
+ Ptype typ;pvtyp::typ420,10093
+struct vec 423,10109
+ Pexpr dim;vec::dim426,10157
+ int size;vec::size427,10169
+ vec(vec::vec429,10182
+struct ptr 435,10289
+ Pclass memof;ptr::memof437,10339
+ bit rdo;ptr::rdo438,10395
+ ptr(ptr::ptr440,10419
+inline Pptr type::addrof(447,10546
+struct expr 469,11113
+ Ptype tp;expr::tp481,11414
+ int syn_class;expr::syn_class482,11426
+ Pexpr e1;expr::e1485,11456
+ char* string;expr::string486,11468
+ int i1;expr::i1487,11484
+ Pexpr e2;expr::e2490,11507
+ Pexpr n_initializer;expr::n_initializer491,11519
+ char* string2;expr::string2492,11542
+ Ptype tp2;expr::tp2495,11608
+ Pname fct_name;expr::fct_name496,11621
+ Pexpr cond;expr::cond497,11639
+ Pname mem;expr::mem498,11653
+ Ptype as_type;expr::as_type499,11666
+ Ptable n_table;expr::n_table500,11683
+ Pin il;expr::il501,11701
+struct texpr 527,12108
+ texpr(texpr::texpr528,12149
+struct ival 531,12218
+ ival(ival::ival532,12258
+struct call 535,12308
+ call(call::call536,12338
+struct qexpr 543,12453
+ qexpr(qexpr::qexpr544,12500
+struct ref 547,12582
+ ref(ref::ref548,12632
+struct text_expr 551,12697
+ text_expr(text_expr::text_expr552,12731
+struct name 557,12884
+ TOK n_oper;name::n_oper558,12948
+ TOK n_sto;name::n_sto559,12987
+ TOK n_stclass;name::n_stclass560,13038
+ TOK n_scope;name::n_scope561,13080
+ unsigned char n_union;name::n_union562,13129
+ bit n_evaluated;name::n_evaluated563,13173
+ bit n_xref;name::n_xref564,13221
+ unsigned char lex_level;name::lex_level565,13261
+ TOK n_protect;name::n_protect566,13287
+ short n_addr_taken;name::n_addr_taken567,13337
+ short n_used;name::n_used568,13358
+ short n_assigned_to;name::n_assigned_to569,13373
+ Loc where;name::where570,13395
+ int n_val;name::n_val571,13407
+ int n_offset;name::n_offset574,13518
+ Pname n_list;name::n_list575,13567
+ Pname n_tbl_list;name::n_tbl_list576,13582
+ Pname n_qualifier;name::n_qualifier578,13610
+ Ptable n_realscope;name::n_realscope579,13659
+ void unhide(name::unhide592,13929
+ void use(name::use596,14025
+ void take_addr(name::take_addr598,14069
+struct stmt 615,14374
+ Pstmt s;stmt::s617,14479
+ Pstmt s_list;stmt::s_list618,14489
+ Loc where;stmt::where619,14504
+ Pname d;stmt::d621,14525
+ Pexpr e2;stmt::e2622,14536
+ Pstmt has_default;stmt::has_default623,14548
+ int case_value;stmt::case_value624,14569
+ Ptype ret_tp;stmt::ret_tp625,14587
+ Pexpr e;stmt::e628,14616
+ bit own_tbl;stmt::own_tbl629,14627
+ Pstmt s2;stmt::s2630,14642
+ Ptable memtbl;stmt::memtbl632,14658
+ Pstmt for_init;stmt::for_init634,14683
+ Pstmt else_stmt;stmt::else_stmt635,14701
+ Pstmt case_list;stmt::case_list636,14720
+ bit empty;stmt::empty637,14739
+struct estmt 662,15111
+ estmt(estmt::estmt669,15303
+struct ifstmt 672,15379
+ ifstmt(ifstmt::ifstmt676,15484
+struct lstmt 680,15586
+ lstmt(lstmt::lstmt686,15650
+struct forstmt 689,15728
+ forstmt(forstmt::forstmt690,15759
+struct block 694,15880
+ block(block::block695,15919
+struct pair 703,16060
+ pair(pair::pair704,16096
+struct nlist 708,16173
+ Pname head;nlist::head709,16188
+ Pname tail;nlist::tail710,16201
+ void add(nlist::add712,16230
+struct slist 718,16344
+ Pstmt head;slist::head719,16359
+ Pstmt tail;slist::tail720,16372
+ slist(slist::slist721,16385
+ void add(slist::add722,16430
+struct elist 727,16521
+ Pexpr head;elist::head728,16536
+ Pexpr tail;elist::tail729,16549
+ elist(elist::elist730,16562
+ void add(elist::add731,16607
+struct dcl_context 739,16739
+ Pname c_this;dcl_context::c_this740,16760
+ Ptype tot;dcl_context::tot741,16802
+ Pname not;dcl_context::not742,16840
+ Pclass cot;dcl_context::cot743,16886
+ Ptable ftbl;dcl_context::ftbl744,16938
+ Pname nof;dcl_context::nof745,16985
+ void stack(dcl_context::stack747,17023
+ void unstack(dcl_context::unstack748,17064
+#define MAXCONT 751,17095
+const MIA 779,17690
+struct iline 780,17705
+ Pname fct_name;iline::fct_name781,17720
+ Pin i_next;iline::i_next782,17754
+ Ptable i_table;iline::i_table783,17767
+ Pname local[iline::local784,17784
+ Pexpr arg[iline::arg785,17838
+ Ptype tp[iline::tp786,17887
+#define FUDGE111 791,17985
+#define DB(831,18890
+#define DB(833,18920
+
+cp-src/burton.cpp,103
+::dummy::dummy test::dummy1(1,0
+::dummy::dummy test::dummy2(6,64
+::dummy::dummy test::dummy3(11,143
+
+cp-src/functions.cpp,807
+void Date::setDate 5,148
+void Date::plus 32,939
+void Date::minus 42,1229
+void Date::shift 52,1407
+Date & Date::operator = Date::operator =62,1628
+Date & Date::operator += Date::operator +=69,1789
+Date & Date::operator -= Date::operator -=78,1939
+Date & Date::operator ++ Date::operator ++87,2080
+Date & Date::operator -- Date::operator --96,2216
+int Date::operator - Date::operator -104,2331
+int Date::operator < Date::operator <112,2483
+int Date::operator > Date::operator >116,2557
+int Date::operator == Date::operator ==120,2631
+ostream& operator << operator <<124,2707
+istream& operator >> operator >>133,2943
+bool isLeap 159,3543
+bool isHoliday 163,3629
+void asort(173,3865
+void ReadVacation 186,4064
+void Debug 201,4523
+int WorkingDays(211,4867
+Date StartDay(226,5129
+
+cp-src/MDiagArray2.h,709
+#define octave_MDiagArray2_h 29,870
+#undef LTGT35,967
+#define LTGT39,1031
+#define LTGT 42,1051
+class MDiagArray2 78,2022
+ MDiagArray2 MDiagArray2::MDiagArray282,2077
+ MDiagArray2 MDiagArray2::MDiagArray286,2154
+ MDiagArray2 MDiagArray2::MDiagArray287,2198
+ MDiagArray2 MDiagArray2::MDiagArray288,2254
+ MDiagArray2 MDiagArray2::MDiagArray289,2329
+ MDiagArray2 MDiagArray2::MDiagArray290,2387
+ MDiagArray2 MDiagArray2::MDiagArray291,2450
+ ~MDiagArray2 MDiagArray2::~MDiagArray293,2515
+ MDiagArray2<T>& operator = MDiagArray2::operator =95,2542
+ operator MArray2<T> MDiagArray2::operator MArray2<T>101,2667
+#undef LTGT144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887
+
+cp-src/Pctest.h,665
+#define PCTEST_H24,837
+ PctestActionValid,::PctestActionValid47,1286
+ PctestActionValidLasthop,::PctestActionValidLasthop49,1370
+ PctestActionFiltered,::PctestActionFiltered51,1481
+ PctestActionAbort ::PctestActionAbort53,1566
+} PctestActionType;54,1616
+class Pctest 56,1637
+ Pctest(Pctest::Pctest59,1663
+ virtual ~Pctest(Pctest::~Pctest65,1813
+ virtual char *GetTargetName(Pctest::GetTargetName77,2171
+ virtual PctestActionType GetAction(Pctest::GetAction86,2555
+ int initialized;Pctest::initialized93,2698
+ char *targetName;Pctest::targetName94,2743
+ struct timeval syscallTime;Pctest::syscallTime95,2785
+
+cp-src/Range.h,595
+#define octave_Range_h 24,765
+Range35,891
+ Range Range::Range39,909
+ Range Range::Range42,995
+ Range Range::Range46,1130
+ Range Range::Range50,1248
+ double base Range::base54,1376
+ double limit Range::limit55,1425
+ double inc Range::inc56,1475
+ int nelem Range::nelem57,1523
+ void set_base Range::set_base68,1728
+ void set_limit Range::set_limit69,1774
+ void set_inc Range::set_inc70,1821
+ double rng_base;Range::rng_base79,2023
+ double rng_limit;Range::rng_limit80,2042
+ double rng_inc;Range::rng_inc81,2062
+ int rng_nelem;Range::rng_nelem83,2081
+
+cp-src/screen.cpp,228
+unsigned char cursor_x,15,548
+unsigned char cursor_x, cursor_y;15,548
+static union REGS regs;16,582
+void goto_xy(18,607
+void hide_cursor(27,774
+void cursor_position(32,836
+void clear_screen(41,997
+void write_xyc(55,1247
+
+cp-src/screen.hpp,667
+#define __COLORS9,401
+enum COLORS 11,419
+ BLACK,COLORS::BLACK12,433
+ BLUE,COLORS::BLUE13,471
+ GREEN,COLORS::GREEN14,481
+ CYAN,COLORS::CYAN15,492
+ RED,COLORS::RED16,502
+ MAGENTA,COLORS::MAGENTA17,511
+ BROWN,COLORS::BROWN18,524
+ LIGHTGRAY,COLORS::LIGHTGRAY19,535
+ DARKGRAY,COLORS::DARKGRAY20,550
+ LIGHTBLUE,COLORS::LIGHTBLUE21,589
+ LIGHTGREEN,COLORS::LIGHTGREEN22,604
+ LIGHTCYAN,COLORS::LIGHTCYAN23,620
+ LIGHTRED,COLORS::LIGHTRED24,635
+ LIGHTMAGENTA,COLORS::LIGHTMAGENTA25,649
+ YELLOW,COLORS::YELLOW26,667
+ WHITECOLORS::WHITE27,679
+#define SCREEN_FP(31,700
+#define SCREEN_START 33,795
+
+cp-src/conway.cpp,270
+#define max(12,357
+#define min(13,393
+const int num_rows 15,430
+const int num_columns 16,470
+class site *field_of_play[field_of_play18,499
+int site::total_surrounding(20,550
+void display(37,958
+void glider(50,1239
+void traffic_light(59,1478
+void main(67,1633
+
+cp-src/conway.hpp,396
+class site:site5,235
+ char x,site::x7,269
+ char x, y,site::y7,269
+ char x, y, alive,site::alive7,269
+ char x, y, alive, next_alive;site::next_alive7,269
+ site(site::site10,344
+ char read(site::read12,410
+ void set(site::set13,444
+ void clear(site::clear14,478
+ void compute_next_state(site::compute_next_state15,514
+ void step(site::step22,717
+
+cp-src/clheir.cpp,307
+const int max_num_generic_objects 9,298
+generic_object * object_registry[object_registry10,340
+void init_registry(12,400
+void step_everybody(19,527
+void discrete_location::clear_neighbors(31,852
+generic_object::generic_object(36,981
+generic_object::~generic_object(48,1255
+void agent::move(53,1353
+
+cp-src/clheir.hpp,1057
+class generic_object13,520
+ int where_in_registry;generic_object::where_in_registry15,547
+ virtual void compute_next_state(generic_object::compute_next_state21,842
+ virtual void step(generic_object::step22,888
+const int max_num_directions 31,1219
+class location:location33,1289
+ location(location::location43,1642
+class irregular_location:irregular_location47,1686
+ double x,irregular_location::x49,1734
+ double x, y,irregular_location::y49,1734
+ double x, y, z;irregular_location::z49,1734
+ irregular_location(irregular_location::irregular_location51,1762
+class discrete_location:discrete_location56,1889
+ int x,discrete_location::x58,1936
+ int x, y,discrete_location::y58,1936
+ int x, y, z;discrete_location::z58,1936
+ class location *neighbors[discrete_location::neighbors59,1953
+ discrete_location(discrete_location::discrete_location62,2044
+ void assign_neighbor(discrete_location::assign_neighbor66,2184
+class agent:agent75,2508
+ location *where;agent::where77,2549
+
+cp-src/fail.C,417
+struct A 7,263
+ struct B A::B8,274
+ struct C A::B::C9,289
+ int x;A::B::C::x10,305
+ C(A::B::C::C11,318
+ operator int(A::B::C::operator int12,342
+ typedef C T;A::B::T14,389
+ typedef B T2;A::T216,414
+class A 23,453
+ class B A::B24,463
+ class C A::B::C25,474
+ int f(A::B::f26,488
+int A::B::f(31,521
+main(37,571
+ class D 41,622
+ D(D::D43,659
+ int x;D::x44,694
+
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch 1,0
+(defalias 'pending-delete-mode pending-delete-mode5,102
+(defalias (quote explicitly-quoted-pending-delete-mode)8,175
+
+el-src/emacs/lisp/progmodes/etags.el,5069
+(defvar tags-file-name 34,1034
+(defgroup etags 43,1498
+(defcustom tags-case-fold-search 47,1566
+(defcustom tags-table-list 59,2051
+(defcustom tags-compression-info-list69,2449
+(defcustom tags-add-tables 88,3231
+(defcustom tags-revert-without-query 98,3627
+(defvar tags-table-computed-list 103,3778
+(defvar tags-table-computed-list-for 112,4262
+(defvar tags-table-list-pointer 117,4510
+(defvar tags-table-list-started-at 121,4701
+(defvar tags-table-set-list 124,4821
+(defcustom find-tag-hook 129,5000
+(defcustom find-tag-default-function 137,5263
+(define-obsolete-variable-alias
'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602
+(defcustom tags-tag-face 148,5699
+(defcustom tags-apropos-verbose 154,5834
+(defcustom tags-apropos-additional-actions 160,5998
+(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917
+(defvar default-tags-table-function 189,7097
+(defvar tags-location-ring 194,7323
+(defvar tags-table-files 201,7599
+(defvar tags-completion-table 206,7766
+(defvar tags-included-tables 209,7858
+(defvar next-file-list 212,7953
+(defvar tags-table-format-functions 217,8059
+(defvar file-of-tag-function 224,8440
+(defvar tags-table-files-function 228,8634
+(defvar tags-completion-table-function 230,8745
+(defvar snarf-tag-function 232,8840
+(defvar goto-tag-location-function 236,9049
+(defvar find-tag-regexp-search-function 239,9222
+(defvar find-tag-regexp-tag-order 241,9343
+(defvar find-tag-regexp-next-line-after-failure-p 243,9452
+(defvar find-tag-search-function 245,9572
+(defvar find-tag-tag-order 247,9679
+(defvar find-tag-next-line-after-failure-p 249,9774
+(defvar list-tags-function 251,9880
+(defvar tags-apropos-function 253,9968
+(defvar tags-included-tables-function 255,10062
+(defvar verify-tags-table-function 257,10181
+(defun initialize-new-tags-table 260,10292
+(defun tags-table-mode 276,10980
+(defun visit-tags-table 285,11245
+(defun tags-table-check-computed-list 321,12783
+(defun tags-table-extend-computed-list 360,14654
+(defun tags-expand-table-name 400,16367
+(defun tags-table-list-member 409,16710
+(defun tags-verify-table 421,17182
+(defun tags-table-including 470,19302
+(defun tags-next-table 522,21346
+(defun visit-tags-table-buffer 543,22203
+(defun tags-reset-tags-tables 712,28513
+(defun file-of-tag 731,29170
+(defun tags-table-files 740,29519
+(defun tags-included-tables 749,29869
+(defun tags-completion-table 755,30115
+(defun tags-lazy-completion-table 783,31309
+(defun tags-completion-at-point-function 799,31944
+(defun find-tag-tag 818,32694
+(defvar last-tag 837,33367
+(defun find-tag-interactive 840,33426
+(defvar find-tag-history 852,33841
+(defun find-tag-noselect 860,34011
+(defun find-tag 932,37125
+(defun find-tag-other-window 959,38341
+(defun find-tag-other-frame 1000,40269
+(defun find-tag-regexp 1025,41443
+(defalias 'pop-tag-mark pop-tag-mark1049,42605
+(defvar tag-lines-already-matched 1052,42656
+(defun find-tag-in-order 1055,42763
+(defun tag-find-file-of-tag-noselect 1167,47109
+(defun tag-find-file-of-tag 1200,48955
+(defun etags-recognize-tags-table 1208,49181
+(defun etags-verify-tags-table 1241,50812
+(defun etags-file-of-tag 1246,51010
+(defun etags-tags-completion-table 1256,51345
+(defun etags-snarf-tag 1286,52551
+(defun etags-goto-tag-location 1324,54120
+(defun etags-list-tags 1388,56563
+(defmacro tags-with-face 1423,57838
+(defun etags-tags-apropos-additional 1431,58171
+(defun etags-tags-apropos 1465,59408
+(defun etags-tags-table-files 1527,61617
+(defun etags-tags-included-tables 1542,62053
+(defun tags-recognize-empty-tags-table 1559,62593
+(defun tag-exact-file-name-match-p 1587,63739
+(defun tag-file-name-match-p 1596,64132
+(defun tag-exact-match-p 1609,64688
+(defun tag-implicit-name-match-p 1620,65256
+(defun tag-symbol-match-p 1633,65856
+(defun tag-word-match-p 1643,66292
+(defun tag-partial-file-name-match-p 1652,66690
+(defun tag-any-match-p 1662,67134
+(defun tag-re-match-p 1667,67318
+(defcustom tags-loop-revert-buffers 1675,67567
+(defun next-file 1685,67976
+(defvar tags-loop-operate 1760,70890
+(defvar tags-loop-scan1763,70984
+(defun tags-loop-eval 1771,71314
+(defun tags-loop-continue 1782,71643
+(defun tags-search 1850,73949
+(defun tags-query-replace 1871,74775
+(defun tags-complete-tags-table-file 1896,75999
+(defun list-tags 1906,76378
+(defun tags-apropos 1934,77331
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78157
+(defun select-tags-table 1964,78396
+(defvar select-tags-table-mode-map 2019,80523
+(define-derived-mode select-tags-table-mode 2030,80906
+(defun select-tags-table-select 2034,81090
+(defun select-tags-table-quit 2043,81456
+(defun complete-tag 2049,81611
+(defconst etags--xref-limit 2074,82552
+(defvar etags-xref-find-definitions-tag-order 2076,82587
+(defun etags-xref-find 2082,82877
+(defun etags--xref-find-definitions 2096,83406
+(defclass xref-etags-location 2129,85121
+(defun xref-make-etags-location 2135,85344
+(cl-defmethod xref-location-marker 2139,85499
+(cl-defmethod xref-location-line 2146,85743
+
+erl-src/gs_dialog.erl,98
+-define(VERSION2,32
+behaviour_info(51,2177
+show(124,5458
+dialog_loop(219,9529
+test(252,10806
+
+erl-src/lines.erl,386
+-define(BREAK66,2377
+-define(dbg68,2437
+new(73,2565
+count(80,2686
+nth(87,2815
+append(104,3301
+replace(119,3816
+insert(138,4559
+insert_after(165,5501
+delete(192,6456
+convert_to_list(215,7110
+convert_from_list(220,7259
+replace_nth(229,7518
+insert_nth(234,7618
+insert_after_nth(239,7711
+delete_nth(244,7828
+split_at(252,8027
+balance_left(267,8451
+balance_right(282,8865
+
+erl-src/lists.erl,593
+member(21,663
+append(30,790
+reverse(48,1099
+nth(59,1310
+nthtail(64,1382
+prefix(73,1546
+suffix(83,1707
+last(92,1882
+seq(101,2058
+sum(109,2265
+duplicate(116,2432
+min(124,2628
+max(132,2837
+sublist(141,3083
+delete(152,3329
+sort(161,3483
+split_and_sort(165,3559
+merge(175,3811
+concat(190,4219
+thing_to_list(195,4300
+flatten(204,4606
+flat_length(222,5003
+keymember(239,5451
+keysearch(246,5609
+keydelete(253,5770
+keyreplace(260,5923
+keysort(266,6113
+split_and_keysort(270,6229
+keymerge(277,6504
+keymap(288,6851
+map(311,7829
+foldl(315,7919
+foldr(320,8037
+zf(325,8155
+
+f-src/entry.for,172
+ LOGICAL FUNCTION PRTPKG 3,75
+ ENTRY SETPRT 194,3866
+ ENTRY MSGSEL 395,8478
+ & intensity1(577,12231
+ character*(*) function foo(579,12307
+
+f-src/entry.strange_suffix,172
+ LOGICAL FUNCTION PRTPKG 3,75
+ ENTRY SETPRT 194,3866
+ ENTRY MSGSEL 395,8478
+ & intensity1(577,12231
+ character*(*) function foo(579,12307
+
+f-src/entry.strange,103
+ ENTRY MSGSEL 193,4382
+ & intensity1(375,8135
+ character*(*) function foo(377,8211
+
+forth-src/test-forth.fth,408
+: a-forth-word 20,301
+99 constant a-forth-constant!22,343
+55 value a-forth-value?23,373
+create :a-forth-dictionary-entry24,397
+defer #a-defer-word27,460
+: (another-forth-word)(another-forth-word29,481
+ 9 field >field136,582
+ 5 field >field237,605
+constant (a-forth-constant(a-forth-constant38,628
+2000 buffer: #some-storage41,657
+code assemby-code-word 43,685
+: a-forth-word 50,870
+
+html-src/softwarelibero.html,198
+Cos'� il software libero?4,38
+Licenze d'uso di un programmalicenze65,2474
+Sfatiamo alcuni miti138,6064
+Il movimento open sourceoss191,7968
+Impatto pratico del software liberoimpatto231,9986
+
+html-src/index.shtml,104
+ 8,281
+In evidenza15,446
+Comunicati e iniziative32,974
+Ultime notizie dall'associazione63,2027
+
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the
Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and
Quantizing Algorithms7,276
+Descriptionalgorithms10,477
+Generating the Datagenalgorithm48,1953
+Convolutionallyconalgorithm55,2463
+Nextstatetable262,11331
+Outputoutputtable350,13571
+Mapping the Channel Symbolsmapping433,15786
+Adding Noise to theaddnoise439,16174
+Quantizing the Receivedquantizing469,18637
+
+html-src/software.html,438
+Francesco Potort� Software Page9,280
+Software that I wrote for supporting my research activitysimulation36,1400
+MTGmtg41,1484
+Fracasfracas65,2626
+GaliLEOgalileo101,4234
+Leasqrleasqr114,4679
+Free software that I wrote for the GNU project or for my personal or
workgnu142,6067
+Etagsetags148,6182
+checkiso161,6731
+cgrep178,7549
+debian-bug.eldebian-bug190,7981
+tcpdump205,8566
+Links to interesting softwarelinks216,8893
+
+java-src/AWTEMul.java,4481
+public class AWTEventMulticaster 63,2111
+ protected EventListener a,AWTEventMulticaster.a69,2356
+ protected EventListener a, b;AWTEventMulticaster.b69,2356
+ protected
AWTEventMulticaster(AWTEventMulticaster.AWTEventMulticaster77,2555
+ protected EventListener remove(AWTEventMulticaster.remove86,2820
+ public void componentResized(AWTEventMulticaster.componentResized102,3294
+ public void componentMoved(AWTEventMulticaster.componentMoved112,3626
+ public void componentShown(AWTEventMulticaster.componentShown122,3952
+ public void componentHidden(AWTEventMulticaster.componentHidden132,4280
+ public void componentAdded(AWTEventMulticaster.componentAdded142,4619
+ public void componentRemoved(AWTEventMulticaster.componentRemoved152,4959
+ public void focusGained(AWTEventMulticaster.focusGained162,5281
+ public void focusLost(AWTEventMulticaster.focusLost172,5572
+ public void keyTyped(AWTEventMulticaster.keyTyped182,5853
+ public void keyPressed(AWTEventMulticaster.keyPressed192,6129
+ public void keyReleased(AWTEventMulticaster.keyReleased202,6413
+ public void mouseClicked(AWTEventMulticaster.mouseClicked212,6704
+ public void mousePressed(AWTEventMulticaster.mousePressed222,7004
+ public void mouseReleased(AWTEventMulticaster.mouseReleased232,7306
+ public void mouseEntered(AWTEventMulticaster.mouseEntered242,7609
+ public void mouseExited(AWTEventMulticaster.mouseExited252,7907
+ public void mouseDragged(AWTEventMulticaster.mouseDragged262,8204
+ public void mouseMoved(AWTEventMulticaster.mouseMoved272,8512
+ public void windowOpened(AWTEventMulticaster.windowOpened282,8819
+ public void windowClosing(AWTEventMulticaster.windowClosing292,9125
+ public void windowClosed(AWTEventMulticaster.windowClosed302,9432
+ public void windowIconified(AWTEventMulticaster.windowIconified312,9742
+ public void
windowDeiconified(AWTEventMulticaster.windowDeiconified322,10064
+ public void windowActivated(AWTEventMulticaster.windowActivated332,10389
+ public void
windowDeactivated(AWTEventMulticaster.windowDeactivated342,10712
+ public void actionPerformed(AWTEventMulticaster.actionPerformed352,11037
+ public void
itemStateChanged(AWTEventMulticaster.itemStateChanged362,11356
+ public void
adjustmentValueChanged(AWTEventMulticaster.adjustmentValueChanged372,11690
+ public void
textValueChanged(AWTEventMulticaster.textValueChanged376,11874
+ public static ComponentListener add(AWTEventMulticaster.add387,12225
+ public static ContainerListener add(AWTEventMulticaster.add397,12571
+ public static FocusListener add(AWTEventMulticaster.add407,12901
+ public static KeyListener add(AWTEventMulticaster.add417,13207
+ public static MouseListener add(AWTEventMulticaster.add427,13513
+ public static MouseMotionListener add(AWTEventMulticaster.add437,13855
+ public static WindowListener add(AWTEventMulticaster.add447,14197
+ public static ActionListener add(AWTEventMulticaster.add457,14519
+ public static ItemListener add(AWTEventMulticaster.add467,14833
+ public static AdjustmentListener add(AWTEventMulticaster.add477,15163
+ public static TextListener add(AWTEventMulticaster.add480,15310
+ public static ComponentListener
remove(AWTEventMulticaster.remove490,15664
+ public static ContainerListener
remove(AWTEventMulticaster.remove500,16044
+ public static FocusListener remove(AWTEventMulticaster.remove510,16408
+ public static KeyListener remove(AWTEventMulticaster.remove520,16748
+ public static MouseListener remove(AWTEventMulticaster.remove530,17088
+ public static MouseMotionListener
remove(AWTEventMulticaster.remove540,17465
+ public static WindowListener remove(AWTEventMulticaster.remove550,17841
+ public static ActionListener remove(AWTEventMulticaster.remove560,18197
+ public static ItemListener remove(AWTEventMulticaster.remove570,18545
+ public static AdjustmentListener
remove(AWTEventMulticaster.remove580,18909
+ public static TextListener remove(AWTEventMulticaster.remove583,19062
+ protected static EventListener
addInternal(AWTEventMulticaster.addInternal597,19608
+ protected static EventListener
removeInternal(AWTEventMulticaster.removeInternal614,20244
+ protected void saveInternal(AWTEventMulticaster.saveInternal628,20582
+ static void save(AWTEventMulticaster.save646,21131
+
+java-src/KeyEve.java,8202
+public class KeyEvent 36,1075
+ public static final int KEY_FIRST KeyEvent.KEY_FIRST41,1201
+ public static final int KEY_LAST KeyEvent.KEY_LAST46,1328
+ public static final int KEY_TYPED KeyEvent.KEY_TYPED52,1513
+ public static final int KEY_PRESSED KeyEvent.KEY_PRESSED57,1616
+ public static final int KEY_RELEASED KeyEvent.KEY_RELEASED62,1744
+ public static final int VK_ENTER KeyEvent.VK_ENTER85,2950
+ public static final int VK_BACK_SPACE KeyEvent.VK_BACK_SPACE86,3004
+ public static final int VK_TAB KeyEvent.VK_TAB87,3058
+ public static final int VK_CANCEL KeyEvent.VK_CANCEL88,3112
+ public static final int VK_CLEAR KeyEvent.VK_CLEAR89,3166
+ public static final int VK_SHIFT KeyEvent.VK_SHIFT90,3220
+ public static final int VK_CONTROL KeyEvent.VK_CONTROL91,3274
+ public static final int VK_ALT KeyEvent.VK_ALT92,3328
+ public static final int VK_PAUSE KeyEvent.VK_PAUSE93,3382
+ public static final int VK_CAPS_LOCK KeyEvent.VK_CAPS_LOCK94,3436
+ public static final int VK_ESCAPE KeyEvent.VK_ESCAPE95,3490
+ public static final int VK_SPACE KeyEvent.VK_SPACE96,3544
+ public static final int VK_PAGE_UP KeyEvent.VK_PAGE_UP97,3598
+ public static final int VK_PAGE_DOWN KeyEvent.VK_PAGE_DOWN98,3652
+ public static final int VK_END KeyEvent.VK_END99,3706
+ public static final int VK_HOME KeyEvent.VK_HOME100,3760
+ public static final int VK_LEFT KeyEvent.VK_LEFT101,3814
+ public static final int VK_UP KeyEvent.VK_UP102,3868
+ public static final int VK_RIGHT KeyEvent.VK_RIGHT103,3922
+ public static final int VK_DOWN KeyEvent.VK_DOWN104,3976
+ public static final int VK_COMMA KeyEvent.VK_COMMA105,4030
+ public static final int VK_PERIOD KeyEvent.VK_PERIOD106,4084
+ public static final int VK_SLASH KeyEvent.VK_SLASH107,4138
+ public static final int VK_0 KeyEvent.VK_0110,4268
+ public static final int VK_1 KeyEvent.VK_1111,4322
+ public static final int VK_2 KeyEvent.VK_2112,4376
+ public static final int VK_3 KeyEvent.VK_3113,4430
+ public static final int VK_4 KeyEvent.VK_4114,4484
+ public static final int VK_5 KeyEvent.VK_5115,4538
+ public static final int VK_6 KeyEvent.VK_6116,4592
+ public static final int VK_7 KeyEvent.VK_7117,4646
+ public static final int VK_8 KeyEvent.VK_8118,4700
+ public static final int VK_9 KeyEvent.VK_9119,4754
+ public static final int VK_SEMICOLON KeyEvent.VK_SEMICOLON121,4809
+ public static final int VK_EQUALS KeyEvent.VK_EQUALS122,4863
+ public static final int VK_A KeyEvent.VK_A125,4993
+ public static final int VK_B KeyEvent.VK_B126,5047
+ public static final int VK_C KeyEvent.VK_C127,5101
+ public static final int VK_D KeyEvent.VK_D128,5155
+ public static final int VK_E KeyEvent.VK_E129,5209
+ public static final int VK_F KeyEvent.VK_F130,5263
+ public static final int VK_G KeyEvent.VK_G131,5317
+ public static final int VK_H KeyEvent.VK_H132,5371
+ public static final int VK_I KeyEvent.VK_I133,5425
+ public static final int VK_J KeyEvent.VK_J134,5479
+ public static final int VK_K KeyEvent.VK_K135,5533
+ public static final int VK_L KeyEvent.VK_L136,5587
+ public static final int VK_M KeyEvent.VK_M137,5641
+ public static final int VK_N KeyEvent.VK_N138,5695
+ public static final int VK_O KeyEvent.VK_O139,5749
+ public static final int VK_P KeyEvent.VK_P140,5803
+ public static final int VK_Q KeyEvent.VK_Q141,5857
+ public static final int VK_R KeyEvent.VK_R142,5911
+ public static final int VK_S KeyEvent.VK_S143,5965
+ public static final int VK_T KeyEvent.VK_T144,6019
+ public static final int VK_U KeyEvent.VK_U145,6073
+ public static final int VK_V KeyEvent.VK_V146,6127
+ public static final int VK_W KeyEvent.VK_W147,6181
+ public static final int VK_X KeyEvent.VK_X148,6235
+ public static final int VK_Y KeyEvent.VK_Y149,6289
+ public static final int VK_Z KeyEvent.VK_Z150,6343
+ public static final int VK_OPEN_BRACKET KeyEvent.VK_OPEN_BRACKET152,6398
+ public static final int VK_BACK_SLASH KeyEvent.VK_BACK_SLASH153,6452
+ public static final int VK_CLOSE_BRACKET
KeyEvent.VK_CLOSE_BRACKET154,6506
+ public static final int VK_NUMPAD0 KeyEvent.VK_NUMPAD0156,6561
+ public static final int VK_NUMPAD1 KeyEvent.VK_NUMPAD1157,6615
+ public static final int VK_NUMPAD2 KeyEvent.VK_NUMPAD2158,6669
+ public static final int VK_NUMPAD3 KeyEvent.VK_NUMPAD3159,6723
+ public static final int VK_NUMPAD4 KeyEvent.VK_NUMPAD4160,6777
+ public static final int VK_NUMPAD5 KeyEvent.VK_NUMPAD5161,6831
+ public static final int VK_NUMPAD6 KeyEvent.VK_NUMPAD6162,6885
+ public static final int VK_NUMPAD7 KeyEvent.VK_NUMPAD7163,6939
+ public static final int VK_NUMPAD8 KeyEvent.VK_NUMPAD8164,6993
+ public static final int VK_NUMPAD9 KeyEvent.VK_NUMPAD9165,7047
+ public static final int VK_MULTIPLY KeyEvent.VK_MULTIPLY166,7101
+ public static final int VK_ADD KeyEvent.VK_ADD167,7155
+ public static final int VK_SEPARATER KeyEvent.VK_SEPARATER168,7209
+ public static final int VK_SUBTRACT KeyEvent.VK_SUBTRACT169,7263
+ public static final int VK_DECIMAL KeyEvent.VK_DECIMAL170,7317
+ public static final int VK_DIVIDE KeyEvent.VK_DIVIDE171,7371
+ public static final int VK_F1 KeyEvent.VK_F1172,7425
+ public static final int VK_F2 KeyEvent.VK_F2173,7479
+ public static final int VK_F3 KeyEvent.VK_F3174,7533
+ public static final int VK_F4 KeyEvent.VK_F4175,7587
+ public static final int VK_F5 KeyEvent.VK_F5176,7641
+ public static final int VK_F6 KeyEvent.VK_F6177,7695
+ public static final int VK_F7 KeyEvent.VK_F7178,7749
+ public static final int VK_F8 KeyEvent.VK_F8179,7803
+ public static final int VK_F9 KeyEvent.VK_F9180,7857
+ public static final int VK_F10 KeyEvent.VK_F10181,7911
+ public static final int VK_F11 KeyEvent.VK_F11182,7965
+ public static final int VK_F12 KeyEvent.VK_F12183,8019
+ public static final int VK_DELETE KeyEvent.VK_DELETE184,8073
+ public static final int VK_NUM_LOCK KeyEvent.VK_NUM_LOCK185,8143
+ public static final int VK_SCROLL_LOCK KeyEvent.VK_SCROLL_LOCK186,8197
+ public static final int VK_PRINTSCREEN KeyEvent.VK_PRINTSCREEN188,8252
+ public static final int VK_INSERT KeyEvent.VK_INSERT189,8306
+ public static final int VK_HELP KeyEvent.VK_HELP190,8360
+ public static final int VK_META KeyEvent.VK_META191,8414
+ public static final int VK_BACK_QUOTE KeyEvent.VK_BACK_QUOTE193,8469
+ public static final int VK_QUOTE KeyEvent.VK_QUOTE194,8523
+ public static final int VK_FINAL KeyEvent.VK_FINAL197,8608
+ public static final int VK_CONVERT KeyEvent.VK_CONVERT198,8662
+ public static final int VK_NONCONVERT KeyEvent.VK_NONCONVERT199,8716
+ public static final int VK_ACCEPT KeyEvent.VK_ACCEPT200,8770
+ public static final int VK_MODECHANGE KeyEvent.VK_MODECHANGE201,8824
+ public static final int VK_KANA KeyEvent.VK_KANA202,8878
+ public static final int VK_KANJI KeyEvent.VK_KANJI203,8932
+ public static final int VK_UNDEFINED KeyEvent.VK_UNDEFINED208,9062
+ public static final char CHAR_UNDEFINED KeyEvent.CHAR_UNDEFINED214,9259
+ int keyCode;KeyEvent.keyCode216,9313
+ char keyChar;KeyEvent.keyChar217,9331
+ private static final long serialVersionUID
KeyEvent.serialVersionUID222,9398
+ public KeyEvent(KeyEvent.KeyEvent234,9912
+ public KeyEvent(KeyEvent.KeyEvent252,10510
+ public int getKeyCode(KeyEvent.getKeyCode261,10836
+ public void setKeyCode(KeyEvent.setKeyCode265,10897
+ public void setKeyChar(KeyEvent.setKeyChar269,10978
+ public void setModifiers(KeyEvent.setModifiers273,11060
+ public char getKeyChar(KeyEvent.getKeyChar282,11331
+ public static String getKeyText(KeyEvent.getKeyText290,11561
+ public static String
getKeyModifiersText(KeyEvent.getKeyModifiersText377,16662
+ public boolean isActionKey(KeyEvent.isActionKey403,17618
+ public String paramString(KeyEvent.paramString407,17704
+
+java-src/SMan.java,5231
+class SecurityManager 80,3387
+ protected boolean inCheck;SecurityManager.inCheck87,3576
+ private boolean initialized SecurityManager.initialized90,3678
+ public boolean getInCheck(SecurityManager.getInCheck101,4075
+ protected SecurityManager(SecurityManager.SecurityManager114,4497
+ protected Class
currentLoadedClass(SecurityManager.currentLoadedClass149,5707
+ protected boolean inClass(SecurityManager.inClass184,7034
+ protected boolean inClassLoader(SecurityManager.inClassLoader196,7372
+ public Object
getSecurityContext(SecurityManager.getSecurityContext221,8485
+ public void
checkCreateClassLoader(SecurityManager.checkCreateClassLoader238,9069
+ public void checkAccess(SecurityManager.checkAccess268,10298
+ public void checkAccess(SecurityManager.checkAccess298,11632
+ public void checkExit(SecurityManager.checkExit323,12649
+ public void checkExec(SecurityManager.checkExec349,13734
+ public void checkLink(SecurityManager.checkLink375,14813
+ public void checkRead(SecurityManager.checkRead394,15485
+ public void checkRead(SecurityManager.checkRead412,16111
+ public void checkRead(SecurityManager.checkRead434,17017
+ public void checkWrite(SecurityManager.checkWrite453,17706
+ public void checkWrite(SecurityManager.checkWrite471,18337
+ public void checkDelete(SecurityManager.checkDelete493,19165
+ public void checkConnect(SecurityManager.checkConnect517,20119
+ public void checkConnect(SecurityManager.checkConnect543,21254
+ public void checkListen(SecurityManager.checkListen561,21910
+ public void checkAccept(SecurityManager.checkAccept585,22887
+ public void checkMulticast(SecurityManager.checkMulticast597,23272
+ public void checkMulticast(SecurityManager.checkMulticast610,23732
+ public void
checkPropertiesAccess(SecurityManager.checkPropertiesAccess632,24609
+ public void
checkPropertyAccess(SecurityManager.checkPropertyAccess654,25449
+ public boolean
checkTopLevelWindow(SecurityManager.checkTopLevelWindow680,26580
+ public void
checkPrintJobAccess(SecurityManager.checkPrintJobAccess689,26763
+ public void
checkSystemClipboardAccess(SecurityManager.checkSystemClipboardAccess698,26958
+ public void
checkAwtEventQueueAccess(SecurityManager.checkAwtEventQueueAccess707,27159
+ public void
checkPackageAccess(SecurityManager.checkPackageAccess729,27966
+ public void
checkPackageDefinition(SecurityManager.checkPackageDefinition751,28803
+ public void checkSetFactory(SecurityManager.checkSetFactory775,29929
+ public void checkMemberAccess(SecurityManager.checkMemberAccess786,30209
+ public void
checkSecurityAccess(SecurityManager.checkSecurityAccess796,30430
+ public ThreadGroup getThreadGroup(SecurityManager.getThreadGroup811,30923
+class NullSecurityManager 817,31025
+ public void
checkCreateClassLoader(NullSecurityManager.checkCreateClassLoader818,31077
+ public void checkAccess(NullSecurityManager.checkAccess819,31123
+ public void checkAccess(NullSecurityManager.checkAccess820,31165
+ public void checkExit(NullSecurityManager.checkExit821,31212
+ public void checkExec(NullSecurityManager.checkExec822,31254
+ public void checkLink(NullSecurityManager.checkLink823,31296
+ public void checkRead(NullSecurityManager.checkRead824,31338
+ public void checkRead(NullSecurityManager.checkRead825,31387
+ public void checkRead(NullSecurityManager.checkRead826,31430
+ public void checkWrite(NullSecurityManager.checkWrite827,31489
+ public void checkWrite(NullSecurityManager.checkWrite828,31539
+ public void checkDelete(NullSecurityManager.checkDelete829,31583
+ public void checkConnect(NullSecurityManager.checkConnect830,31628
+ public void checkConnect(NullSecurityManager.checkConnect831,31684
+ public void checkListen(NullSecurityManager.checkListen832,31756
+ public void checkAccept(NullSecurityManager.checkAccept833,31798
+ public void checkMulticast(NullSecurityManager.checkMulticast834,31853
+ public void checkMulticast(NullSecurityManager.checkMulticast835,31907
+ public void
checkPropertiesAccess(NullSecurityManager.checkPropertiesAccess836,31971
+ public void
checkPropertyAccess(NullSecurityManager.checkPropertyAccess837,32015
+ public void
checkPropertyAccess(NullSecurityManager.checkPropertyAccess838,32067
+ public boolean
checkTopLevelWindow(NullSecurityManager.checkTopLevelWindow839,32131
+ public void
checkPrintJobAccess(NullSecurityManager.checkPrintJobAccess840,32202
+ public void
checkSystemClipboardAccess(NullSecurityManager.checkSystemClipboardAccess841,32244
+ public void
checkAwtEventQueueAccess(NullSecurityManager.checkAwtEventQueueAccess842,32293
+ public void
checkPackageAccess(NullSecurityManager.checkPackageAccess843,32340
+ public void
checkPackageDefinition(NullSecurityManager.checkPackageDefinition844,32391
+ public void checkSetFactory(NullSecurityManager.checkSetFactory845,32446
+ public void
checkMemberAccess(NullSecurityManager.checkMemberAccess846,32484
+ public void
checkSecurityAccess(NullSecurityManager.checkSecurityAccess847,32546
+
+java-src/SysCol.java,4721
+public final class SystemColor 37,1402
+ public final static int DESKTOP SystemColor.DESKTOP42,1555
+ public final static int ACTIVE_CAPTION SystemColor.ACTIVE_CAPTION47,1677
+ public final static int ACTIVE_CAPTION_TEXT
SystemColor.ACTIVE_CAPTION_TEXT52,1800
+ public final static int ACTIVE_CAPTION_BORDER
SystemColor.ACTIVE_CAPTION_BORDER57,1930
+ public final static int INACTIVE_CAPTION
SystemColor.INACTIVE_CAPTION62,2068
+ public final static int INACTIVE_CAPTION_TEXT
SystemColor.INACTIVE_CAPTION_TEXT67,2195
+ public final static int INACTIVE_CAPTION_BORDER
SystemColor.INACTIVE_CAPTION_BORDER72,2329
+ public final static int WINDOW SystemColor.WINDOW77,2459
+ public final static int WINDOW_BORDER SystemColor.WINDOW_BORDER82,2568
+ public final static int WINDOW_TEXT SystemColor.WINDOW_TEXT87,2682
+ public final static int MENU SystemColor.MENU92,2798
+ public final static int MENU_TEXT SystemColor.MENU_TEXT97,2902
+ public final static int TEXT SystemColor.TEXT102,3017
+ public final static int TEXT_TEXT SystemColor.TEXT_TEXT107,3121
+ public final static int TEXT_HIGHLIGHT SystemColor.TEXT_HIGHLIGHT112,3235
+ public final static int TEXT_HIGHLIGHT_TEXT
SystemColor.TEXT_HIGHLIGHT_TEXT117,3359
+ public final static int TEXT_INACTIVE_TEXT
SystemColor.TEXT_INACTIVE_TEXT122,3487
+ public final static int CONTROL SystemColor.CONTROL127,3614
+ public final static int CONTROL_TEXT SystemColor.CONTROL_TEXT132,3724
+ public final static int CONTROL_HIGHLIGHT
SystemColor.CONTROL_HIGHLIGHT137,3844
+ public final static int CONTROL_LT_HIGHLIGHT
SystemColor.CONTROL_LT_HIGHLIGHT142,3975
+ public final static int CONTROL_SHADOW SystemColor.CONTROL_SHADOW147,4100
+ public final static int CONTROL_DK_SHADOW
SystemColor.CONTROL_DK_SHADOW152,4224
+ public final static int SCROLLBAR SystemColor.SCROLLBAR157,4352
+ public final static int INFO SystemColor.INFO162,4467
+ public final static int INFO_TEXT SystemColor.INFO_TEXT167,4571
+ public final static int NUM_COLORS SystemColor.NUM_COLORS172,4681
+ public final static SystemColor desktop SystemColor.desktop177,4790
+ public final static SystemColor activeCaption
SystemColor.activeCaption182,4945
+ public final static SystemColor activeCaptionText
SystemColor.activeCaptionText187,5107
+ public final static SystemColor activeCaptionBorder
SystemColor.activeCaptionBorder192,5280
+ public final static SystemColor inactiveCaption
SystemColor.inactiveCaption197,5470
+ public final static SystemColor inactiveCaptionText
SystemColor.inactiveCaptionText202,5645
+ public final static SystemColor inactiveCaptionBorder
SystemColor.inactiveCaptionBorder207,5830
+ public final static SystemColor window SystemColor.window212,5996
+ public final static SystemColor windowBorder
SystemColor.windowBorder217,6126
+ public final static SystemColor windowText SystemColor.windowText222,6267
+ public final static SystemColor menu SystemColor.menu227,6408
+ public final static SystemColor menuText SystemColor.menuText232,6530
+ public final static SystemColor text SystemColor.text237,6677
+ public final static SystemColor textText SystemColor.textText242,6809
+ public final static SystemColor textHighlight
SystemColor.textHighlight247,6957
+ public final static SystemColor textHighlightText
SystemColor.textHighlightText252,7109
+ public final static SystemColor textInactiveText
SystemColor.textInactiveText257,7267
+ public final static SystemColor control SystemColor.control262,7431
+ public final static SystemColor controlText
SystemColor.controlText267,7569
+ public final static SystemColor controlHighlight
SystemColor.controlHighlight272,7727
+ public final static SystemColor controlLtHighlight
SystemColor.controlLtHighlight277,7897
+ public final static SystemColor controlShadow
SystemColor.controlShadow282,8069
+ public final static SystemColor controlDkShadow
SystemColor.controlDkShadow287,8227
+ public final static SystemColor scrollbar SystemColor.scrollbar292,8384
+ public final static SystemColor info SystemColor.info297,8532
+ public final static SystemColor infoText SystemColor.infoText302,8664
+ private static int[] systemColors SystemColor.systemColors308,8885
+ private static final long serialVersionUID
SystemColor.serialVersionUID340,10406
+ private static void
updateSystemColors(SystemColor.updateSystemColors349,10617
+ private SystemColor(SystemColor.SystemColor357,10885
+ public int getRGB(SystemColor.getRGB370,11245
+ public String toString(SystemColor.toString377,11388
+
+java-src/TG.java,2547
+class ThreadGroup 54,2104
+ ThreadGroup parent;ThreadGroup.parent55,2124
+ String name;ThreadGroup.name56,2148
+ int maxPriority;ThreadGroup.maxPriority57,2165
+ boolean destroyed;ThreadGroup.destroyed58,2186
+ boolean daemon;ThreadGroup.daemon59,2209
+ boolean vmAllowSuspension;ThreadGroup.vmAllowSuspension60,2229
+ int nthreads;ThreadGroup.nthreads62,2261
+ Thread threads[ThreadGroup.threads63,2279
+ int ngroups;ThreadGroup.ngroups65,2302
+ ThreadGroup groups[ThreadGroup.groups66,2319
+ private ThreadGroup(ThreadGroup.ThreadGroup72,2495
+ public ThreadGroup(ThreadGroup.ThreadGroup84,2848
+ public ThreadGroup(ThreadGroup.ThreadGroup105,3714
+ public final String getName(ThreadGroup.getName124,4189
+ public final ThreadGroup getParent(ThreadGroup.getParent135,4492
+ public final int getMaxPriority(ThreadGroup.getMaxPriority148,4867
+ public final boolean isDaemon(ThreadGroup.isDaemon161,5305
+ public synchronized boolean isDestroyed(ThreadGroup.isDestroyed170,5470
+ public final void setDaemon(ThreadGroup.setDaemon192,6368
+ public final void setMaxPriority(ThreadGroup.setMaxPriority213,7110
+ public final boolean parentOf(ThreadGroup.parentOf246,8106
+ public final void checkAccess(ThreadGroup.checkAccess268,8834
+ public int activeCount(ThreadGroup.activeCount283,9286
+ public int enumerate(ThreadGroup.enumerate322,10497
+ public int enumerate(ThreadGroup.enumerate344,11481
+ private int enumerate(ThreadGroup.enumerate348,11584
+ public int activeGroupCount(ThreadGroup.activeGroupCount389,12588
+ public int enumerate(ThreadGroup.enumerate425,13727
+ public int enumerate(ThreadGroup.enumerate445,14595
+ private int enumerate(ThreadGroup.enumerate449,14703
+ public final void stop(ThreadGroup.stop499,16212
+ public final void suspend(ThreadGroup.suspend537,17477
+ public final void resume(ThreadGroup.resume575,18749
+ public final void destroy(ThreadGroup.destroy607,19779
+ private final void add(ThreadGroup.add643,20704
+ private void remove(ThreadGroup.remove668,21402
+ void add(ThreadGroup.add697,22142
+ void remove(ThreadGroup.remove722,22808
+ public void list(ThreadGroup.list751,23503
+ void list(ThreadGroup.list754,23556
+ public void uncaughtException(ThreadGroup.uncaughtException810,25512
+ public boolean
allowThreadSuspension(ThreadGroup.allowThreadSuspension823,25823
+ public String toString(ThreadGroup.toString837,26142
+
+lua-src/allegro.lua,400
+local function get_layer_by_name 7,175
+local function count_layers 33,621
+function GetLayerByName 54,980
+function GetUniqueLayerName 65,1204
+function SelectLayer 76,1415
+function NewLayer 86,1773
+function NewLayerSet 144,3226
+function RemoveLayer 170,3750
+function MoveLayerTop 211,4767
+function MoveLayerBottom 223,5079
+function MoveLayerBefore 236,5457
+function MoveLayerAfter 258,6090
+
+make-src/Makefile,1133
+LATEST=1,0
+NONSRCS=35,1578
+CPPFLAGS=49,2191
+LDFLAGS=50,2260
+FASTCFLAGS=55,2531
+FILTER=58,2642
+ @-$($72,3064
+ @-$($73,3113
+ @-$($74,3177
+ @-$($75,3223
+ @-$($76,3291
+ @-$($77,3383
+ @$(81,3466
+ @$(82,3514
+ @$(83,3577
+ @$(84,3622
+ @$(85,3689
+ @$(86,3780
+${CHECKOBJS}: CFLAGS=88,3806
+ @env CHECKEROPTS=92,3922
+ @$(98,4094
+ @$(106,4250
+ @$(110,4374
+ @$(114,4500
+ @for i in $(SRCS); do echo $$i;140,5315
+ $(160,6053
+ $(163,6114
+ $(166,6177
+ $(169,6228
+ $(172,6317
+ sdiff --suppress-common-lines --width=width186,6614
+ sdiff --suppress-common-lines --width=width189,6703
+ sdiff --suppress-common-lines --width=width192,6791
+ sdiff --suppress-common-lines --width=width195,6880
+ TEXTAGS=204,7122
+ TEXTAGS=def:newcommand:newenvironment ${RUN} etags$*
--regex=regex204,7122
+ ${RUN} etags12 --members -o $@ --regex=regex207,7239
+ ${RUN} ./ctags -o $@ --regex=regex213,7388
+ ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7464
+ TEXTAGS=219,7583
+ TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@
--regex=regex219,7583
+ ${RUN} ./extags -e --regex-c=c222,7710
+
+objc-src/Subprocess.h,98
+#define Subprocess 41,1217
+#define BUFFERSIZE 43,1267
address@hidden Subprocess:Subprocess45,1292
+
+objc-src/Subprocess.m,475
+#define PTY_TEMPLATE 20,494
+#define PTY_LENGTH 21,528
address@hidden Subprocess(Private)Subprocess(Private)32,737
+- childDidExit39,851
+- fdHandler:67,1589
+showError 98,2360
+fdHandler 112,2785
+getptys 119,2907
+- init:183,4815
+ andStdErr:init:withDelegate:andPtySupport:andStdErr:197,5147
+- send:(const char *)string withNewline:send:withNewline:300,7436
+- send:308,7599
+- terminateInput314,7689
+- terminate:321,7810
+- setDelegate:332,7961
+- delegate338,8031
+
+objc-src/PackInsp.h,109
+#define NUMSTATS 36,1101
+#define TYPESTOSTAT 37,1120
address@hidden PackageInspector:PackageInspector39,1172
+
+objc-src/PackInsp.m,1360
+static const char RCSid[RCSid30,1032
+#define VERSION 34,1116
+# define DEBUG 37,1155
+#define LISTCONTENTS 39,1181
+#define OPENBUTTON 47,1352
+#define LISTCONTENTSBUTTON 48,1449
+#define LISTDESCRIPTIONBUTTON 49,1562
+#define STATE_UNINSTALLED 52,1687
+#define STATE_INSTALLED 53,1807
+#define STATE_COMPRESSD 54,1948
+#define SIZEFORMAT 57,2152
+#define KBYTES 58,2362
+#define MBYTES 59,2473
+#define LOCALIZE(61,2585
+#define LOCALIZE_ARCH(62,2668
++newnew67,2802
+-showInfo:showInfo:93,3417
+-revert:revert:107,3737
+-ok:ok:136,4297
+-loadload143,4424
+#define LOOKUP(156,4826
+#undef LOOKUP176,5694
+-loadKeyValuesFrom:(const char *)type
inTable:loadKeyValuesFrom:inTable:186,5852
+-loadContentsOf:(const char *)type inTable:loadContentsOf:inTable:238,7079
+-loadImageloadImage257,7552
+#define STAT_EQ(275,7940
+-(BOOL)shouldLoad280,8116
+-toggleDescriptiontoggleDescription301,8626
+-(const char *)getPath:(char *)buf forType:getPath:forType:317,8899
+-setRevertButtonTitlesetRevertButtonTitle333,9320
+-(const char *)formatSize:(const char *)size inBuf:formatSize:inBuf:344,9525
+#define WORKING 368,10045
+-(void)getArchs370,10100
+-(void)addArchs:385,10520
+-subprocess:(Subprocess *)sender output:subprocess:output:428,11351
+-subprocessDone:subprocessDone:436,11484
+static void openInWorkspace(446,11634
+-open:open:464,12063
+
+objcpp-src/SimpleCalc.H,41
address@hidden SimpleCalc:SimpleCalc14,400
+
+objcpp-src/SimpleCalc.M,300
+- init52,1747
+- appendToDisplay:60,1933
+- registerAction:70,2210
+- decimalKey:77,2348
+- numberKeys:91,2661
+- equalsKey:112,3192
+- operationKeys:131,3680
+- clearKey:153,4301
+- clearAllKey:160,4410
+- appDidInit:168,4591
+- windowWillClose:178,4882
+- infoPanel:186,5132
+- helpPanel:198,5482
+
+pas-src/common.pas,1875
+procedure InitializeStringPackage;26,527
+function newtextstring;34,874
+procedure disposetextstring;52,1404
+function ConcatT;78,2066
+function AppendTextString;112,3238
+function CopyTextString;132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;151,4505
+procedure append_string;172,5166
+function To_Upper;186,5462
+function To_Lower;194,5617
+function EmptyNmStr(209,6213
+function chartonmstr;219,6436
+function LowerCaseNmStr;230,6682
+function concatenatenamestrings;242,7007
+procedure writenamestring;263,7517
+function IsControlChar;277,7928
+function namestringequal;283,8079
+function NameStringLess;302,8539
+function IsControlCharName(343,9710
+function SubString;358,10208
+function SkipChars;379,10791
+function RemoveUnderlineControl;397,11311
+procedure First100Chars;427,12162
+procedure SkipSpaces;462,13298
+function SkipBlanks;477,13782
+function stripname;505,14595
+function Locate;522,15039
+function NameHasChar;543,15581
+function integertonmstr;561,16134
+function NmStrToInteger;585,16901
+function AddNullToNmStr;600,17317
+function ValToNmStr;611,17585
+function ChangeFileType;625,18037
+function StripPath;647,18734
+function ReprOfChar;675,19343
+procedure ExtractCommentInfo;702,20749
+procedure INSERT_TREE_NODE;784,24053
+function GetNameList;920,27926
+procedure DisposeANameList(925,28010
+procedure DisposeNameList;938,28340
+function GetNewNameListNode;943,28409
+function insertname;972,29051
+procedure InitNameList;988,29471
+procedure InitNameStringPool;998,29767
+procedure NewNameString;1004,29867
+procedure ReleaseNameString;1022,30232
+procedure SDTrefStringToRec 1045,30741
+procedure SDTrefSkipSpaces;1059,31092
+function SDTrefIsEnd 1070,31323
+function SDTrefGetInteger 1082,31529
+procedure SDTrefRecToString 1303,37546
+function NmStrToErrStr;1497,42305
+function ErrStrToNmStr;1509,42557
+function GetTextRef;1529,43112
+
+php-src/lce_functions.php,2864
+ define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38
+ define("LCE_UNKNOWN"LCE_UNKNOWN9,145
+ define("LCE_WS"LCE_WS11,194
+ define("LCE_COMMENT"LCE_COMMENT13,244
+ define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303
+ define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366
+ define("LCE_MSGID"LCE_MSGID19,430
+ define("LCE_MSGSTR"LCE_MSGSTR21,488
+ define("LCE_TEXT"LCE_TEXT23,541
+ define("STATE_ABORT"STATE_ABORT25,567
+ define("STATE_OK"STATE_OK26,595
+ define("STATE_LOOP"STATE_LOOP27,620
+ class POEntryAD 29,648
+ function validate(31,683
+ function checkQuotation(59,1384
+ class CommentAD 70,1639
+ var $prefix;72,1674
+ function CommentAD(73,1693
+ function validate(83,1944
+ class POEntry 105,2410
+ var $msgid;107,2454
+ var $msgstr;108,2472
+ var $user_comment;109,2491
+ var $sys_comment;110,2516
+ var $unk_comment;111,2540
+ var $msgid_lc 113,2565
+ var $msgstr_lc 114,2590
+ var $user_comment_lc 115,2616
+ var $sys_comment_lc 116,2648
+ var $unk_comment_lc 117,2679
+ function POEntry(119,2711
+ function lineCount(135,3255
+ function serializeToVars(141,3365
+ function write(151,3800
+ class POReader 163,4178
+ var $msgid;165,4223
+ var $msgstr;166,4241
+ var $user_comment;167,4260
+ var $sys_comment;168,4285
+ var $unk_comment;169,4309
+ var $state;170,4333
+ var $ignore_ws;171,4351
+ var $po_entries;172,4373
+ var $poe_num;173,4396
+ var $filename;174,4416
+ var $domain;175,4437
+ function gettext(177,4457
+ function parseFromVars(189,4705
+ function serializeToVars(215,5331
+ function POReader(229,5613
+ function read(243,5983
+ function write(259,6307
+ function isComment(277,6645
+ function comment(284,6822
+ function msgid(304,7247
+ function msgstr(320,7574
+ function start(340,8232
+ function createPOEntries(360,8644
+ function stripLine(394,9472
+ function printClassification(421,10056
+ function classifyLine(432,10301
+ function getTextDomains(471,11094
+ class PORManager 498,11756
+ var $por_a;500,11803
+ function PORManager(502,11822
+ function addPOReader(507,11896
+ function &getPOReader(getPOReader512,11992
+ function getDomainNames(517,12081
+ function &loadPORManager(loadPORManager523,12174
+ function fileJoin(536,12436
+ function lce_bindtextdomain(557,12839
+ function lce_textdomain(614,14530
+ function lce_gettext(620,14641
+ function lce_dgettext(626,14767
+ function lce(634,14966
+ function lce_bindtextdomain(651,15488
+ function lce_textdomain(656,15592
+ function lce_gettext(661,15674
+ function lce_dgettext(666,15755
+ function lce(670,15855
+ function lce_geteditcode(676,15898
+
+php-src/ptest.php,135
+define("TEST"TEST1,0
+test 4,26
+ var $member;8,71
+ var $memassign=9,85
+ var $memassign_space 10,110
+ var $test12,176
+foo(16,200
+
+perl-src/htlmify-cystic,1443
+my @section_name;section_name12,236
+my @appendix_name;appendix_name13,254
+my @section_toc;section_toc15,274
+my @appendix_toc;appendix_toc16,291
+my $new_tag new_tag18,310
+my $appendix;appendix24,409
+my $section;section25,423
+my $subsection;subsection26,436
+my $subsubsection;subsubsection27,452
+my $this_file_toc this_file_toc29,472
+my %file_tocs;file_tocs30,496
+my @output_files output_files32,512
+my $file_index file_index33,535
+my $output_file;output_file35,556
+my $line;line37,574
+my $subsection_marker;subsection_marker161,3883
+my $new;new163,3907
+sub read_toc main::read_toc165,3917
+ my $entry entry218,5621
+ my $entry entry234,6077
+ my $entry entry245,6351
+ my $entry entry252,6536
+ my $entry entry268,7010
+ my $entry entry276,7204
+ my $entry entry281,7328
+ my $entry entry296,7698
+sub finish_subsubsections main::finish_subsubsections302,7805
+sub finish_subsections main::finish_subsections309,7987
+sub finish_sections main::finish_sections320,8310
+sub finish_appendices main::finish_appendices331,8599
+sub section_url_base main::section_url_base337,8724
+sub section_url_name main::section_url_name342,8922
+sub section_url main::section_url355,9284
+ my $name name357,9336
+sub section_href main::section_href364,9452
+sub section_name main::section_name368,9551
+sub toc_line main::toc_line372,9655
+sub file_end main::file_end375,9750
+
+perl-src/yagrip.pl,258
+sub getopt main::getopt7,156
+ local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169
+sub usage main::usage38,856
+ local($prog,$_,@list)($prog,$_,@list39,868
+
local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897
+
+perl-src/kai-test.pl,244
+sub f1 main::f12,16
+sub main::f2 6,50
+package Foo;10,90
+sub f3 Foo::f312,104
+sub Bar::f4 16,138
+package Bar;20,177
+sub f5 Bar::f522,191
+package Foo::Bar;26,225
+sub f6 Foo::Bar::f628,244
+package main;32,278
+sub f7 main::f734,293
+
+perl-src/mirror.pl,13410
+sub msg_versionmain::msg_version459,18271
+ local( $arg )( $arg 468,18582
+ local( $flag, $p )( $flag, $p 480,18757
+ local( $site_path )( $site_path 525,19687
+ local( $site, $path )( $site, $path 539,19958
+ local( $key_val )( $key_val 578,20743
+ local( $user )( $user 595,21097
+ local( $c )( $c 634,21853
+ local( $sec,$min,$hour,$mday,$mon,$year,(
$sec,$min,$hour,$mday,$mon,$year,678,22807
+ local( $c )( $c 706,23393
+ local( $dir, $mp )( $dir, $mp 723,23695
+ local( $f )( $f 725,23740
+sub interpret_config_filesmain::interpret_config_files756,24304
+ local( $fname )( $fname 758,24333
+sub interpret_configmain::interpret_config785,24927
+sub parse_linemain::parse_line827,25710
+ local( $eqpl )( $eqpl 829,25727
+ local( $cont )( $cont 830,25744
+ local( $v )( $v 839,26029
+sub set_defaultsmain::set_defaults860,26448
+sub command_line_overridemain::command_line_override868,26579
+ local( $key, $val, $overrides )( $key, $val, $overrides 870,26607
+sub set_variablesmain::set_variables894,27072
+ local( $key, $val )( $key, $val 896,27092
+ local( $val_name )( $val_name 902,27259
+ local( $val )( $val 953,28825
+sub upd_valmain::upd_val962,28974
+ local( $key )( $key 964,28988
+sub pr_variablesmain::pr_variables970,29083
+ local( $msg )( $msg 972,29102
+ local( $nle )( $nle 973,29123
+ local( $out )( $out 974,29144
+ local( $key, $val, $str )( $key, $val, $str 975,29164
+sub do_mirrormain::do_mirror1007,29923
+ local( $get_one_package )( $get_one_package 1009,29939
+ local( $exit_status )( $exit_status 1030,30384
+ local( @t )( @t 1154,33165
+ local( $con )( $con 1241,35499
+ local( @rhelp )( @rhelp 1289,36702
+ local( @sub_dirs )( @sub_dirs 1329,37778
+ local( $now )( $now 1493,41348
+ local( $arg )( $arg 1506,41774
+sub disconnectmain::disconnect1528,42250
+sub connectmain::connect1546,42576
+ local( $attempts )( $attempts 1548,42590
+ local( $res )( $res 1549,42642
+sub prodmain::prod1573,43156
+sub checkout_regexpsmain::checkout_regexps1585,43327
+ local( $ret )( $ret 1587,43350
+ local( $t )( $t 1589,43395
+ local( $val )( $val 1597,43701
+ local( $err )( $err 1601,43786
+sub clear_localmain::clear_local1610,43909
+sub clear_remotemain::clear_remote1625,44172
+sub get_local_directory_detailsmain::get_local_directory_details1640,44445
+ local( @dirs, $dir )( @dirs, $dir 1642,44479
+ local( $last_prodded )( $last_prodded 1643,44502
+ local( $dir_level )( $dir_level 1691,45615
+ local( $i )( $i 1692,45641
+ local( $path, $time, $size, $type, $mode, $name, $isdir, $value,
$follow )( $path, $time, $size, $type, $mode, $name, $isdir, $value, $follow
1693,45659
+ local( $dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,(
$dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,1694,45736
+ local( $mapi )( $mapi 1763,47586
+sub get_remote_directory_detailsmain::get_remote_directory_details1789,48122
+ local( $type_changed )( $type_changed 1791,48157
+ local( $udirtmp )( $udirtmp 1792,48186
+ local( $storename )( $storename 1793,48206
+ local( $rls )( $rls 1825,48944
+ local( $dirtmp )( $dirtmp 1830,49002
+ local( $unsquish )( $unsquish 1832,49130
+ local( $f )( $f 1840,49360
+ local( $dirtmp )( $dirtmp 1859,49866
+ local( $unsquish )( $unsquish 1870,50215
+ local( $f, $uf )( $f, $uf 1878,50445
+ local( $flags )( $flags 1912,51259
+ local( $parse_state )( $parse_state 1946,52111
+ local( $msg )( $msg 1963,52486
+sub patch_ls_lR_filemain::patch_ls_lR_file1984,52955
+ local( $f, $fr, $flb, $flt, $flp, $flz, $frb, $frt )( $f, $fr, $flb,
$flt, $flp, $flz, $frb, $frt 1990,53055
+ local( $to , $tn )( $to , $tn 1991,53110
+ local( $tlb )( $tlb 1995,53225
+ local( $p, $s, $trz, $t, $m )( $p, $s, $trz, $t, $m 2030,54182
+ local( $tlz )( $tlz 2037,54467
+sub parse_timeoutmain::parse_timeout2089,55670
+sub parse_remote_detailsmain::parse_remote_details2095,55754
+ local( $ret )( $ret 2097,55781
+ local( $old_sig )( $old_sig 2098,55797
+sub parse_remote_details_realmain::parse_remote_details_real2125,56234
+ local( $path, $size, $time, $type, $mode, $rdir, $rcwd )( $path,
$size, $time, $type, $mode, $rdir, $rcwd 2127,56266
+ local( @dir_list )( @dir_list 2128,56325
+ local( $i )( $i 2129,56346
+ local( $old_path )( $old_path 2130,56364
+ local( $old_path )( $old_path 2143,56630
+ local( $ri )( $ri 2203,58078
+ local( $mapi )( $mapi 2214,58335
+ local( $done )( $done 2239,58911
+sub compare_dirsmain::compare_dirs2283,59825
+ local( *src_paths,( *src_paths,2286,59915
+ local( $src_path, $dest_path, $i )( $src_path, $dest_path, $i
2293,60099
+ local( $last_prodded )( $last_prodded 2294,60136
+ local( $desti, $srci, $compress, $srciZ, $srcigz, $split,
$dest_path_real )( $desti, $srci, $compress, $srciZ, $srcigz, $split,
$dest_path_real 2299,60350
+ local( $old_dest_path, $existing_path, $tmp, $restart )(
$old_dest_path, $existing_path, $tmp, $restart 2300,60428
+ local( $sp, $dp )( $sp, $dp 2301,60486
+ local( $real, $reali, $reali1 )( $real, $reali, $reali1
2352,62034
+ local( $count )( $count 2353,62072
+ local( $value )( $value 2408,63996
+ local( $real )( $real 2409,64028
+ local( $reali )( $reali 2410,64086
+ local( $old )( $old 2421,64571
+ local( $old_dest_path )( $old_dest_path 2432,64842
+ local( $dpp, $dps )( $dpp, $dps 2509,67031
+ local( $update )( $update 2534,67671
+sub map_namemain::map_name2651,71028
+ local( $name )( $name 2653,71043
+ local( $old_name )( $old_name 2656,71089
+ local( $tmp )( $tmp 2666,71252
+sub set_timestampsmain::set_timestamps2675,71362
+ local( $src_path )( $src_path 2677,71383
+ local( $dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime )(
$dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime 2685,71517
+sub set_timestampmain::set_timestamp2699,71901
+ local( $path, $time )( $path, $time 2701,71921
+ local( $pr_time )( $pr_time 2703,71953
+sub make_dirsmain::make_dirs2719,72284
+ local( $thing )( $thing 2721,72300
+sub make_symlinksmain::make_symlinks2736,72489
+ local( $thing )( $thing 2738,72509
+ local( $dest, $existing )( $dest, $existing 2745,72623
+ local( $dirpart )( $dirpart 2746,72663
+ local( $ft )( $ft 2747,72704
+ local( $p )( $p 2762,73261
+ local( $f )( $f 2770,73467
+ local( $dl )( $dl 2788,74038
+sub do_all_transfersmain::do_all_transfers2806,74439
+ local( $src_path )( $src_path 2808,74462
+ local( $dest_path, $attribs )( $dest_path, $attribs 2809,74483
+ local( $srci )( $srci 2810,74515
+ local( $newpath )( $newpath 2838,75124
+sub transfer_filemain::transfer_file2869,75847
+ local( $src_path, $dest_path, $attribs, $timestamp )( $src_path,
$dest_path, $attribs, $timestamp 2871,75867
+ local( $dir, $file, $temp, $compress, $split, $restart, $mesg,
$got_mesg )( $dir, $file, $temp, $compress, $split, $restart, $mesg, $got_mesg
2872,75927
+ local( $src_file )( $src_file 2915,76782
+ local( $comptemp )( $comptemp 2916,76816
+ local( $f )( $f 2921,76964
+ local($filesize)($filesize2944,77569
+ local( $ti )( $ti 2975,78401
+ local( $f )( $f 2997,78887
+ local( $comp )( $comp 2998,78912
+ local( $filesize )( $filesize 3015,79427
+ local( $sizemsg )( $sizemsg 3016,79469
+ local( $srcsize )( $srcsize 3017,79501
+ local( $time )( $time 3029,79865
+ local( $as )( $as 3046,80223
+ local( $locali )( $locali 3054,80499
+sub filename_to_tempnamemain::filename_to_tempname3062,80713
+ local( $dir, $file )( $dir, $file 3064,80740
+ local ( $dest_path )( $dest_path 3066,80769
+sub log_uploadmain::log_upload3090,81228
+ local( $src_path, $dest_path, $got_mesg, $size )( $src_path,
$dest_path, $got_mesg, $size 3092,81245
+sub do_deletesmain::do_deletes3118,81773
+ local( *src_paths,( *src_paths,3121,81861
+ local( $files_to_go, $dirs_to_go )( $files_to_go, $dirs_to_go
3125,81960
+ local( $src_path, $i )( $src_path, $i 3131,82055
+ local( $orig_do_deletes )( $orig_do_deletes 3132,82080
+ local( $orig_save_deletes )( $orig_save_deletes 3133,82122
+ local( $del_patt )( $del_patt 3135,82169
+ local( $per )( $per 3162,82843
+ local( $per )( $per 3184,83513
+ local( $save_dir_tail )( $save_dir_tail 3226,84617
+sub save_deletemain::save_delete3245,85019
+ local( $save, $kind )( $save, $kind 3247,85037
+ local( $real_save_dir, $save_dest )( $real_save_dir, $save_dest
3249,85067
+ local( $dirname )( $dirname 3284,85704
+sub save_mkdirmain::save_mkdir3304,86155
+ local( $dir )( $dir 3306,86172
+sub do_deletemain::do_delete3320,86459
+ local( $del, $kind )( $del, $kind 3322,86475
+sub filesizemain::filesize3377,87532
+ local( $fname )( $fname 3379,87547
+sub istruemain::istrue3390,87654
+ local( $val )( $val 3392,87667
+sub mksymlinkmain::mksymlink3398,87773
+ local( $dest_path, $existing_path )( $dest_path, $existing_path
3400,87789
+ local( $msg )( $msg 3417,88246
+ local( $msg )( $msg 3431,88590
+ local( $status )( $status 3442,88816
+sub mkdirsmain::mkdirs3457,89196
+ local( $dir )( $dir 3459,89209
+ local( @dir, $d, $path )( @dir, $d, $path 3460,89230
+sub make_dirmain::make_dir3497,90042
+ local( $dir, $mode )( $dir, $mode 3499,90057
+ local( $val )( $val 3500,90085
+sub dir_existsmain::dir_exists3528,90573
+ local( $dir )( $dir 3530,90590
+ local( $val )( $val 3531,90611
+ local($old_dir)($old_dir3539,90750
+sub set_attribsmain::set_attribs3553,91053
+ local( $path, $src_path, $type )( $path, $src_path, $type 3555,91071
+ local( $mode )( $mode 3556,91111
+ local( $pathi )( $pathi 3564,91229
+ local( $pathi )( $pathi 3568,91320
+sub get_passwdmain::get_passwd3606,91977
+ local( $user )( $user 3608,91994
+ local( $pass )( $pass 3609,92016
+ local( $| )( $| 3610,92033
+sub compare_timesmain::compare_times3631,92384
+ local( $t1, $t2 )( $t1, $t2 3637,92564
+ local( $diff )( $diff 3638,92589
+sub create_assocsmain::create_assocs3643,92688
+ local( $map )( $map 3645,92708
+sub delete_assocsmain::delete_assocs3657,92957
+ local( $map )( $map 3659,92977
+sub unlink_dbmmain::unlink_dbm3671,93247
+ local( $file )( $file 3673,93264
+sub bsplitmain::bsplit3681,93462
+ local( $temp, $dest_path, $time )( $temp, $dest_path, $time 3683,93475
+ local( $dest_dir )( $dest_dir 3684,93516
+ local( $bufsiz )( $bufsiz 3685,93558
+ local( $buffer, $in, $sofar )( $buffer, $in, $sofar 3686,93583
+ local( $d )( $d 3691,93721
+ local( $index )( $index 3697,93840
+ local( $part )( $part 3698,93865
+ local( $locali )( $locali 3714,94336
+ local( $readme )( $readme 3730,94740
+sub sysmain::sys3739,95116
+ local( $com )( $com 3741,95126
+sub set_assoc_from_arraymain::set_assoc_from_array3751,95355
+ local( *things )( *things 3754,95453
+sub find_progmain::find_prog3760,95537
+ local( $prog )( $prog 3762,95553
+ local( $path )( $path 3763,95575
+ local( $path )( $path 3766,95657
+sub real_dir_from_pathmain::real_dir_from_path3780,95842
+ local( $program )( $program 3782,95867
+ local( @prog_path )( @prog_path 3783,95892
+ local( $dir )( $dir 3784,95970
+sub msgmain::msg3807,96489
+ local( $todo, $msg )( $todo, $msg 3809,96499
+sub to_bytesmain::to_bytes3838,96979
+ local( $size )( $size 3840,96994
+sub unix2vmsmain::unix2vms3858,97332
+ local( $v, $kind )( $v, $kind 3860,97347
+ local( $dir, $rest )( $dir, $rest 3873,97559
+sub dirpartmain::dirpart3886,97730
+ local( $path )( $path 3888,97744
+sub expand_symlinkmain::expand_symlink3902,98076
+ local( $orig_path, $points_to )( $orig_path, $points_to 3904,98097
+ local( $dirpart )( $dirpart 3905,98136
+sub flatten_pathmain::flatten_path3913,98365
+ local( $path )( $path 3915,98384
+ local( $changed )( $changed 3916,98406
+ local( $i )( $i 3917,98430
+ local( $rooted )( $rooted 3919,98446
+ local( $count )( $count 3920,98482
+ local( $orig_path )( $orig_path 3921,98504
+ local( $in )( $in 3932,98741
+ local( @parts )( @parts 3933,98765
+sub fix_packagemain::fix_package3963,99438
+ local( $package )( $package 3965,99456
+sub will_compressmain::will_compress3970,99529
+sub will_splitmain::will_split3981,99859
+sub myflockmain::myflock3989,100001
+ local( $file, $kind )( $file, $kind 3991,100015
+sub t2strmain::t2str4004,100221
+ local( @t )( @t 4006,100233
+
local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst4013,100335
+sub handlermain::handler4022,100583
+ local( $sig )( $sig 4029,100651
+ local( $msg )( $msg 4030,100679
+ local( $package, $filename, $line )( $package, $filename, $line
4031,100737
+sub trap_signalsmain::trap_signals4036,100859
+ local( $sig )( $sig 4038,100878
+sub map_user_groupmain::map_user_group4047,101158
+sub keepmain::keep4069,101537
+ local( $pathi, $path, *keep, *keep_totals, *keep_map, $kind )( $pathi,
$path, *keep, *keep_totals, *keep_map, $kind 4071,101548
+sub alarmmain::alarm4104,102330
+ local( $time_to_sig )( $time_to_sig 4106,102342
+sub chownmain::chown4110,102405
+ local( $uid, $gid, $path )( $uid, $gid, $path 4112,102417
+sub utimemain::utime4116,102494
+ local( $atime, $mtime, $path )( $atime, $mtime, $path 4118,102506
+ local( $old_mode )( $old_mode 4124,102685
+ local( $tmp_mode )( $tmp_mode 4125,102730
+ local( $ret )( $ret 4126,102763
+sub cwdmain::cwd4135,102913
+ local( $lcwd )( $lcwd 4137,102923
+
+ps-src/rfc1245.ps,2478
+/FMversion 12,311
+/FrameDict 17,500
+/FMVERSION 47,1307
+/FMLOCAL 56,1494
+/FMDOCUMENT 73,1766
+/FMBEGINPAGE 95,2279
+/FMENDPAGE 109,2516
+/FMDEFINEFONT 115,2582
+/FMNORMALIZEGRAPHICS 126,2725
+/FMBEGINEPSF 142,2955
+/FMENDEPSF 153,3207
+/setmanualfeed 158,3283
+/max 163,3386
+/min 164,3426
+/inch 165,3466
+/pagedimen 166,3485
+/setpapername 172,3629
+/papersize 190,4214
+/manualpapersize 211,4789
+/desperatepapersize 230,5211
+/savematrix 239,5370
+/restorematrix 242,5425
+/dmatrix 245,5475
+/dpi 246,5495
+/freq 248,5583
+/sangle 249,5658
+/DiacriticEncoding 250,5717
+/.notdef 251,5738
+/.notdef 252,5801
+/.notdef 253,5864
+/.notdef 254,5927
+/.notdef 255,5990
+/numbersign 256,6051
+/parenright 257,6115
+/two 258,6184
+/less 259,6251
+/L 260,6320
+/bracketright 261,6389
+/i 262,6459
+/braceright 263,6529
+/Ntilde 264,6598
+/atilde 265,6668
+/iacute 266,6733
+/ocircumflex 267,6797
+/udieresis 268,6858
+/paragraph 269,6919
+/dieresis 270,6983
+/yen 271,7050
+/ordfeminine 272,7109
+/exclamdown 273,7171
+/guillemotleft 274,7230
+/Otilde 275,7296
+/quoteleft 276,7357
+/fraction 277,7420
+/periodcentered 278,7490
+/Acircumflex 279,7549
+/Icircumflex 280,7610
+/Uacute 281,7680
+/breve 282,7746
+/ReEncode 284,7814
+/graymode 300,8020
+/setpattern 310,8184
+/grayness 331,8725
+/normalize 394,9873
+/dnormalize 397,9942
+/lnormalize 400,10014
+/H 403,10104
+/Z 406,10147
+/X 409,10176
+/V 412,10219
+/N 415,10260
+/M 418,10286
+/E 419,10315
+/D 420,10336
+/O 421,10358
+/L 423,10394
+/Y 430,10489
+/R 439,10588
+/RR 450,10696
+/C 467,10959
+/U 473,11004
+/F 477,11039
+/T 481,11084
+/RF 484,11115
+/TF 488,11164
+/P 495,11219
+/PF 499,11270
+/S 506,11344
+/SF 510,11384
+/B 517,11446
+/BF 521,11505
+/W 538,11714
+/G 573,12382
+/A 582,12525
+/BEGINPRINTCODE 606,12918
+/ENDPRINTCODE 615,13131
+/gn 620,13259
+/cfs 631,13384
+/ic 636,13473
+/ms 658,14285
+/ip 668,14395
+/wh 678,14492
+/bl 684,14607
+/s1 690,14722
+/fl 691,14739
+/hx 698,14887
+/wbytes 709,15055
+/BEGINBITMAPBWc 713,15147
+/BEGINBITMAPGRAYc 716,15198
+/BEGINBITMAP2BITc 719,15251
+/COMMONBITMAPc 722,15304
+/BEGINBITMAPBW 739,15660
+/BEGINBITMAPGRAY 742,15709
+/BEGINBITMAP2BIT 745,15760
+/COMMONBITMAP 748,15811
+/Fmcc 765,16156
+/ngrayt 773,16371
+/nredt 774,16393
+/nbluet 775,16414
+/ngreent 776,16436
+/colorsetup 787,16603
+/fakecolorsetup 814,17370
+/BITMAPCOLOR 826,17636
+/BITMAPCOLORc 839,17926
+/BITMAPGRAY 855,18275
+/BITMAPGRAYc 858,18335
+/ENDBITMAP 861,18397
+/fillprocs 868,18497
+
+prol-src/ordsets.prolog,525
+is_ordset(47,1310
+list_to_ord_set(63,1688
+ord_add_element(71,1867
+ord_del_element(85,2344
+ord_disjoint(100,2783
+ord_intersect(108,2953
+ord_intersection(126,3552
+ord_intersection3(130,3691
+ord_intersection(150,4531
+ord_intersection4(154,4703
+ord_intersection(176,5664
+ord_intersection2(181,5812
+ord_member(200,6318
+ord_seteq(216,6683
+ord_setproduct(225,6971
+ord_subset(240,7377
+ord_subtract(257,7861
+ord_symdiff(265,8054
+ord_union(288,8887
+ord_union4(303,9352
+ord_union(324,10171
+ord_union_all(329,10313
+
+prol-src/natded.prolog,2319
+expandmng(100,2879
+normalize(116,3359
+fresh_vars(125,3716
+subst(138,4134
+normalize_fresh(159,4660
+reduce_subterm(171,5112
+reduce(185,5559
+free_var(196,5903
+free_for(209,6246
+compile_lex(231,6875
+consult_lex:-consult_lex248,7384
+lex(259,7754
+expandsyn(267,8068
+bas_syn(292,8897
+compile_empty:-compile_empty310,9376
+complete(328,10055
+add_active(340,10527
+parse(353,10949
+derived_analyses(364,11341
+build(378,11965
+buildact(392,12521
+mapsyn(412,13542
+add_edge(434,14278
+findcats(447,14758
+normalize_tree(465,15478
+normalize_trees(475,15856
+expandmng_tree(486,16248
+expandmng_trees(496,16614
+cat(511,17013
+subtree(644,21266
+hypothetical_mem(653,21565
+make_coor(667,22130
+start_up:-start_up688,23013
+tokenizeatom(710,23921
+tokenize(720,24348
+isoperator(752,25377
+isoptab(756,25431
+specialsymbol(765,25756
+sstab(771,25861
+parse_cgi(787,26347
+keyvalseq(792,26510
+andkeyvalseq(796,26609
+keyval(799,26688
+valseq(807,26920
+plusvalseq(810,27007
+val(816,27109
+argvals(824,27426
+commaargvals(828,27503
+atomval(833,27578
+atom(836,27640
+action(846,28004
+keyvalcgi(864,28649
+keyvalscgi(865,28670
+outsyn(868,28726
+act(876,29060
+actout(901,29906
+texttreelist(912,30089
+htmltreelist(918,30190
+fitchtreelist(924,30304
+pp_html_table_tree(938,30759
+pp_html_tree(949,31113
+pp_html_trees(988,32381
+pp_html_table_fitch_tree(999,32769
+pp_html_fitch_tree(1017,33672
+removeexp(1129,39002
+splitexp(1142,39490
+pp_exp(1155,39990
+map_word(1168,40249
+pp_exps(1180,40474
+pp_tree(1188,40777
+pp_trees(1216,41807
+pp_word_list(1225,42128
+pp_word(1231,42262
+pp_word_list_rest(1238,42569
+pp_cat(1248,42929
+pp_syn(1255,43196
+pp_syn_paren(1276,43899
+pp_paren(1293,44377
+pp_syn_back(1300,44661
+pp_bas_cat(1311,45001
+writecat(1322,45409
+writesubs(1351,46455
+writesups(1361,46757
+writelistsubs(1371,47090
+pp_lam(1380,47408
+pp_lam_bracket(1398,48022
+pp_lam_paren(1407,48338
+pp_rule(1429,49238
+member(1447,49866
+append_list(1451,49919
+append(1456,50010
+at_least_one_member(1460,50076
+numbervars(1464,50171
+reverse(1467,50209
+select(1471,50290
+select_last(1475,50357
+cat_atoms(1479,50436
+writelist(1485,50524
+write_lex_cat(1492,50676
+writebreaklex(1500,50988
+write_lex(1513,51265
+writebreak(1521,51541
+tt:-tt1531,51713
+mt:-mt1534,51784
+cmt:-cmt1537,51878
+
+pyt-src/server.py,1438
+class Controls:Controls17,358
+ def __init__(18,374
+ def __repr__(24,590
+ def __str__(34,871
+class Server:Server37,934
+ def __init__(38,948
+ def dump(73,2198
+ def __repr__(125,3896
+ def __str__(128,3945
+class User:User131,4014
+ def __init__(132,4026
+ def __repr__(172,5445
+ def __str__(206,6883
+def flag2str(223,7212
+class LabeledEntry(232,7442
+ def bind(234,7525
+ def focus_set(236,7584
+ def __init__(238,7629
+def ButtonBar(245,7909
+def helpwin(255,8280
+class ListEdit(267,8707
+ def __init__(269,8808
+ def handleList(303,10042
+ def handleNew(306,10094
+ def editItem(314,10426
+ def deleteItem(320,10596
+def ConfirmQuit(326,10760
+class ControlEdit(375,12377
+ def PostControls(376,12403
+ def GatherControls(421,13530
+class ServerEdit(512,16264
+ def __init__(513,16289
+ def post(525,16629
+ def gather(543,17191
+ def nosave(547,17304
+ def save(551,17408
+ def refreshPort(556,17509
+ def createWidgets(561,17663
+ def edituser(631,20708
+class UserEdit(645,20921
+ def __init__(646,20944
+ def post(658,21283
+ def gather(676,21841
+ def nosave(680,21950
+ def save(684,22052
+ def createWidgets(689,22151
+class Configure(760,24879
+ def __init__(761,24916
+ def MakeDispose(772,25211
+ def MakeSitelist(786,25706
+ def editsite(794,25949
+ def save(797,26022
+ def nosave(807,26310
+
+tex-src/testenv.tex,52
+\newcommand{\nm}\nm4,77
+\section{blah}blah8,139
+
+tex-src/gzip.texi,303
address@hidden Top,62,2139
address@hidden Copying,80,2652
address@hidden Overview,83,2705
address@hidden Sample,166,7272
address@hidden Invoking gzip,Invoking gzip210,8828
address@hidden Advanced usage,Advanced usage357,13495
address@hidden Environment,420,15207
address@hidden Tapes,437,15768
address@hidden Problems,460,16767
address@hidden Concept Index,Concept Index473,17287
+
+tex-src/texinfo.tex,30626
+\def\texinfoversion{\texinfoversion25,1019
+\def\tie{\tie48,1510
+\def\gloggingall{\gloggingall71,2260
+\def\loggingall{\loggingall72,2329
+\def\onepageout#1{\onepageout98,3266
+\def\croppageout#1{\croppageout114,4016
+\def\cropmarks{\cropmarks141,5076
+\def\pagebody#1{\pagebody143,5123
+\def\ewtop{\ewtop156,5578
+\def\nstop{\nstop157,5642
+\def\ewbot{\ewbot159,5725
+\def\nsbot{\nsbot160,5789
+\def\parsearg #1{\parsearg169,6088
+\def\parseargx{\parseargx171,6166
+\def\parseargline{\parseargline181,6406
+\def\flushcr{\flushcr185,6527
+\newif\ifENV \ENVfalse \def\inENV{\inENV189,6726
+\def\ENVcheck{\ENVcheck190,6790
+\outer\def\begin{\begin197,7037
+\def\beginxxx #1{\beginxxx199,7075
+\def\end{\end207,7330
+\def\endxxx #1{\endxxx209,7358
+\def\errorE#1{\errorE215,7547
+\def\singlespace{\singlespace221,7741
address@hidden@231,7964
+\def\`{\`235,8064
+\def\'{\'236,8076
+\def\mylbrace {\mylbrace240,8124
+\def\myrbrace {\myrbrace241,8157
+\def\:{\:246,8271
+\def\*{\*249,8325
+\def\.{\.252,8401
+\def\w#1{\w257,8632
+\def\group{\group267,9115
+ \def\Egroup{\Egroup272,9279
+\def\need{\need288,9721
+\def\needx#1{\needx299,9998
+\def\dots{\dots338,11384
+\def\page{\page342,11448
+\def\exdent{\exdent352,11775
+\def\exdentyyy #1{\exdentyyy353,11808
+\def\nofillexdent{\nofillexdent356,11952
+\def\nofillexdentyyy #1{\nofillexdentyyy357,11997
+\def\include{\include364,12181
+\def\includezzz #1{\includezzz365,12216
+\def\thisfile{\thisfile368,12267
+\def\center{\center372,12330
+\def\centerzzz #1{\centerzzz373,12363
+\def\sp{\sp379,12505
+\def\spxxx #1{\spxxx380,12530
+\def\comment{\comment386,12704
+\def\commentxxx #1{\commentxxx389,12801
+\def\ignoresections{\ignoresections395,12970
+\let\chapter=\relax=\relax396,12992
+\let\section=\relax=\relax405,13237
+\let\subsection=\relax=\relax408,13298
+\let\subsubsection=\relax=\relax409,13321
+\let\appendix=\relax=\relax410,13347
+\let\appendixsec=\relaxsec=\relax411,13368
+\let\appendixsection=\relaxsection=\relax412,13392
+\let\appendixsubsec=\relaxsubsec=\relax413,13420
+\let\appendixsubsection=\relaxsubsection=\relax414,13447
+\let\appendixsubsubsec=\relaxsubsubsec=\relax415,13478
+\let\appendixsubsubsection=\relaxsubsubsection=\relax416,13508
+\def\ignore{\ignore422,13610
+\long\def\ignorexxx #1\end ignore{\ignorexxx426,13750
+\def\direntry{\direntry428,13809
+\long\def\direntryxxx #1\end direntry{\direntryxxx429,13848
+\def\ifset{\ifset433,13958
+\def\ifsetxxx #1{\ifsetxxx435,14016
+\def\Eifset{\Eifset439,14143
+\def\ifsetfail{\ifsetfail440,14157
+\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx441,14213
+\def\ifclear{\ifclear443,14274
+\def\ifclearxxx #1{\ifclearxxx445,14336
+\def\Eifclear{\Eifclear449,14467
+\def\ifclearfail{\ifclearfail450,14483
+\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx451,14543
+\def\set{\set455,14694
+\def\setxxx #1{\setxxx456,14721
+\def\clear{\clear459,14783
+\def\clearxxx #1{\clearxxx460,14814
+\def\iftex{\iftex465,14931
+\def\Eiftex{\Eiftex466,14944
+\def\ifinfo{\ifinfo467,14958
+\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx468,15008
+\long\def\menu #1\end menu{\menu470,15067
+\def\asis#1{\asis471,15096
+\def\math#1{\math484,15639
+\def\node{\node486,15683
+\def\nodezzz#1{\nodezzz487,15721
+\def\nodexxx[#1,#2]{\nodexxx[488,15752
+\def\donoderef{\donoderef491,15814
+\def\unnumbnoderef{\unnumbnoderef495,15935
+\def\appendixnoderef{\appendixnoderef499,16066
+\expandafter\expandafter\expandafter\appendixsetref{setref500,16112
+\let\refill=\relaxill=\relax503,16201
+\def\setfilename{\setfilename508,16415
+\outer\def\bye{\bye517,16661
+\def\inforef #1{\inforef519,16717
+\def\inforefzzz #1,#2,#3,#4**{\inforefzzz520,16755
+\def\losespace #1{\losespace522,16852
+\def\sf{\sf531,17056
+\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10557,17851
+\font\deftt=cmtt10 scaled \magstep1tt=cmtt10558,17897
+\def\df{\df559,17933
+\def\resetmathfonts{\resetmathfonts634,20527
+\def\textfonts{\textfonts647,21116
+\def\chapfonts{\chapfonts652,21331
+\def\secfonts{\secfonts657,21547
+\def\subsecfonts{\subsecfonts662,21752
+\def\indexfonts{\indexfonts667,21969
+\def\smartitalicx{\smartitalicx690,22701
+\def\smartitalic#1{\smartitalic691,22777
+\let\cite=\smartitalic=\smartitalic697,22922
+\def\b#1{\b699,22946
+\def\t#1{\t702,22981
+\def\samp #1{\samp705,23133
+\def\key #1{\key706,23166
+\def\ctrl #1{\ctrl707,23227
+\def\tclose#1{\tclose715,23429
+\def\ {\719,23595
+\def\xkey{\xkey727,23864
+\def\kbdfoo#1#2#3\par{\kbdfoo728,23880
+\def\dmn#1{\dmn737,24181
+\def\kbd#1{\kbd739,24208
+\def\l#1{\l741,24265
+\def\r#1{\r743,24294
+\def\sc#1{\sc745,24362
+\def\ii#1{\ii746,24405
+\def\titlefont#1{\titlefont754,24638
+\def\titlepage{\titlepage760,24741
+ \def\subtitlefont{\subtitlefont765,24968
+ \def\authorfont{\authorfont767,25052
+ \def\title{\title773,25262
+ \def\titlezzz##1{\titlezzz774,25297
+ \def\subtitle{\subtitle782,25612
+ \def\subtitlezzz##1{\subtitlezzz783,25653
+ \def\author{\author786,25771
+ \def\authorzzz##1{\authorzzz787,25808
+ \def\page{\page793,26099
+\def\Etitlepage{\Etitlepage803,26268
+\def\finishtitlepage{\finishtitlepage816,26656
+\def\evenheading{\evenheading845,27664
+\def\oddheading{\oddheading846,27707
+\def\everyheading{\everyheading847,27748
+\def\evenfooting{\evenfooting849,27794
+\def\oddfooting{\oddfooting850,27837
+\def\everyfooting{\everyfooting851,27878
+\def\headings #1 {\headings892,29570
+\def\HEADINGSoff{\HEADINGSoff894,29619
+\def\HEADINGSdouble{\HEADINGSdouble903,30046
+\def\HEADINGSsingle{\HEADINGSsingle913,30366
+\def\HEADINGSon{\HEADINGSon921,30587
+\def\HEADINGSafter{\HEADINGSafter923,30621
+\def\HEADINGSdoublex{\HEADINGSdoublex925,30716
+\def\HEADINGSsingleafter{\HEADINGSsingleafter932,30904
+\def\HEADINGSsinglex{\HEADINGSsinglex933,30965
+\def\today{\today942,31240
+\def\thistitle{\thistitle957,31785
+\def\settitle{\settitle958,31810
+\def\settitlezzz #1{\settitlezzz959,31847
+\def\internalBitem{\internalBitem991,32777
+\def\internalBitemx{\internalBitemx992,32827
+\def\internalBxitem "#1"{\internalBxitem994,32872
+\def\internalBxitemx "#1"{\internalBxitemx995,32952
+\def\internalBkitem{\internalBkitem997,33027
+\def\internalBkitemx{\internalBkitemx998,33079
+\def\kitemzzz #1{\kitemzzz1000,33126
+\def\xitemzzz #1{\xitemzzz1003,33228
+\def\itemzzz #1{\itemzzz1006,33331
+\def\item{\item1036,34402
+\def\itemx{\itemx1037,34453
+\def\kitem{\kitem1038,34506
+\def\kitemx{\kitemx1039,34559
+\def\xitem{\xitem1040,34614
+\def\xitemx{\xitemx1041,34667
+\def\description{\description1044,34777
+\def\table{\table1046,34827
+\def\ftable{\ftable1051,34971
+\def\Eftable{\Eftable1055,35117
+\def\vtable{\vtable1058,35186
+\def\Evtable{\Evtable1062,35332
+\def\dontindex #1{\dontindex1065,35401
+\def\fnitemindex #1{\fnitemindex1066,35421
+\def\vritemindex #1{\vritemindex1067,35466
+\def\tablez #1#2#3#4#5#6{\tablez1073,35615
+\def\Edescription{\Edescription1076,35673
+\def\itemfont{\itemfont1081,35875
+\def\Etable{\Etable1089,36101
+\def\itemize{\itemize1102,36425
+\def\itemizezzz #1{\itemizezzz1104,36461
+\def\itemizey #1#2{\itemizey1109,36556
+\def#2{1118,36802
+\def\itemcontents{\itemcontents1119,36843
+\def\bullet{\bullet1122,36891
+\def\minus{\minus1123,36918
+\def\frenchspacing{\frenchspacing1127,37026
+\def\splitoff#1#2\endmark{\splitoff1133,37251
+\def\enumerate{\enumerate1139,37481
+\def\enumeratezzz #1{\enumeratezzz1140,37520
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1141,37573
+ \def\thearg{\thearg1145,37720
+ \ifx\thearg\empty \def\thearg{\thearg1146,37739
+\def\numericenumerate{\numericenumerate1183,39073
+\def\lowercaseenumerate{\lowercaseenumerate1189,39203
+\def\uppercaseenumerate{\uppercaseenumerate1202,39550
+\def\startenumeration#1{\startenumeration1218,40040
+\def\alphaenumerate{\alphaenumerate1226,40222
+\def\capsenumerate{\capsenumerate1227,40257
+\def\Ealphaenumerate{\Ealphaenumerate1228,40291
+\def\Ecapsenumerate{\Ecapsenumerate1229,40325
+\def\itemizeitem{\itemizeitem1233,40405
+\def\newindex #1{\newindex1258,41262
+\def\defindex{\defindex1267,41551
+\def\newcodeindex #1{\newcodeindex1271,41659
+\def\defcodeindex{\defcodeindex1278,41919
+\def\synindex #1 #2 {\synindex1282,42099
+\def\syncodeindex #1 #2 {\syncodeindex1291,42439
+\def\doindex#1{\doindex1308,43118
+\def\singleindexer #1{\singleindexer1309,43177
+\def\docodeindex#1{\docodeindex1312,43289
+\def\singlecodeindexer #1{\singlecodeindexer1313,43356
+\def\indexdummies{\indexdummies1315,43414
+\def\_{\_1316,43434
+\def\w{\w1317,43462
+\def\bf{\bf1318,43489
+\def\rm{\rm1319,43518
+\def\sl{\sl1320,43547
+\def\sf{\sf1321,43576
+\def\tt{\tt1322,43604
+\def\gtr{\gtr1323,43632
+\def\less{\less1324,43662
+\def\hat{\hat1325,43694
+\def\char{\char1326,43724
+\def\TeX{\TeX1327,43756
+\def\dots{\dots1328,43786
+\def\copyright{\copyright1329,43819
+\def\tclose##1{\tclose1330,43862
+\def\code##1{\code1331,43907
+\def\samp##1{\samp1332,43948
+\def\t##1{\t1333,43989
+\def\r##1{\r1334,44024
+\def\i##1{\i1335,44059
+\def\b##1{\b1336,44094
+\def\cite##1{\cite1337,44129
+\def\key##1{\key1338,44170
+\def\file##1{\file1339,44209
+\def\var##1{\var1340,44250
+\def\kbd##1{\kbd1341,44289
+\def\indexdummyfont#1{\indexdummyfont1346,44445
+\def\indexdummytex{\indexdummytex1347,44471
+\def\indexdummydots{\indexdummydots1348,44495
+\def\indexnofonts{\indexnofonts1350,44521
+\let\w=\indexdummyfontdummyfont1351,44541
+\let\t=\indexdummyfontdummyfont1352,44564
+\let\r=\indexdummyfontdummyfont1353,44587
+\let\i=\indexdummyfontdummyfont1354,44610
+\let\b=\indexdummyfontdummyfont1355,44633
+\let\emph=\indexdummyfontdummyfont1356,44656
+\let\strong=\indexdummyfontdummyfont1357,44682
+\let\cite=\indexdummyfont=\indexdummyfont1358,44710
+\let\sc=\indexdummyfontdummyfont1359,44736
+\let\tclose=\indexdummyfontdummyfont1363,44908
+\let\code=\indexdummyfontdummyfont1364,44936
+\let\file=\indexdummyfontdummyfont1365,44962
+\let\samp=\indexdummyfontdummyfont1366,44988
+\let\kbd=\indexdummyfontdummyfont1367,45014
+\let\key=\indexdummyfontdummyfont1368,45039
+\let\var=\indexdummyfontdummyfont1369,45064
+\let\TeX=\indexdummytexdummytex1370,45089
+\let\dots=\indexdummydotsdummydots1371,45113
+\let\indexbackslash=0 %overridden during \printindex.backslash=01381,45365
+\def\doind #1#2{\doind1383,45421
+{\indexdummies % Must do this here, since \bf, etc expand at this
stagedummies1385,45464
+\def\rawbackslashxx{\rawbackslashxx1388,45604
+{\indexnofontsnofonts1393,45866
+\def\dosubind #1#2#3{\dosubind1404,46177
+{\indexdummies % Must do this here, since \bf, etc expand at this
stagedummies1406,46225
+\def\rawbackslashxx{\rawbackslashxx1409,46329
+{\indexnofontsnofonts1413,46483
+\def\findex {\findex1442,47414
+\def\kindex {\kindex1443,47437
+\def\cindex {\cindex1444,47460
+\def\vindex {\vindex1445,47483
+\def\tindex {\tindex1446,47506
+\def\pindex {\pindex1447,47529
+\def\cindexsub {\cindexsub1449,47553
+\def\printindex{\printindex1461,47880
+\def\doprintindex#1{\doprintindex1463,47921
+ \def\indexbackslash{\indexbackslash1480,48406
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1481,48445
+\def\initial #1{\initial1516,49517
+\def\entry #1#2{\entry1522,49724
+ \null\nobreak\indexdotfill % Have leaders before the page
number.dotfill1539,50371
+\def\indexdotfill{\indexdotfill1548,50699
+\def\primary #1{\primary1551,50805
+\def\secondary #1#2{\secondary1555,50887
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1558,50969
+\newbox\partialpageialpage1565,51142
+\def\begindoublecolumns{\begindoublecolumns1571,51300
+ \output={\global\setbox\partialpage=ialpage=1572,51336
+\def\enddoublecolumns{\enddoublecolumns1576,51524
+\def\doublecolumnout{\doublecolumnout1579,51609
+ address@hidden \advance\dimen@ by-\ht\partialpageialpage1580,51678
+\def\pagesofar{\pagesofar1583,51856
+\def\balancecolumns{\balancecolumns1587,52093
+ address@hidden \advance\availdimen@ by-\ht\partialpageialpage1593,52264
+ address@hidden \advance\dimen@ by-\ht\partialpageialpage1599,52525
+\newcount \appendixno \appendixno = address@hidden,53430
+\def\appendixletter{\appendixletter1627,53471
+\def\opencontents{\opencontents1631,53574
+\def\thischapter{\thischapter1636,53755
+\def\seccheck#1{\seccheck1637,53793
+\def\chapternofonts{\chapternofonts1642,53897
+\def\result{\result1645,53972
+\def\equiv{\equiv1646,54007
+\def\expansion{\expansion1647,54040
+\def\print{\print1648,54081
+\def\TeX{\TeX1649,54114
+\def\dots{\dots1650,54143
+\def\copyright{\copyright1651,54174
+\def\tt{\tt1652,54215
+\def\bf{\bf1653,54242
+\def\w{\w1654,54270
+\def\less{\less1655,54295
+\def\gtr{\gtr1656,54326
+\def\hat{\hat1657,54355
+\def\char{\char1658,54384
+\def\tclose##1{\tclose1659,54415
+\def\code##1{\code1660,54459
+\def\samp##1{\samp1661,54499
+\def\r##1{\r1662,54539
+\def\b##1{\b1663,54573
+\def\key##1{\key1664,54607
+\def\file##1{\file1665,54645
+\def\kbd##1{\kbd1666,54685
+\def\i##1{\i1668,54793
+\def\cite##1{\cite1669,54827
+\def\var##1{\var1670,54867
+\def\emph##1{\emph1671,54905
+\def\dfn##1{\dfn1672,54945
+\def\thischaptername{\thischaptername1675,54986
+\outer\def\chapter{\chapter1676,55025
+\def\chapterzzz #1{\chapterzzz1677,55066
+{\chapternofonts%nofonts%1686,55462
+\global\let\section = \numberedsec=1691,55615
+\global\let\subsection = \numberedsubsec=1692,55650
+\global\let\subsubsection = \numberedsubsubsec=1693,55691
+\outer\def\appendix{\appendix1696,55742
+\def\appendixzzz #1{\appendixzzz1697,55785
+\global\advance \appendixno by 1 \message{no1699,55862
+\chapmacro {#1}{Appendix \appendixletter}letter1700,55931
+\xdef\thischapter{Appendix \appendixletter:
\noexpand\thischaptername}letter:1703,56024
+{\chapternofonts%nofonts%1704,56096
+ {#1}{Appendix \appendixletter}letter1706,56152
+\appendixnoderef %noderef1709,56252
+\global\let\section = \appendixsec=1710,56271
+\global\let\subsection = \appendixsubsec=1711,56306
+\global\let\subsubsection = \appendixsubsubsec=1712,56347
+\outer\def\top{\top1715,56398
+\outer\def\unnumbered{\unnumbered1716,56438
+\def\unnumberedzzz #1{\unnumberedzzz1717,56485
+{\chapternofonts%nofonts%1721,56648
+\global\let\section = \unnumberedsec=1726,56798
+\global\let\subsection = \unnumberedsubsec=1727,56835
+\global\let\subsubsection = \unnumberedsubsubsec=1728,56878
+\outer\def\numberedsec{\numberedsec1731,56931
+\def\seczzz #1{\seczzz1732,56972
+{\chapternofonts%nofonts%1735,57128
+\outer\def\appendixsection{\appendixsection1744,57314
+\outer\def\appendixsec{\appendixsec1745,57371
+\def\appendixsectionzzz #1{\appendixsectionzzz1746,57424
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1748,57536
+{\chapternofonts%nofonts%1749,57604
+{#1}{\appendixletter}letter1751,57660
+\appendixnoderef %noderef1754,57760
+\outer\def\unnumberedsec{\unnumberedsec1758,57800
+\def\unnumberedseczzz #1{\unnumberedseczzz1759,57853
+{\chapternofonts%nofonts%1761,57948
+\outer\def\numberedsubsec{\numberedsubsec1769,58116
+\def\numberedsubseczzz #1{\numberedsubseczzz1770,58171
+{\chapternofonts%nofonts%1773,58350
+\outer\def\appendixsubsec{\appendixsubsec1782,58554
+\def\appendixsubseczzz #1{\appendixsubseczzz1783,58609
+\subsecheading {#1}{\appendixletter}letter1785,58731
+{\chapternofonts%nofonts%1786,58796
+{#1}{\appendixletter}letter1788,58855
+\appendixnoderef %noderef1791,58970
+\outer\def\unnumberedsubsec{\unnumberedsubsec1795,59010
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1796,59069
+{\chapternofonts%nofonts%1798,59170
+\outer\def\numberedsubsubsec{\numberedsubsubsec1806,59341
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1807,59402
+{\chapternofonts%nofonts%1811,59599
+\outer\def\appendixsubsubsec{\appendixsubsubsec1822,59832
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1823,59893
+ {\appendixletter}letter1826,60032
+{\chapternofonts%nofonts%1827,60098
+ {\appendixletter}letter1829,60163
+\appendixnoderef %noderef1833,60297
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1837,60337
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1838,60402
+{\chapternofonts%nofonts%1840,60509
+\def\infotop{\infotop1850,60838
+\def\infounnumbered{\infounnumbered1851,60876
+\def\infounnumberedsec{\infounnumberedsec1852,60921
+\def\infounnumberedsubsec{\infounnumberedsubsec1853,60972
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1854,61029
+\def\infoappendix{\infoappendix1856,61093
+\def\infoappendixsec{\infoappendixsec1857,61134
+\def\infoappendixsubsec{\infoappendixsubsec1858,61181
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1859,61234
+\def\infochapter{\infochapter1861,61294
+\def\infosection{\infosection1862,61333
+\def\infosubsection{\infosubsection1863,61372
+\def\infosubsubsection{\infosubsubsection1864,61417
+\global\let\section = \numberedsec=1869,61654
+\global\let\subsection = \numberedsubsec=1870,61689
+\global\let\subsubsection = \numberedsubsubsec=1871,61730
+\def\majorheading{\majorheading1885,62237
+\def\majorheadingzzz #1{\majorheadingzzz1886,62282
+\def\chapheading{\chapheading1892,62515
+\def\chapheadingzzz #1{\chapheadingzzz1893,62558
+\def\heading{\heading1898,62753
+\def\subheading{\subheading1900,62790
+\def\subsubheading{\subsubheading1902,62833
+\def\dobreak#1#2{\dobreak1909,63110
+\def\setchapterstyle #1 {\setchapterstyle1911,63188
+\def\chapbreak{\chapbreak1918,63443
+\def\chappager{\chappager1919,63493
+\def\chapoddpage{\chapoddpage1920,63531
+\def\setchapternewpage #1 {\setchapternewpage1922,63610
+\def\CHAPPAGoff{\CHAPPAGoff1924,63667
+\def\CHAPPAGon{\CHAPPAGon1928,63761
+\global\def\HEADINGSon{\HEADINGSon1931,63852
+\def\CHAPPAGodd{\CHAPPAGodd1933,63894
+\global\def\HEADINGSon{\HEADINGSon1936,63990
+\def\CHAPFplain{\CHAPFplain1940,64044
+\def\chfplain #1#2{\chfplain1944,64136
+\def\unnchfplain #1{\unnchfplain1955,64359
+\def\unnchfopen #1{\unnchfopen1963,64588
+\def\chfopen #1#2{\chfopen1969,64796
+\def\CHAPFopen{\CHAPFopen1974,64940
+\def\subsecheadingbreak{\subsecheadingbreak1981,65158
+\def\secheadingbreak{\secheadingbreak1984,65287
+\def\secheading #1#2#3{\secheading1992,65569
+\def\plainsecheading #1{\plainsecheading1993,65625
+\def\secheadingi #1{\secheadingi1994,65668
+\def\subsecheading #1#2#3#4{\subsecheading2005,66036
+\def\subsecheadingi #1{\subsecheadingi2006,66103
+\def\subsubsecfonts{\subsubsecfonts2013,66400
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2016,66523
+\def\subsubsecheadingi #1{\subsubsecheadingi2017,66601
+\def\startcontents#1{\startcontents2031,67073
+ \unnumbchapmacro{#1}\def\thischapter{\thischapter2039,67346
+\outer\def\contents{\contents2048,67705
+\outer\def\summarycontents{\summarycontents2056,67849
+ \def\secentry ##1##2##3##4{\secentry2066,68220
+ \def\unnumbsecentry ##1##2{\unnumbsecentry2067,68255
+ \def\subsecentry ##1##2##3##4##5{\subsecentry2068,68290
+ \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2069,68331
+ \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2070,68369
+ \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2071,68416
+\def\chapentry#1#2#3{\chapentry2084,68850
+\def\shortchapentry#1#2#3{\shortchapentry2087,68967
+ {#2\labelspace #1}space2090,69077
+\def\unnumbchapentry#1#2{\unnumbchapentry2093,69131
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2094,69178
+\def\secentry#1#2#3#4{\secentry2101,69342
+\def\unnumbsecentry#1#2{\unnumbsecentry2102,69401
+\def\subsecentry#1#2#3#4#5{\subsecentry2105,69462
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2106,69532
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2109,69606
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2110,69640
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2111,69691
+\def\dochapentry#1#2{\dochapentry2122,70065
+\def\dosecentry#1#2{\dosecentry2137,70670
+\def\dosubsecentry#1#2{\dosubsecentry2144,70848
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2151,71033
+\def\labelspace{\labelspace2159,71284
+\def\dopageno#1{\dopageno2161,71319
+\def\doshortpageno#1{\doshortpageno2162,71345
+\def\chapentryfonts{\chapentryfonts2164,71377
+\def\secentryfonts{\secentryfonts2165,71412
+\def\point{\point2191,72371
+\def\result{\result2193,72392
+\def\expansion{\expansion2194,72465
+\def\print{\print2195,72536
+\def\equiv{\equiv2197,72603
+\def\error{\error2217,73376
+\def\tex{\tex2223,73605
address@hidden@2241,73988
+\gdef\sepspaces{\def {\ }}}\2264,74720
+\def\aboveenvbreak{\aboveenvbreak2267,74802
+\def\afterenvbreak{\afterenvbreak2271,74968
+\def\ctl{\ctl2285,75479
+\def\ctr{\ctr2286,75551
+\def\cbl{\cbl2287,75590
+\def\cbr{\cbr2288,75630
+\def\carttop{\carttop2289,75669
+\def\cartbot{\cartbot2292,75777
+\long\def\cartouche{\cartouche2298,75917
+\def\Ecartouche{\Ecartouche2325,76705
+\def\lisp{\lisp2337,76840
+\def\Elisp{\Elisp2347,77187
+\def\next##1{\next2359,77513
+\def\Eexample{\Eexample2363,77555
+\def\Esmallexample{\Esmallexample2366,77602
+\def\smalllispx{\smalllispx2372,77780
+\def\Esmalllisp{\Esmalllisp2382,78134
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2395,78490
+\def\next##1{\next2396,78547
+\def\display{\display2400,78627
+\def\Edisplay{\Edisplay2409,78946
+\def\next##1{\next2421,79257
+\def\format{\format2425,79360
+\def\Eformat{\Eformat2433,79656
+\def\next##1{\next2436,79745
+\def\flushleft{\flushleft2440,79797
+\def\Eflushleft{\Eflushleft2450,80168
+\def\next##1{\next2453,80261
+\def\flushright{\flushright2455,80283
+\def\Eflushright{\Eflushright2465,80655
+\def\next##1{\next2469,80786
+\def\quotation{\quotation2473,80844
+\def\Equotation{\Equotation2479,81036
+\def\setdeffont #1 {\setdeffont2492,81434
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2494,81480
+\newskip\defargsindent \defargsindent=50ptargsindent2495,81523
+\newskip\deftypemargin \deftypemargin=12pttypemargin2496,81566
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2497,81609
+\def\activeparens{\activeparens2502,81807
+\def\opnr{\opnr2528,83019
+\def\lbrb{\lbrb2529,83084
+\def\defname #1#2{\defname2535,83285
+\advance\dimen2 by -\defbodyindentbodyindent2539,83403
+\advance\dimen3 by -\defbodyindentbodyindent2541,83457
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2543,83511
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for
continuationsargsindent2545,83653
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2546,83728
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2553,84097
+\advance\leftskip by -\defbodyindentbodyindent2556,84231
+\exdentamount=\defbodyindentbodyindent2557,84268
+\def\defparsebody #1#2#3{\defparsebody2567,84627
+\def#1{2571,84811
+\def#2{2572,84847
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2574,84919
+\exdentamount=\defbodyindentbodyindent2575,84993
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2580,85097
+\def#1{2584,85258
+\def#2##1 {2585,85294
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2587,85377
+\exdentamount=\defbodyindentbodyindent2588,85451
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2591,85536
+\def#1{2595,85697
+\def#2##1 ##2 {2596,85733
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2599,85833
+\exdentamount=\defbodyindentbodyindent2600,85907
+\def\defvarparsebody #1#2#3{\defvarparsebody2607,86178
+\def#1{2611,86365
+\def#2{2612,86401
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2614,86460
+\exdentamount=\defbodyindentbodyindent2615,86534
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2620,86625
+\def#1{2624,86784
+\def#2##1 {2625,86820
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2627,86890
+\exdentamount=\defbodyindentbodyindent2628,86964
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2631,87036
+\def#1{2635,87200
+\def#2##1 ##2 {2636,87236
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2639,87323
+\exdentamount=\defbodyindentbodyindent2640,87397
+\def\defunargs #1{\defunargs2663,88157
+\def\deftypefunargs #1{\deftypefunargs2675,88539
+\def\deffn{\deffn2689,88921
+\def\deffnheader #1#2#3{\deffnheader2691,88978
+\begingroup\defname {name2692,89026
+\def\defun{\defun2698,89171
+\def\defunheader #1#2{\defunheader2700,89224
+\begingroup\defname {name2701,89299
+\defunargs {unargs2702,89335
+\def\deftypefun{\deftypefun2708,89483
+\def\deftypefunheader #1#2{\deftypefunheader2711,89605
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2713,89714
+\begingroup\defname {name2715,89806
+\deftypefunargs {typefunargs2716,89852
+\def\deftypefn{\deftypefn2722,90023
+\def\deftypefnheader #1#2#3{\deftypefnheader2725,90172
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2727,90308
+\begingroup\defname {name2729,90401
+\deftypefunargs {typefunargs2730,90441
+\def\defmac{\defmac2736,90562
+\def\defmacheader #1#2{\defmacheader2738,90619
+\begingroup\defname {name2739,90695
+\defunargs {unargs2740,90728
+\def\defspec{\defspec2746,90852
+\def\defspecheader #1#2{\defspecheader2748,90913
+\begingroup\defname {name2749,90990
+\defunargs {unargs2750,91030
+\def\deffnx #1 {\deffnx2757,91225
+\def\defunx #1 {\defunx2758,91282
+\def\defmacx #1 {\defmacx2759,91339
+\def\defspecx #1 {\defspecx2760,91398
+\def\deftypefnx #1 {\deftypefnx2761,91459
+\def\deftypeunx #1 {\deftypeunx2762,91524
+\def\defop #1 {\defop2768,91670
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2769,91705
+\def\defopheader #1#2#3{\defopheader2771,91759
+\begingroup\defname {name2773,91848
+\defunargs {unargs2774,91894
+\def\defmethod{\defmethod2779,91955
+\def\defmethodheader #1#2#3{\defmethodheader2781,92028
+\begingroup\defname {name2783,92116
+\defunargs {unargs2784,92156
+\def\defcv #1 {\defcv2789,92230
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2790,92265
+\def\defcvarheader #1#2#3{\defcvarheader2792,92324
+\begingroup\defname {name2794,92410
+\defvarargs {varargs2795,92456
+\def\defivar{\defivar2800,92529
+\def\defivarheader #1#2#3{\defivarheader2802,92592
+\begingroup\defname {name2804,92678
+\defvarargs {varargs2805,92729
+\def\defopx #1 {\defopx2811,92878
+\def\defmethodx #1 {\defmethodx2812,92935
+\def\defcvx #1 {\defcvx2813,93000
+\def\defivarx #1 {\defivarx2814,93057
+\def\defvarargs #1{\defvarargs2821,93328
+\def\defvr{\defvr2827,93472
+\def\defvrheader #1#2#3{\defvrheader2829,93527
+\begingroup\defname {name2830,93575
+\def\defvar{\defvar2834,93660
+\def\defvarheader #1#2{\defvarheader2836,93720
+\begingroup\defname {name2837,93791
+\defvarargs {varargs2838,93827
+\def\defopt{\defopt2843,93893
+\def\defoptheader #1#2{\defoptheader2845,93953
+\begingroup\defname {name2846,94024
+\defvarargs {varargs2847,94063
+\def\deftypevar{\deftypevar2852,94120
+\def\deftypevarheader #1#2{\deftypevarheader2855,94236
+\begingroup\defname {name2857,94319
+\def\deftypevr{\deftypevr2864,94493
+\def\deftypevrheader #1#2#3{\deftypevrheader2866,94564
+\begingroup\defname {name2867,94616
+\def\defvrx #1 {\defvrx2875,94853
+\def\defvarx #1 {\defvarx2876,94910
+\def\defoptx #1 {\defoptx2877,94969
+\def\deftypevarx #1 {\deftypevarx2878,95028
+\def\deftypevrx #1 {\deftypevrx2879,95095
+\def\deftpargs #1{\deftpargs2884,95244
+\def\deftp{\deftp2888,95324
+\def\deftpheader #1#2#3{\deftpheader2890,95379
+\begingroup\defname {name2891,95427
+\def\deftpx #1 {\deftpx2896,95586
+\def\setref#1{\setref2907,95907
+\def\unnumbsetref#1{\unnumbsetref2912,96021
+\def\appendixsetref#1{\appendixsetref2917,96128
+\def\pxref#1{\pxref2928,96539
+\def\xref#1{\xref2929,96575
+\def\ref#1{\ref2930,96610
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2931,96640
+\def\printedmanual{\printedmanual2932,96683
+\def\printednodename{\printednodename2933,96721
+\def\printednodename{\printednodename2938,96846
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2953,97479
+\refx{x2956,97557
+\def\dosetq #1#2{\dosetq2964,97777
+\def\internalsetq #1#2{\internalsetq2972,98035
+\def\Ypagenumber{\Ypagenumber2976,98136
+\def\Ytitle{\Ytitle2978,98162
+\def\Ynothing{\Ynothing2980,98189
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2982,98206
+\def\Yappendixletterandtype{\Yappendixletterandtype2991,98522
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2992,98552
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno
%no.\the\secno2993,98607
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno
%no.\the\secno.\the\subsecno2995,98711
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
%no.\the\secno.\the\subsecno.\the\subsubsecno2997,98782
+ \def\linenumber{\linenumber3008,99121
+\def\refx#1#2{\refx3014,99305
+\def\xrdef #1#2{\xrdef3036,99931
+\def\readauxfile{\readauxfile3039,100016
+\def\supereject{\supereject3109,101797
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3130,102482
+\def\openindices{\openindices3138,102668
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3150,102893
+\parindent = \defaultparindentaultparindent3151,102945
+\def\smallbook{\smallbook3174,103669
+\global\def\Esmallexample{\Esmallexample3191,104096
+\def\afourpaper{\afourpaper3195,104187
+\def\finalout{\finalout3223,104995
+\def\normaldoublequote{\normaldoublequote3234,105256
+\def\normaltilde{\normaltilde3235,105282
+\def\normalcaret{\normalcaret3236,105302
+\def\normalunderscore{\normalunderscore3237,105322
+\def\normalverticalbar{\normalverticalbar3238,105347
+\def\normalless{\normalless3239,105373
+\def\normalgreater{\normalgreater3240,105392
+\def\normalplus{\normalplus3241,105414
+\def\ifusingtt#1#2{\ifusingtt3252,105906
+\def\activedoublequote{\activedoublequote3260,106234
+\def~{~3263,106320
+\def^{^3266,106381
+\def_{_3269,106420
+\def\_{\_3271,106494
+\def\lvvmode{\lvvmode3278,106831
+\def|{|3281,106881
+\def<{<3284,106944
+\def>{>3287,107001
+\def+{+3289,107039
+\def\turnoffactive{\turnoffactive3295,107200
+\global\def={=3306,107486
+\def\normalbackslash{\normalbackslash3320,107868
+
+c-src//c.c,76
+T f(1,0
+}T i;2,14
+void bar(5,69
+int foobar(6,94
+interface_locate(9,131
+
+c.c,1963
+my_printf 135,
+void fatala 138,
+max 141,
+struct bar 143,
+ char z;144,
+ struct foo f;145,
+__attribute__ ((always_inline)) max 147,
+struct foo150,
+ char a;152,
+ int x[x153,
+char stack[stack155,
+struct S 156,
+struct S { short f[f156,
+ int *__ip;__ip159,
+ union wait *__up;__up160,
+} wait_status_ptr_t 161,
+Some_Class A 162,
+typedef T1 T3 163,
+T3 z 164,
+typedef int more_aligned_int 165,
+struct S __attribute__ ((vector_size (16))) foo;166,
+int foo 167,
+char *__attribute__((aligned(8))) *f;f168,
+int i 169,
+extern void foobar 170,
+typedef struct cacheLRUEntry_s172,
+ U16 next;174,
+ U16 prev;175,
+__attribute__ ((packed)) cacheLRUEntry_t;177,
+struct foo 178,
+ int x;179,
+ char a,180,
+ char a, b,180,
+ char a, b, c,180,
+ char a, b, c, d;180,
+ f1 183,
+void f2 184,
+int x 188,
+struct foo 189,
+struct foo { int x[x189,
+short array[array190,
+int f193,
+DEAFUN 196,
+XDEFUN 203,
+DEFUN ("x-get-selection-internal",
Fx_get_selection_internal,x-get-selection-internal206,
+ Fx_get_selection_internal,x-get-selection-internal212,
+ Fy_get_selection_internal,y-get-selection-internal216,
+defun_func1(218,
+DEFUN_func2(220,
+typedef int bool;222,
+bool funcboo 223,
+struct my_struct 226,
+typedef struct my_struct my_typedef;228,
+int bla 229,
+a(234,
+int func1237,
+static struct cca_control init_control 239,
+static tpcmd rbtp 240,
+static byte ring1 241,
+static byte ring2 242,
+request request 243,
+int func2 246,
+ aaa;249,
+ bbb;251,
+struct sss1 252,
+struct sss2253,
+ struct ss3255,
+struct a b;259,
+struct aa *b;b260,
+ **b;b262,
+caccacacca 263,
+a 267,
+ typedef struct aa 269,
+ typedef struct aa {} aaa;269,
+static void inita 271,
+node *lasta lasta272,
+b 273,
+ typedef int bb;275,
+static void initb 277,
+node *lastb lastb278,
+typedef enum { REG_ENOSYS 279,
+typedef enum { REG_ENOSYS = -1, aa 279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279,
+
+c-src/a/b/b.c,18
+#define this 1,0
+
+../c/c.web,20
+#define questo 34,
+
+y-src/parse.y,738
+#define obstack_chunk_alloc 46,1111
+#define obstack_chunk_free 47,1149
+VOIDSTAR parse_hash;63,1400
+unsigned char fnin[fnin67,1519
+#define YYSTYPE 71,1617
+typedef struct node *YYSTYPE;YYSTYPE72,1648
+YYSTYPE parse_return;73,1678
+char *instr;instr80,1790
+int parse_error 81,1803
+line:line86,1862
+exp:exp94,1975
+exp_list:exp_list262,5642
+range_exp:range_exp268,5740
+range_exp_list:range_exp_list272,5770
+cell:cell278,5888
+yyerror FUN1(285,5935
+make_list FUN2(292,6015
+#define ERROR 303,6215
+yylex FUN0(314,6392
+parse_cell_or_range FUN2(586,11758
+#define CK_ABS_R(670,13200
+#define CK_REL_R(674,13279
+#define CK_ABS_C(679,13408
+#define CK_REL_C(683,13487
+#define MAYBEREL(688,13616
+str_to_col FUN1(846,16817
+
+y-src/parse.c,520
+#define YYBISON 4,64
+# define NE 6,114
+# define LE 7,130
+# define GE 8,146
+# define NEG 9,162
+# define L_CELL 10,179
+# define L_RANGE 11,199
+# define L_VAR 12,220
+# define L_CONST 13,239
+# define L_FN0 14,260
+# define L_FN1 15,279
+# define L_FN2 16,298
+# define L_FN3 17,317
+# define L_FN4 18,336
+# define L_FNN 19,355
+# define L_FN1R 20,374
+# define L_FN2R 21,394
+# define L_FN3R 22,414
+# define L_FN4R 23,434
+# define L_FNNR 24,454
+# define L_LE 25,474
+# define L_NE 26,492
+# define L_GE 27,510
+
+parse.y,1181
+#define obstack_chunk_alloc 46,
+#define obstack_chunk_free 47,
+VOIDSTAR parse_hash;63,
+unsigned char fnin[fnin67,
+#define YYSTYPE 71,
+typedef struct node *YYSTYPE;YYSTYPE72,
+YYSTYPE parse_return;73,
+char *instr;instr80,
+int parse_error 81,
+#define YYSTYPE 85,
+# define YYDEBUG 88,
+#define YYFINAL 93,
+#define YYFLAG 94,
+#define YYNTBASE 95,
+#define YYTRANSLATE(98,
+static const char yytranslate[yytranslate101,
+static const short yyprhs[yyprhs134,
+static const short yyrhs[yyrhs142,
+static const short yyrline[yyrline171,
+static const char *const yytname[yytname185,
+static const short yyr1[yyr1197,
+static const short yyr2[yyr2207,
+static const short yydefact[yydefact219,
+static const short yydefgoto[yydefgoto237,
+static const short yypact[yypact242,
+static const short yypgoto[yypgoto260,
+#define YYLAST 266,
+static const short yytable[yytable269,
+static const short yycheck[yycheck330,
+yyerror FUN1(285,
+make_list FUN2(292,
+#define ERROR 303,
+yylex FUN0(314,
+parse_cell_or_range FUN2(586,
+#define CK_ABS_R(670,
+#define CK_REL_R(674,
+#define CK_ABS_C(679,
+#define CK_REL_C(683,
+#define MAYBEREL(688,
+str_to_col FUN1(846,
+
+/usr/share/bison/bison.simple,2168
+# define YYSTD(40,
+# define YYSTD(42,
+# define YYSTACK_ALLOC 50,
+# define YYSIZE_T 51,
+# define YYSTACK_ALLOC 55,
+# define YYSIZE_T 56,
+# define YYSTACK_ALLOC 59,
+# define YYSTACK_FREE(67,
+# define YYSIZE_T 71,
+# define YYSIZE_T 75,
+# define YYSTACK_ALLOC 78,
+# define YYSTACK_FREE 79,
+union yyalloc83,
+ short yyss;85,
+ YYSTYPE yyvs;86,
+ YYLTYPE yyls;88,
+# define YYSTACK_GAP_MAX 93,
+# define YYSTACK_BYTES(98,
+# define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+# define YYSIZE_T 136,
+# define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok 148,
+#define yyclearin 149,
+#define YYEMPTY 150,
+#define YYEOF 151,
+#define YYACCEPT 152,
+#define YYABORT 153,
+#define YYERROR 154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR 177,
+#define YYERRCODE 178,
+# define YYLLOC_DEFAULT(189,
+# define YYLEX 200,
+# define YYLEX 202,
+# define YYLEX 206,
+# define YYLEX 208,
+# define YYLEX 212,
+# define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+# define yymemcpy 264,
+yymemcpy 271,
+# define yystrlen 293,
+yystrlen 298,
+# define yystpcpy 316,
+yystpcpy 322,
+# define YYPARSE_PARAM_ARG 351,
+# define YYPARSE_PARAM_DECL352,
+# define YYPARSE_PARAM_ARG 354,
+# define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES 374,
+# define YY_DECL_VARIABLES 385,
+# define YY_DECL_VARIABLES 391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+ *++yyvsp yyvsp746,
+ *++yylsp yylsp748,
+ yyn 755,
+ yystate 757,
+ yystate 761,
+ goto yynewstate;763,
+ goto yyerrlab1;823,
+ yyerrstatus 846,
+ goto yyerrhandle;848,
+ yyn 861,
+ yystate 875,
+ yyn 895,
+ yyn 903,
+ *++yyvsp yyvsp919,
+ *++yylsp yylsp921,
+ yystate 924,
+ goto yynewstate;925,
+ yyresult 932,
+ goto yyreturn;933,
+ yyresult 939,
+ goto yyreturn;940,
+ yyresult 947,
+
+y-src/atest.y,9
+exp 2,3
+
+y-src/cccp.c,303
+#define YYBISON 4,63
+# define INT 6,113
+# define CHAR 7,130
+# define NAME 8,148
+# define ERROR 9,166
+# define OR 10,185
+# define AND 11,201
+# define EQUAL 12,218
+# define NOTEQUAL 13,237
+# define LEQ 14,259
+# define GEQ 15,276
+# define LSH 16,293
+# define RSH 17,310
+# define UNARY 18,327
+
+cccp.y,2106
+typedef unsigned char U_CHAR;38,
+struct arglist 41,
+ struct arglist *next;next42,
+ U_CHAR *name;name43,
+ int length;44,
+ int argno;45,
+#define NULL 51,
+#define GENERIC_PTR 56,
+#define GENERIC_PTR 58,
+#define NULL_PTR 63,
+int expression_value;68,
+static jmp_buf parse_return_error;70,
+static int keyword_parsing 73,
+#define CHAR_TYPE_SIZE 87,
+#define INT_TYPE_SIZE 91,
+#define LONG_TYPE_SIZE 95,
+#define WCHAR_TYPE_SIZE 99,
+#define possible_sum_sign(104,
+ struct constant 113,
+ struct constant {long value;113,
+ struct constant {long value; int unsignedp;113,
+ struct constant {long value; int unsignedp;} integer;113,
+ struct name 114,
+ struct name {U_CHAR *address;address114,
+ struct name {U_CHAR *address; int length;114,
+ struct name {U_CHAR *address; int length;} name;114,
+ struct arglist *keywords;keywords115,
+ int voidval;116,
+ char *sval;sval117,
+} yystype;118,
+# define YYSTYPE 119,
+# define YYDEBUG 122,
+#define YYFINAL 127,
+#define YYFLAG 128,
+#define YYNTBASE 129,
+#define YYTRANSLATE(132,
+static const char yytranslate[yytranslate135,
+static const short yyprhs[yyprhs167,
+static const short yyrhs[yyrhs174,
+static const short yyrline[yyrline195,
+static const char *const yytname[yytname208,
+static const short yyr1[yyr1219,
+static const short yyr2[yyr2228,
+static const short yydefact[yydefact239,
+static const short yydefgoto[yydefgoto251,
+static const short yypact[yypact256,
+static const short yypgoto[yypgoto268,
+#define YYLAST 274,
+static const short yytable[yytable277,
+static const short yycheck[yycheck301,
+static char *lexptr;lexptr332,
+parse_number 341,
+struct token 437,
+ char *operator;operator438,
+ int token;439,
+static struct token tokentab2[tokentab2442,
+yylex 459,
+parse_escape 740,
+yyerror 836,
+integer_overflow 844,
+left_shift 851,
+right_shift 873,
+parse_c_expression 893,
+main 923,
+unsigned char is_idchar[is_idchar948,
+unsigned char is_idstart[is_idstart950,
+char is_hor_space[is_hor_space953,
+initialize_random_junk 958,
+error 988,
+warning 993,
+lookup 999,
+
+/usr/share/bison/bison.simple,2168
+# define YYSTD(40,
+# define YYSTD(42,
+# define YYSTACK_ALLOC 50,
+# define YYSIZE_T 51,
+# define YYSTACK_ALLOC 55,
+# define YYSIZE_T 56,
+# define YYSTACK_ALLOC 59,
+# define YYSTACK_FREE(67,
+# define YYSIZE_T 71,
+# define YYSIZE_T 75,
+# define YYSTACK_ALLOC 78,
+# define YYSTACK_FREE 79,
+union yyalloc83,
+ short yyss;85,
+ YYSTYPE yyvs;86,
+ YYLTYPE yyls;88,
+# define YYSTACK_GAP_MAX 93,
+# define YYSTACK_BYTES(98,
+# define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+# define YYSIZE_T 136,
+# define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok 148,
+#define yyclearin 149,
+#define YYEMPTY 150,
+#define YYEOF 151,
+#define YYACCEPT 152,
+#define YYABORT 153,
+#define YYERROR 154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR 177,
+#define YYERRCODE 178,
+# define YYLLOC_DEFAULT(189,
+# define YYLEX 200,
+# define YYLEX 202,
+# define YYLEX 206,
+# define YYLEX 208,
+# define YYLEX 212,
+# define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+# define yymemcpy 264,
+yymemcpy 271,
+# define yystrlen 293,
+yystrlen 298,
+# define yystpcpy 316,
+yystpcpy 322,
+# define YYPARSE_PARAM_ARG 351,
+# define YYPARSE_PARAM_DECL352,
+# define YYPARSE_PARAM_ARG 354,
+# define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES 374,
+# define YY_DECL_VARIABLES 385,
+# define YY_DECL_VARIABLES 391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+ *++yyvsp yyvsp746,
+ *++yylsp yylsp748,
+ yyn 755,
+ yystate 757,
+ yystate 761,
+ goto yynewstate;763,
+ goto yyerrlab1;823,
+ yyerrstatus 846,
+ goto yyerrhandle;848,
+ yyn 861,
+ yystate 875,
+ yyn 895,
+ yyn 903,
+ *++yyvsp yyvsp919,
+ *++yylsp yylsp921,
+ yystate 924,
+ goto yynewstate;925,
+ yyresult 932,
+ goto yyreturn;933,
+ yyresult 939,
+ goto yyreturn;940,
+ yyresult 947,
+
+y-src/cccp.y,1696
+typedef unsigned char U_CHAR;38,1201
+struct arglist 41,1301
+ struct arglist *next;next42,1318
+ U_CHAR *name;name43,1342
+ int length;44,1358
+ int argno;45,1372
+#define NULL 51,1468
+#define GENERIC_PTR 56,1578
+#define GENERIC_PTR 58,1611
+#define NULL_PTR 63,1670
+int expression_value;68,1743
+static jmp_buf parse_return_error;70,1766
+static int keyword_parsing 73,1865
+#define CHAR_TYPE_SIZE 87,2162
+#define INT_TYPE_SIZE 91,2229
+#define LONG_TYPE_SIZE 95,2296
+#define WCHAR_TYPE_SIZE 99,2365
+#define possible_sum_sign(104,2556
+ struct constant 112,2733
+ struct constant {long value;112,2733
+ struct constant {long value; int unsignedp;112,2733
+ struct constant {long value; int unsignedp;} integer;112,2733
+ struct name 113,2789
+ struct name {U_CHAR *address;address113,2789
+ struct name {U_CHAR *address; int length;113,2789
+ struct name {U_CHAR *address; int length;} name;113,2789
+ struct arglist *keywords;keywords114,2840
+ int voidval;115,2868
+ char *sval;sval116,2883
+start 143,3226
+exp1 148,3330
+exp 156,3505
+exp 185,4295
+keywords 306,7835
+static char *lexptr;lexptr332,8579
+parse_number 341,8842
+struct token 437,11038
+ char *operator;operator438,11053
+ int token;439,11071
+static struct token tokentab2[tokentab2442,11088
+yylex 459,11367
+parse_escape 740,17718
+yyerror 836,19599
+integer_overflow 844,19690
+left_shift 851,19804
+right_shift 873,20194
+parse_c_expression 893,20732
+main 923,21483
+unsigned char is_idchar[is_idchar948,21901
+unsigned char is_idstart[is_idstart950,21996
+char is_hor_space[is_hor_space953,22160
+initialize_random_junk 958,22259
+error 988,22915
+warning 993,22963
+lookup 999,23033
+
+tex-src/nonewline.tex,0
+
+php-src/sendmail.php,0
+
+c-src/fail.c,0
+
+a-src/empty.zz,0
diff --git a/test/etags/ETAGS.good_4 b/test/etags/ETAGS.good_4
new file mode 100644
index 0000000..4468cdb
--- /dev/null
+++ b/test/etags/ETAGS.good_4
@@ -0,0 +1,5378 @@
+
+Makefile,701
+ADASRC=1,0
+ASRC=2,91
+CSRC=3,139
+CPSRC=7,410
+ELSRC=10,624
+ERLSRC=11,694
+FORTHSRC=12,759
+FSRC=13,809
+HTMLSRC=14,881
+JAVASRC=15,974
+LUASRC=16,1062
+MAKESRC=17,1105
+OBJCSRC=18,1147
+OBJCPPSRC=19,1228
+PASSRC=20,1291
+PERLSRC=21,1333
+PHPSRC=22,1413
+PSSRC=23,1485
+PROLSRC=24,1525
+PYTSRC=25,1587
+TEXSRC=26,1628
+YSRC=27,1707
+SRCS=28,1772
+NONSRCS=32,2024
+ETAGS_PROG=34,2098
+CTAGS_PROG=35,2129
+REGEX=37,2161
+xx=38,2207
+RUN=40,2256
+OPTIONS=42,2262
+ARGS=43,2314
+infiles 45,2332
+check:check47,2394
+ediff%:ediff%55,2697
+cdiff:cdiff58,2798
+ETAGS:ETAGS61,2895
+CTAGS:CTAGS64,2965
+srclist:srclist67,3043
+regexfile:regexfile71,3134
+.PRECIOUS:.PRECIOUS77,3311
+FRC:FRC79,3345
+
+ada-src/etags-test-for.ada,1969
+ type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0
+ function Body_RequiredBody_Required/f3,78
+ type Type_Specific_Data Type_Specific_Data/t11,280
+ function "abs"abs/f19,504
+ type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577
+ function "="=/f27,722
+ type usfreelock_ptr usfreelock_ptr/t30,803
+ function p p/f33,891
+ procedure LL_Wrapper LL_Wrapper/p37,1054
+function p p/f39,1094
+package Pkg1 Pkg1/s44,1203
+ type Private_T Private_T/t46,1220
+ package Inner1 Inner1/s48,1250
+ procedure Private_T;Private_T/p49,1270
+ package Inner2 Inner2/s52,1310
+ task Private_T;Private_T/k53,1330
+ type Public_T Public_T/t56,1365
+ procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450
+ procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475
+ function Pkg1_Func1 Pkg1_Func1/f66,1514
+ function Pkg1_Func2 Pkg1_Func2/f68,1553
+ package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622
+ procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645
+ task type Task_Type Task_Type/k75,1694
+ type Private_T Private_T/t82,1786
+package body Pkg1 Pkg1/b89,1882
+ procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904
+ package body Inner1 Inner1/b96,1956
+ procedure Private_T Private_T/p97,1981
+ package body Inner2 Inner2/b103,2054
+ task body Private_T Private_T/b104,2079
+ task body Task_Type Task_Type/b112,2181
+ procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367
+ function Pkg1_Func1 Pkg1_Func1/f132,2445
+ function Pkg1_Func2 Pkg1_Func2/f134,2496
+ package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596
+package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663
+ procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689
+function Pkg1_Func1 Pkg1_Func1/f155,2778
+package Truc Truc/s162,2887
+package Truc.Bidule Truc.Bidule/s166,2929
+ protected Bidule Bidule/t168,2953
+ protected type Machin_T Machin_T/t172,3007
+package body Truc.Bidule Truc.Bidule/b178,3087
+ protected body Bidule Bidule/b179,3115
+ protected Machin_T Machin_T/t186,3207
+
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives System.Task_Primitives/b64,2603
+ package RTE RTE/s69,2712
+ package TSL TSL/s70,2759
+ function To_void_ptr To_void_ptr/f86,3287
+ function To_TCB_Ptr To_TCB_Ptr/f89,3366
+ function
pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444
+ function
pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728
+ procedure Abort_WrapperAbort_Wrapper/p115,4302
+ procedure LL_Wrapper LL_Wrapper/p122,4526
+ procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830
+ function Self Self/f160,5586
+ procedure Initialize_LockInitialize_Lock/p174,5958
+ procedure Finalize_Lock Finalize_Lock/p210,6927
+ procedure Write_Lock Write_Lock/p226,7338
+ procedure Read_Lock Read_Lock/p239,7700
+ procedure Unlock Unlock/p246,7850
+ procedure Initialize_Cond Initialize_Cond/p258,8160
+ procedure Finalize_Cond Finalize_Cond/p286,8979
+ procedure Cond_Wait Cond_Wait/p300,9303
+ procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661
+ procedure Cond_Signal Cond_Signal/p343,10510
+ procedure Set_PrioritySet_Priority/p355,10836
+ procedure Set_Own_Priority Set_Own_Priority/p372,11243
+ function Get_Priority Get_Priority/f385,11598
+ function Get_Own_Priority Get_Own_Priority/f398,12023
+ procedure Create_LL_TaskCreate_LL_Task/p412,12438
+ function To_Start_Addr To_Start_Addr/f426,12873
+ procedure Exit_LL_Task Exit_LL_Task/p491,14995
+ procedure Abort_Task Abort_Task/p500,15158
+ procedure Test_Abort Test_Abort/p518,15716
+ procedure Install_Abort_Handler Install_Abort_Handler/p527,15878
+ procedure Abort_WrapperAbort_Wrapper/p557,16939
+ function Address_To_Call_State Address_To_Call_State/f562,17062
+ procedure Install_Error_Handler Install_Error_Handler/p573,17351
+ procedure LL_Assert LL_Assert/p599,18146
+ procedure LL_Wrapper LL_Wrapper/p608,18299
+ procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010
+ procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129
+ procedure Clear Clear/p640,19236
+ procedure Test_And_Set Test_And_Set/p645,19330
+ function Is_Set Is_Set/f659,19676
+
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives System.Task_Primitives/s58,3169
+ type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253
+ type Pre_Call_State Pre_Call_State/t64,3331
+ type Task_Storage_Size Task_Storage_Size/t66,3378
+ type Machine_Exceptions Machine_Exceptions/t68,3433
+ type Error_Information Error_Information/t70,3499
+ type Lock Lock/t72,3569
+ type Condition_Variable Condition_Variable/t73,3594
+ type Task_Control_Block Task_Control_Block/t81,3955
+ type TCB_Ptr TCB_Ptr/t89,4241
+ function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333
+ procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425
+ function Self Self/f100,4602
+ procedure Initialize_Lock Initialize_Lock/p103,4707
+ procedure Finalize_Lock Finalize_Lock/p107,4879
+ procedure Write_Lock Write_Lock/p111,5034
+ procedure Read_Lock Read_Lock/p118,5428
+ procedure Unlock Unlock/p128,5995
+ procedure Initialize_Cond Initialize_Cond/p135,6300
+ procedure Finalize_Cond Finalize_Cond/p138,6413
+ procedure Cond_Wait Cond_Wait/p142,6591
+ procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396
+ procedure Cond_Signal Cond_Signal/p164,7812
+ procedure Set_Priority Set_Priority/p169,8040
+ procedure Set_Own_Priority Set_Own_Priority/p173,8200
+ function Get_Priority Get_Priority/f177,8348
+ function Get_Own_Priority Get_Own_Priority/f181,8504
+ procedure Create_LL_TaskCreate_LL_Task/p185,8647
+ procedure Exit_LL_Task;Exit_LL_Task/p198,9282
+ procedure Abort_Task Abort_Task/p203,9516
+ procedure Test_Abort;Test_Abort/p210,9878
+ type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233
+ procedure Install_Abort_Handler Install_Abort_Handler/p219,10312
+ procedure Install_Error_Handler Install_Error_Handler/p226,10741
+ procedure LL_Assert LL_Assert/p231,10983
+ type Proc Proc/t238,11240
+ type TAS_Cell TAS_Cell/t242,11328
+ procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670
+ procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941
+ procedure Clear Clear/p260,12157
+ procedure Test_And_Set Test_And_Set/p267,12462
+ function Is_Set Is_Set/f275,12877
+ type Lock Lock/t283,13155
+ type Condition_Variable Condition_Variable/t288,13267
+ type TAS_Cell TAS_Cell/t293,13389
+
+ada-src/waroquiers.ada,1503
+package Pkg1 Pkg1/s3,89
+ type Private_T Private_T/t5,106
+ package Inner1 Inner1/s7,136
+ procedure Private_T;Private_T/p8,156
+ package Inner2 Inner2/s11,196
+ task Private_T;Private_T/k12,216
+ type Public_T Public_T/t15,251
+ procedure Pkg1_Proc1;Pkg1_Proc1/p21,336
+ procedure Pkg1_Proc2 Pkg1_Proc2/p23,361
+ function Pkg1_Func1 Pkg1_Func1/f25,400
+ function Pkg1_Func2 Pkg1_Func2/f27,439
+ package Pkg1_Pkg1 Pkg1_Pkg1/s30,508
+ procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531
+ task type Task_Type Task_Type/k34,580
+ type Private_T Private_T/t40,671
+package body Pkg1 Pkg1/b46,766
+ procedure Pkg1_Proc1 Pkg1_Proc1/p48,788
+ package body Inner1 Inner1/b53,840
+ procedure Private_T Private_T/p54,865
+ package body Inner2 Inner2/b60,938
+ task body Private_T Private_T/b61,963
+ task body Task_Type Task_Type/b68,1064
+ procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250
+ function Pkg1_Func1 Pkg1_Func1/f88,1328
+ function Pkg1_Func2 Pkg1_Func2/f90,1379
+ package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479
+package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544
+ procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570
+function Pkg1_Func1 Pkg1_Func1/f107,1657
+package Truc Truc/s112,1764
+package Truc.Bidule Truc.Bidule/s116,1816
+ protected Bidule Bidule/t125,1964
+ protected type Machin_T Machin_T/t131,2046
+package body Truc.Bidule Truc.Bidule/b138,2153
+ protected body Bidule Bidule/b139,2181
+ protected body Machin_T Machin_T/b146,2281
+
+c-src/abbrev.c,2634
+Lisp_Object Vabbrev_table_name_list;42,1416
+Lisp_Object Vglobal_abbrev_table;47,1561
+Lisp_Object Vfundamental_mode_abbrev_table;51,1672
+int abbrevs_changed;55,1773
+int abbrev_all_caps;57,1795
+Lisp_Object Vabbrev_start_location;62,1944
+Lisp_Object Vabbrev_start_location_buffer;65,2033
+Lisp_Object Vlast_abbrev;69,2142
+Lisp_Object Vlast_abbrev_text;74,2311
+int last_abbrev_point;78,2401
+Lisp_Object Vpre_abbrev_expand_hook,82,2474
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;82,2474
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table84,2538
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table91,2730
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev106,3111
+DEFUN ("define-global-abbrev",
Fdefine_global_abbrev,define-global-abbrev148,4430
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev159,4801
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol173,5269
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion201,6233
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev217,6748
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev388,11669
+write_abbrev 425,12876
+describe_abbrev 444,13311
+DEFUN ("insert-abbrev-table-description",
Finsert_abbrev_table_description,insert-abbrev-table-description465,13826
+DEFUN ("define-abbrev-table",
Fdefine_abbrev_table,define-abbrev-table505,14982
+syms_of_abbrev 539,16059
+ DEFVAR_LISP ("abbrev-table-name-list"541,16079
+ DEFVAR_LISP ("global-abbrev-table"547,16341
+ DEFVAR_LISP ("fundamental-mode-abbrev-table"554,16663
+ DEFVAR_LISP ("last-abbrev"560,17005
+ DEFVAR_LISP ("last-abbrev-text"563,17128
+ DEFVAR_INT ("last-abbrev-location"567,17286
+ DEFVAR_LISP ("abbrev-start-location"574,17485
+ DEFVAR_LISP ("abbrev-start-location-buffer"580,17762
+ DEFVAR_PER_BUFFER ("local-abbrev-table"585,18026
+ DEFVAR_BOOL ("abbrevs-changed"588,18169
+ DEFVAR_BOOL ("abbrev-all-caps"593,18372
+ DEFVAR_LISP ("pre-abbrev-expand-hook"597,18528
+ DEFVAR_LISP ("abbrev-table-name-list",\1541,16079
+ DEFVAR_LISP ("global-abbrev-table",\1547,16341
+ DEFVAR_LISP ("fundamental-mode-abbrev-table",\1554,16663
+ DEFVAR_LISP ("last-abbrev",\1560,17005
+ DEFVAR_LISP ("last-abbrev-text",\1563,17128
+ DEFVAR_INT ("last-abbrev-location",\1567,17286
+ DEFVAR_LISP ("abbrev-start-location",\1574,17485
+ DEFVAR_LISP ("abbrev-start-location-buffer",\1580,17762
+ DEFVAR_PER_BUFFER ("local-abbrev-table",\1585,18026
+ DEFVAR_BOOL ("abbrevs-changed",\1588,18169
+ DEFVAR_BOOL ("abbrev-all-caps",\1593,18372
+ DEFVAR_LISP ("pre-abbrev-expand-hook",\1597,18528
+
+c-src/torture.c,197
+(*tag1 tag118,452
+#define notag2 26,553
+(*tag2 tag229,630
+(*tag3 tag339,772
+#define notag4 45,861
+(*tag4 tag448,955
+tag5 57,1081
+tag6 66,1208
+int pp1(74,1317
+pp287,1419
+pp3(100,1518
+
+c-src/getopt.h,147
+#define _GETOPT_H 19,801
+struct option73,2797
+#define no_argument 89,3124
+#define required_argument 90,3147
+#define optional_argument 91,3175
+
+c-src/etags.c,10045
+char pot_etags_version[pot_etags_version81,3470
+# undef DEBUG84,3552
+# define DEBUG 85,3567
+# define DEBUG 87,3594
+# define NDEBUG 88,3617
+# define _GNU_SOURCE 94,3705
+# undef MSDOS100,3876
+# undef WINDOWSNT101,3890
+# define WINDOWSNT102,3909
+# undef MSDOS106,3968
+# define MSDOS 107,3982
+# define MSDOS 110,4032
+# define MAXPATHLEN 115,4111
+# undef HAVE_NTGUI116,4141
+# undef DOS_NT117,4160
+# define DOS_NT118,4176
+# undef assert 135,4482
+# define assert(136,4541
+# undef CTAGS146,4857
+# define CTAGS 147,4872
+# define CTAGS 149,4898
+#define streq(152,4927
+#define strcaseeq(153,4996
+#define strneq(154,5075
+#define strncaseeq(155,5151
+#define CHARS 157,5238
+#define CHAR(158,5278
+#define iswhite(159,5329
+#define notinname(160,5394
+#define begtoken(161,5469
+#define intoken(162,5542
+#define endtoken(163,5614
+#define ISALNUM(165,5684
+#define ISALPHA(166,5722
+#define ISDIGIT(167,5760
+#define ISLOWER(168,5798
+#define lowcase(170,5837
+#define xnew(179,6015
+#define xrnew(180,6083
+typedef void Lang_function 182,6164
+} compressor;188,6365
+} language;199,6835
+typedef struct fdesc201,6848
+} fdesc;212,7366
+typedef struct node_st214,7376
+} node;225,7894
+} linebuffer;239,8248
+ at_language,245,8344
+ at_regexp,246,8393
+ at_filename,247,8437
+ at_stdin,248,8473
+ at_end 249,8516
+} argument;253,8698
+typedef struct regexp256,8758
+} regexp;268,9325
+static void error 311,10780
+# undef STDIN408,15073
+#define STDIN 411,15095
+static compressor compressors[compressors457,17664
+static const char *Ada_suffixes Ada_suffixes473,17907
+static const char Ada_help 475,17977
+static const char *Asm_suffixes Asm_suffixes493,18580
+static const char Asm_help 504,18976
+static const char *default_C_suffixes default_C_suffixes512,19312
+static const char default_C_help 515,19413
+static const char default_C_help 523,19850
+static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460
+static const char Cplusplus_help 540,20658
+static const char *Cjava_suffixes Cjava_suffixes549,21113
+static char Cjava_help 551,21172
+static const char *Cobol_suffixes Cobol_suffixes556,21337
+static char Cobol_help 558,21402
+static const char *Cstar_suffixes Cstar_suffixes562,21543
+static const char *Erlang_suffixes Erlang_suffixes565,21607
+static const char Erlang_help 567,21673
+const char *Forth_suffixes Forth_suffixes571,21799
+static const char Forth_help 573,21857
+static const char *Fortran_suffixes Fortran_suffixes577,22008
+static const char Fortran_help 579,22085
+static const char *HTML_suffixes HTML_suffixes582,22190
+static const char HTML_help 584,22264
+static const char *Lisp_suffixes Lisp_suffixes589,22452
+static const char Lisp_help 591,22556
+static const char *Lua_suffixes Lua_suffixes598,22871
+static const char Lua_help 600,22934
+static const char *Makefile_filenames Makefile_filenames603,23010
+static const char Makefile_help 605,23133
+static const char *Objc_suffixes Objc_suffixes609,23277
+static const char Objc_help 613,23399
+static const char *Pascal_suffixes Pascal_suffixes619,23714
+static const char Pascal_help 621,23778
+static const char *Perl_suffixes Perl_suffixes626,23966
+static const char *Perl_interpreters Perl_interpreters628,24028
+static const char Perl_help 630,24100
+static const char *PHP_suffixes PHP_suffixes637,24451
+static const char PHP_help 639,24523
+static const char *plain_C_suffixes plain_C_suffixes643,24678
+static const char *PS_suffixes PS_suffixes647,24762
+static const char PS_help 649,24848
+static const char *Prolog_suffixes Prolog_suffixes652,24931
+static const char Prolog_help 654,24993
+static const char *Python_suffixes Python_suffixes658,25107
+static const char Python_help 660,25165
+static const char *Scheme_suffixes Scheme_suffixes665,25347
+static const char Scheme_help 667,25460
+static const char *TeX_suffixes TeX_suffixes672,25683
+static const char TeX_help 674,25781
+static const char *Texinfo_suffixes Texinfo_suffixes686,26316
+static const char Texinfo_help 688,26395
+static const char *Yacc_suffixes Yacc_suffixes691,26492
+static const char Yacc_help 693,26606
+static const char auto_help 699,26856
+static const char none_help 703,27020
+static const char no_lang_help 707,27143
+static language lang_names 718,27355
+print_language_names 753,29532
+# define EMACS_NAME 786,30755
+# define VERSION 789,30811
+print_version 792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173
+print_help 808,31250
+main 981,37438
+get_compressor_from_suffix 1319,46217
+get_language_from_langname 1355,47158
+get_language_from_interpreter 1377,47545
+get_language_from_filename 1399,47976
+process_file_name 1433,48834
+process_file 1555,51665
+init 1632,54150
+find_entries 1656,54901
+make_tag 1814,59707
+pfnote 1856,60942
+free_tree 1917,62744
+free_fdesc 1935,63029
+add_node 1955,63472
+invalidate_nodes 2035,65537
+static int number_len 2068,66193
+total_size_of_entries 2087,66694
+put_entries 2107,67154
+#define C_EXT 2193,68995
+#define C_PLAIN 2194,69037
+#define C_PLPL 2195,69070
+#define C_STAR 2196,69104
+#define C_JAVA 2197,69137
+#define C_AUTO 2198,69172
+#define YACC 2199,69242
+enum sym_type2204,69312
+ st_none,2206,69328
+ st_C_objprot,2207,69339
+ st_C_objprot, st_C_objimpl,2207,69339
+ st_C_objprot, st_C_objimpl, st_C_objend,2207,69339
+ st_C_gnumacro,2208,69382
+ st_C_ignore,2209,69399
+ st_C_ignore, st_C_attribute,2209,69399
+ st_C_javastruct,2210,69430
+ st_C_operator,2211,69449
+ st_C_class,2212,69466
+ st_C_class, st_C_template,2212,69466
+ st_C_struct,2213,69495
+ st_C_struct, st_C_extern,2213,69495
+ st_C_struct, st_C_extern, st_C_enum,2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495
+struct C_stab_entry 2271,71278
+hash 2275,71409
+in_word_set 2321,72937
+ TOTAL_KEYWORDS 2325,73018
+ MIN_WORD_LENGTH 2326,73045
+ MAX_WORD_LENGTH 2327,73072
+ MIN_HASH_VALUE 2328,73100
+ MAX_HASH_VALUE 2329,73126
+C_symtype 2387,74985
+static bool inattribute;2400,75234
+ fvnone,2408,75435
+ fdefunkey,2409,75466
+ fdefunname,2410,75512
+ foperator,2411,75556
+ fvnameseen,2412,75613
+ fstartlist,2413,75666
+ finlist,2414,75722
+ flistseen,2415,75765
+ fignore,2416,75813
+ vignore 2417,75856
+} fvdef;2418,75901
+static bool fvextern;2420,75911
+ tnone,2428,76089
+ tkeyseen,2429,76119
+ ttypeseen,2430,76160
+ tinbody,2431,76199
+ tend,2432,76238
+ tignore 2433,76279
+} typdef;2434,76320
+ snone,2443,76499
+ skeyseen,2445,76575
+ stagseen,2446,76620
+ scolonseen 2447,76661
+} structdef;2448,76715
+static const char *objtag objtag2453,76809
+ dnone,2460,76942
+ dsharpseen,2461,76972
+ ddefineseen,2462,77025
+ dignorerest 2463,77070
+} definedef;2464,77112
+ onone,2472,77267
+ oprotocol,2473,77297
+ oimplementation,2474,77347
+ otagseen,2475,77395
+ oparenseen,2476,77431
+ ocatseen,2477,77486
+ oinbody,2478,77525
+ omethodsign,2479,77568
+ omethodtag,2480,77626
+ omethodcolon,2481,77666
+ omethodparm,2482,77709
+ oignore 2483,77755
+} objdef;2484,77787
+static struct tok2491,77944
+} token;2508,78626
+} cstack;2523,79136
+#define nestlev 2525,79264
+#define instruct 2527,79369
+pushclass_above 2531,79489
+popclass_above 2550,79948
+write_classname 2564,80162
+consider_token 2613,81341
+} lbs[lbs2924,88532
+#define current_lb_is_new 2926,88543
+#define switch_line_buffers(2927,88588
+#define curlb 2929,88641
+#define newlb 2930,88672
+#define curlinepos 2931,88703
+#define newlinepos 2932,88744
+#define plainc 2934,88786
+#define cplpl 2935,88830
+#define cjava 2936,88861
+#define CNL_SAVE_DEFINEDEF(2938,88905
+#define CNL(2947,89117
+make_C_tag 2960,89375
+C_entries 2986,90194
+default_C_entries 3833,110156
+plain_C_entries 3840,110276
+Cplusplus_entries 3847,110364
+Cjava_entries 3854,110460
+Cstar_entries 3861,110550
+Yacc_entries 3868,110642
+#define LOOP_ON_INPUT_LINES(3875,110720
+#define LOOKING_AT(3884,111056
+#define LOOKING_AT_NOCASE(3891,111461
+just_read_file 3901,111861
+F_takeprec 3914,112039
+F_getit 3937,112366
+Fortran_functions 3961,112840
+Ada_getit 4052,114669
+Ada_funcs 4115,116044
+Asm_labels 4228,118582
+Perl_functions 4261,119549
+Python_functions 4357,122057
+PHP_functions 4387,122684
+Cobol_paragraphs 4466,124471
+Makefile_targets 4494,125029
+Pascal_functions 4529,125950
+L_getit 4709,130318
+Lisp_functions 4725,130664
+Lua_functions 4785,131850
+PS_functions 4811,132385
+Forth_words 4841,133053
+Scheme_functions 4877,134092
+static linebuffer *TEX_toktab TEX_toktab4908,134781
+static const char *TEX_defenv TEX_defenv4912,134974
+static char TEX_esc 4920,135261
+static char TEX_opgrp 4921,135289
+static char TEX_clgrp 4922,135318
+TeX_commands 4928,135395
+#define TEX_LESC 4986,136652
+#define TEX_SESC 4987,136674
+TEX_mode 4992,136804
+TEX_decode_env 5026,137509
+Texinfo_nodes 5071,138554
+HTML_labels 5094,139013
+Prolog_functions 5219,142347
+prolog_skip_comment 5255,143128
+prolog_pr 5281,143736
+prolog_atom 5319,144628
+Erlang_functions 5379,145666
+erlang_func 5438,146965
+erlang_attribute 5476,147642
+erlang_atom 5496,148061
+scan_separators 5534,149080
+analyze_regex 5586,150460
+add_regex 5654,152050
+substitute 5767,154797
+free_regexps 5814,155837
+regex_tag_multiline 5836,156291
+nocase_tail 5913,158263
+get_tag 5928,158519
+readline_internal 5959,159455
+readline 6037,161296
+savestr 6230,167243
+savenstr 6240,167473
+skip_spaces 6249,167679
+skip_non_spaces 6258,167833
+skip_name 6267,167983
+fatal 6277,168156
+pfatal 6284,168253
+suggest_asking_for_help 6291,168332
+error 6300,168554
+concat 6313,168846
+etags_getcwd 6329,169259
+relative_filename 6350,169725
+absolute_filename 6389,170751
+absolute_dirname 6453,172416
+filename_is_absolute 6472,172845
+canonicalize_filename 6484,173096
+# define ISUPPER(6491,173235
+linebuffer_init 6514,173656
+linebuffer_setlen 6524,173887
+xmalloc 6536,174148
+xrealloc 6545,174314
+
+c-src/exit.c,47
+ } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/exit.strange_suffix,47
+ } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/sysdep.h,491
+#define ENTRY(21,865
+#define PSEUDO(26,972
+ movl $SYS_##syscall_nam$SYS_##syscall_na31,1132
+ movl $SYS_##syscall_name, %eax;eax31,1132
+ int $0x80;32,1180
+ test %eax,eax33,1210
+ test %eax, %eax;eax33,1210
+ jl syscall_error;34,1245
+#define XCHG_0 47,1562
+#define XCHG_1 48,1606
+#define XCHG_2 49,1648
+#define XCHG_3 50,1691
+#define XCHG_4 51,1734
+#define XCHG_5 52,1777
+#define r0 54,1821
+#define r1 55,1875
+#define scratch 56,1932
+#define MOVE(57,2001
+
+c-src/tab.c,196
+static int count_words(15,263
+static char *get_word(get_word35,553
+void tab_free(59,966
+char **tab_fill(tab_fill70,1129
+int tab_delete_first(91,1638
+int tab_count_words(103,1820
+
+c-src/dostorture.c,197
+(*tag1 tag118,451
+#define notag2 26,552
+(*tag2 tag229,629
+(*tag3 tag339,771
+#define notag4 45,860
+(*tag4 tag448,954
+tag5 57,1080
+tag6 66,1207
+int pp1(74,1316
+pp287,1418
+pp3(100,1517
+
+c-src/emacs/src/gmalloc.c,3539
+#define USE_PTHREAD25,1002
+#undef get_current_dir_name33,1126
+#undef malloc64,2110
+#undef realloc65,2124
+#undef calloc66,2139
+#undef free67,2153
+#define malloc 68,2165
+#define realloc 69,2188
+#define calloc 70,2213
+#define aligned_alloc 71,2236
+#define free 72,2273
+#define DUMPED 80,2472
+#define ALLOCATED_BEFORE_DUMPING(81,2507
+extern void *malloc malloc94,2718
+#define INT_BIT 124,3934
+#define BLOCKLOG 125,3977
+#define BLOCKSIZE 126,4018
+#define BLOCKIFY(127,4052
+#define HEAP 131,4215
+#define FINAL_FREE_BLOCKS 135,4391
+ } malloc_info;167,5388
+#define BLOCK(176,5620
+#define ADDRESS(177,5682
+struct list186,5939
+struct alignlist196,6153
+#define LOCK(223,7064
+#define UNLOCK(228,7195
+#define LOCK_ALIGNED_BLOCKS(233,7329
+#define UNLOCK_ALIGNED_BLOCKS(238,7484
+#define LOCK(244,7649
+#define UNLOCK(245,7664
+#define LOCK_ALIGNED_BLOCKS(246,7681
+#define UNLOCK_ALIGNED_BLOCKS(247,7711
+enum mcheck_status283,9092
+ MCHECK_DISABLED 285,9115
+ MCHECK_OK,286,9187
+ MCHECK_FREE,287,9226
+ MCHECK_HEAD,288,9270
+ MCHECK_TAIL 289,9334
+struct mstats308,10153
+char *_heapbase;_heapbase355,11829
+malloc_info *_heapinfo;_heapinfo358,11927
+static size_t heapsize;361,11983
+size_t _heapindex;364,12047
+size_t _heaplimit;367,12109
+struct list _fraghead[_fraghead370,12171
+size_t _chunks_used;373,12229
+size_t _bytes_used;374,12250
+size_t _chunks_free;375,12270
+size_t _bytes_free;376,12291
+int __malloc_initialized;379,12340
+size_t __malloc_extra_blocks;381,12367
+static int state_protected_p;400,12912
+static size_t last_state_size;401,12942
+static malloc_info *last_heapinfo;last_heapinfo402,12973
+protect_malloc_state 405,13014
+#define PROTECT_MALLOC_STATE(426,13627
+#define PROTECT_MALLOC_STATE(429,13697
+align 435,13794
+get_contiguous_space 466,14616
+register_heapinfo 497,15325
+pthread_mutex_t _malloc_mutex 517,15879
+pthread_mutex_t _aligned_blocks_mutex 518,15938
+int _malloc_thread_enabled_p;519,16005
+malloc_atfork_handler_prepare 522,16048
+malloc_atfork_handler_parent 529,16139
+malloc_atfork_handler_child 536,16233
+malloc_enable_thread 544,16375
+malloc_initialize_1 563,16961
+__malloc_initialize 594,17793
+static int morecore_recursing;604,17926
+morecore_nolock 609,18066
+_malloc_internal_nolock 722,21584
+_malloc_internal 920,28102
+malloc 932,28247
+_malloc 961,29140
+_free 967,29196
+_realloc 973,29240
+struct alignlist *_aligned_blocks _aligned_blocks1004,30345
+_free_internal_nolock 1009,30474
+_free_internal 1255,38476
+free 1265,38603
+weak_alias 1277,38799
+#define min(1306,39813
+_realloc_internal_nolock 1319,40309
+_realloc_internal 1435,43563
+realloc 1447,43726
+calloc 1478,44894
+#define __sbrk 1513,46042
+__default_morecore 1525,46511
+aligned_alloc 1557,47522
+memalign 1647,49704
+posix_memalign 1656,49909
+static size_t pagesize;1703,51317
+valloc 1706,51349
+#undef malloc1715,51490
+#undef realloc1716,51504
+#undef calloc1717,51519
+#undef aligned_alloc1718,51533
+#undef free1719,51554
+hybrid_malloc 1736,52083
+hybrid_calloc 1744,52188
+hybrid_free 1752,52319
+hybrid_aligned_alloc 1765,52626
+hybrid_realloc 1780,52984
+hybrid_get_current_dir_name 1811,53797
+#define MAGICWORD 1854,55206
+#define MAGICFREE 1855,55261
+#define MAGICBYTE 1856,55316
+#define MALLOCFLOOD 1857,55348
+#define FREEFLOOD 1858,55382
+struct hdr1860,55415
+checkhdr 1867,55581
+freehook 1891,56022
+mallochook 1927,56804
+reallochook 1944,57143
+mabort 1978,57901
+static int mcheck_used 2012,58586
+mcheck 2015,58619
+mprobe 2035,59138
+
+c-src/emacs/src/regex.h,3761
+#define _REGEX_H 21,836
+typedef unsigned long reg_syntax_t;43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749
+#define RE_BK_PLUS_QM 52,1969
+#define RE_CHAR_CLASSES 58,2298
+#define RE_CONTEXT_INDEP_ANCHORS 72,3032
+#define RE_CONTEXT_INDEP_OPS 80,3458
+#define RE_CONTEXT_INVALID_OPS 84,3658
+#define RE_DOT_NEWLINE 88,3801
+#define RE_DOT_NOT_NULL 92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE 96,4082
+#define RE_INTERVALS 101,4292
+#define RE_LIMITED_OPS 105,4441
+#define RE_NEWLINE_ALT 109,4583
+#define RE_NO_BK_BRACES 114,4773
+#define RE_NO_BK_PARENS 118,4964
+#define RE_NO_BK_REFS 122,5120
+#define RE_NO_BK_VBAR 126,5316
+#define RE_NO_EMPTY_RANGES 132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766
+#define RE_NO_POSIX_BACKTRACKING 140,5937
+#define RE_NO_GNU_OPS 144,6133
+#define RE_FRUGAL 147,6253
+#define RE_SHY_GROUPS 150,6360
+#define RE_NO_NEWLINE_ANCHOR 153,6468
+#define RE_DEBUG 161,6884
+#define RE_SYNTAX_EMACS 183,7684
+#define RE_SYNTAX_AWK 186,7780
+#define RE_SYNTAX_GNU_AWK 193,8084
+#define RE_SYNTAX_POSIX_AWK 197,8255
+#define RE_SYNTAX_GREP 201,8393
+#define RE_SYNTAX_EGREP 206,8549
+#define RE_SYNTAX_POSIX_EGREP 212,8765
+#define RE_SYNTAX_ED 216,8910
+#define RE_SYNTAX_SED 218,8954
+#define _RE_SYNTAX_POSIX_COMMON 221,9072
+#define RE_SYNTAX_POSIX_BASIC 225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC 231,9508
+#define RE_SYNTAX_POSIX_EXTENDED 234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 242,9967
+# undef RE_DUP_MAX253,10454
+#define RE_DUP_MAX 256,10540
+#define REG_EXTENDED 263,10762
+#define REG_ICASE 267,10886
+#define REG_NEWLINE 272,11070
+#define REG_NOSUB 276,11248
+#define REG_NOTBOL 286,11614
+#define REG_NOTEOL 289,11688
+ REG_ENOSYS 297,11859
+ REG_NOERROR 300,11941
+ REG_NOMATCH,301,11976
+ REG_BADPAT,305,12123
+ REG_ECOLLATE,306,12162
+ REG_ECTYPE,307,12203
+ REG_EESCAPE,308,12255
+ REG_ESUBREG,309,12298
+ REG_EBRACK,310,12345
+ REG_EPAREN,311,12391
+ REG_EBRACE,312,12436
+ REG_BADBR,313,12472
+ REG_ERANGE,314,12519
+ REG_ESPACE,315,12560
+ REG_BADRPT,316,12601
+ REG_EEND,319,12693
+ REG_ESIZE,320,12728
+ REG_ERPAREN,321,12790
+ REG_ERANGEX 322,12859
+} reg_errcode_t;323,12911
+# define RE_TRANSLATE_TYPE 332,13273
+struct re_pattern_buffer335,13315
+#define REGS_UNALLOCATED 376,14889
+#define REGS_REALLOCATE 377,14916
+#define REGS_FIXED 378,14942
+typedef struct re_pattern_buffer regex_t;416,16098
+typedef ssize_t regoff_t;423,16492
+struct re_registers428,16652
+# define RE_NREGS 440,16942
+} regmatch_t;451,17317
+# define _Restrict_ 540,20886
+# define _Restrict_ 542,20979
+# define _Restrict_544,21018
+# define _Restrict_arr_ 555,21418
+# define _Restrict_arr_557,21461
+# define CHAR_CLASS_MAX_LENGTH 593,22470
+# define CHAR_CLASS_MAX_LENGTH 597,22648
+typedef wctype_t re_wctype_t;599,22692
+typedef wchar_t re_wchar_t;600,22722
+# define re_wctype 601,22750
+# define re_iswctype 602,22776
+# define re_wctype_to_bit(603,22806
+# define CHAR_CLASS_MAX_LENGTH 605,22844
+# define btowc(606,22906
+typedef enum { RECC_ERROR 609,22953
+ RECC_ALNUM,610,22984
+ RECC_ALNUM, RECC_ALPHA,610,22984
+ RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984
+ RECC_GRAPH,611,23027
+ RECC_GRAPH, RECC_PRINT,611,23027
+ RECC_LOWER,612,23059
+ RECC_LOWER, RECC_UPPER,612,23059
+ RECC_PUNCT,613,23091
+ RECC_PUNCT, RECC_CNTRL,613,23091
+ RECC_DIGIT,614,23123
+ RECC_DIGIT, RECC_XDIGIT,614,23123
+ RECC_BLANK,615,23156
+ RECC_BLANK, RECC_SPACE,615,23156
+ RECC_MULTIBYTE,616,23188
+ RECC_MULTIBYTE, RECC_NONASCII,616,23188
+ RECC_ASCII,617,23227
+ RECC_ASCII, RECC_UNIBYTE617,23227
+} re_wctype_t;618,23260
+typedef int re_wchar_t;623,23387
+
+c-src/emacs/src/keyboard.c,20957
+volatile int interrupt_input_blocked;76,1808
+volatile bool pending_signals;80,1944
+#define KBD_BUFFER_SIZE 82,1976
+KBOARD *initial_kboard;initial_kboard84,2006
+KBOARD *current_kboard;current_kboard85,2030
+static KBOARD *all_kboards;all_kboards86,2054
+static bool single_kboard;89,2154
+#define NUM_RECENT_KEYS 91,2182
+static int recent_keys_index;94,2269
+static int total_keys;97,2357
+static Lisp_Object recent_keys;100,2443
+Lisp_Object this_command_keys;107,2777
+ptrdiff_t this_command_key_count;108,2808
+static bool this_command_key_count_reset;112,2922
+static Lisp_Object raw_keybuf;116,3074
+static int raw_keybuf_count;117,3105
+#define GROW_RAW_KEYBUF 119,3135
+static ptrdiff_t this_single_command_key_start;125,3350
+static ptrdiff_t before_command_key_count;129,3498
+static ptrdiff_t before_command_echo_length;130,3541
+sigjmp_buf return_to_command_loop;135,3677
+static Lisp_Object recover_top_level_message;138,3791
+static Lisp_Object regular_top_level_message;143,3930
+static sys_jmp_buf getcjmp;147,4031
+bool waiting_for_input;150,4095
+static bool echoing;154,4186
+static struct kboard
*ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328
+struct kboard *echo_kboard;echo_kboard166,4632
+Lisp_Object echo_message_buffer;171,4744
+bool immediate_quit;174,4837
+int quit_char;192,5623
+EMACS_INT command_loop_level;195,5680
+Lisp_Object unread_switch_frame;204,6108
+static ptrdiff_t last_non_minibuf_size;207,6216
+uintmax_t num_input_events;210,6334
+static EMACS_INT last_auto_save;214,6428
+static ptrdiff_t last_point_position;217,6523
+Lisp_Object internal_last_event_frame;228,7028
+static Lisp_Object read_key_sequence_cmd;232,7168
+static Lisp_Object read_key_sequence_remapped;233,7210
+static FILE *dribble;dribble236,7310
+bool input_pending;239,7368
+static bool input_was_pending;287,10022
+static struct input_event kbd_buffer[kbd_buffer291,10107
+static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386
+static struct input_event * volatile kbd_store_ptr;302,10601
+unsigned timers_run;320,11296
+struct timespec
*input_available_clear_time;input_available_clear_time324,11408
+bool interrupt_input;328,11573
+bool interrupts_deferred;331,11671
+static struct timespec timer_idleness_start_time;335,11746
+static struct timespec timer_last_idleness_start_time;340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW 346,12046
+#define READABLE_EVENTS_FILTER_EVENTS 347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES 348,12142
+kset_echo_string 392,14088
+kset_kbd_queue 397,14184
+kset_keyboard_translate_table 402,14276
+kset_last_prefix_arg 407,14399
+kset_last_repeatable_command 412,14504
+kset_local_function_key_map 417,14625
+kset_overriding_terminal_local_map 422,14744
+kset_real_last_command 427,14877
+kset_system_key_syms 432,14986
+echo_add_key 443,15249
+echo_char 527,17527
+echo_dash 541,17813
+echo_now 586,19140
+cancel_echoing 635,20614
+echo_length 648,20922
+echo_truncate 660,21253
+add_command_key 672,21582
+recursive_edit_1 697,22406
+record_auto_save 742,23848
+force_auto_save_soon 751,24016
+DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137
+recursive_edit_unwind 804,25747
+any_kboard_state 817,26013
+single_kboard_state 838,26665
+not_single_kboard_state 848,26803
+struct kboard_stack858,27065
+static struct kboard_stack *kboard_stack;kboard_stack864,27138
+push_kboard 867,27186
+pop_kboard 879,27375
+temporarily_switch_to_single_kboard 914,28263
+record_single_kboard_state 943,29437
+restore_kboard_configuration 952,29621
+cmd_error 970,30077
+cmd_error_internal 1024,31510
+DEFUN ("command-error-default-function",
Fcommand_error_default_function,command-error-default-function1043,32030
+command_loop 1094,33916
+command_loop_2 1134,35135
+top_level_2 1146,35339
+top_level_1 1152,35417
+DEFUN ("top-level", Ftop_level,top-level1164,35787
+user_error 1183,36288
+DEFUN ("exit-recursive-edit",
Fexit_recursive_edit,exit-recursive-edit1189,36429
+DEFUN ("abort-recursive-edit",
Fabort_recursive_edit,abort-recursive-edit1201,36819
+tracking_off 1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816
+bool ignore_mouse_drag_p;1256,38392
+some_mouse_moved 1259,38441
+Lisp_Object last_undo_boundary;1287,39032
+command_loop_1 1294,39273
+read_menu_command 1649,50889
+adjust_point_for_property 1678,51617
+safe_run_hooks_1 1831,57339
+safe_run_hooks_error 1841,57569
+safe_run_hook_funcall 1878,58576
+safe_run_hooks 1893,59058
+int poll_suppress_count;1908,59397
+static struct atimer *poll_timer;poll_timer1915,59487
+poll_for_input_1 1919,59589
+poll_for_input 1930,59789
+start_polling 1942,60053
+input_polling_used 1979,61091
+stop_polling 1994,61390
+set_poll_suppress_count 2009,61759
+bind_polling_period 2029,62141
+make_ctrl_char 2048,62492
+show_help_echo 2113,64455
+static Lisp_Object help_form_saved_window_configs;2156,65638
+read_char_help_form_unwind 2158,65701
+#define STOP_POLLING 2166,65959
+#define RESUME_POLLING 2170,66084
+read_event_from_main_queue 2175,66229
+read_decoded_event_from_main_queue 2249,68417
+#define MAX_ENCODED_BYTES 2254,68664
+echo_keystrokes_p 2342,71556
+read_char 2376,72848
+record_menu_key 3225,98949
+help_char_p 3258,99674
+record_char 3273,99953
+save_getcjmp 3412,104235
+restore_getcjmp 3418,104326
+readable_events 3430,104697
+int stop_character EXTERNALLY_VISIBLE;3497,106437
+event_to_kboard 3500,106493
+kbd_buffer_nr_stored 3522,107142
+kbd_buffer_store_event 3534,107483
+kbd_buffer_store_event_hold 3550,108025
+kbd_buffer_unget_event 3684,111617
+#define INPUT_EVENT_POS_MAX 3698,112018
+#define INPUT_EVENT_POS_MIN 3701,112147
+position_to_Time 3706,112287
+Time_to_position 3716,112514
+gen_help_event 3738,113171
+kbd_buffer_store_help_event 3756,113611
+discard_mouse_events 3773,113976
+kbd_buffer_events_waiting 3803,114711
+clear_event 3823,115068
+kbd_buffer_get_event 3836,115408
+process_special_events 4258,127881
+swallow_events 4322,129705
+timer_start_idle 4339,130098
+timer_stop_idle 4355,130576
+timer_resume_idle 4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912
+Lisp_Object pending_funcalls;4377,131172
+decode_timer 4381,131293
+timer_check_2 4414,132246
+timer_check 4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662
+static Lisp_Object accent_key_syms;4625,138239
+static Lisp_Object func_key_syms;4626,138275
+static Lisp_Object mouse_syms;4627,138309
+static Lisp_Object wheel_syms;4628,138340
+static Lisp_Object drag_n_drop_syms;4629,138371
+static const int lispy_accent_codes[lispy_accent_codes4634,138516
+static const char *const lispy_accent_keys[lispy_accent_keys4741,139878
+#define FUNCTION_KEY_OFFSET 4766,140314
+const char *const lispy_function_keys[lispy_function_keys4768,140347
+static const char *const
lispy_multimedia_keys[lispy_multimedia_keys4962,148901
+static const char *const lispy_kana_keys[lispy_kana_keys5026,150135
+#define FUNCTION_KEY_OFFSET 5061,151751
+static const char *const lispy_function_keys[lispy_function_keys5065,151894
+#define ISO_FUNCTION_KEY_OFFSET 5149,154429
+static const char *const
iso_lispy_function_keys[iso_lispy_function_keys5151,154469
+static Lisp_Object Vlispy_mouse_stem;5172,155328
+static const char *const lispy_wheel_names[lispy_wheel_names5174,155367
+static const char *const
lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619
+static short const scroll_bar_parts[scroll_bar_parts5189,155885
+static Lisp_Object button_down_location;5210,156910
+static int last_mouse_button;5215,157065
+static int last_mouse_x;5216,157095
+static int last_mouse_y;5217,157120
+static Time button_down_time;5218,157145
+static int double_click_count;5222,157229
+make_lispy_position 5228,157390
+toolkit_menubar_in_use 5456,163953
+make_scroll_bar_position 5469,164321
+make_lispy_event 5485,164967
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers",
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list",
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector",
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector",
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys",
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys",
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths",
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys",
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode",
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control",
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode",
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode",
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+ DEFVAR_LISP ("internal--top-level-message"11058,333972
+ DEFVAR_LISP ("last-command-event"11312,342173
+ DEFVAR_LISP ("last-nonmenu-event"11315,342297
+ DEFVAR_LISP ("last-input-event"11321,342636
+ DEFVAR_LISP ("unread-command-events"11324,342730
+ DEFVAR_LISP ("unread-post-input-method-events"11332,343190
+ DEFVAR_LISP ("unread-input-method-events"11338,343529
+ DEFVAR_LISP ("meta-prefix-char"11346,343898
+ DEFVAR_KBOARD ("last-command"11351,344106
+ DEFVAR_KBOARD ("real-last-command"11368,344787
+ DEFVAR_KBOARD ("last-repeatable-command"11372,344973
+ DEFVAR_LISP ("this-command"11378,345261
+ DEFVAR_LISP ("real-this-command"11384,345498
+ DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680
+ DEFVAR_LISP ("this-original-command"11396,346123
+ DEFVAR_INT ("auto-save-interval"11403,346520
+ DEFVAR_LISP ("auto-save-timeout"11408,346734
+ DEFVAR_LISP ("echo-keystrokes"11415,347079
+ DEFVAR_INT ("polling-period"11421,347350
+ DEFVAR_LISP ("double-click-time"11428,347693
+ DEFVAR_INT ("double-click-fuzz"11435,348029
+ DEFVAR_INT ("num-input-keys"11446,348519
+ DEFVAR_INT ("num-nonmacro-input-events"11452,348794
+ DEFVAR_LISP ("last-event-frame"11457,349032
+ DEFVAR_LISP ("tty-erase-char"11463,349311
+ DEFVAR_LISP ("help-char"11466,349434
+ DEFVAR_LISP ("help-event-list"11472,349717
+ DEFVAR_LISP ("help-form"11477,349928
+ DEFVAR_LISP ("prefix-help-command"11483,350176
+ DEFVAR_LISP ("top-level"11489,350454
+ DEFVAR_KBOARD ("keyboard-translate-table"11495,350675
+ DEFVAR_BOOL ("cannot-suspend"11511,351488
+ DEFVAR_BOOL ("menu-prompting"11516,351715
+ DEFVAR_LISP ("menu-prompt-more-char"11526,352145
+ DEFVAR_INT ("extra-keyboard-modifiers"11531,352391
+ DEFVAR_LISP ("deactivate-mark"11545,353117
+ DEFVAR_LISP ("pre-command-hook"11553,353486
+ DEFVAR_LISP ("post-command-hook"11560,353841
+ DEFVAR_LISP ("echo-area-clear-hook"11568,354204
+ DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419
+ DEFVAR_LISP ("menu-bar-final-items"11578,354622
+ DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872
+ DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230
+ DEFVAR_LISP ("overriding-local-map"11598,355652
+ DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103
+ DEFVAR_LISP ("special-event-map"11613,356442
+ DEFVAR_LISP ("track-mouse"11617,356630
+ DEFVAR_KBOARD ("system-key-alist"11620,356757
+ DEFVAR_KBOARD ("local-function-key-map"11629,357138
+ DEFVAR_KBOARD ("input-decode-map"11658,358597
+ DEFVAR_LISP ("function-key-map"11675,359385
+ DEFVAR_LISP ("key-translation-map"11683,359801
+ DEFVAR_LISP ("deferred-action-list"11689,360145
+ DEFVAR_LISP ("deferred-action-function"11694,360393
+ DEFVAR_LISP ("delayed-warnings-list"11700,360692
+ DEFVAR_LISP ("timer-list"11708,361100
+ DEFVAR_LISP ("timer-idle-list"11712,361252
+ DEFVAR_LISP ("input-method-function"11716,361415
+ DEFVAR_LISP ("input-method-previous-message"11737,362384
+ DEFVAR_LISP ("show-help-function"11744,362745
+ DEFVAR_LISP ("disable-point-adjustment"11749,362977
+ DEFVAR_LISP ("global-disable-point-adjustment"11761,363527
+ DEFVAR_LISP ("minibuffer-message-timeout"11770,363893
+ DEFVAR_LISP ("throw-on-input"11775,364171
+ DEFVAR_LISP ("command-error-function"11781,364422
+ DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909
+ DEFVAR_LISP ("select-active-regions"11798,365236
+ DEFVAR_LISP ("saved-region-selection"11807,365628
+ DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013
+ DEFVAR_LISP ("debug-on-event"11825,366554
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+ DEFVAR_LISP ("internal--top-level-message",\111058,333972
+ DEFVAR_LISP ("last-command-event",\111312,342173
+ DEFVAR_LISP ("last-nonmenu-event",\111315,342297
+ DEFVAR_LISP ("last-input-event",\111321,342636
+ DEFVAR_LISP ("unread-command-events",\111324,342730
+ DEFVAR_LISP ("unread-post-input-method-events",\111332,343190
+ DEFVAR_LISP ("unread-input-method-events",\111338,343529
+ DEFVAR_LISP ("meta-prefix-char",\111346,343898
+ DEFVAR_KBOARD ("last-command",\111351,344106
+ DEFVAR_KBOARD ("real-last-command",\111368,344787
+ DEFVAR_KBOARD ("last-repeatable-command",\111372,344973
+ DEFVAR_LISP ("this-command",\111378,345261
+ DEFVAR_LISP ("real-this-command",\111384,345498
+ DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680
+ DEFVAR_LISP ("this-original-command",\111396,346123
+ DEFVAR_INT ("auto-save-interval",\111403,346520
+ DEFVAR_LISP ("auto-save-timeout",\111408,346734
+ DEFVAR_LISP ("echo-keystrokes",\111415,347079
+ DEFVAR_INT ("polling-period",\111421,347350
+ DEFVAR_LISP ("double-click-time",\111428,347693
+ DEFVAR_INT ("double-click-fuzz",\111435,348029
+ DEFVAR_INT ("num-input-keys",\111446,348519
+ DEFVAR_INT ("num-nonmacro-input-events",\111452,348794
+ DEFVAR_LISP ("last-event-frame",\111457,349032
+ DEFVAR_LISP ("tty-erase-char",\111463,349311
+ DEFVAR_LISP ("help-char",\111466,349434
+ DEFVAR_LISP ("help-event-list",\111472,349717
+ DEFVAR_LISP ("help-form",\111477,349928
+ DEFVAR_LISP ("prefix-help-command",\111483,350176
+ DEFVAR_LISP ("top-level",\111489,350454
+ DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675
+ DEFVAR_BOOL ("cannot-suspend",\111511,351488
+ DEFVAR_BOOL ("menu-prompting",\111516,351715
+ DEFVAR_LISP ("menu-prompt-more-char",\111526,352145
+ DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391
+ DEFVAR_LISP ("deactivate-mark",\111545,353117
+ DEFVAR_LISP ("pre-command-hook",\111553,353486
+ DEFVAR_LISP ("post-command-hook",\111560,353841
+ DEFVAR_LISP ("echo-area-clear-hook",\111568,354204
+ DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419
+ DEFVAR_LISP ("menu-bar-final-items",\111578,354622
+ DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872
+ DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230
+ DEFVAR_LISP ("overriding-local-map",\111598,355652
+ DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103
+ DEFVAR_LISP ("special-event-map",\111613,356442
+ DEFVAR_LISP ("track-mouse",\111617,356630
+ DEFVAR_KBOARD ("system-key-alist",\111620,356757
+ DEFVAR_KBOARD ("local-function-key-map",\111629,357138
+ DEFVAR_KBOARD ("input-decode-map",\111658,358597
+ DEFVAR_LISP ("function-key-map",\111675,359385
+ DEFVAR_LISP ("key-translation-map",\111683,359801
+ DEFVAR_LISP ("deferred-action-list",\111689,360145
+ DEFVAR_LISP ("deferred-action-function",\111694,360393
+ DEFVAR_LISP ("delayed-warnings-list",\111700,360692
+ DEFVAR_LISP ("timer-list",\111708,361100
+ DEFVAR_LISP ("timer-idle-list",\111712,361252
+ DEFVAR_LISP ("input-method-function",\111716,361415
+ DEFVAR_LISP ("input-method-previous-message",\111737,362384
+ DEFVAR_LISP ("show-help-function",\111744,362745
+ DEFVAR_LISP ("disable-point-adjustment",\111749,362977
+ DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527
+ DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893
+ DEFVAR_LISP ("throw-on-input",\111775,364171
+ DEFVAR_LISP ("command-error-function",\111781,364422
+ DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909
+ DEFVAR_LISP ("select-active-regions",\111798,365236
+ DEFVAR_LISP ("saved-region-selection",\111807,365628
+ DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013
+ DEFVAR_LISP ("debug-on-event",\111825,366554
+
+c-src/emacs/src/lisp.h,20567
+#define EMACS_LISP_H22,800
+#define DECLARE_GDB_SYM(47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(49,1508
+# define DEFINE_GDB_SYMBOL_END(50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(52,1625
+# define DEFINE_GDB_SYMBOL_END(53,1702
+#undef min57,1790
+#undef max58,1801
+#define max(59,1812
+#define min(60,1854
+#define ARRAYELTS(63,1936
+#define GCTYPEBITS 67,2079
+DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037
+# define NONPOINTER_BITS 78,2567
+# define NONPOINTER_BITS 80,2600
+typedef int EMACS_INT;91,3023
+typedef unsigned int EMACS_UINT;92,3046
+# define EMACS_INT_MAX 93,3079
+# define pI 94,3111
+typedef long int EMACS_INT;96,3203
+typedef unsigned long EMACS_UINT;97,3231
+# define EMACS_INT_MAX 98,3265
+# define pI 99,3298
+typedef long long int EMACS_INT;103,3477
+typedef unsigned long long int EMACS_UINT;104,3510
+# define EMACS_INT_MAX 105,3553
+# define pI 106,3587
+enum { BOOL_VECTOR_BITS_PER_CHAR 114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR 115,3840
+typedef size_t bits_word;123,4165
+# define BITS_WORD_MAX 124,4191
+enum { BITS_PER_BITS_WORD 125,4223
+typedef unsigned char bits_word;127,4290
+# define BITS_WORD_MAX 128,4323
+enum { BITS_PER_BITS_WORD 129,4386
+ BITS_PER_CHAR 136,4570
+ BITS_PER_SHORT 137,4605
+ BITS_PER_LONG 138,4657
+ BITS_PER_EMACS_INT 139,4712
+typedef intmax_t printmax_t;148,5089
+typedef uintmax_t uprintmax_t;149,5118
+# define pMd 150,5149
+# define pMu 151,5170
+typedef EMACS_INT printmax_t;153,5197
+typedef EMACS_UINT uprintmax_t;154,5227
+# define pMd 155,5259
+# define pMu 156,5278
+# define pD 165,5664
+# define pD 167,5709
+# define pD 169,5756
+# define pD 171,5779
+# define eassert(200,7062
+# define eassume(201,7140
+# define eassert(208,7319
+# define eassume(212,7450
+enum Lisp_Bits239,8519
+#define GCALIGNMENT 243,8647
+ VALBITS 246,8742
+ INTTYPEBITS 249,8838
+ FIXNUM_BITS 252,8945
+#define VAL_MAX 263,9327
+#define USE_LSB_TAG 271,9777
+DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733
+# define alignas(281,10077
+# define GCALIGNED 288,10227
+# define GCALIGNED 290,10292
+# define lisp_h_XLI(327,11642
+# define lisp_h_XIL(328,11673
+# define lisp_h_XLI(330,11724
+# define lisp_h_XIL(331,11751
+#define lisp_h_CHECK_LIST_CONS(333,11785
+#define lisp_h_CHECK_NUMBER(334,11856
+#define lisp_h_CHECK_SYMBOL(335,11927
+#define lisp_h_CHECK_TYPE(336,11996
+#define lisp_h_CONSP(338,12107
+#define lisp_h_EQ(339,12156
+#define lisp_h_FLOATP(340,12201
+#define lisp_h_INTEGERP(341,12252
+#define lisp_h_MARKERP(342,12333
+#define lisp_h_MISCP(343,12408
+#define lisp_h_NILP(344,12457
+#define lisp_h_SET_SYMBOL_VAL(345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(347,12607
+#define lisp_h_SYMBOL_VAL(348,12671
+#define lisp_h_SYMBOLP(350,12772
+#define lisp_h_VECTORLIKEP(351,12825
+#define lisp_h_XCAR(352,12886
+#define lisp_h_XCDR(353,12924
+#define lisp_h_XCONS(354,12964
+#define lisp_h_XHASH(356,13059
+#define lisp_h_XPNTR(357,13093
+# define lisp_h_check_cons_list(360,13221
+# define lisp_h_make_number(363,13289
+# define lisp_h_XFASTINT(365,13392
+# define lisp_h_XINT(366,13429
+# define lisp_h_XSYMBOL(367,13478
+# define lisp_h_XTYPE(371,13631
+# define lisp_h_XUNTAG(372,13696
+# define XLI(381,14086
+# define XIL(382,14117
+# define CHECK_LIST_CONS(383,14148
+# define CHECK_NUMBER(384,14209
+# define CHECK_SYMBOL(385,14258
+# define CHECK_TYPE(386,14307
+# define CONSP(387,14382
+# define EQ(388,14417
+# define FLOATP(389,14452
+# define INTEGERP(390,14489
+# define MARKERP(391,14530
+# define MISCP(392,14569
+# define NILP(393,14604
+# define SET_SYMBOL_VAL(394,14637
+# define SYMBOL_CONSTANT_P(395,14700
+# define SYMBOL_VAL(396,14763
+# define SYMBOLP(397,14812
+# define VECTORLIKEP(398,14851
+# define XCAR(399,14898
+# define XCDR(400,14931
+# define XCONS(401,14964
+# define XHASH(402,14999
+# define XPNTR(403,15034
+# define check_cons_list(405,15097
+# define make_number(408,15176
+# define XFASTINT(409,15224
+# define XINT(410,15266
+# define XSYMBOL(411,15300
+# define XTYPE(412,15340
+# define XUNTAG(413,15376
+#define LISP_MACRO_DEFUN(421,15672
+#define LISP_MACRO_DEFUN_VOID(425,15845
+#define INTMASK 437,16289
+#define case_Lisp_Int 438,16342
+#define ENUM_BF(445,16681
+#define ENUM_BF(447,16722
+enum Lisp_Type451,16763
+ Lisp_Symbol 454,16851
+ Lisp_Misc 458,16993
+ Lisp_Int0 461,17067
+ Lisp_Int1 462,17086
+ Lisp_String 466,17264
+ Lisp_Vectorlike 472,17543
+ Lisp_Cons 475,17632
+ Lisp_Float 477,17670
+enum Lisp_Misc_Type485,18016
+ Lisp_Misc_Free 487,18040
+ Lisp_Misc_Marker,488,18069
+ Lisp_Misc_Overlay,489,18091
+ Lisp_Misc_Save_Value,490,18114
+ Lisp_Misc_Finalizer,491,18140
+ Lisp_Misc_Float,494,18275
+ Lisp_Misc_Limit496,18359
+enum Lisp_Fwd_Type502,18543
+ Lisp_Fwd_Int,504,18566
+ Lisp_Fwd_Bool,505,18619
+ Lisp_Fwd_Obj,506,18670
+ Lisp_Fwd_Buffer_Obj,507,18729
+ Lisp_Fwd_Kboard_Obj 508,18800
+typedef struct { EMACS_INT i; } Lisp_Object;567,21781
+#define LISP_INITIALLY(569,21827
+#undef CHECK_LISP_OBJECT_TYPE571,21858
+enum CHECK_LISP_OBJECT_TYPE 572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888
+typedef EMACS_INT Lisp_Object;577,22064
+#define LISP_INITIALLY(578,22095
+enum CHECK_LISP_OBJECT_TYPE 579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125
+#define LISP_INITIALLY_ZERO 582,22226
+enum symbol_interned639,24199
+ SYMBOL_UNINTERNED 641,24222
+ SYMBOL_INTERNED 642,24247
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270
+enum symbol_redirect646,24315
+ SYMBOL_PLAINVAL 648,24338
+ SYMBOL_VARALIAS 649,24362
+ SYMBOL_LOCALIZED 650,24386
+ SYMBOL_FORWARDED 651,24410
+struct Lisp_Symbol654,24437
+ ENUM_BF 663,24793
+#define EXFUN(707,26252
+#define DEFUN_ARGS_MANY 712,26446
+#define DEFUN_ARGS_UNEVALLED 713,26498
+#define DEFUN_ARGS_0 714,26541
+#define DEFUN_ARGS_1 715,26569
+#define DEFUN_ARGS_2 716,26604
+#define DEFUN_ARGS_3 717,26652
+#define DEFUN_ARGS_4 718,26713
+#define DEFUN_ARGS_5 719,26787
+#define DEFUN_ARGS_6 721,26880
+#define DEFUN_ARGS_7 723,26986
+#define DEFUN_ARGS_8 725,27105
+#define TAG_PTR(729,27296
+#define TAG_SYMOFFSET(734,27543
+#define XLI_BUILTIN_LISPSYM(741,27842
+#define DEFINE_LISP_SYMBOL(746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572
+LISP_MACRO_DEFUN 762,28777
+# define ARRAY_MARK_FLAG 768,29024
+# define PSEUDOVECTOR_FLAG 774,29267
+enum pvec_type780,29568
+ PVEC_NORMAL_VECTOR,782,29585
+ PVEC_FREE,783,29607
+ PVEC_PROCESS,784,29620
+ PVEC_FRAME,785,29636
+ PVEC_WINDOW,786,29650
+ PVEC_BOOL_VECTOR,787,29665
+ PVEC_BUFFER,788,29685
+ PVEC_HASH_TABLE,789,29700
+ PVEC_TERMINAL,790,29719
+ PVEC_WINDOW_CONFIGURATION,791,29736
+ PVEC_SUBR,792,29765
+ PVEC_OTHER,793,29778
+ PVEC_COMPILED,795,29856
+ PVEC_CHAR_TABLE,796,29873
+ PVEC_SUB_CHAR_TABLE,797,29892
+ PVEC_FONT 798,29915
+enum More_Lisp_Bits801,29991
+ PSEUDOVECTOR_SIZE_BITS 808,30382
+ PSEUDOVECTOR_SIZE_MASK 809,30415
+ PSEUDOVECTOR_REST_BITS 813,30625
+ PSEUDOVECTOR_REST_MASK 814,30658
+ PSEUDOVECTOR_AREA_BITS 818,30823
+ PVEC_TYPE_MASK 819,30901
+# define VALMASK 829,31302
+DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257
+#define MOST_POSITIVE_FIXNUM 834,31532
+#define MOST_NEGATIVE_FIXNUM 835,31592
+XINT 874,32684
+XFASTINT 889,33035
+XSYMBOL 899,33263
+XTYPE 910,33481
+XUNTAG 918,33661
+LISP_MACRO_DEFUN 927,33857
+LISP_MACRO_DEFUN 940,34242
+#define FIXNUM_OVERFLOW_P(958,34855
+LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632
+LISP_MACRO_DEFUN 970,35171
+XSTRING 980,35391
+#define SYMBOL_INDEX(988,35575
+XFLOAT 991,35636
+XPROCESS 1000,35778
+XWINDOW 1007,35895
+XTERMINAL 1014,36012
+XSUBR 1021,36134
+XBUFFER 1028,36245
+XCHAR_TABLE 1035,36369
+XSUB_CHAR_TABLE 1042,36506
+XBOOL_VECTOR 1049,36648
+make_lisp_ptr 1058,36827
+make_lisp_symbol 1066,37013
+builtin_lisp_symbol 1074,37197
+#define XSETINT(1079,37279
+#define XSETFASTINT(1080,37325
+#define XSETCONS(1081,37375
+#define XSETVECTOR(1082,37435
+#define XSETSTRING(1083,37503
+#define XSETSYMBOL(1084,37567
+#define XSETFLOAT(1085,37621
+#define XSETMISC(1086,37683
+#define XSETPVECTYPE(1090,37772
+#define XSETPVECTYPESIZE(1092,37888
+#define XSETPSEUDOVECTOR(1099,38185
+#define XSETTYPED_PSEUDOVECTOR(1105,38369
+#define XSETWINDOW_CONFIGURATION(1110,38579
+#define XSETPROCESS(1112,38675
+#define XSETWINDOW(1113,38741
+#define XSETTERMINAL(1114,38805
+#define XSETSUBR(1115,38873
+#define XSETCOMPILED(1116,38933
+#define XSETBUFFER(1117,39001
+#define XSETCHAR_TABLE(1118,39065
+#define XSETBOOL_VECTOR(1119,39137
+#define XSETSUB_CHAR_TABLE(1120,39211
+XINTPTR 1128,39581
+make_pointer_integer 1134,39661
+LISP_MACRO_DEFUN_VOID 1143,39826
+typedef struct interval *INTERVAL;INTERVAL1149,39987
+xcar_addr 1174,40760
+xcdr_addr 1179,40837
+LISP_MACRO_DEFUN 1185,40931
+XSETCDR 1198,41307
+CAR 1205,41457
+CDR 1212,41591
+CAR_SAFE 1221,41791
+CDR_SAFE 1226,41877
+STRING_MULTIBYTE 1243,42250
+#define STRING_BYTES_BOUND 1261,43057
+#define STRING_SET_UNIBYTE(1265,43201
+#define STRING_SET_MULTIBYTE(1275,43516
+SDATA 1286,43830
+SSDATA 1291,43908
+SREF 1297,44037
+SSET 1302,44128
+SCHARS 1307,44242
+STRING_BYTES 1316,44415
+SBYTES 1326,44595
+STRING_SET_CHARS 1331,44681
+struct vectorlike_header1343,45232
+struct Lisp_Vector1369,46482
+ ALIGNOF_STRUCT_LISP_VECTOR1378,46681
+struct Lisp_Bool_Vector1384,46864
+bool_vector_size 1399,47385
+bool_vector_data 1407,47523
+bool_vector_uchar_data 1413,47617
+bool_vector_words 1421,47803
+bool_vector_bytes 1428,47998
+bool_vector_bitref 1437,48238
+bool_vector_ref 1445,48478
+bool_vector_set 1453,48618
+ header_size 1471,49047
+ bool_header_size 1472,49106
+ word_size 1473,49171
+AREF 1479,49284
+aref_addr 1485,49391
+ASIZE 1491,49501
+ASET 1497,49583
+gc_aset 1504,49742
+enum { NIL_IS_ZERO 1515,50269
+memclear 1520,50464
+#define VECSIZE(1531,50762
+#define PSEUDOVECSIZE(1538,51047
+#define UNSIGNED_CMP(1546,51480
+#define ASCII_CHAR_P(1552,51734
+enum CHARTAB_SIZE_BITS1565,52489
+ CHARTAB_SIZE_BITS_0 1567,52516
+ CHARTAB_SIZE_BITS_1 1568,52545
+ CHARTAB_SIZE_BITS_2 1569,52574
+ CHARTAB_SIZE_BITS_3 1570,52603
+struct Lisp_Char_Table1575,52672
+struct Lisp_Sub_Char_Table1606,53752
+CHAR_TABLE_REF_ASCII 1628,54566
+CHAR_TABLE_REF 1648,55113
+CHAR_TABLE_SET 1658,55402
+struct Lisp_Subr1670,55786
+enum char_table_specials1692,56798
+ CHAR_TABLE_STANDARD_SLOTS 1697,56993
+ SUB_CHAR_TABLE_OFFSET 1701,57214
+CHAR_TABLE_EXTRA_SLOTS 1707,57377
+LISP_MACRO_DEFUN 1723,57921
+SYMBOL_BLV 1732,58181
+SYMBOL_FWD 1738,58316
+LISP_MACRO_DEFUN_VOID 1744,58428
+SET_SYMBOL_BLV 1754,58691
+SET_SYMBOL_FWD 1760,58850
+SYMBOL_NAME 1767,59001
+SYMBOL_INTERNED_P 1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299
+#define DEFSYM(1796,59809
+LISP_MACRO_DEFUN DEFSYM1792,59630
+struct hash_table_test1805,60062
+struct Lisp_Hash_Table1823,60555
+XHASH_TABLE 1880,62531
+#define XSET_HASH_TABLE(1885,62602
+HASH_TABLE_P 1889,62703
+HASH_KEY 1896,62860
+HASH_VALUE 1903,63040
+HASH_NEXT 1911,63254
+HASH_HASH 1918,63431
+HASH_INDEX 1926,63677
+HASH_TABLE_SIZE 1933,63826
+enum DEFAULT_HASH_SIZE 1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956
+static double const DEFAULT_REHASH_THRESHOLD 1946,64176
+static double const DEFAULT_REHASH_SIZE 1950,64299
+sxhash_combine 1956,64465
+SXHASH_REDUCE 1964,64648
+struct Lisp_Misc_Any 1971,64806
+ ENUM_BF 1973,64866
+struct Lisp_Marker1978,64980
+ ENUM_BF 1980,65001
+struct Lisp_Overlay2021,66838
+ ENUM_BF 2034,67346
+ SAVE_UNUSED,2047,67641
+ SAVE_INTEGER,2048,67658
+ SAVE_FUNCPOINTER,2049,67676
+ SAVE_POINTER,2050,67698
+ SAVE_OBJECT2051,67716
+enum { SAVE_SLOT_BITS 2055,67801
+enum { SAVE_VALUE_SLOTS 2058,67898
+enum { SAVE_TYPE_BITS 2062,68006
+enum Lisp_Save_Type2064,68072
+ SAVE_TYPE_INT_INT 2066,68096
+ SAVE_TYPE_INT_INT_INT2067,68169
+ SAVE_TYPE_OBJ_OBJ 2069,68259
+ SAVE_TYPE_OBJ_OBJ_OBJ 2070,68330
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68411
+ SAVE_TYPE_PTR_INT 2073,68506
+ SAVE_TYPE_PTR_OBJ 2074,68579
+ SAVE_TYPE_PTR_PTR 2075,68651
+ SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68724
+ SAVE_TYPE_MEMORY 2080,68882
+typedef void (*voidfuncptr)voidfuncptr2108,69836
+struct Lisp_Save_Value2110,69873
+ ENUM_BF 2112,69900
+save_type 2134,70752
+XSAVE_POINTER 2143,70982
+set_save_pointer 2149,71144
+XSAVE_FUNCPOINTER 2155,71326
+XSAVE_INTEGER 2164,71546
+set_save_integer 2170,71708
+XSAVE_OBJECT 2179,71929
+struct Lisp_Finalizer2186,72106
+struct Lisp_Free2201,72581
+ ENUM_BF 2203,72602
+union Lisp_Misc2212,72882
+XMISC 2223,73181
+XMISCANY 2229,73270
+XMISCTYPE 2236,73379
+XMARKER 2242,73467
+XOVERLAY 2249,73582
+XSAVE_VALUE 2256,73703
+XFINALIZER 2263,73832
+struct Lisp_Intfwd2274,74117
+struct Lisp_Boolfwd2284,74411
+struct Lisp_Objfwd2294,74702
+struct Lisp_Buffer_Objfwd2302,74934
+struct Lisp_Buffer_Local_Value2334,76470
+struct Lisp_Kboard_Objfwd2362,77729
+union Lisp_Fwd2368,77838
+XFWDTYPE 2378,78084
+XBUFFER_OBJFWD 2384,78180
+struct Lisp_Float2391,78316
+XFLOAT_DATA 2401,78434
+ IEEE_FLOATING_POINT2415,78943
+#define _UCHAR_T2423,79266
+typedef unsigned char UCHAR;2424,79283
+enum Lisp_Compiled2429,79366
+ COMPILED_ARGLIST 2431,79389
+ COMPILED_BYTECODE 2432,79415
+ COMPILED_CONSTANTS 2433,79442
+ COMPILED_STACK_DEPTH 2434,79470
+ COMPILED_DOC_STRING 2435,79500
+ COMPILED_INTERACTIVE 2436,79529
+enum char_bits2443,79831
+ CHAR_ALT 2445,79850
+ CHAR_SUPER 2446,79876
+ CHAR_HYPER 2447,79904
+ CHAR_SHIFT 2448,79932
+ CHAR_CTL 2449,79960
+ CHAR_META 2450,79986
+ CHAR_MODIFIER_MASK 2452,80014
+ CHARACTERBITS 2457,80209
+LISP_MACRO_DEFUN 2462,80267
+NATNUMP 2470,80409
+RANGED_INTEGERP 2476,80490
+#define TYPE_RANGED_INTEGERP(2481,80612
+LISP_MACRO_DEFUN 2486,80797
+VECTORP 2500,81270
+OVERLAYP 2505,81373
+SAVE_VALUEP 2510,81472
+FINALIZERP 2516,81578
+AUTOLOADP 2522,81682
+BUFFER_OBJFWDP 2528,81773
+PSEUDOVECTOR_TYPEP 2534,81871
+PSEUDOVECTORP 2542,82124
+WINDOW_CONFIGURATIONP 2558,82476
+PROCESSP 2564,82586
+WINDOWP 2570,82670
+TERMINALP 2576,82752
+SUBRP 2582,82838
+COMPILEDP 2588,82916
+BUFFERP 2594,83002
+CHAR_TABLE_P 2600,83084
+SUB_CHAR_TABLE_P 2606,83175
+BOOL_VECTOR_P 2612,83274
+FRAMEP 2618,83367
+IMAGEP 2625,83484
+ARRAYP 2632,83589
+CHECK_LIST 2638,83708
+LISP_MACRO_DEFUN_VOID 2643,83789
+CHECK_STRING_CAR 2653,84086
+CHECK_CONS 2658,84190
+CHECK_VECTOR 2663,84270
+CHECK_BOOL_VECTOR 2668,84356
+CHECK_VECTOR_OR_STRING 2674,84533
+CHECK_ARRAY 2683,84707
+CHECK_BUFFER 2688,84815
+CHECK_WINDOW 2693,84901
+CHECK_PROCESS 2699,85007
+CHECK_NATNUM 2705,85103
+#define CHECK_RANGED_INTEGER(2710,85180
+#define CHECK_TYPE_RANGED_INTEGER(2721,85563
+#define CHECK_NUMBER_COERCE_MARKER(2729,85833
+XFLOATINT 2738,86086
+CHECK_NUMBER_OR_FLOAT 2744,86157
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86256
+CHECK_NUMBER_CAR 2760,86666
+CHECK_NUMBER_CDR 2768,86788
+#define DEFUN(2803,88383
+#define DEFUN(2812,88851
+FUNCTIONP 2822,89206
+enum maxargs2831,89401
+ MANY 2833,89418
+ UNEVALLED 2834,89433
+#define CALLMANY(2838,89536
+#define CALLN(2844,89889
+#define DEFVAR_LISP(2869,91094
+#define DEFVAR_LISP_NOPRO(2874,91266
+#define DEFVAR_BOOL(2879,91448
+#define DEFVAR_INT(2884,91621
+#define DEFVAR_BUFFER_DEFAULTS(2890,91792
+#define DEFVAR_KBOARD(2896,91996
+typedef jmp_buf sys_jmp_buf;2906,92320
+# define sys_setjmp(2907,92349
+# define sys_longjmp(2908,92384
+typedef sigjmp_buf sys_jmp_buf;2910,92456
+# define sys_setjmp(2911,92488
+# define sys_longjmp(2912,92528
+typedef jmp_buf sys_jmp_buf;2916,92687
+# define sys_setjmp(2917,92716
+# define sys_longjmp(2918,92750
+enum specbind_tag 2943,93802
+ SPECPDL_UNWIND,2944,93822
+ SPECPDL_UNWIND_PTR,2945,93891
+ SPECPDL_UNWIND_INT,2946,93942
+ SPECPDL_UNWIND_VOID,2947,93990
+ SPECPDL_BACKTRACE,2948,94044
+ SPECPDL_LET,2949,94102
+ SPECPDL_LET_LOCAL,2951,94232
+ SPECPDL_LET_DEFAULT 2952,94289
+union specbinding2955,94361
+ ENUM_BF 2957,94383
+ ENUM_BF 2959,94440
+ ENUM_BF 2964,94570
+ ENUM_BF 2969,94693
+ ENUM_BF 2974,94811
+ ENUM_BF 2978,94916
+ ENUM_BF 2983,95091
+enum handlertype 3021,96407
+enum handlertype { CATCHER,3021,96407
+enum handlertype { CATCHER, CONDITION_CASE 3021,96407
+struct handler3023,96454
+#define PUSH_HANDLER(3053,97443
+#define QUIT 3101,99220
+#define QUITP 3112,99470
+struct gcpro3132,100313
+#define GC_USE_GCPROS_AS_BEFORE 3171,101294
+#define GC_MAKE_GCPROS_NOOPS 3172,101329
+#define GC_MARK_STACK_CHECK_GCPROS 3173,101361
+#define GC_USE_GCPROS_CHECK_ZOMBIES 3174,101398
+#define GC_MARK_STACK 3177,101459
+#define BYTE_MARK_STACK 3181,101559
+#define GCPRO1(3190,101830
+#define GCPRO2(3191,101870
+#define GCPRO3(3192,101936
+#define GCPRO4(3194,102031
+#define GCPRO5(3196,102151
+#define GCPRO6(3198,102296
+#define GCPRO7(3201,102471
+#define UNGCPRO 3202,102550
+#define GCPRO1(3208,102650
+#define GCPRO2(3212,102772
+#define GCPRO3(3217,102964
+#define GCPRO4(3223,103226
+#define GCPRO5(3230,103557
+#define GCPRO6(3238,103958
+#define GCPRO7(3247,104428
+#define UNGCPRO 3257,104968
+#define GCPRO1(3263,105062
+#define GCPRO2(3269,105296
+#define GCPRO3(3278,105714
+#define GCPRO4(3289,106271
+#define GCPRO5(3302,106969
+#define GCPRO6(3317,107809
+#define GCPRO7(3334,108790
+#define UNGCPRO 3353,109913
+#define RETURN_UNGCPRO(3363,110180
+vcopy 3384,110654
+set_hash_key_slot 3393,110929
+set_hash_value_slot 3399,111068
+set_symbol_function 3408,111303
+set_symbol_plist 3414,111418
+set_symbol_next 3420,111521
+blv_found 3428,111694
+set_overlay_plist 3437,111877
+string_intervals 3445,112028
+set_string_intervals 3453,112150
+set_char_table_defalt 3462,112352
+set_char_table_purpose 3467,112464
+set_char_table_extras 3475,112633
+set_char_table_contents 3482,112842
+set_sub_char_table_contents 3489,113037
+enum Arith_Comparison 3497,113300
+ ARITH_EQUAL,3498,113324
+ ARITH_NOTEQUAL,3499,113339
+ ARITH_LESS,3500,113357
+ ARITH_GRTR,3501,113371
+ ARITH_LESS_OR_EQUAL,3502,113385
+ ARITH_GRTR_OR_EQUAL3503,113408
+#define INTEGER_TO_CONS(3511,113759
+#define CONS_TO_INTEGER(3529,114622
+enum { NEXT_ALMOST_PRIME_LIMIT 3573,116326
+extern EMACS_INT next_almost_prime 3574,116365
+enum constype 3739,123817
+enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123817
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123817
+list2i 3745,124007
+list3i 3751,124116
+list4i 3757,124255
+extern Lisp_Object make_formatted_string 3767,124631
+build_pure_c_string 3792,125659
+build_string 3801,125864
+make_uninit_vector 3820,126435
+make_uninit_sub_char_table 3833,126654
+#define ALLOCATE_PSEUDOVECTOR(3850,127198
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127534
+INLINE void 3890,128940
+extern void *r_alloc r_alloc3895,129061
+#define FLOAT_TO_STRING_BUFSIZE 3927,130524
+intern 3968,132131
+intern_c_string 3974,132219
+extern _Noreturn void error 4034,135598
+fast_string_match_ignore_case 4136,140086
+INLINE void fixup_locale 4241,143851
+INLINE void synchronize_system_messages_locale 4242,143886
+INLINE void synchronize_system_time_locale 4243,143943
+#define IS_DAEMON 4257,144416
+#define DAEMON_RUNNING 4258,144456
+#define IS_DAEMON 4261,144555
+#define DAEMON_RUNNING 4262,144600
+# define WAIT_READING_MAX 4281,145419
+# define WAIT_READING_MAX 4283,145491
+extern _Noreturn void emacs_abort 4374,148383
+egetenv 4532,152806
+#define eabs(4545,153302
+#define make_fixnum_or_float(4550,153435
+enum MAX_ALLOCA 4556,153686
+enum MAX_ALLOCA { MAX_ALLOCA 4556,153686
+extern void *record_xmalloc record_xmalloc4558,153731
+#define USE_SAFE_ALLOCA 4560,153797
+#define AVAIL_ALLOCA(4564,153930
+#define SAFE_ALLOCA(4568,154041
+#define SAFE_NALLOCA(4576,154382
+#define SAFE_ALLOCA_STRING(4590,154858
+#define SAFE_FREE(4598,155110
+#define SAFE_ALLOCA_LISP(4625,155688
+# define USE_STACK_LISP_OBJECTS 4652,156810
+# undef USE_STACK_LISP_OBJECTS4658,156976
+# define USE_STACK_LISP_OBJECTS 4659,157007
+enum { defined_GC_CHECK_STRING_BYTES 4663,157082
+enum { defined_GC_CHECK_STRING_BYTES 4665,157135
+union Aligned_Cons4670,157269
+union Aligned_String4676,157349
+ USE_STACK_CONS 4689,157704
+ USE_STACK_STRING 4691,157810
+#define STACK_CONS(4699,158147
+#define AUTO_CONS_EXPR(4701,158244
+#define AUTO_CONS(4709,158607
+#define AUTO_LIST1(4710,158678
+#define AUTO_LIST2(4712,158786
+#define AUTO_LIST3(4716,158941
+#define AUTO_LIST4(4720,159116
+# define verify_ascii(4732,159507
+#define AUTO_STRING(4740,159815
+#define FOR_EACH_TAIL(4752,160279
+#define FOR_EACH_ALIST_VALUE(4766,160770
+maybe_gc 4774,161057
+functionp 4784,161296
+
+c-src/machsyscalls.c,23
+#define SYSCALL(6,113
+
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,1,0
+SYSCALL (mach_reply_port,13,314
+SYSCALL (mach_thread_self,18,377
+SYSCALL (mach_task_self,23,441
+SYSCALL (mach_host_self,28,503
+
+c-src/h.h,1850
+ ELEM_I/ELEM_I3,15
+} Fails_t;5,85
+typedef void Lang_function 6,96
+typedef struct tpcmd8,147
+#define ggg 10,170
+tpcmd;15,209
+typedef struct foobar2_ 16,216
+} foobar2;20,307
+ DEVICE_SWP,23,333
+ DEVICE_LAST24,349
+} bsp_DevId;25,365
+ struct constant_args 27,394
+} args;30,457
+typedef int *regset;regset31,465
+typedef int INT;32,486
+typedef union abc33,503
+} ghi1;36,534
+typedef union abc 37,542
+} ghi2;39,573
+typedef struct a 40,581
+} b;41,600
+#define c(42,605
+typedef struct an_extern_linkage
*an_extern_linkage_ptr;an_extern_linkage_ptr43,619
+typedef struct an_extern_linkage 44,676
+} an_extern_linkage;56,1054
+typedef struct pollfd pfdset[pfdset57,1075
+typedef union rtunion_def58,1119
+ } womboid 63,1206
+typedef union rtunion_def64,1220
+womboid75,1330
+enum {dog,dog81,1416
+enum {dog, cat}cat81,1416
+enum {dog, cat} animals;81,1416
+typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441
+typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489
+/* comment */ #define ANSIC84,1538
+ #define ANSIC85,1566
+typedef void (proc)87,1588
+typedef void OperatorFun(88,1612
+typedef int f(89,1648
+struct my_struct 91,1691
+typedef struct my_struct my_typedef;93,1713
+typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750
+ Date 04 May 87 235311 PDT 96,1802
+typedef unsigned char unchar;99,1880
+typedef int X,100,1910
+typedef int X, Y,100,1910
+typedef int X, Y, Z;100,1910
+typedef mio mao;101,1931
+typedef struct a 103,1966
+typedef struct a { } b;103,1966
+typedef struct b104,1990
+} c;106,2009
+int extvar;109,2053
+#define tag1110,2065
+#define aaaaaa 111,2078
+#define bbbbbb\bbbbbb113,2102
+#define cccccccccc115,2125
+#define enter_critical_section 116,2144
+#define exit_critical_to_previous 117,2199
+#define UNDEFINED118,2259
+struct re_pattern_buffer 119,2277
+
+cp-src/c.C,2225
+template <typename ipc3dIslandHierarchy,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned
numOfChannels,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned
numOfChannels, typename ipc3dLinkControl,1,0
+class CMultiChannelCSC19_3D2,151
+ void execute(CMultiChannelCSC19_3D::execute11,493
+int main 25,1026
+double base 26,1088
+typedef struct s1 32,1251
+} t1;34,1287
+struct s2 35,1293
+typedef struct s2 t2;38,1324
+class A 39,1346
+ enum { rosso,A::rosso40,1356
+ enum { rosso, giallo,A::giallo40,1356
+ enum { rosso, giallo, verde A::verde40,1356
+const A& A::operator+(43,1431
+void operator+(44,1467
+void operator -(operator -45,1495
+void operator int(operator int46,1524
+A<int>* f(48,1556
+int f(49,1571
+int A<int>::f(f50,1590
+A<float,B<int> > A<B<float>,int>::f(f51,1618
+template <class C, int n> class AT 52,1668
+class AU 53,1716
+class B<B54,1735
+class B<int> { void f(B::f54,1735
+const A::B::T& abt 55,1765
+class A 56,1791
+class A { class B A::B56,1791
+class A 57,1826
+ A operator+(A::operator+59,1860
+is_muldiv_operation(61,1887
+domain foo 68,1955
+ void f(foo::f69,1968
+void A::A(72,1989
+struct A 73,2004
+struct B 74,2022
+void B::B(75,2041
+void BE_Node::BE_Node(76,2056
+class BE_Node 77,2083
+struct foo 79,2102
+class test 86,2156
+ int f(test::f87,2169
+ int ff(test::ff89,2231
+ int g(test::g90,2254
+class AST_Root 92,2278
+AST_ConcreteType::AST_ConcreteType(99,2393
+AST_Array::AST_Array(107,2532
+ void f(::f115,2733
+struct A 117,2753
+A::~A(120,2777
+struct B 122,2789
+ ~B(B::~B123,2800
+enum {dog,::dog126,2817
+enum {dog, cat}::cat126,2817
+enum {dog, cat} animals;126,2817
+struct {int teats;} cow;127,2842
+class Boo 129,2868
+ enum {dog,Boo::dog130,2880
+ enum {dog, cat}Boo::cat130,2880
+ foo(Boo::foo133,2954
+ Boo(Boo::Boo137,2995
+Boo::Boo(141,3070
+typedef int should_see_this_one_enclosed_in_extern_C;149,3155
+typedef int
(*should_see_this_function_pointer)should_see_this_function_pointer153,3228
+typedef int should_see_this_array_type[should_see_this_array_type156,3310
+
+cp-src/abstract.C,11317
+Half_Container::Half_Container(34,703
+void Half_Container::SetPosition(45,941
+void Half_Container::SetDimensions(58,1259
+void Half_Container::SetFather(81,1697
+void Half_Container::SetCollapsed(87,1787
+Specification::Specification(98,1958
+void Specification::SetPosition(119,2453
+void Specification::SetDimensions(164,3742
+void Specification::SetFather(188,4616
+void Specification::SetPath(202,4908
+Coord Specification::GetMaxX(212,5125
+Coord Specification::GetMaxY(215,5174
+Process::Process(222,5298
+void Process::SetPosition(242,5697
+void Process::SetDimensions(291,6959
+void Process::SetFather(315,7913
+void Process::SetPath(326,8123
+Coord Process::GetMaxX(335,8323
+Coord Process::GetMaxY(338,8365
+Choice::Choice(346,8482
+void Choice::SetPosition(357,8698
+void Choice::SetDimensions(405,10053
+void Choice::ChangeH(466,12014
+void Choice::ChangeW(495,12947
+void Choice::SetFather(522,13700
+void Choice::SetTextual(532,13918
+void Choice::SetCollapsed(540,14041
+int Choice::Get_Textual_H(549,14168
+int Choice::Get_Textual_W(557,14408
+void Choice::SetTerminalPos(566,14615
+Stop::Stop(588,15087
+void Stop::SetPosition(595,15207
+void Stop::SetDimensions(605,15373
+void Stop::SetFather(644,16369
+void Stop::SetTextual(652,16537
+void Stop::SetCollapsed(655,16616
+Exit::Exit(667,16768
+void Exit::SetPosition(676,16935
+void Exit::SetDimensions(687,17164
+void Exit::SetFather(695,17350
+Exit_Bex::Exit_Bex(703,17476
+void Exit_Bex::SetPosition(713,17678
+void Exit_Bex::SetDimensions(740,18430
+void Exit_Bex::SetFather(798,20444
+void Exit_Bex::SetTextual(807,20646
+void Exit_Bex::SetCollapsed(814,20757
+NoExit::NoExit(826,20943
+void NoExit::SetPosition(835,21092
+void NoExit::SetDimensions(845,21266
+void NoExit::SetFather(852,21359
+ID_Place::ID_Place(861,21488
+void ID_Place::SetIdent(875,21745
+void ID_Place::SetPosition(886,21936
+void ID_Place::SetDimensions(897,22173
+void ID_Place::SetFather(928,23017
+ID_Place::~ID_Place(932,23073
+void ID_Place::SetVisible(935,23112
+void ID_Place::ClearID(941,23193
+ID_List::ID_List(953,23379
+void ID_List::SetPosition(967,23644
+void ID_List::SetDimensions(999,24385
+void ID_List::SetFather(1038,25456
+void ID_List::SetCollapsed(1047,25595
+void ID_List::HideMe(1056,25734
+void ID_List::SetRBubble(1065,25862
+void ID_List::SetAlignement(1073,25980
+int ID_List::GetCardinality(1082,26123
+void ID_List::SetVisible(1093,26291
+void ID_List::BuildSigSorts(1103,26518
+void ID_List::ClearIDs(1126,27081
+Id_Decl::Id_Decl(1139,27280
+void Id_Decl::SetPosition(1156,27659
+void Id_Decl::SetDimensions(1174,28016
+void Id_Decl::SetFather(1191,28417
+void Id_Decl::SetCollapsed(1200,28568
+Id_Decl_List::Id_Decl_List(1214,28799
+void Id_Decl_List::SetPosition(1227,29069
+void Id_Decl_List::SetDimensions(1245,29424
+void Id_Decl_List::SetFather(1262,29844
+void Id_Decl_List::SetCollapsed(1271,29988
+Comment::Comment(1286,30209
+void Comment::SetComment(1299,30446
+void Comment::SetFather(1317,30800
+void Comment::SetPosition(1321,30854
+void Comment::SetDimensions(1331,31031
+Comment::~Comment(1345,31265
+Comment_List::Comment_List(1352,31382
+void Comment_List::SetPosition(1362,31541
+void Comment_List::SetDimensions(1380,31860
+void Comment_List::SetFather(1392,32139
+Parallel::Parallel(1406,32360
+void Parallel::SetPosition(1417,32573
+void Parallel::SetDimensions(1473,34272
+void Parallel::SetTextual(1534,36167
+int Parallel::Get_Textual_W(1543,36313
+int Parallel::Get_Textual_H(1559,36722
+void Parallel::SetTerminalPos(1570,37191
+void Parallel::SetFather(1590,37698
+void Parallel::SetCollapsed(1601,37950
+Ident_Eq::Ident_Eq(1615,38177
+void Ident_Eq::SetPosition(1632,38546
+void Ident_Eq::SetDimensions(1647,38851
+void Ident_Eq::SetFather(1662,39191
+void Ident_Eq::SetCollapsed(1669,39295
+Ident_Eq_List::Ident_Eq_List(1681,39480
+void Ident_Eq_List::SetPosition(1694,39753
+void Ident_Eq_List::SetDimensions(1712,40111
+void Ident_Eq_List::SetCollapsed(1729,40538
+void Ident_Eq_List::SetFather(1738,40683
+Local_Def::Local_Def(1751,40904
+void Local_Def::SetPosition(1761,41102
+void Local_Def::SetDimensions(1791,41833
+void Local_Def::SetFather(1832,43262
+void Local_Def::SetCollapsed(1839,43370
+void Local_Def::SetTextual(1848,43504
+Hide::Hide(1860,43681
+void Hide::SetPosition(1871,43872
+void Hide::SetDimensions(1901,44569
+void Hide::SetFather(1944,45771
+void Hide::SetCollapsed(1951,45873
+void Hide::SetTextual(1961,46003
+Interl::Interl(1972,46175
+void Interl::SetPosition(1982,46361
+void Interl::SetDimensions(1993,46593
+void Interl::SetFather(2021,47103
+Syncr::Syncr(2031,47257
+void Syncr::SetPosition(2041,47438
+void Syncr::SetDimensions(2051,47609
+void Syncr::SetFather(2079,48153
+Enable::Enable(2090,48436
+void Enable::SetPosition(2102,48690
+void Enable::SetDimensions(2169,50473
+void Enable::SetTextual(2243,53017
+void Enable::SetTerminalPos(2251,53140
+int Enable::Get_Textual_W(2271,53720
+int Enable::Get_Textual_H(2282,53985
+void Enable::SetFather(2285,54104
+void Enable::SetCollapsed(2298,54418
+Disable::Disable(2314,54780
+void Disable::SetPosition(2325,55001
+void Disable::SetDimensions(2376,56251
+void Disable::SetFather(2436,58064
+void Disable::SetCollapsed(2446,58284
+void Disable::SetTextual(2455,58412
+void Disable::SetTerminalPos(2463,58536
+int Disable::Get_Textual_W(2479,58987
+int Disable::Get_Textual_H(2488,59190
+Gen_Paral::Gen_Paral(2500,59630
+void Gen_Paral::SetPosition(2513,59899
+void Gen_Paral::SetDimensions(2540,60659
+void Gen_Paral::SetFather(2590,62171
+void Gen_Paral::SetCollapsed(2597,62290
+Action_Pref::Action_Pref(2609,62583
+void Action_Pref::SetPosition(2620,62829
+void Action_Pref::SetDimensions(2669,63937
+void Action_Pref::SetFather(2724,65777
+void Action_Pref::SetCollapsed(2734,66010
+void Action_Pref::SetTextual(2743,66147
+Internal::Internal(2757,66484
+void Internal::SetPosition(2768,66658
+void Internal::SetDimensions(2778,66838
+void Internal::SetFather(2806,67442
+Communication::Communication(2816,67702
+void Communication::SetPosition(2827,67956
+void Communication::SetDimensions(2897,70390
+void Communication::SetFather(2935,71706
+void Communication::SetCollapsed(2942,71837
+void Communication::SetTextual(2949,71968
+NoGuard::NoGuard(2961,72262
+void NoGuard::SetPosition(2974,72462
+void NoGuard::SetDimensions(2984,72639
+void NoGuard::SetFather(2987,72678
+Guard::Guard(2996,72929
+void Guard::SetPosition(3008,73118
+void Guard::SetDimensions(3022,73428
+void Guard::SetFather(3044,73894
+void Guard::SetCollapsed(3050,73974
+NoExperiment::NoExperiment(3062,74258
+void NoExperiment::SetPosition(3075,74478
+void NoExperiment::SetDimensions(3085,74670
+void NoExperiment::SetFather(3088,74714
+Experiment::Experiment(3097,74978
+void Experiment::SetPosition(3110,75245
+void Experiment::SetDimensions(3128,75611
+void Experiment::SetFather(3150,76066
+void Experiment::SetCollapsed(3157,76188
+void Experiment::SetTextual(3165,76311
+Proc_Inst::Proc_Inst(3175,76476
+void Proc_Inst::SetPosition(3191,76777
+void Proc_Inst::SetDimensions(3236,77965
+void Proc_Inst::SetFather(3286,79596
+void Proc_Inst::SetCollapsed(3294,79739
+void Proc_Inst::SetTextual(3304,79909
+Value_Expr::Value_Expr(3316,80100
+void Value_Expr::SetPosition(3329,80327
+void Value_Expr::SetDimensions(3340,80572
+void Value_Expr::SetFather(3343,80614
+Value_Expr_List::Value_Expr_List(3351,80755
+void Value_Expr_List::SetPosition(3364,81042
+void Value_Expr_List::SetDimensions(3382,81406
+void Value_Expr_List::SetFather(3399,81830
+void Value_Expr_List::SetCollapsed(3408,81977
+Sum_Ident::Sum_Ident(3423,82203
+void Sum_Ident::SetPosition(3435,82445
+void Sum_Ident::SetDimensions(3466,83196
+void Sum_Ident::SetFather(3509,84540
+void Sum_Ident::SetCollapsed(3516,84653
+void Sum_Ident::SetTextual(3525,84793
+void Sum_Ident::SetTerminalPos(3532,84897
+Value::Value(3552,85432
+void Value::SetPosition(3569,85792
+void Value::SetDimensions(3583,86091
+void Value::SetFather(3606,86628
+void Value::SetCollapsed(3613,86731
+Term::Term(3626,86908
+void Term::SetPosition(3646,87323
+void Term::SetDimensions(3671,87942
+void Term::SetFather(3697,88599
+void Term::SetCollapsed(3705,88732
+Exit_Entry::Exit_Entry(3719,88947
+void Exit_Entry::SetPosition(3732,89176
+void Exit_Entry::SetDimensions(3743,89421
+void Exit_Entry::SetFather(3746,89463
+Exit_Entry_List::Exit_Entry_List(3754,89604
+void Exit_Entry_List::SetPosition(3766,89875
+void Exit_Entry_List::SetDimensions(3785,90304
+void Exit_Entry_List::SetFather(3802,90753
+void Exit_Entry_List::SetCollapsed(3811,90900
+Sum_Gate::Sum_Gate(3826,91125
+void Sum_Gate::SetPosition(3837,91363
+void Sum_Gate::SetDimensions(3873,92120
+void Sum_Gate::SetFather(3915,93438
+void Sum_Gate::SetCollapsed(3922,93549
+void Sum_Gate::SetTextual(3931,93687
+void Sum_Gate::SetTerminalPos(3938,93790
+Gate_Decl::Gate_Decl(3959,94421
+void Gate_Decl::SetPosition(3977,94900
+void Gate_Decl::SetDimensions(3995,95298
+void Gate_Decl::SetFather(4011,95694
+void Gate_Decl::SetCollapsed(4020,95871
+Gate_Decl_List::Gate_Decl_List(4034,96130
+void Gate_Decl_List::SetPosition(4047,96414
+void Gate_Decl_List::SetDimensions(4065,96779
+void Gate_Decl_List::SetFather(4082,97207
+void Gate_Decl_List::SetCollapsed(4091,97353
+Par::Par(4106,97572
+void Par::SetPosition(4126,97957
+void Par::SetDimensions(4174,99236
+void Par::SetFather(4226,100814
+void Par::SetCollapsed(4234,100943
+void Par::SetTextual(4245,101100
+Sort_Id_Exit::Sort_Id_Exit(4258,101329
+void Sort_Id_Exit::SetPosition(4270,101556
+void Sort_Id_Exit::SetDimensions(4283,101834
+void Sort_Id_Exit::SetFather(4297,102142
+void Sort_Id_Exit::SetCollapsed(4303,102228
+Equality::Equality(4314,102512
+Equality::Equality(4327,102736
+void Equality::SetPosition(4340,102987
+void Equality::SetDimensions(4357,103329
+void Equality::SetFather(4377,103720
+void Equality::SetCollapsed(4387,103858
+Guarded::Guarded(4401,104167
+void Guarded::SetPosition(4413,104384
+void Guarded::SetDimensions(4441,105084
+void Guarded::SetFather(4482,106273
+void Guarded::SetCollapsed(4489,106377
+void Guarded::SetTextual(4499,106509
+Exper_Off::Exper_Off(4510,106813
+void Exper_Off::SetPosition(4523,107035
+void Exper_Off::SetDimensions(4533,107220
+void Exper_Off::SetFather(4536,107261
+Exper_Off_List::Exper_Off_List(4544,107521
+void Exper_Off_List::SetPosition(4557,107802
+void Exper_Off_List::SetDimensions(4575,108167
+void Exper_Off_List::SetFather(4592,108594
+void Exper_Off_List::SetCollapsed(4601,108740
+Exclam::Exclam(4616,109087
+void Exclam::SetPosition(4629,109300
+void Exclam::SetDimensions(4641,109541
+void Exclam::SetFather(4655,109830
+void Exclam::SetCollapsed(4661,109912
+Query::Query(4673,110194
+void Query::SetPosition(4686,110399
+void Query::SetDimensions(4698,110636
+void Query::SetFather(4712,110918
+void Query::SetCollapsed(4718,110997
+Definition::Definition(4729,111279
+void Definition::SetPosition(4741,111448
+void Definition::SetDimensions(4752,111658
+void Definition::SetFather(4766,111896
+void Definition::SetPath(4777,112089
+Proc_List::Proc_List(4790,112374
+void Proc_List::SetPosition(4799,112505
+void Proc_List::SetDimensions(4809,112686
+void Proc_List::SetFather(4815,112767
+void Proc_List::SetPath(4824,112908
+char *Proc_List::GetPath(Proc_List::GetPath4832,113068
+
+cp-src/abstract.H,2253
+#define abstract_hh16,453
+class ID_Place:ID_Place23,536
+ char *GetIdent(ID_Place::GetIdent41,857
+ void SetRBubble(ID_Place::SetRBubble42,891
+ char GetRBubble(ID_Place::GetRBubble43,934
+class ID_List:ID_List47,1012
+class Id_Decl:Id_Decl73,1540
+class Id_Decl_List:Id_Decl_List89,1829
+class Comment:Comment105,2140
+class Comment_List:Comment_List122,2440
+class Value_Expr:Value_Expr135,2694
+class Value_Expr_List:Value_Expr_List149,2911
+class Exit_Entry:Exit_Entry165,3244
+class Exit_Entry_List:Exit_Entry_List179,3460
+class Exper_Off:Exper_Off195,3793
+class Exper_Off_List:Exper_Off_List207,3977
+class Gate_Decl:Gate_Decl223,4323
+class Gate_Decl_List:Gate_Decl_List239,4630
+class Ident_Eq:Ident_Eq255,4957
+class Ident_Eq_List:Ident_Eq_List271,5270
+class Half_Container:Half_Container287,5608
+class Specification:Specification308,5954
+class Process:Process337,6609
+ char GetNesting(Process::GetNesting363,7186
+class Proc_List:Proc_List367,7257
+class Definition:Definition382,7574
+ char *GetPath(Definition::GetPath397,7940
+class Exit:Exit407,8071
+class NoExit:NoExit421,8305
+class Value:Value440,8560
+class Term:Term456,8841
+class Equality:Equality473,9169
+class Sort_Id_Exit:Sort_Id_Exit490,9504
+class NoGuard:NoGuard511,9837
+class Guard:Guard524,10045
+class NoExperiment:NoExperiment545,10368
+class Experiment:Experiment558,10591
+ Tree_Node *GetGuard(Experiment::GetGuard574,10962
+class Exclam:Exclam578,11053
+class Query:Query593,11324
+class Internal:Internal614,11643
+class Communication:Communication627,11854
+class Gen_Paral:Gen_Paral652,12337
+ void HideGate(Gen_Paral::HideGate668,12634
+class Interl:Interl672,12730
+class Syncr:Syncr685,12929
+class Action_Pref:Action_Pref704,13185
+class Enable:Enable723,13577
+class Disable:Disable746,14097
+class Choice:Choice768,14561
+class Stop:Stop793,15054
+class Exit_Bex:Exit_Bex810,15338
+class Hide:Hide829,15707
+class Guarded:Guarded848,16047
+class Proc_Inst:Proc_Inst867,16425
+class Parallel:Parallel888,16870
+ char GetOperType(Parallel::GetOperType910,17343
+class Local_Def:Local_Def914,17429
+class Par:Par933,17801
+class Sum_Gate:Sum_Gate952,18180
+class Sum_Ident:Sum_Ident972,18613
+
+cp-src/cfront.H,2555
+struct loc 67,1948
+struct ea 80,2150
+ ea(ea::ea86,2249
+ ea(ea::ea87,2275
+ ea(ea::ea88,2301
+ ea(ea::ea89,2310
+overload error;94,2349
+#define DEL(161,4040
+#define PERM(162,4092
+#define UNPERM(163,4123
+struct node 165,4157
+struct table 175,4321
+ void set_scope(table::set_scope198,4988
+ void set_name(table::set_name199,5029
+ int max(table::max201,5091
+#define DEFINED 230,5655
+#define SIMPLIFIED 231,5712
+#define DEF_SEEN 232,5754
+#define IN_ERROR 234,5859
+struct type 236,5881
+ TOK integral(type::integral255,6278
+ TOK numeric(type::numeric256,6324
+ TOK num_ptr(type::num_ptr257,6370
+struct enumdef 265,6500
+ enumdef(enumdef::enumdef269,6586
+struct classdef 278,6732
+ TOK is_simple(classdef::is_simple302,7506
+ Pname has_ctor(classdef::has_ctor314,7759
+ Pname has_dtor(classdef::has_dtor315,7813
+ Pname has_itor(classdef::has_itor316,7867
+struct basetype 323,7935
+struct fct 365,8857
+ bit declared(fct::declared396,9724
+struct name_list 403,9827
+ name_list(name_list::name_list406,9866
+struct gen 410,9931
+struct pvtyp 419,10071
+struct vec 423,10109
+ vec(vec::vec429,10182
+struct ptr 435,10289
+ ptr(ptr::ptr440,10419
+inline Pptr type::addrof(447,10546
+struct expr 469,11113
+struct texpr 527,12108
+ texpr(texpr::texpr528,12149
+struct ival 531,12218
+ ival(ival::ival532,12258
+struct call 535,12308
+ call(call::call536,12338
+struct qexpr 543,12453
+ qexpr(qexpr::qexpr544,12500
+struct ref 547,12582
+ ref(ref::ref548,12632
+struct text_expr 551,12697
+ text_expr(text_expr::text_expr552,12731
+struct name 557,12884
+ void unhide(name::unhide592,13929
+ void use(name::use596,14025
+ void take_addr(name::take_addr598,14069
+struct stmt 615,14374
+struct estmt 662,15111
+ estmt(estmt::estmt669,15303
+struct ifstmt 672,15379
+ ifstmt(ifstmt::ifstmt676,15484
+struct lstmt 680,15586
+ lstmt(lstmt::lstmt686,15650
+struct forstmt 689,15728
+ forstmt(forstmt::forstmt690,15759
+struct block 694,15880
+ block(block::block695,15919
+struct pair 703,16060
+ pair(pair::pair704,16096
+struct nlist 708,16173
+ void add(nlist::add712,16230
+struct slist 718,16344
+ slist(slist::slist721,16385
+ void add(slist::add722,16430
+struct elist 727,16521
+ elist(elist::elist730,16562
+ void add(elist::add731,16607
+struct dcl_context 739,16739
+ void stack(dcl_context::stack747,17023
+ void unstack(dcl_context::unstack748,17064
+#define MAXCONT 751,17095
+const MIA 779,17690
+struct iline 780,17705
+#define FUDGE111 791,17985
+#define DB(831,18890
+#define DB(833,18920
+
+cp-src/burton.cpp,103
+::dummy::dummy test::dummy1(1,0
+::dummy::dummy test::dummy2(6,64
+::dummy::dummy test::dummy3(11,143
+
+cp-src/functions.cpp,807
+void Date::setDate 5,148
+void Date::plus 32,939
+void Date::minus 42,1229
+void Date::shift 52,1407
+Date & Date::operator = Date::operator =62,1628
+Date & Date::operator += Date::operator +=69,1789
+Date & Date::operator -= Date::operator -=78,1939
+Date & Date::operator ++ Date::operator ++87,2080
+Date & Date::operator -- Date::operator --96,2216
+int Date::operator - Date::operator -104,2331
+int Date::operator < Date::operator <112,2483
+int Date::operator > Date::operator >116,2557
+int Date::operator == Date::operator ==120,2631
+ostream& operator << operator <<124,2707
+istream& operator >> operator >>133,2943
+bool isLeap 159,3543
+bool isHoliday 163,3629
+void asort(173,3865
+void ReadVacation 186,4064
+void Debug 201,4523
+int WorkingDays(211,4867
+Date StartDay(226,5129
+
+cp-src/MDiagArray2.h,709
+#define octave_MDiagArray2_h 29,870
+#undef LTGT35,967
+#define LTGT39,1031
+#define LTGT 42,1051
+class MDiagArray2 78,2022
+ MDiagArray2 MDiagArray2::MDiagArray282,2077
+ MDiagArray2 MDiagArray2::MDiagArray286,2154
+ MDiagArray2 MDiagArray2::MDiagArray287,2198
+ MDiagArray2 MDiagArray2::MDiagArray288,2254
+ MDiagArray2 MDiagArray2::MDiagArray289,2329
+ MDiagArray2 MDiagArray2::MDiagArray290,2387
+ MDiagArray2 MDiagArray2::MDiagArray291,2450
+ ~MDiagArray2 MDiagArray2::~MDiagArray293,2515
+ MDiagArray2<T>& operator = MDiagArray2::operator =95,2542
+ operator MArray2<T> MDiagArray2::operator MArray2<T>101,2667
+#undef LTGT144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887
+
+cp-src/Pctest.h,507
+#define PCTEST_H24,837
+ PctestActionValid,::PctestActionValid47,1286
+ PctestActionValidLasthop,::PctestActionValidLasthop49,1370
+ PctestActionFiltered,::PctestActionFiltered51,1481
+ PctestActionAbort ::PctestActionAbort53,1566
+} PctestActionType;54,1616
+class Pctest 56,1637
+ Pctest(Pctest::Pctest59,1663
+ virtual ~Pctest(Pctest::~Pctest65,1813
+ virtual char *GetTargetName(Pctest::GetTargetName77,2171
+ virtual PctestActionType GetAction(Pctest::GetAction86,2555
+
+cp-src/Range.h,424
+#define octave_Range_h 24,765
+Range35,891
+ Range Range::Range39,909
+ Range Range::Range42,995
+ Range Range::Range46,1130
+ Range Range::Range50,1248
+ double base Range::base54,1376
+ double limit Range::limit55,1425
+ double inc Range::inc56,1475
+ int nelem Range::nelem57,1523
+ void set_base Range::set_base68,1728
+ void set_limit Range::set_limit69,1774
+ void set_inc Range::set_inc70,1821
+
+cp-src/screen.cpp,228
+unsigned char cursor_x,15,548
+unsigned char cursor_x, cursor_y;15,548
+static union REGS regs;16,582
+void goto_xy(18,607
+void hide_cursor(27,774
+void cursor_position(32,836
+void clear_screen(41,997
+void write_xyc(55,1247
+
+cp-src/screen.hpp,667
+#define __COLORS9,401
+enum COLORS 11,419
+ BLACK,COLORS::BLACK12,433
+ BLUE,COLORS::BLUE13,471
+ GREEN,COLORS::GREEN14,481
+ CYAN,COLORS::CYAN15,492
+ RED,COLORS::RED16,502
+ MAGENTA,COLORS::MAGENTA17,511
+ BROWN,COLORS::BROWN18,524
+ LIGHTGRAY,COLORS::LIGHTGRAY19,535
+ DARKGRAY,COLORS::DARKGRAY20,550
+ LIGHTBLUE,COLORS::LIGHTBLUE21,589
+ LIGHTGREEN,COLORS::LIGHTGREEN22,604
+ LIGHTCYAN,COLORS::LIGHTCYAN23,620
+ LIGHTRED,COLORS::LIGHTRED24,635
+ LIGHTMAGENTA,COLORS::LIGHTMAGENTA25,649
+ YELLOW,COLORS::YELLOW26,667
+ WHITECOLORS::WHITE27,679
+#define SCREEN_FP(31,700
+#define SCREEN_START 33,795
+
+cp-src/conway.cpp,270
+#define max(12,357
+#define min(13,393
+const int num_rows 15,430
+const int num_columns 16,470
+class site *field_of_play[field_of_play18,499
+int site::total_surrounding(20,550
+void display(37,958
+void glider(50,1239
+void traffic_light(59,1478
+void main(67,1633
+
+cp-src/conway.hpp,244
+class site:site5,235
+ site(site::site10,344
+ char read(site::read12,410
+ void set(site::set13,444
+ void clear(site::clear14,478
+ void compute_next_state(site::compute_next_state15,514
+ void step(site::step22,717
+
+cp-src/clheir.cpp,307
+const int max_num_generic_objects 9,298
+generic_object * object_registry[object_registry10,340
+void init_registry(12,400
+void step_everybody(19,527
+void discrete_location::clear_neighbors(31,852
+generic_object::generic_object(36,981
+generic_object::~generic_object(48,1255
+void agent::move(53,1353
+
+cp-src/clheir.hpp,609
+class generic_object13,520
+ virtual void compute_next_state(generic_object::compute_next_state21,842
+ virtual void step(generic_object::step22,888
+const int max_num_directions 31,1219
+class location:location33,1289
+ location(location::location43,1642
+class irregular_location:irregular_location47,1686
+ irregular_location(irregular_location::irregular_location51,1762
+class discrete_location:discrete_location56,1889
+ discrete_location(discrete_location::discrete_location62,2044
+ void assign_neighbor(discrete_location::assign_neighbor66,2184
+class agent:agent75,2508
+
+cp-src/fail.C,365
+struct A 7,263
+ struct B A::B8,274
+ struct C A::B::C9,289
+ C(A::B::C::C11,318
+ operator int(A::B::C::operator int12,342
+ typedef C T;A::B::T14,389
+ typedef B T2;A::T216,414
+class A 23,453
+ class B A::B24,463
+ class C A::B::C25,474
+ int f(A::B::f26,488
+int A::B::f(31,521
+main(37,571
+ class D 41,622
+ D(D::D43,659
+
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch 1,0
+(defalias 'pending-delete-mode pending-delete-mode5,102
+(defalias (quote explicitly-quoted-pending-delete-mode)8,175
+
+el-src/emacs/lisp/progmodes/etags.el,5069
+(defvar tags-file-name 34,1034
+(defgroup etags 43,1498
+(defcustom tags-case-fold-search 47,1566
+(defcustom tags-table-list 59,2051
+(defcustom tags-compression-info-list69,2449
+(defcustom tags-add-tables 88,3231
+(defcustom tags-revert-without-query 98,3627
+(defvar tags-table-computed-list 103,3778
+(defvar tags-table-computed-list-for 112,4262
+(defvar tags-table-list-pointer 117,4510
+(defvar tags-table-list-started-at 121,4701
+(defvar tags-table-set-list 124,4821
+(defcustom find-tag-hook 129,5000
+(defcustom find-tag-default-function 137,5263
+(define-obsolete-variable-alias
'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602
+(defcustom tags-tag-face 148,5699
+(defcustom tags-apropos-verbose 154,5834
+(defcustom tags-apropos-additional-actions 160,5998
+(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917
+(defvar default-tags-table-function 189,7097
+(defvar tags-location-ring 194,7323
+(defvar tags-table-files 201,7599
+(defvar tags-completion-table 206,7766
+(defvar tags-included-tables 209,7858
+(defvar next-file-list 212,7953
+(defvar tags-table-format-functions 217,8059
+(defvar file-of-tag-function 224,8440
+(defvar tags-table-files-function 228,8634
+(defvar tags-completion-table-function 230,8745
+(defvar snarf-tag-function 232,8840
+(defvar goto-tag-location-function 236,9049
+(defvar find-tag-regexp-search-function 239,9222
+(defvar find-tag-regexp-tag-order 241,9343
+(defvar find-tag-regexp-next-line-after-failure-p 243,9452
+(defvar find-tag-search-function 245,9572
+(defvar find-tag-tag-order 247,9679
+(defvar find-tag-next-line-after-failure-p 249,9774
+(defvar list-tags-function 251,9880
+(defvar tags-apropos-function 253,9968
+(defvar tags-included-tables-function 255,10062
+(defvar verify-tags-table-function 257,10181
+(defun initialize-new-tags-table 260,10292
+(defun tags-table-mode 276,10980
+(defun visit-tags-table 285,11245
+(defun tags-table-check-computed-list 321,12783
+(defun tags-table-extend-computed-list 360,14654
+(defun tags-expand-table-name 400,16367
+(defun tags-table-list-member 409,16710
+(defun tags-verify-table 421,17182
+(defun tags-table-including 470,19302
+(defun tags-next-table 522,21346
+(defun visit-tags-table-buffer 543,22203
+(defun tags-reset-tags-tables 712,28513
+(defun file-of-tag 731,29170
+(defun tags-table-files 740,29519
+(defun tags-included-tables 749,29869
+(defun tags-completion-table 755,30115
+(defun tags-lazy-completion-table 783,31309
+(defun tags-completion-at-point-function 799,31944
+(defun find-tag-tag 818,32694
+(defvar last-tag 837,33367
+(defun find-tag-interactive 840,33426
+(defvar find-tag-history 852,33841
+(defun find-tag-noselect 860,34011
+(defun find-tag 932,37125
+(defun find-tag-other-window 959,38341
+(defun find-tag-other-frame 1000,40269
+(defun find-tag-regexp 1025,41443
+(defalias 'pop-tag-mark pop-tag-mark1049,42605
+(defvar tag-lines-already-matched 1052,42656
+(defun find-tag-in-order 1055,42763
+(defun tag-find-file-of-tag-noselect 1167,47109
+(defun tag-find-file-of-tag 1200,48955
+(defun etags-recognize-tags-table 1208,49181
+(defun etags-verify-tags-table 1241,50812
+(defun etags-file-of-tag 1246,51010
+(defun etags-tags-completion-table 1256,51345
+(defun etags-snarf-tag 1286,52551
+(defun etags-goto-tag-location 1324,54120
+(defun etags-list-tags 1388,56563
+(defmacro tags-with-face 1423,57838
+(defun etags-tags-apropos-additional 1431,58171
+(defun etags-tags-apropos 1465,59408
+(defun etags-tags-table-files 1527,61617
+(defun etags-tags-included-tables 1542,62053
+(defun tags-recognize-empty-tags-table 1559,62593
+(defun tag-exact-file-name-match-p 1587,63739
+(defun tag-file-name-match-p 1596,64132
+(defun tag-exact-match-p 1609,64688
+(defun tag-implicit-name-match-p 1620,65256
+(defun tag-symbol-match-p 1633,65856
+(defun tag-word-match-p 1643,66292
+(defun tag-partial-file-name-match-p 1652,66690
+(defun tag-any-match-p 1662,67134
+(defun tag-re-match-p 1667,67318
+(defcustom tags-loop-revert-buffers 1675,67567
+(defun next-file 1685,67976
+(defvar tags-loop-operate 1760,70890
+(defvar tags-loop-scan1763,70984
+(defun tags-loop-eval 1771,71314
+(defun tags-loop-continue 1782,71643
+(defun tags-search 1850,73949
+(defun tags-query-replace 1871,74775
+(defun tags-complete-tags-table-file 1896,75999
+(defun list-tags 1906,76378
+(defun tags-apropos 1934,77331
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78157
+(defun select-tags-table 1964,78396
+(defvar select-tags-table-mode-map 2019,80523
+(define-derived-mode select-tags-table-mode 2030,80906
+(defun select-tags-table-select 2034,81090
+(defun select-tags-table-quit 2043,81456
+(defun complete-tag 2049,81611
+(defconst etags--xref-limit 2074,82552
+(defvar etags-xref-find-definitions-tag-order 2076,82587
+(defun etags-xref-find 2082,82877
+(defun etags--xref-find-definitions 2096,83406
+(defclass xref-etags-location 2129,85121
+(defun xref-make-etags-location 2135,85344
+(cl-defmethod xref-location-marker 2139,85499
+(cl-defmethod xref-location-line 2146,85743
+
+erl-src/gs_dialog.erl,98
+-define(VERSION2,32
+behaviour_info(51,2177
+show(124,5458
+dialog_loop(219,9529
+test(252,10806
+
+erl-src/lines.erl,386
+-define(BREAK66,2377
+-define(dbg68,2437
+new(73,2565
+count(80,2686
+nth(87,2815
+append(104,3301
+replace(119,3816
+insert(138,4559
+insert_after(165,5501
+delete(192,6456
+convert_to_list(215,7110
+convert_from_list(220,7259
+replace_nth(229,7518
+insert_nth(234,7618
+insert_after_nth(239,7711
+delete_nth(244,7828
+split_at(252,8027
+balance_left(267,8451
+balance_right(282,8865
+
+erl-src/lists.erl,593
+member(21,663
+append(30,790
+reverse(48,1099
+nth(59,1310
+nthtail(64,1382
+prefix(73,1546
+suffix(83,1707
+last(92,1882
+seq(101,2058
+sum(109,2265
+duplicate(116,2432
+min(124,2628
+max(132,2837
+sublist(141,3083
+delete(152,3329
+sort(161,3483
+split_and_sort(165,3559
+merge(175,3811
+concat(190,4219
+thing_to_list(195,4300
+flatten(204,4606
+flat_length(222,5003
+keymember(239,5451
+keysearch(246,5609
+keydelete(253,5770
+keyreplace(260,5923
+keysort(266,6113
+split_and_keysort(270,6229
+keymerge(277,6504
+keymap(288,6851
+map(311,7829
+foldl(315,7919
+foldr(320,8037
+zf(325,8155
+
+f-src/entry.for,172
+ LOGICAL FUNCTION PRTPKG 3,75
+ ENTRY SETPRT 194,3866
+ ENTRY MSGSEL 395,8478
+ & intensity1(577,12231
+ character*(*) function foo(579,12307
+
+f-src/entry.strange_suffix,172
+ LOGICAL FUNCTION PRTPKG 3,75
+ ENTRY SETPRT 194,3866
+ ENTRY MSGSEL 395,8478
+ & intensity1(577,12231
+ character*(*) function foo(579,12307
+
+f-src/entry.strange,103
+ ENTRY MSGSEL 193,4382
+ & intensity1(375,8135
+ character*(*) function foo(377,8211
+
+forth-src/test-forth.fth,408
+: a-forth-word 20,301
+99 constant a-forth-constant!22,343
+55 value a-forth-value?23,373
+create :a-forth-dictionary-entry24,397
+defer #a-defer-word27,460
+: (another-forth-word)(another-forth-word29,481
+ 9 field >field136,582
+ 5 field >field237,605
+constant (a-forth-constant(a-forth-constant38,628
+2000 buffer: #some-storage41,657
+code assemby-code-word 43,685
+: a-forth-word 50,870
+
+html-src/softwarelibero.html,198
+Cos'� il software libero?4,38
+Licenze d'uso di un programmalicenze65,2474
+Sfatiamo alcuni miti138,6064
+Il movimento open sourceoss191,7968
+Impatto pratico del software liberoimpatto231,9986
+
+html-src/index.shtml,104
+ 8,281
+In evidenza15,446
+Comunicati e iniziative32,974
+Ultime notizie dall'associazione63,2027
+
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the
Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and
Quantizing Algorithms7,276
+Descriptionalgorithms10,477
+Generating the Datagenalgorithm48,1953
+Convolutionallyconalgorithm55,2463
+Nextstatetable262,11331
+Outputoutputtable350,13571
+Mapping the Channel Symbolsmapping433,15786
+Adding Noise to theaddnoise439,16174
+Quantizing the Receivedquantizing469,18637
+
+html-src/software.html,438
+Francesco Potort� Software Page9,280
+Software that I wrote for supporting my research activitysimulation36,1400
+MTGmtg41,1484
+Fracasfracas65,2626
+GaliLEOgalileo101,4234
+Leasqrleasqr114,4679
+Free software that I wrote for the GNU project or for my personal or
workgnu142,6067
+Etagsetags148,6182
+checkiso161,6731
+cgrep178,7549
+debian-bug.eldebian-bug190,7981
+tcpdump205,8566
+Links to interesting softwarelinks216,8893
+
+java-src/AWTEMul.java,4356
+public class AWTEventMulticaster 63,2111
+ protected
AWTEventMulticaster(AWTEventMulticaster.AWTEventMulticaster77,2555
+ protected EventListener remove(AWTEventMulticaster.remove86,2820
+ public void componentResized(AWTEventMulticaster.componentResized102,3294
+ public void componentMoved(AWTEventMulticaster.componentMoved112,3626
+ public void componentShown(AWTEventMulticaster.componentShown122,3952
+ public void componentHidden(AWTEventMulticaster.componentHidden132,4280
+ public void componentAdded(AWTEventMulticaster.componentAdded142,4619
+ public void componentRemoved(AWTEventMulticaster.componentRemoved152,4959
+ public void focusGained(AWTEventMulticaster.focusGained162,5281
+ public void focusLost(AWTEventMulticaster.focusLost172,5572
+ public void keyTyped(AWTEventMulticaster.keyTyped182,5853
+ public void keyPressed(AWTEventMulticaster.keyPressed192,6129
+ public void keyReleased(AWTEventMulticaster.keyReleased202,6413
+ public void mouseClicked(AWTEventMulticaster.mouseClicked212,6704
+ public void mousePressed(AWTEventMulticaster.mousePressed222,7004
+ public void mouseReleased(AWTEventMulticaster.mouseReleased232,7306
+ public void mouseEntered(AWTEventMulticaster.mouseEntered242,7609
+ public void mouseExited(AWTEventMulticaster.mouseExited252,7907
+ public void mouseDragged(AWTEventMulticaster.mouseDragged262,8204
+ public void mouseMoved(AWTEventMulticaster.mouseMoved272,8512
+ public void windowOpened(AWTEventMulticaster.windowOpened282,8819
+ public void windowClosing(AWTEventMulticaster.windowClosing292,9125
+ public void windowClosed(AWTEventMulticaster.windowClosed302,9432
+ public void windowIconified(AWTEventMulticaster.windowIconified312,9742
+ public void
windowDeiconified(AWTEventMulticaster.windowDeiconified322,10064
+ public void windowActivated(AWTEventMulticaster.windowActivated332,10389
+ public void
windowDeactivated(AWTEventMulticaster.windowDeactivated342,10712
+ public void actionPerformed(AWTEventMulticaster.actionPerformed352,11037
+ public void
itemStateChanged(AWTEventMulticaster.itemStateChanged362,11356
+ public void
adjustmentValueChanged(AWTEventMulticaster.adjustmentValueChanged372,11690
+ public void
textValueChanged(AWTEventMulticaster.textValueChanged376,11874
+ public static ComponentListener add(AWTEventMulticaster.add387,12225
+ public static ContainerListener add(AWTEventMulticaster.add397,12571
+ public static FocusListener add(AWTEventMulticaster.add407,12901
+ public static KeyListener add(AWTEventMulticaster.add417,13207
+ public static MouseListener add(AWTEventMulticaster.add427,13513
+ public static MouseMotionListener add(AWTEventMulticaster.add437,13855
+ public static WindowListener add(AWTEventMulticaster.add447,14197
+ public static ActionListener add(AWTEventMulticaster.add457,14519
+ public static ItemListener add(AWTEventMulticaster.add467,14833
+ public static AdjustmentListener add(AWTEventMulticaster.add477,15163
+ public static TextListener add(AWTEventMulticaster.add480,15310
+ public static ComponentListener
remove(AWTEventMulticaster.remove490,15664
+ public static ContainerListener
remove(AWTEventMulticaster.remove500,16044
+ public static FocusListener remove(AWTEventMulticaster.remove510,16408
+ public static KeyListener remove(AWTEventMulticaster.remove520,16748
+ public static MouseListener remove(AWTEventMulticaster.remove530,17088
+ public static MouseMotionListener
remove(AWTEventMulticaster.remove540,17465
+ public static WindowListener remove(AWTEventMulticaster.remove550,17841
+ public static ActionListener remove(AWTEventMulticaster.remove560,18197
+ public static ItemListener remove(AWTEventMulticaster.remove570,18545
+ public static AdjustmentListener
remove(AWTEventMulticaster.remove580,18909
+ public static TextListener remove(AWTEventMulticaster.remove583,19062
+ protected static EventListener
addInternal(AWTEventMulticaster.addInternal597,19608
+ protected static EventListener
removeInternal(AWTEventMulticaster.removeInternal614,20244
+ protected void saveInternal(AWTEventMulticaster.saveInternal628,20582
+ static void save(AWTEventMulticaster.save646,21131
+
+java-src/KeyEve.java,698
+public class KeyEvent 36,1075
+ public KeyEvent(KeyEvent.KeyEvent234,9912
+ public KeyEvent(KeyEvent.KeyEvent252,10510
+ public int getKeyCode(KeyEvent.getKeyCode261,10836
+ public void setKeyCode(KeyEvent.setKeyCode265,10897
+ public void setKeyChar(KeyEvent.setKeyChar269,10978
+ public void setModifiers(KeyEvent.setModifiers273,11060
+ public char getKeyChar(KeyEvent.getKeyChar282,11331
+ public static String getKeyText(KeyEvent.getKeyText290,11561
+ public static String
getKeyModifiersText(KeyEvent.getKeyModifiersText377,16662
+ public boolean isActionKey(KeyEvent.isActionKey403,17618
+ public String paramString(KeyEvent.paramString407,17704
+
+java-src/SMan.java,5099
+class SecurityManager 80,3387
+ public boolean getInCheck(SecurityManager.getInCheck101,4075
+ protected SecurityManager(SecurityManager.SecurityManager114,4497
+ protected Class
currentLoadedClass(SecurityManager.currentLoadedClass149,5707
+ protected boolean inClass(SecurityManager.inClass184,7034
+ protected boolean inClassLoader(SecurityManager.inClassLoader196,7372
+ public Object
getSecurityContext(SecurityManager.getSecurityContext221,8485
+ public void
checkCreateClassLoader(SecurityManager.checkCreateClassLoader238,9069
+ public void checkAccess(SecurityManager.checkAccess268,10298
+ public void checkAccess(SecurityManager.checkAccess298,11632
+ public void checkExit(SecurityManager.checkExit323,12649
+ public void checkExec(SecurityManager.checkExec349,13734
+ public void checkLink(SecurityManager.checkLink375,14813
+ public void checkRead(SecurityManager.checkRead394,15485
+ public void checkRead(SecurityManager.checkRead412,16111
+ public void checkRead(SecurityManager.checkRead434,17017
+ public void checkWrite(SecurityManager.checkWrite453,17706
+ public void checkWrite(SecurityManager.checkWrite471,18337
+ public void checkDelete(SecurityManager.checkDelete493,19165
+ public void checkConnect(SecurityManager.checkConnect517,20119
+ public void checkConnect(SecurityManager.checkConnect543,21254
+ public void checkListen(SecurityManager.checkListen561,21910
+ public void checkAccept(SecurityManager.checkAccept585,22887
+ public void checkMulticast(SecurityManager.checkMulticast597,23272
+ public void checkMulticast(SecurityManager.checkMulticast610,23732
+ public void
checkPropertiesAccess(SecurityManager.checkPropertiesAccess632,24609
+ public void
checkPropertyAccess(SecurityManager.checkPropertyAccess654,25449
+ public boolean
checkTopLevelWindow(SecurityManager.checkTopLevelWindow680,26580
+ public void
checkPrintJobAccess(SecurityManager.checkPrintJobAccess689,26763
+ public void
checkSystemClipboardAccess(SecurityManager.checkSystemClipboardAccess698,26958
+ public void
checkAwtEventQueueAccess(SecurityManager.checkAwtEventQueueAccess707,27159
+ public void
checkPackageAccess(SecurityManager.checkPackageAccess729,27966
+ public void
checkPackageDefinition(SecurityManager.checkPackageDefinition751,28803
+ public void checkSetFactory(SecurityManager.checkSetFactory775,29929
+ public void checkMemberAccess(SecurityManager.checkMemberAccess786,30209
+ public void
checkSecurityAccess(SecurityManager.checkSecurityAccess796,30430
+ public ThreadGroup getThreadGroup(SecurityManager.getThreadGroup811,30923
+class NullSecurityManager 817,31025
+ public void
checkCreateClassLoader(NullSecurityManager.checkCreateClassLoader818,31077
+ public void checkAccess(NullSecurityManager.checkAccess819,31123
+ public void checkAccess(NullSecurityManager.checkAccess820,31165
+ public void checkExit(NullSecurityManager.checkExit821,31212
+ public void checkExec(NullSecurityManager.checkExec822,31254
+ public void checkLink(NullSecurityManager.checkLink823,31296
+ public void checkRead(NullSecurityManager.checkRead824,31338
+ public void checkRead(NullSecurityManager.checkRead825,31387
+ public void checkRead(NullSecurityManager.checkRead826,31430
+ public void checkWrite(NullSecurityManager.checkWrite827,31489
+ public void checkWrite(NullSecurityManager.checkWrite828,31539
+ public void checkDelete(NullSecurityManager.checkDelete829,31583
+ public void checkConnect(NullSecurityManager.checkConnect830,31628
+ public void checkConnect(NullSecurityManager.checkConnect831,31684
+ public void checkListen(NullSecurityManager.checkListen832,31756
+ public void checkAccept(NullSecurityManager.checkAccept833,31798
+ public void checkMulticast(NullSecurityManager.checkMulticast834,31853
+ public void checkMulticast(NullSecurityManager.checkMulticast835,31907
+ public void
checkPropertiesAccess(NullSecurityManager.checkPropertiesAccess836,31971
+ public void
checkPropertyAccess(NullSecurityManager.checkPropertyAccess837,32015
+ public void
checkPropertyAccess(NullSecurityManager.checkPropertyAccess838,32067
+ public boolean
checkTopLevelWindow(NullSecurityManager.checkTopLevelWindow839,32131
+ public void
checkPrintJobAccess(NullSecurityManager.checkPrintJobAccess840,32202
+ public void
checkSystemClipboardAccess(NullSecurityManager.checkSystemClipboardAccess841,32244
+ public void
checkAwtEventQueueAccess(NullSecurityManager.checkAwtEventQueueAccess842,32293
+ public void
checkPackageAccess(NullSecurityManager.checkPackageAccess843,32340
+ public void
checkPackageDefinition(NullSecurityManager.checkPackageDefinition844,32391
+ public void checkSetFactory(NullSecurityManager.checkSetFactory845,32446
+ public void
checkMemberAccess(NullSecurityManager.checkMemberAccess846,32484
+ public void
checkSecurityAccess(NullSecurityManager.checkSecurityAccess847,32546
+
+java-src/SysCol.java,295
+public final class SystemColor 37,1402
+ private static void
updateSystemColors(SystemColor.updateSystemColors349,10617
+ private SystemColor(SystemColor.SystemColor357,10885
+ public int getRGB(SystemColor.getRGB370,11245
+ public String toString(SystemColor.toString377,11388
+
+java-src/TG.java,2041
+class ThreadGroup 54,2104
+ private ThreadGroup(ThreadGroup.ThreadGroup72,2495
+ public ThreadGroup(ThreadGroup.ThreadGroup84,2848
+ public ThreadGroup(ThreadGroup.ThreadGroup105,3714
+ public final String getName(ThreadGroup.getName124,4189
+ public final ThreadGroup getParent(ThreadGroup.getParent135,4492
+ public final int getMaxPriority(ThreadGroup.getMaxPriority148,4867
+ public final boolean isDaemon(ThreadGroup.isDaemon161,5305
+ public synchronized boolean isDestroyed(ThreadGroup.isDestroyed170,5470
+ public final void setDaemon(ThreadGroup.setDaemon192,6368
+ public final void setMaxPriority(ThreadGroup.setMaxPriority213,7110
+ public final boolean parentOf(ThreadGroup.parentOf246,8106
+ public final void checkAccess(ThreadGroup.checkAccess268,8834
+ public int activeCount(ThreadGroup.activeCount283,9286
+ public int enumerate(ThreadGroup.enumerate322,10497
+ public int enumerate(ThreadGroup.enumerate344,11481
+ private int enumerate(ThreadGroup.enumerate348,11584
+ public int activeGroupCount(ThreadGroup.activeGroupCount389,12588
+ public int enumerate(ThreadGroup.enumerate425,13727
+ public int enumerate(ThreadGroup.enumerate445,14595
+ private int enumerate(ThreadGroup.enumerate449,14703
+ public final void stop(ThreadGroup.stop499,16212
+ public final void suspend(ThreadGroup.suspend537,17477
+ public final void resume(ThreadGroup.resume575,18749
+ public final void destroy(ThreadGroup.destroy607,19779
+ private final void add(ThreadGroup.add643,20704
+ private void remove(ThreadGroup.remove668,21402
+ void add(ThreadGroup.add697,22142
+ void remove(ThreadGroup.remove722,22808
+ public void list(ThreadGroup.list751,23503
+ void list(ThreadGroup.list754,23556
+ public void uncaughtException(ThreadGroup.uncaughtException810,25512
+ public boolean
allowThreadSuspension(ThreadGroup.allowThreadSuspension823,25823
+ public String toString(ThreadGroup.toString837,26142
+
+lua-src/allegro.lua,400
+local function get_layer_by_name 7,175
+local function count_layers 33,621
+function GetLayerByName 54,980
+function GetUniqueLayerName 65,1204
+function SelectLayer 76,1415
+function NewLayer 86,1773
+function NewLayerSet 144,3226
+function RemoveLayer 170,3750
+function MoveLayerTop 211,4767
+function MoveLayerBottom 223,5079
+function MoveLayerBefore 236,5457
+function MoveLayerAfter 258,6090
+
+make-src/Makefile,1133
+LATEST=1,0
+NONSRCS=35,1578
+CPPFLAGS=49,2191
+LDFLAGS=50,2260
+FASTCFLAGS=55,2531
+FILTER=58,2642
+ @-$($72,3064
+ @-$($73,3113
+ @-$($74,3177
+ @-$($75,3223
+ @-$($76,3291
+ @-$($77,3383
+ @$(81,3466
+ @$(82,3514
+ @$(83,3577
+ @$(84,3622
+ @$(85,3689
+ @$(86,3780
+${CHECKOBJS}: CFLAGS=88,3806
+ @env CHECKEROPTS=92,3922
+ @$(98,4094
+ @$(106,4250
+ @$(110,4374
+ @$(114,4500
+ @for i in $(SRCS); do echo $$i;140,5315
+ $(160,6053
+ $(163,6114
+ $(166,6177
+ $(169,6228
+ $(172,6317
+ sdiff --suppress-common-lines --width=width186,6614
+ sdiff --suppress-common-lines --width=width189,6703
+ sdiff --suppress-common-lines --width=width192,6791
+ sdiff --suppress-common-lines --width=width195,6880
+ TEXTAGS=204,7122
+ TEXTAGS=def:newcommand:newenvironment ${RUN} etags$*
--regex=regex204,7122
+ ${RUN} etags12 --members -o $@ --regex=regex207,7239
+ ${RUN} ./ctags -o $@ --regex=regex213,7388
+ ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7464
+ TEXTAGS=219,7583
+ TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@
--regex=regex219,7583
+ ${RUN} ./extags -e --regex-c=c222,7710
+
+objc-src/Subprocess.h,98
+#define Subprocess 41,1217
+#define BUFFERSIZE 43,1267
address@hidden Subprocess:Subprocess45,1292
+
+objc-src/Subprocess.m,475
+#define PTY_TEMPLATE 20,494
+#define PTY_LENGTH 21,528
address@hidden Subprocess(Private)Subprocess(Private)32,737
+- childDidExit39,851
+- fdHandler:67,1589
+showError 98,2360
+fdHandler 112,2785
+getptys 119,2907
+- init:183,4815
+ andStdErr:init:withDelegate:andPtySupport:andStdErr:197,5147
+- send:(const char *)string withNewline:send:withNewline:300,7436
+- send:308,7599
+- terminateInput314,7689
+- terminate:321,7810
+- setDelegate:332,7961
+- delegate338,8031
+
+objc-src/PackInsp.h,109
+#define NUMSTATS 36,1101
+#define TYPESTOSTAT 37,1120
address@hidden PackageInspector:PackageInspector39,1172
+
+objc-src/PackInsp.m,1360
+static const char RCSid[RCSid30,1032
+#define VERSION 34,1116
+# define DEBUG 37,1155
+#define LISTCONTENTS 39,1181
+#define OPENBUTTON 47,1352
+#define LISTCONTENTSBUTTON 48,1449
+#define LISTDESCRIPTIONBUTTON 49,1562
+#define STATE_UNINSTALLED 52,1687
+#define STATE_INSTALLED 53,1807
+#define STATE_COMPRESSD 54,1948
+#define SIZEFORMAT 57,2152
+#define KBYTES 58,2362
+#define MBYTES 59,2473
+#define LOCALIZE(61,2585
+#define LOCALIZE_ARCH(62,2668
++newnew67,2802
+-showInfo:showInfo:93,3417
+-revert:revert:107,3737
+-ok:ok:136,4297
+-loadload143,4424
+#define LOOKUP(156,4826
+#undef LOOKUP176,5694
+-loadKeyValuesFrom:(const char *)type
inTable:loadKeyValuesFrom:inTable:186,5852
+-loadContentsOf:(const char *)type inTable:loadContentsOf:inTable:238,7079
+-loadImageloadImage257,7552
+#define STAT_EQ(275,7940
+-(BOOL)shouldLoad280,8116
+-toggleDescriptiontoggleDescription301,8626
+-(const char *)getPath:(char *)buf forType:getPath:forType:317,8899
+-setRevertButtonTitlesetRevertButtonTitle333,9320
+-(const char *)formatSize:(const char *)size inBuf:formatSize:inBuf:344,9525
+#define WORKING 368,10045
+-(void)getArchs370,10100
+-(void)addArchs:385,10520
+-subprocess:(Subprocess *)sender output:subprocess:output:428,11351
+-subprocessDone:subprocessDone:436,11484
+static void openInWorkspace(446,11634
+-open:open:464,12063
+
+objcpp-src/SimpleCalc.H,41
address@hidden SimpleCalc:SimpleCalc14,400
+
+objcpp-src/SimpleCalc.M,300
+- init52,1747
+- appendToDisplay:60,1933
+- registerAction:70,2210
+- decimalKey:77,2348
+- numberKeys:91,2661
+- equalsKey:112,3192
+- operationKeys:131,3680
+- clearKey:153,4301
+- clearAllKey:160,4410
+- appDidInit:168,4591
+- windowWillClose:178,4882
+- infoPanel:186,5132
+- helpPanel:198,5482
+
+pas-src/common.pas,1875
+procedure InitializeStringPackage;26,527
+function newtextstring;34,874
+procedure disposetextstring;52,1404
+function ConcatT;78,2066
+function AppendTextString;112,3238
+function CopyTextString;132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;151,4505
+procedure append_string;172,5166
+function To_Upper;186,5462
+function To_Lower;194,5617
+function EmptyNmStr(209,6213
+function chartonmstr;219,6436
+function LowerCaseNmStr;230,6682
+function concatenatenamestrings;242,7007
+procedure writenamestring;263,7517
+function IsControlChar;277,7928
+function namestringequal;283,8079
+function NameStringLess;302,8539
+function IsControlCharName(343,9710
+function SubString;358,10208
+function SkipChars;379,10791
+function RemoveUnderlineControl;397,11311
+procedure First100Chars;427,12162
+procedure SkipSpaces;462,13298
+function SkipBlanks;477,13782
+function stripname;505,14595
+function Locate;522,15039
+function NameHasChar;543,15581
+function integertonmstr;561,16134
+function NmStrToInteger;585,16901
+function AddNullToNmStr;600,17317
+function ValToNmStr;611,17585
+function ChangeFileType;625,18037
+function StripPath;647,18734
+function ReprOfChar;675,19343
+procedure ExtractCommentInfo;702,20749
+procedure INSERT_TREE_NODE;784,24053
+function GetNameList;920,27926
+procedure DisposeANameList(925,28010
+procedure DisposeNameList;938,28340
+function GetNewNameListNode;943,28409
+function insertname;972,29051
+procedure InitNameList;988,29471
+procedure InitNameStringPool;998,29767
+procedure NewNameString;1004,29867
+procedure ReleaseNameString;1022,30232
+procedure SDTrefStringToRec 1045,30741
+procedure SDTrefSkipSpaces;1059,31092
+function SDTrefIsEnd 1070,31323
+function SDTrefGetInteger 1082,31529
+procedure SDTrefRecToString 1303,37546
+function NmStrToErrStr;1497,42305
+function ErrStrToNmStr;1509,42557
+function GetTextRef;1529,43112
+
+php-src/lce_functions.php,2152
+ define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38
+ define("LCE_UNKNOWN"LCE_UNKNOWN9,145
+ define("LCE_WS"LCE_WS11,194
+ define("LCE_COMMENT"LCE_COMMENT13,244
+ define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303
+ define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366
+ define("LCE_MSGID"LCE_MSGID19,430
+ define("LCE_MSGSTR"LCE_MSGSTR21,488
+ define("LCE_TEXT"LCE_TEXT23,541
+ define("STATE_ABORT"STATE_ABORT25,567
+ define("STATE_OK"STATE_OK26,595
+ define("STATE_LOOP"STATE_LOOP27,620
+ class POEntryAD 29,648
+ function validate(31,683
+ function checkQuotation(59,1384
+ class CommentAD 70,1639
+ function CommentAD(73,1693
+ function validate(83,1944
+ class POEntry 105,2410
+ function POEntry(119,2711
+ function lineCount(135,3255
+ function serializeToVars(141,3365
+ function write(151,3800
+ class POReader 163,4178
+ function gettext(177,4457
+ function parseFromVars(189,4705
+ function serializeToVars(215,5331
+ function POReader(229,5613
+ function read(243,5983
+ function write(259,6307
+ function isComment(277,6645
+ function comment(284,6822
+ function msgid(304,7247
+ function msgstr(320,7574
+ function start(340,8232
+ function createPOEntries(360,8644
+ function stripLine(394,9472
+ function printClassification(421,10056
+ function classifyLine(432,10301
+ function getTextDomains(471,11094
+ class PORManager 498,11756
+ function PORManager(502,11822
+ function addPOReader(507,11896
+ function &getPOReader(getPOReader512,11992
+ function getDomainNames(517,12081
+ function &loadPORManager(loadPORManager523,12174
+ function fileJoin(536,12436
+ function lce_bindtextdomain(557,12839
+ function lce_textdomain(614,14530
+ function lce_gettext(620,14641
+ function lce_dgettext(626,14767
+ function lce(634,14966
+ function lce_bindtextdomain(651,15488
+ function lce_textdomain(656,15592
+ function lce_gettext(661,15674
+ function lce_dgettext(666,15755
+ function lce(670,15855
+ function lce_geteditcode(676,15898
+
+php-src/ptest.php,46
+define("TEST"TEST1,0
+test 4,26
+foo(16,200
+
+perl-src/htlmify-cystic,1443
+my @section_name;section_name12,236
+my @appendix_name;appendix_name13,254
+my @section_toc;section_toc15,274
+my @appendix_toc;appendix_toc16,291
+my $new_tag new_tag18,310
+my $appendix;appendix24,409
+my $section;section25,423
+my $subsection;subsection26,436
+my $subsubsection;subsubsection27,452
+my $this_file_toc this_file_toc29,472
+my %file_tocs;file_tocs30,496
+my @output_files output_files32,512
+my $file_index file_index33,535
+my $output_file;output_file35,556
+my $line;line37,574
+my $subsection_marker;subsection_marker161,3883
+my $new;new163,3907
+sub read_toc main::read_toc165,3917
+ my $entry entry218,5621
+ my $entry entry234,6077
+ my $entry entry245,6351
+ my $entry entry252,6536
+ my $entry entry268,7010
+ my $entry entry276,7204
+ my $entry entry281,7328
+ my $entry entry296,7698
+sub finish_subsubsections main::finish_subsubsections302,7805
+sub finish_subsections main::finish_subsections309,7987
+sub finish_sections main::finish_sections320,8310
+sub finish_appendices main::finish_appendices331,8599
+sub section_url_base main::section_url_base337,8724
+sub section_url_name main::section_url_name342,8922
+sub section_url main::section_url355,9284
+ my $name name357,9336
+sub section_href main::section_href364,9452
+sub section_name main::section_name368,9551
+sub toc_line main::toc_line372,9655
+sub file_end main::file_end375,9750
+
+perl-src/yagrip.pl,258
+sub getopt main::getopt7,156
+ local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169
+sub usage main::usage38,856
+ local($prog,$_,@list)($prog,$_,@list39,868
+
local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897
+
+perl-src/kai-test.pl,244
+sub f1 main::f12,16
+sub main::f2 6,50
+package Foo;10,90
+sub f3 Foo::f312,104
+sub Bar::f4 16,138
+package Bar;20,177
+sub f5 Bar::f522,191
+package Foo::Bar;26,225
+sub f6 Foo::Bar::f628,244
+package main;32,278
+sub f7 main::f734,293
+
+perl-src/mirror.pl,13410
+sub msg_versionmain::msg_version459,18271
+ local( $arg )( $arg 468,18582
+ local( $flag, $p )( $flag, $p 480,18757
+ local( $site_path )( $site_path 525,19687
+ local( $site, $path )( $site, $path 539,19958
+ local( $key_val )( $key_val 578,20743
+ local( $user )( $user 595,21097
+ local( $c )( $c 634,21853
+ local( $sec,$min,$hour,$mday,$mon,$year,(
$sec,$min,$hour,$mday,$mon,$year,678,22807
+ local( $c )( $c 706,23393
+ local( $dir, $mp )( $dir, $mp 723,23695
+ local( $f )( $f 725,23740
+sub interpret_config_filesmain::interpret_config_files756,24304
+ local( $fname )( $fname 758,24333
+sub interpret_configmain::interpret_config785,24927
+sub parse_linemain::parse_line827,25710
+ local( $eqpl )( $eqpl 829,25727
+ local( $cont )( $cont 830,25744
+ local( $v )( $v 839,26029
+sub set_defaultsmain::set_defaults860,26448
+sub command_line_overridemain::command_line_override868,26579
+ local( $key, $val, $overrides )( $key, $val, $overrides 870,26607
+sub set_variablesmain::set_variables894,27072
+ local( $key, $val )( $key, $val 896,27092
+ local( $val_name )( $val_name 902,27259
+ local( $val )( $val 953,28825
+sub upd_valmain::upd_val962,28974
+ local( $key )( $key 964,28988
+sub pr_variablesmain::pr_variables970,29083
+ local( $msg )( $msg 972,29102
+ local( $nle )( $nle 973,29123
+ local( $out )( $out 974,29144
+ local( $key, $val, $str )( $key, $val, $str 975,29164
+sub do_mirrormain::do_mirror1007,29923
+ local( $get_one_package )( $get_one_package 1009,29939
+ local( $exit_status )( $exit_status 1030,30384
+ local( @t )( @t 1154,33165
+ local( $con )( $con 1241,35499
+ local( @rhelp )( @rhelp 1289,36702
+ local( @sub_dirs )( @sub_dirs 1329,37778
+ local( $now )( $now 1493,41348
+ local( $arg )( $arg 1506,41774
+sub disconnectmain::disconnect1528,42250
+sub connectmain::connect1546,42576
+ local( $attempts )( $attempts 1548,42590
+ local( $res )( $res 1549,42642
+sub prodmain::prod1573,43156
+sub checkout_regexpsmain::checkout_regexps1585,43327
+ local( $ret )( $ret 1587,43350
+ local( $t )( $t 1589,43395
+ local( $val )( $val 1597,43701
+ local( $err )( $err 1601,43786
+sub clear_localmain::clear_local1610,43909
+sub clear_remotemain::clear_remote1625,44172
+sub get_local_directory_detailsmain::get_local_directory_details1640,44445
+ local( @dirs, $dir )( @dirs, $dir 1642,44479
+ local( $last_prodded )( $last_prodded 1643,44502
+ local( $dir_level )( $dir_level 1691,45615
+ local( $i )( $i 1692,45641
+ local( $path, $time, $size, $type, $mode, $name, $isdir, $value,
$follow )( $path, $time, $size, $type, $mode, $name, $isdir, $value, $follow
1693,45659
+ local( $dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,(
$dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,1694,45736
+ local( $mapi )( $mapi 1763,47586
+sub get_remote_directory_detailsmain::get_remote_directory_details1789,48122
+ local( $type_changed )( $type_changed 1791,48157
+ local( $udirtmp )( $udirtmp 1792,48186
+ local( $storename )( $storename 1793,48206
+ local( $rls )( $rls 1825,48944
+ local( $dirtmp )( $dirtmp 1830,49002
+ local( $unsquish )( $unsquish 1832,49130
+ local( $f )( $f 1840,49360
+ local( $dirtmp )( $dirtmp 1859,49866
+ local( $unsquish )( $unsquish 1870,50215
+ local( $f, $uf )( $f, $uf 1878,50445
+ local( $flags )( $flags 1912,51259
+ local( $parse_state )( $parse_state 1946,52111
+ local( $msg )( $msg 1963,52486
+sub patch_ls_lR_filemain::patch_ls_lR_file1984,52955
+ local( $f, $fr, $flb, $flt, $flp, $flz, $frb, $frt )( $f, $fr, $flb,
$flt, $flp, $flz, $frb, $frt 1990,53055
+ local( $to , $tn )( $to , $tn 1991,53110
+ local( $tlb )( $tlb 1995,53225
+ local( $p, $s, $trz, $t, $m )( $p, $s, $trz, $t, $m 2030,54182
+ local( $tlz )( $tlz 2037,54467
+sub parse_timeoutmain::parse_timeout2089,55670
+sub parse_remote_detailsmain::parse_remote_details2095,55754
+ local( $ret )( $ret 2097,55781
+ local( $old_sig )( $old_sig 2098,55797
+sub parse_remote_details_realmain::parse_remote_details_real2125,56234
+ local( $path, $size, $time, $type, $mode, $rdir, $rcwd )( $path,
$size, $time, $type, $mode, $rdir, $rcwd 2127,56266
+ local( @dir_list )( @dir_list 2128,56325
+ local( $i )( $i 2129,56346
+ local( $old_path )( $old_path 2130,56364
+ local( $old_path )( $old_path 2143,56630
+ local( $ri )( $ri 2203,58078
+ local( $mapi )( $mapi 2214,58335
+ local( $done )( $done 2239,58911
+sub compare_dirsmain::compare_dirs2283,59825
+ local( *src_paths,( *src_paths,2286,59915
+ local( $src_path, $dest_path, $i )( $src_path, $dest_path, $i
2293,60099
+ local( $last_prodded )( $last_prodded 2294,60136
+ local( $desti, $srci, $compress, $srciZ, $srcigz, $split,
$dest_path_real )( $desti, $srci, $compress, $srciZ, $srcigz, $split,
$dest_path_real 2299,60350
+ local( $old_dest_path, $existing_path, $tmp, $restart )(
$old_dest_path, $existing_path, $tmp, $restart 2300,60428
+ local( $sp, $dp )( $sp, $dp 2301,60486
+ local( $real, $reali, $reali1 )( $real, $reali, $reali1
2352,62034
+ local( $count )( $count 2353,62072
+ local( $value )( $value 2408,63996
+ local( $real )( $real 2409,64028
+ local( $reali )( $reali 2410,64086
+ local( $old )( $old 2421,64571
+ local( $old_dest_path )( $old_dest_path 2432,64842
+ local( $dpp, $dps )( $dpp, $dps 2509,67031
+ local( $update )( $update 2534,67671
+sub map_namemain::map_name2651,71028
+ local( $name )( $name 2653,71043
+ local( $old_name )( $old_name 2656,71089
+ local( $tmp )( $tmp 2666,71252
+sub set_timestampsmain::set_timestamps2675,71362
+ local( $src_path )( $src_path 2677,71383
+ local( $dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime )(
$dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime 2685,71517
+sub set_timestampmain::set_timestamp2699,71901
+ local( $path, $time )( $path, $time 2701,71921
+ local( $pr_time )( $pr_time 2703,71953
+sub make_dirsmain::make_dirs2719,72284
+ local( $thing )( $thing 2721,72300
+sub make_symlinksmain::make_symlinks2736,72489
+ local( $thing )( $thing 2738,72509
+ local( $dest, $existing )( $dest, $existing 2745,72623
+ local( $dirpart )( $dirpart 2746,72663
+ local( $ft )( $ft 2747,72704
+ local( $p )( $p 2762,73261
+ local( $f )( $f 2770,73467
+ local( $dl )( $dl 2788,74038
+sub do_all_transfersmain::do_all_transfers2806,74439
+ local( $src_path )( $src_path 2808,74462
+ local( $dest_path, $attribs )( $dest_path, $attribs 2809,74483
+ local( $srci )( $srci 2810,74515
+ local( $newpath )( $newpath 2838,75124
+sub transfer_filemain::transfer_file2869,75847
+ local( $src_path, $dest_path, $attribs, $timestamp )( $src_path,
$dest_path, $attribs, $timestamp 2871,75867
+ local( $dir, $file, $temp, $compress, $split, $restart, $mesg,
$got_mesg )( $dir, $file, $temp, $compress, $split, $restart, $mesg, $got_mesg
2872,75927
+ local( $src_file )( $src_file 2915,76782
+ local( $comptemp )( $comptemp 2916,76816
+ local( $f )( $f 2921,76964
+ local($filesize)($filesize2944,77569
+ local( $ti )( $ti 2975,78401
+ local( $f )( $f 2997,78887
+ local( $comp )( $comp 2998,78912
+ local( $filesize )( $filesize 3015,79427
+ local( $sizemsg )( $sizemsg 3016,79469
+ local( $srcsize )( $srcsize 3017,79501
+ local( $time )( $time 3029,79865
+ local( $as )( $as 3046,80223
+ local( $locali )( $locali 3054,80499
+sub filename_to_tempnamemain::filename_to_tempname3062,80713
+ local( $dir, $file )( $dir, $file 3064,80740
+ local ( $dest_path )( $dest_path 3066,80769
+sub log_uploadmain::log_upload3090,81228
+ local( $src_path, $dest_path, $got_mesg, $size )( $src_path,
$dest_path, $got_mesg, $size 3092,81245
+sub do_deletesmain::do_deletes3118,81773
+ local( *src_paths,( *src_paths,3121,81861
+ local( $files_to_go, $dirs_to_go )( $files_to_go, $dirs_to_go
3125,81960
+ local( $src_path, $i )( $src_path, $i 3131,82055
+ local( $orig_do_deletes )( $orig_do_deletes 3132,82080
+ local( $orig_save_deletes )( $orig_save_deletes 3133,82122
+ local( $del_patt )( $del_patt 3135,82169
+ local( $per )( $per 3162,82843
+ local( $per )( $per 3184,83513
+ local( $save_dir_tail )( $save_dir_tail 3226,84617
+sub save_deletemain::save_delete3245,85019
+ local( $save, $kind )( $save, $kind 3247,85037
+ local( $real_save_dir, $save_dest )( $real_save_dir, $save_dest
3249,85067
+ local( $dirname )( $dirname 3284,85704
+sub save_mkdirmain::save_mkdir3304,86155
+ local( $dir )( $dir 3306,86172
+sub do_deletemain::do_delete3320,86459
+ local( $del, $kind )( $del, $kind 3322,86475
+sub filesizemain::filesize3377,87532
+ local( $fname )( $fname 3379,87547
+sub istruemain::istrue3390,87654
+ local( $val )( $val 3392,87667
+sub mksymlinkmain::mksymlink3398,87773
+ local( $dest_path, $existing_path )( $dest_path, $existing_path
3400,87789
+ local( $msg )( $msg 3417,88246
+ local( $msg )( $msg 3431,88590
+ local( $status )( $status 3442,88816
+sub mkdirsmain::mkdirs3457,89196
+ local( $dir )( $dir 3459,89209
+ local( @dir, $d, $path )( @dir, $d, $path 3460,89230
+sub make_dirmain::make_dir3497,90042
+ local( $dir, $mode )( $dir, $mode 3499,90057
+ local( $val )( $val 3500,90085
+sub dir_existsmain::dir_exists3528,90573
+ local( $dir )( $dir 3530,90590
+ local( $val )( $val 3531,90611
+ local($old_dir)($old_dir3539,90750
+sub set_attribsmain::set_attribs3553,91053
+ local( $path, $src_path, $type )( $path, $src_path, $type 3555,91071
+ local( $mode )( $mode 3556,91111
+ local( $pathi )( $pathi 3564,91229
+ local( $pathi )( $pathi 3568,91320
+sub get_passwdmain::get_passwd3606,91977
+ local( $user )( $user 3608,91994
+ local( $pass )( $pass 3609,92016
+ local( $| )( $| 3610,92033
+sub compare_timesmain::compare_times3631,92384
+ local( $t1, $t2 )( $t1, $t2 3637,92564
+ local( $diff )( $diff 3638,92589
+sub create_assocsmain::create_assocs3643,92688
+ local( $map )( $map 3645,92708
+sub delete_assocsmain::delete_assocs3657,92957
+ local( $map )( $map 3659,92977
+sub unlink_dbmmain::unlink_dbm3671,93247
+ local( $file )( $file 3673,93264
+sub bsplitmain::bsplit3681,93462
+ local( $temp, $dest_path, $time )( $temp, $dest_path, $time 3683,93475
+ local( $dest_dir )( $dest_dir 3684,93516
+ local( $bufsiz )( $bufsiz 3685,93558
+ local( $buffer, $in, $sofar )( $buffer, $in, $sofar 3686,93583
+ local( $d )( $d 3691,93721
+ local( $index )( $index 3697,93840
+ local( $part )( $part 3698,93865
+ local( $locali )( $locali 3714,94336
+ local( $readme )( $readme 3730,94740
+sub sysmain::sys3739,95116
+ local( $com )( $com 3741,95126
+sub set_assoc_from_arraymain::set_assoc_from_array3751,95355
+ local( *things )( *things 3754,95453
+sub find_progmain::find_prog3760,95537
+ local( $prog )( $prog 3762,95553
+ local( $path )( $path 3763,95575
+ local( $path )( $path 3766,95657
+sub real_dir_from_pathmain::real_dir_from_path3780,95842
+ local( $program )( $program 3782,95867
+ local( @prog_path )( @prog_path 3783,95892
+ local( $dir )( $dir 3784,95970
+sub msgmain::msg3807,96489
+ local( $todo, $msg )( $todo, $msg 3809,96499
+sub to_bytesmain::to_bytes3838,96979
+ local( $size )( $size 3840,96994
+sub unix2vmsmain::unix2vms3858,97332
+ local( $v, $kind )( $v, $kind 3860,97347
+ local( $dir, $rest )( $dir, $rest 3873,97559
+sub dirpartmain::dirpart3886,97730
+ local( $path )( $path 3888,97744
+sub expand_symlinkmain::expand_symlink3902,98076
+ local( $orig_path, $points_to )( $orig_path, $points_to 3904,98097
+ local( $dirpart )( $dirpart 3905,98136
+sub flatten_pathmain::flatten_path3913,98365
+ local( $path )( $path 3915,98384
+ local( $changed )( $changed 3916,98406
+ local( $i )( $i 3917,98430
+ local( $rooted )( $rooted 3919,98446
+ local( $count )( $count 3920,98482
+ local( $orig_path )( $orig_path 3921,98504
+ local( $in )( $in 3932,98741
+ local( @parts )( @parts 3933,98765
+sub fix_packagemain::fix_package3963,99438
+ local( $package )( $package 3965,99456
+sub will_compressmain::will_compress3970,99529
+sub will_splitmain::will_split3981,99859
+sub myflockmain::myflock3989,100001
+ local( $file, $kind )( $file, $kind 3991,100015
+sub t2strmain::t2str4004,100221
+ local( @t )( @t 4006,100233
+
local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst4013,100335
+sub handlermain::handler4022,100583
+ local( $sig )( $sig 4029,100651
+ local( $msg )( $msg 4030,100679
+ local( $package, $filename, $line )( $package, $filename, $line
4031,100737
+sub trap_signalsmain::trap_signals4036,100859
+ local( $sig )( $sig 4038,100878
+sub map_user_groupmain::map_user_group4047,101158
+sub keepmain::keep4069,101537
+ local( $pathi, $path, *keep, *keep_totals, *keep_map, $kind )( $pathi,
$path, *keep, *keep_totals, *keep_map, $kind 4071,101548
+sub alarmmain::alarm4104,102330
+ local( $time_to_sig )( $time_to_sig 4106,102342
+sub chownmain::chown4110,102405
+ local( $uid, $gid, $path )( $uid, $gid, $path 4112,102417
+sub utimemain::utime4116,102494
+ local( $atime, $mtime, $path )( $atime, $mtime, $path 4118,102506
+ local( $old_mode )( $old_mode 4124,102685
+ local( $tmp_mode )( $tmp_mode 4125,102730
+ local( $ret )( $ret 4126,102763
+sub cwdmain::cwd4135,102913
+ local( $lcwd )( $lcwd 4137,102923
+
+ps-src/rfc1245.ps,2478
+/FMversion 12,311
+/FrameDict 17,500
+/FMVERSION 47,1307
+/FMLOCAL 56,1494
+/FMDOCUMENT 73,1766
+/FMBEGINPAGE 95,2279
+/FMENDPAGE 109,2516
+/FMDEFINEFONT 115,2582
+/FMNORMALIZEGRAPHICS 126,2725
+/FMBEGINEPSF 142,2955
+/FMENDEPSF 153,3207
+/setmanualfeed 158,3283
+/max 163,3386
+/min 164,3426
+/inch 165,3466
+/pagedimen 166,3485
+/setpapername 172,3629
+/papersize 190,4214
+/manualpapersize 211,4789
+/desperatepapersize 230,5211
+/savematrix 239,5370
+/restorematrix 242,5425
+/dmatrix 245,5475
+/dpi 246,5495
+/freq 248,5583
+/sangle 249,5658
+/DiacriticEncoding 250,5717
+/.notdef 251,5738
+/.notdef 252,5801
+/.notdef 253,5864
+/.notdef 254,5927
+/.notdef 255,5990
+/numbersign 256,6051
+/parenright 257,6115
+/two 258,6184
+/less 259,6251
+/L 260,6320
+/bracketright 261,6389
+/i 262,6459
+/braceright 263,6529
+/Ntilde 264,6598
+/atilde 265,6668
+/iacute 266,6733
+/ocircumflex 267,6797
+/udieresis 268,6858
+/paragraph 269,6919
+/dieresis 270,6983
+/yen 271,7050
+/ordfeminine 272,7109
+/exclamdown 273,7171
+/guillemotleft 274,7230
+/Otilde 275,7296
+/quoteleft 276,7357
+/fraction 277,7420
+/periodcentered 278,7490
+/Acircumflex 279,7549
+/Icircumflex 280,7610
+/Uacute 281,7680
+/breve 282,7746
+/ReEncode 284,7814
+/graymode 300,8020
+/setpattern 310,8184
+/grayness 331,8725
+/normalize 394,9873
+/dnormalize 397,9942
+/lnormalize 400,10014
+/H 403,10104
+/Z 406,10147
+/X 409,10176
+/V 412,10219
+/N 415,10260
+/M 418,10286
+/E 419,10315
+/D 420,10336
+/O 421,10358
+/L 423,10394
+/Y 430,10489
+/R 439,10588
+/RR 450,10696
+/C 467,10959
+/U 473,11004
+/F 477,11039
+/T 481,11084
+/RF 484,11115
+/TF 488,11164
+/P 495,11219
+/PF 499,11270
+/S 506,11344
+/SF 510,11384
+/B 517,11446
+/BF 521,11505
+/W 538,11714
+/G 573,12382
+/A 582,12525
+/BEGINPRINTCODE 606,12918
+/ENDPRINTCODE 615,13131
+/gn 620,13259
+/cfs 631,13384
+/ic 636,13473
+/ms 658,14285
+/ip 668,14395
+/wh 678,14492
+/bl 684,14607
+/s1 690,14722
+/fl 691,14739
+/hx 698,14887
+/wbytes 709,15055
+/BEGINBITMAPBWc 713,15147
+/BEGINBITMAPGRAYc 716,15198
+/BEGINBITMAP2BITc 719,15251
+/COMMONBITMAPc 722,15304
+/BEGINBITMAPBW 739,15660
+/BEGINBITMAPGRAY 742,15709
+/BEGINBITMAP2BIT 745,15760
+/COMMONBITMAP 748,15811
+/Fmcc 765,16156
+/ngrayt 773,16371
+/nredt 774,16393
+/nbluet 775,16414
+/ngreent 776,16436
+/colorsetup 787,16603
+/fakecolorsetup 814,17370
+/BITMAPCOLOR 826,17636
+/BITMAPCOLORc 839,17926
+/BITMAPGRAY 855,18275
+/BITMAPGRAYc 858,18335
+/ENDBITMAP 861,18397
+/fillprocs 868,18497
+
+prol-src/ordsets.prolog,525
+is_ordset(47,1310
+list_to_ord_set(63,1688
+ord_add_element(71,1867
+ord_del_element(85,2344
+ord_disjoint(100,2783
+ord_intersect(108,2953
+ord_intersection(126,3552
+ord_intersection3(130,3691
+ord_intersection(150,4531
+ord_intersection4(154,4703
+ord_intersection(176,5664
+ord_intersection2(181,5812
+ord_member(200,6318
+ord_seteq(216,6683
+ord_setproduct(225,6971
+ord_subset(240,7377
+ord_subtract(257,7861
+ord_symdiff(265,8054
+ord_union(288,8887
+ord_union4(303,9352
+ord_union(324,10171
+ord_union_all(329,10313
+
+prol-src/natded.prolog,2319
+expandmng(100,2879
+normalize(116,3359
+fresh_vars(125,3716
+subst(138,4134
+normalize_fresh(159,4660
+reduce_subterm(171,5112
+reduce(185,5559
+free_var(196,5903
+free_for(209,6246
+compile_lex(231,6875
+consult_lex:-consult_lex248,7384
+lex(259,7754
+expandsyn(267,8068
+bas_syn(292,8897
+compile_empty:-compile_empty310,9376
+complete(328,10055
+add_active(340,10527
+parse(353,10949
+derived_analyses(364,11341
+build(378,11965
+buildact(392,12521
+mapsyn(412,13542
+add_edge(434,14278
+findcats(447,14758
+normalize_tree(465,15478
+normalize_trees(475,15856
+expandmng_tree(486,16248
+expandmng_trees(496,16614
+cat(511,17013
+subtree(644,21266
+hypothetical_mem(653,21565
+make_coor(667,22130
+start_up:-start_up688,23013
+tokenizeatom(710,23921
+tokenize(720,24348
+isoperator(752,25377
+isoptab(756,25431
+specialsymbol(765,25756
+sstab(771,25861
+parse_cgi(787,26347
+keyvalseq(792,26510
+andkeyvalseq(796,26609
+keyval(799,26688
+valseq(807,26920
+plusvalseq(810,27007
+val(816,27109
+argvals(824,27426
+commaargvals(828,27503
+atomval(833,27578
+atom(836,27640
+action(846,28004
+keyvalcgi(864,28649
+keyvalscgi(865,28670
+outsyn(868,28726
+act(876,29060
+actout(901,29906
+texttreelist(912,30089
+htmltreelist(918,30190
+fitchtreelist(924,30304
+pp_html_table_tree(938,30759
+pp_html_tree(949,31113
+pp_html_trees(988,32381
+pp_html_table_fitch_tree(999,32769
+pp_html_fitch_tree(1017,33672
+removeexp(1129,39002
+splitexp(1142,39490
+pp_exp(1155,39990
+map_word(1168,40249
+pp_exps(1180,40474
+pp_tree(1188,40777
+pp_trees(1216,41807
+pp_word_list(1225,42128
+pp_word(1231,42262
+pp_word_list_rest(1238,42569
+pp_cat(1248,42929
+pp_syn(1255,43196
+pp_syn_paren(1276,43899
+pp_paren(1293,44377
+pp_syn_back(1300,44661
+pp_bas_cat(1311,45001
+writecat(1322,45409
+writesubs(1351,46455
+writesups(1361,46757
+writelistsubs(1371,47090
+pp_lam(1380,47408
+pp_lam_bracket(1398,48022
+pp_lam_paren(1407,48338
+pp_rule(1429,49238
+member(1447,49866
+append_list(1451,49919
+append(1456,50010
+at_least_one_member(1460,50076
+numbervars(1464,50171
+reverse(1467,50209
+select(1471,50290
+select_last(1475,50357
+cat_atoms(1479,50436
+writelist(1485,50524
+write_lex_cat(1492,50676
+writebreaklex(1500,50988
+write_lex(1513,51265
+writebreak(1521,51541
+tt:-tt1531,51713
+mt:-mt1534,51784
+cmt:-cmt1537,51878
+
+pyt-src/server.py,1438
+class Controls:Controls17,358
+ def __init__(18,374
+ def __repr__(24,590
+ def __str__(34,871
+class Server:Server37,934
+ def __init__(38,948
+ def dump(73,2198
+ def __repr__(125,3896
+ def __str__(128,3945
+class User:User131,4014
+ def __init__(132,4026
+ def __repr__(172,5445
+ def __str__(206,6883
+def flag2str(223,7212
+class LabeledEntry(232,7442
+ def bind(234,7525
+ def focus_set(236,7584
+ def __init__(238,7629
+def ButtonBar(245,7909
+def helpwin(255,8280
+class ListEdit(267,8707
+ def __init__(269,8808
+ def handleList(303,10042
+ def handleNew(306,10094
+ def editItem(314,10426
+ def deleteItem(320,10596
+def ConfirmQuit(326,10760
+class ControlEdit(375,12377
+ def PostControls(376,12403
+ def GatherControls(421,13530
+class ServerEdit(512,16264
+ def __init__(513,16289
+ def post(525,16629
+ def gather(543,17191
+ def nosave(547,17304
+ def save(551,17408
+ def refreshPort(556,17509
+ def createWidgets(561,17663
+ def edituser(631,20708
+class UserEdit(645,20921
+ def __init__(646,20944
+ def post(658,21283
+ def gather(676,21841
+ def nosave(680,21950
+ def save(684,22052
+ def createWidgets(689,22151
+class Configure(760,24879
+ def __init__(761,24916
+ def MakeDispose(772,25211
+ def MakeSitelist(786,25706
+ def editsite(794,25949
+ def save(797,26022
+ def nosave(807,26310
+
+tex-src/testenv.tex,52
+\newcommand{\nm}\nm4,77
+\section{blah}blah8,139
+
+tex-src/gzip.texi,303
address@hidden Top,62,2139
address@hidden Copying,80,2652
address@hidden Overview,83,2705
address@hidden Sample,166,7272
address@hidden Invoking gzip,Invoking gzip210,8828
address@hidden Advanced usage,Advanced usage357,13495
address@hidden Environment,420,15207
address@hidden Tapes,437,15768
address@hidden Problems,460,16767
address@hidden Concept Index,Concept Index473,17287
+
+tex-src/texinfo.tex,30626
+\def\texinfoversion{\texinfoversion25,1019
+\def\tie{\tie48,1510
+\def\gloggingall{\gloggingall71,2260
+\def\loggingall{\loggingall72,2329
+\def\onepageout#1{\onepageout98,3266
+\def\croppageout#1{\croppageout114,4016
+\def\cropmarks{\cropmarks141,5076
+\def\pagebody#1{\pagebody143,5123
+\def\ewtop{\ewtop156,5578
+\def\nstop{\nstop157,5642
+\def\ewbot{\ewbot159,5725
+\def\nsbot{\nsbot160,5789
+\def\parsearg #1{\parsearg169,6088
+\def\parseargx{\parseargx171,6166
+\def\parseargline{\parseargline181,6406
+\def\flushcr{\flushcr185,6527
+\newif\ifENV \ENVfalse \def\inENV{\inENV189,6726
+\def\ENVcheck{\ENVcheck190,6790
+\outer\def\begin{\begin197,7037
+\def\beginxxx #1{\beginxxx199,7075
+\def\end{\end207,7330
+\def\endxxx #1{\endxxx209,7358
+\def\errorE#1{\errorE215,7547
+\def\singlespace{\singlespace221,7741
address@hidden@231,7964
+\def\`{\`235,8064
+\def\'{\'236,8076
+\def\mylbrace {\mylbrace240,8124
+\def\myrbrace {\myrbrace241,8157
+\def\:{\:246,8271
+\def\*{\*249,8325
+\def\.{\.252,8401
+\def\w#1{\w257,8632
+\def\group{\group267,9115
+ \def\Egroup{\Egroup272,9279
+\def\need{\need288,9721
+\def\needx#1{\needx299,9998
+\def\dots{\dots338,11384
+\def\page{\page342,11448
+\def\exdent{\exdent352,11775
+\def\exdentyyy #1{\exdentyyy353,11808
+\def\nofillexdent{\nofillexdent356,11952
+\def\nofillexdentyyy #1{\nofillexdentyyy357,11997
+\def\include{\include364,12181
+\def\includezzz #1{\includezzz365,12216
+\def\thisfile{\thisfile368,12267
+\def\center{\center372,12330
+\def\centerzzz #1{\centerzzz373,12363
+\def\sp{\sp379,12505
+\def\spxxx #1{\spxxx380,12530
+\def\comment{\comment386,12704
+\def\commentxxx #1{\commentxxx389,12801
+\def\ignoresections{\ignoresections395,12970
+\let\chapter=\relax=\relax396,12992
+\let\section=\relax=\relax405,13237
+\let\subsection=\relax=\relax408,13298
+\let\subsubsection=\relax=\relax409,13321
+\let\appendix=\relax=\relax410,13347
+\let\appendixsec=\relaxsec=\relax411,13368
+\let\appendixsection=\relaxsection=\relax412,13392
+\let\appendixsubsec=\relaxsubsec=\relax413,13420
+\let\appendixsubsection=\relaxsubsection=\relax414,13447
+\let\appendixsubsubsec=\relaxsubsubsec=\relax415,13478
+\let\appendixsubsubsection=\relaxsubsubsection=\relax416,13508
+\def\ignore{\ignore422,13610
+\long\def\ignorexxx #1\end ignore{\ignorexxx426,13750
+\def\direntry{\direntry428,13809
+\long\def\direntryxxx #1\end direntry{\direntryxxx429,13848
+\def\ifset{\ifset433,13958
+\def\ifsetxxx #1{\ifsetxxx435,14016
+\def\Eifset{\Eifset439,14143
+\def\ifsetfail{\ifsetfail440,14157
+\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx441,14213
+\def\ifclear{\ifclear443,14274
+\def\ifclearxxx #1{\ifclearxxx445,14336
+\def\Eifclear{\Eifclear449,14467
+\def\ifclearfail{\ifclearfail450,14483
+\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx451,14543
+\def\set{\set455,14694
+\def\setxxx #1{\setxxx456,14721
+\def\clear{\clear459,14783
+\def\clearxxx #1{\clearxxx460,14814
+\def\iftex{\iftex465,14931
+\def\Eiftex{\Eiftex466,14944
+\def\ifinfo{\ifinfo467,14958
+\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx468,15008
+\long\def\menu #1\end menu{\menu470,15067
+\def\asis#1{\asis471,15096
+\def\math#1{\math484,15639
+\def\node{\node486,15683
+\def\nodezzz#1{\nodezzz487,15721
+\def\nodexxx[#1,#2]{\nodexxx[488,15752
+\def\donoderef{\donoderef491,15814
+\def\unnumbnoderef{\unnumbnoderef495,15935
+\def\appendixnoderef{\appendixnoderef499,16066
+\expandafter\expandafter\expandafter\appendixsetref{setref500,16112
+\let\refill=\relaxill=\relax503,16201
+\def\setfilename{\setfilename508,16415
+\outer\def\bye{\bye517,16661
+\def\inforef #1{\inforef519,16717
+\def\inforefzzz #1,#2,#3,#4**{\inforefzzz520,16755
+\def\losespace #1{\losespace522,16852
+\def\sf{\sf531,17056
+\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10557,17851
+\font\deftt=cmtt10 scaled \magstep1tt=cmtt10558,17897
+\def\df{\df559,17933
+\def\resetmathfonts{\resetmathfonts634,20527
+\def\textfonts{\textfonts647,21116
+\def\chapfonts{\chapfonts652,21331
+\def\secfonts{\secfonts657,21547
+\def\subsecfonts{\subsecfonts662,21752
+\def\indexfonts{\indexfonts667,21969
+\def\smartitalicx{\smartitalicx690,22701
+\def\smartitalic#1{\smartitalic691,22777
+\let\cite=\smartitalic=\smartitalic697,22922
+\def\b#1{\b699,22946
+\def\t#1{\t702,22981
+\def\samp #1{\samp705,23133
+\def\key #1{\key706,23166
+\def\ctrl #1{\ctrl707,23227
+\def\tclose#1{\tclose715,23429
+\def\ {\719,23595
+\def\xkey{\xkey727,23864
+\def\kbdfoo#1#2#3\par{\kbdfoo728,23880
+\def\dmn#1{\dmn737,24181
+\def\kbd#1{\kbd739,24208
+\def\l#1{\l741,24265
+\def\r#1{\r743,24294
+\def\sc#1{\sc745,24362
+\def\ii#1{\ii746,24405
+\def\titlefont#1{\titlefont754,24638
+\def\titlepage{\titlepage760,24741
+ \def\subtitlefont{\subtitlefont765,24968
+ \def\authorfont{\authorfont767,25052
+ \def\title{\title773,25262
+ \def\titlezzz##1{\titlezzz774,25297
+ \def\subtitle{\subtitle782,25612
+ \def\subtitlezzz##1{\subtitlezzz783,25653
+ \def\author{\author786,25771
+ \def\authorzzz##1{\authorzzz787,25808
+ \def\page{\page793,26099
+\def\Etitlepage{\Etitlepage803,26268
+\def\finishtitlepage{\finishtitlepage816,26656
+\def\evenheading{\evenheading845,27664
+\def\oddheading{\oddheading846,27707
+\def\everyheading{\everyheading847,27748
+\def\evenfooting{\evenfooting849,27794
+\def\oddfooting{\oddfooting850,27837
+\def\everyfooting{\everyfooting851,27878
+\def\headings #1 {\headings892,29570
+\def\HEADINGSoff{\HEADINGSoff894,29619
+\def\HEADINGSdouble{\HEADINGSdouble903,30046
+\def\HEADINGSsingle{\HEADINGSsingle913,30366
+\def\HEADINGSon{\HEADINGSon921,30587
+\def\HEADINGSafter{\HEADINGSafter923,30621
+\def\HEADINGSdoublex{\HEADINGSdoublex925,30716
+\def\HEADINGSsingleafter{\HEADINGSsingleafter932,30904
+\def\HEADINGSsinglex{\HEADINGSsinglex933,30965
+\def\today{\today942,31240
+\def\thistitle{\thistitle957,31785
+\def\settitle{\settitle958,31810
+\def\settitlezzz #1{\settitlezzz959,31847
+\def\internalBitem{\internalBitem991,32777
+\def\internalBitemx{\internalBitemx992,32827
+\def\internalBxitem "#1"{\internalBxitem994,32872
+\def\internalBxitemx "#1"{\internalBxitemx995,32952
+\def\internalBkitem{\internalBkitem997,33027
+\def\internalBkitemx{\internalBkitemx998,33079
+\def\kitemzzz #1{\kitemzzz1000,33126
+\def\xitemzzz #1{\xitemzzz1003,33228
+\def\itemzzz #1{\itemzzz1006,33331
+\def\item{\item1036,34402
+\def\itemx{\itemx1037,34453
+\def\kitem{\kitem1038,34506
+\def\kitemx{\kitemx1039,34559
+\def\xitem{\xitem1040,34614
+\def\xitemx{\xitemx1041,34667
+\def\description{\description1044,34777
+\def\table{\table1046,34827
+\def\ftable{\ftable1051,34971
+\def\Eftable{\Eftable1055,35117
+\def\vtable{\vtable1058,35186
+\def\Evtable{\Evtable1062,35332
+\def\dontindex #1{\dontindex1065,35401
+\def\fnitemindex #1{\fnitemindex1066,35421
+\def\vritemindex #1{\vritemindex1067,35466
+\def\tablez #1#2#3#4#5#6{\tablez1073,35615
+\def\Edescription{\Edescription1076,35673
+\def\itemfont{\itemfont1081,35875
+\def\Etable{\Etable1089,36101
+\def\itemize{\itemize1102,36425
+\def\itemizezzz #1{\itemizezzz1104,36461
+\def\itemizey #1#2{\itemizey1109,36556
+\def#2{1118,36802
+\def\itemcontents{\itemcontents1119,36843
+\def\bullet{\bullet1122,36891
+\def\minus{\minus1123,36918
+\def\frenchspacing{\frenchspacing1127,37026
+\def\splitoff#1#2\endmark{\splitoff1133,37251
+\def\enumerate{\enumerate1139,37481
+\def\enumeratezzz #1{\enumeratezzz1140,37520
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1141,37573
+ \def\thearg{\thearg1145,37720
+ \ifx\thearg\empty \def\thearg{\thearg1146,37739
+\def\numericenumerate{\numericenumerate1183,39073
+\def\lowercaseenumerate{\lowercaseenumerate1189,39203
+\def\uppercaseenumerate{\uppercaseenumerate1202,39550
+\def\startenumeration#1{\startenumeration1218,40040
+\def\alphaenumerate{\alphaenumerate1226,40222
+\def\capsenumerate{\capsenumerate1227,40257
+\def\Ealphaenumerate{\Ealphaenumerate1228,40291
+\def\Ecapsenumerate{\Ecapsenumerate1229,40325
+\def\itemizeitem{\itemizeitem1233,40405
+\def\newindex #1{\newindex1258,41262
+\def\defindex{\defindex1267,41551
+\def\newcodeindex #1{\newcodeindex1271,41659
+\def\defcodeindex{\defcodeindex1278,41919
+\def\synindex #1 #2 {\synindex1282,42099
+\def\syncodeindex #1 #2 {\syncodeindex1291,42439
+\def\doindex#1{\doindex1308,43118
+\def\singleindexer #1{\singleindexer1309,43177
+\def\docodeindex#1{\docodeindex1312,43289
+\def\singlecodeindexer #1{\singlecodeindexer1313,43356
+\def\indexdummies{\indexdummies1315,43414
+\def\_{\_1316,43434
+\def\w{\w1317,43462
+\def\bf{\bf1318,43489
+\def\rm{\rm1319,43518
+\def\sl{\sl1320,43547
+\def\sf{\sf1321,43576
+\def\tt{\tt1322,43604
+\def\gtr{\gtr1323,43632
+\def\less{\less1324,43662
+\def\hat{\hat1325,43694
+\def\char{\char1326,43724
+\def\TeX{\TeX1327,43756
+\def\dots{\dots1328,43786
+\def\copyright{\copyright1329,43819
+\def\tclose##1{\tclose1330,43862
+\def\code##1{\code1331,43907
+\def\samp##1{\samp1332,43948
+\def\t##1{\t1333,43989
+\def\r##1{\r1334,44024
+\def\i##1{\i1335,44059
+\def\b##1{\b1336,44094
+\def\cite##1{\cite1337,44129
+\def\key##1{\key1338,44170
+\def\file##1{\file1339,44209
+\def\var##1{\var1340,44250
+\def\kbd##1{\kbd1341,44289
+\def\indexdummyfont#1{\indexdummyfont1346,44445
+\def\indexdummytex{\indexdummytex1347,44471
+\def\indexdummydots{\indexdummydots1348,44495
+\def\indexnofonts{\indexnofonts1350,44521
+\let\w=\indexdummyfontdummyfont1351,44541
+\let\t=\indexdummyfontdummyfont1352,44564
+\let\r=\indexdummyfontdummyfont1353,44587
+\let\i=\indexdummyfontdummyfont1354,44610
+\let\b=\indexdummyfontdummyfont1355,44633
+\let\emph=\indexdummyfontdummyfont1356,44656
+\let\strong=\indexdummyfontdummyfont1357,44682
+\let\cite=\indexdummyfont=\indexdummyfont1358,44710
+\let\sc=\indexdummyfontdummyfont1359,44736
+\let\tclose=\indexdummyfontdummyfont1363,44908
+\let\code=\indexdummyfontdummyfont1364,44936
+\let\file=\indexdummyfontdummyfont1365,44962
+\let\samp=\indexdummyfontdummyfont1366,44988
+\let\kbd=\indexdummyfontdummyfont1367,45014
+\let\key=\indexdummyfontdummyfont1368,45039
+\let\var=\indexdummyfontdummyfont1369,45064
+\let\TeX=\indexdummytexdummytex1370,45089
+\let\dots=\indexdummydotsdummydots1371,45113
+\let\indexbackslash=0 %overridden during \printindex.backslash=01381,45365
+\def\doind #1#2{\doind1383,45421
+{\indexdummies % Must do this here, since \bf, etc expand at this
stagedummies1385,45464
+\def\rawbackslashxx{\rawbackslashxx1388,45604
+{\indexnofontsnofonts1393,45866
+\def\dosubind #1#2#3{\dosubind1404,46177
+{\indexdummies % Must do this here, since \bf, etc expand at this
stagedummies1406,46225
+\def\rawbackslashxx{\rawbackslashxx1409,46329
+{\indexnofontsnofonts1413,46483
+\def\findex {\findex1442,47414
+\def\kindex {\kindex1443,47437
+\def\cindex {\cindex1444,47460
+\def\vindex {\vindex1445,47483
+\def\tindex {\tindex1446,47506
+\def\pindex {\pindex1447,47529
+\def\cindexsub {\cindexsub1449,47553
+\def\printindex{\printindex1461,47880
+\def\doprintindex#1{\doprintindex1463,47921
+ \def\indexbackslash{\indexbackslash1480,48406
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1481,48445
+\def\initial #1{\initial1516,49517
+\def\entry #1#2{\entry1522,49724
+ \null\nobreak\indexdotfill % Have leaders before the page
number.dotfill1539,50371
+\def\indexdotfill{\indexdotfill1548,50699
+\def\primary #1{\primary1551,50805
+\def\secondary #1#2{\secondary1555,50887
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1558,50969
+\newbox\partialpageialpage1565,51142
+\def\begindoublecolumns{\begindoublecolumns1571,51300
+ \output={\global\setbox\partialpage=ialpage=1572,51336
+\def\enddoublecolumns{\enddoublecolumns1576,51524
+\def\doublecolumnout{\doublecolumnout1579,51609
+ address@hidden \advance\dimen@ by-\ht\partialpageialpage1580,51678
+\def\pagesofar{\pagesofar1583,51856
+\def\balancecolumns{\balancecolumns1587,52093
+ address@hidden \advance\availdimen@ by-\ht\partialpageialpage1593,52264
+ address@hidden \advance\dimen@ by-\ht\partialpageialpage1599,52525
+\newcount \appendixno \appendixno = address@hidden,53430
+\def\appendixletter{\appendixletter1627,53471
+\def\opencontents{\opencontents1631,53574
+\def\thischapter{\thischapter1636,53755
+\def\seccheck#1{\seccheck1637,53793
+\def\chapternofonts{\chapternofonts1642,53897
+\def\result{\result1645,53972
+\def\equiv{\equiv1646,54007
+\def\expansion{\expansion1647,54040
+\def\print{\print1648,54081
+\def\TeX{\TeX1649,54114
+\def\dots{\dots1650,54143
+\def\copyright{\copyright1651,54174
+\def\tt{\tt1652,54215
+\def\bf{\bf1653,54242
+\def\w{\w1654,54270
+\def\less{\less1655,54295
+\def\gtr{\gtr1656,54326
+\def\hat{\hat1657,54355
+\def\char{\char1658,54384
+\def\tclose##1{\tclose1659,54415
+\def\code##1{\code1660,54459
+\def\samp##1{\samp1661,54499
+\def\r##1{\r1662,54539
+\def\b##1{\b1663,54573
+\def\key##1{\key1664,54607
+\def\file##1{\file1665,54645
+\def\kbd##1{\kbd1666,54685
+\def\i##1{\i1668,54793
+\def\cite##1{\cite1669,54827
+\def\var##1{\var1670,54867
+\def\emph##1{\emph1671,54905
+\def\dfn##1{\dfn1672,54945
+\def\thischaptername{\thischaptername1675,54986
+\outer\def\chapter{\chapter1676,55025
+\def\chapterzzz #1{\chapterzzz1677,55066
+{\chapternofonts%nofonts%1686,55462
+\global\let\section = \numberedsec=1691,55615
+\global\let\subsection = \numberedsubsec=1692,55650
+\global\let\subsubsection = \numberedsubsubsec=1693,55691
+\outer\def\appendix{\appendix1696,55742
+\def\appendixzzz #1{\appendixzzz1697,55785
+\global\advance \appendixno by 1 \message{no1699,55862
+\chapmacro {#1}{Appendix \appendixletter}letter1700,55931
+\xdef\thischapter{Appendix \appendixletter:
\noexpand\thischaptername}letter:1703,56024
+{\chapternofonts%nofonts%1704,56096
+ {#1}{Appendix \appendixletter}letter1706,56152
+\appendixnoderef %noderef1709,56252
+\global\let\section = \appendixsec=1710,56271
+\global\let\subsection = \appendixsubsec=1711,56306
+\global\let\subsubsection = \appendixsubsubsec=1712,56347
+\outer\def\top{\top1715,56398
+\outer\def\unnumbered{\unnumbered1716,56438
+\def\unnumberedzzz #1{\unnumberedzzz1717,56485
+{\chapternofonts%nofonts%1721,56648
+\global\let\section = \unnumberedsec=1726,56798
+\global\let\subsection = \unnumberedsubsec=1727,56835
+\global\let\subsubsection = \unnumberedsubsubsec=1728,56878
+\outer\def\numberedsec{\numberedsec1731,56931
+\def\seczzz #1{\seczzz1732,56972
+{\chapternofonts%nofonts%1735,57128
+\outer\def\appendixsection{\appendixsection1744,57314
+\outer\def\appendixsec{\appendixsec1745,57371
+\def\appendixsectionzzz #1{\appendixsectionzzz1746,57424
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1748,57536
+{\chapternofonts%nofonts%1749,57604
+{#1}{\appendixletter}letter1751,57660
+\appendixnoderef %noderef1754,57760
+\outer\def\unnumberedsec{\unnumberedsec1758,57800
+\def\unnumberedseczzz #1{\unnumberedseczzz1759,57853
+{\chapternofonts%nofonts%1761,57948
+\outer\def\numberedsubsec{\numberedsubsec1769,58116
+\def\numberedsubseczzz #1{\numberedsubseczzz1770,58171
+{\chapternofonts%nofonts%1773,58350
+\outer\def\appendixsubsec{\appendixsubsec1782,58554
+\def\appendixsubseczzz #1{\appendixsubseczzz1783,58609
+\subsecheading {#1}{\appendixletter}letter1785,58731
+{\chapternofonts%nofonts%1786,58796
+{#1}{\appendixletter}letter1788,58855
+\appendixnoderef %noderef1791,58970
+\outer\def\unnumberedsubsec{\unnumberedsubsec1795,59010
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1796,59069
+{\chapternofonts%nofonts%1798,59170
+\outer\def\numberedsubsubsec{\numberedsubsubsec1806,59341
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1807,59402
+{\chapternofonts%nofonts%1811,59599
+\outer\def\appendixsubsubsec{\appendixsubsubsec1822,59832
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1823,59893
+ {\appendixletter}letter1826,60032
+{\chapternofonts%nofonts%1827,60098
+ {\appendixletter}letter1829,60163
+\appendixnoderef %noderef1833,60297
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1837,60337
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1838,60402
+{\chapternofonts%nofonts%1840,60509
+\def\infotop{\infotop1850,60838
+\def\infounnumbered{\infounnumbered1851,60876
+\def\infounnumberedsec{\infounnumberedsec1852,60921
+\def\infounnumberedsubsec{\infounnumberedsubsec1853,60972
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1854,61029
+\def\infoappendix{\infoappendix1856,61093
+\def\infoappendixsec{\infoappendixsec1857,61134
+\def\infoappendixsubsec{\infoappendixsubsec1858,61181
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1859,61234
+\def\infochapter{\infochapter1861,61294
+\def\infosection{\infosection1862,61333
+\def\infosubsection{\infosubsection1863,61372
+\def\infosubsubsection{\infosubsubsection1864,61417
+\global\let\section = \numberedsec=1869,61654
+\global\let\subsection = \numberedsubsec=1870,61689
+\global\let\subsubsection = \numberedsubsubsec=1871,61730
+\def\majorheading{\majorheading1885,62237
+\def\majorheadingzzz #1{\majorheadingzzz1886,62282
+\def\chapheading{\chapheading1892,62515
+\def\chapheadingzzz #1{\chapheadingzzz1893,62558
+\def\heading{\heading1898,62753
+\def\subheading{\subheading1900,62790
+\def\subsubheading{\subsubheading1902,62833
+\def\dobreak#1#2{\dobreak1909,63110
+\def\setchapterstyle #1 {\setchapterstyle1911,63188
+\def\chapbreak{\chapbreak1918,63443
+\def\chappager{\chappager1919,63493
+\def\chapoddpage{\chapoddpage1920,63531
+\def\setchapternewpage #1 {\setchapternewpage1922,63610
+\def\CHAPPAGoff{\CHAPPAGoff1924,63667
+\def\CHAPPAGon{\CHAPPAGon1928,63761
+\global\def\HEADINGSon{\HEADINGSon1931,63852
+\def\CHAPPAGodd{\CHAPPAGodd1933,63894
+\global\def\HEADINGSon{\HEADINGSon1936,63990
+\def\CHAPFplain{\CHAPFplain1940,64044
+\def\chfplain #1#2{\chfplain1944,64136
+\def\unnchfplain #1{\unnchfplain1955,64359
+\def\unnchfopen #1{\unnchfopen1963,64588
+\def\chfopen #1#2{\chfopen1969,64796
+\def\CHAPFopen{\CHAPFopen1974,64940
+\def\subsecheadingbreak{\subsecheadingbreak1981,65158
+\def\secheadingbreak{\secheadingbreak1984,65287
+\def\secheading #1#2#3{\secheading1992,65569
+\def\plainsecheading #1{\plainsecheading1993,65625
+\def\secheadingi #1{\secheadingi1994,65668
+\def\subsecheading #1#2#3#4{\subsecheading2005,66036
+\def\subsecheadingi #1{\subsecheadingi2006,66103
+\def\subsubsecfonts{\subsubsecfonts2013,66400
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2016,66523
+\def\subsubsecheadingi #1{\subsubsecheadingi2017,66601
+\def\startcontents#1{\startcontents2031,67073
+ \unnumbchapmacro{#1}\def\thischapter{\thischapter2039,67346
+\outer\def\contents{\contents2048,67705
+\outer\def\summarycontents{\summarycontents2056,67849
+ \def\secentry ##1##2##3##4{\secentry2066,68220
+ \def\unnumbsecentry ##1##2{\unnumbsecentry2067,68255
+ \def\subsecentry ##1##2##3##4##5{\subsecentry2068,68290
+ \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2069,68331
+ \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2070,68369
+ \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2071,68416
+\def\chapentry#1#2#3{\chapentry2084,68850
+\def\shortchapentry#1#2#3{\shortchapentry2087,68967
+ {#2\labelspace #1}space2090,69077
+\def\unnumbchapentry#1#2{\unnumbchapentry2093,69131
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2094,69178
+\def\secentry#1#2#3#4{\secentry2101,69342
+\def\unnumbsecentry#1#2{\unnumbsecentry2102,69401
+\def\subsecentry#1#2#3#4#5{\subsecentry2105,69462
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2106,69532
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2109,69606
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2110,69640
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2111,69691
+\def\dochapentry#1#2{\dochapentry2122,70065
+\def\dosecentry#1#2{\dosecentry2137,70670
+\def\dosubsecentry#1#2{\dosubsecentry2144,70848
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2151,71033
+\def\labelspace{\labelspace2159,71284
+\def\dopageno#1{\dopageno2161,71319
+\def\doshortpageno#1{\doshortpageno2162,71345
+\def\chapentryfonts{\chapentryfonts2164,71377
+\def\secentryfonts{\secentryfonts2165,71412
+\def\point{\point2191,72371
+\def\result{\result2193,72392
+\def\expansion{\expansion2194,72465
+\def\print{\print2195,72536
+\def\equiv{\equiv2197,72603
+\def\error{\error2217,73376
+\def\tex{\tex2223,73605
address@hidden@2241,73988
+\gdef\sepspaces{\def {\ }}}\2264,74720
+\def\aboveenvbreak{\aboveenvbreak2267,74802
+\def\afterenvbreak{\afterenvbreak2271,74968
+\def\ctl{\ctl2285,75479
+\def\ctr{\ctr2286,75551
+\def\cbl{\cbl2287,75590
+\def\cbr{\cbr2288,75630
+\def\carttop{\carttop2289,75669
+\def\cartbot{\cartbot2292,75777
+\long\def\cartouche{\cartouche2298,75917
+\def\Ecartouche{\Ecartouche2325,76705
+\def\lisp{\lisp2337,76840
+\def\Elisp{\Elisp2347,77187
+\def\next##1{\next2359,77513
+\def\Eexample{\Eexample2363,77555
+\def\Esmallexample{\Esmallexample2366,77602
+\def\smalllispx{\smalllispx2372,77780
+\def\Esmalllisp{\Esmalllisp2382,78134
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2395,78490
+\def\next##1{\next2396,78547
+\def\display{\display2400,78627
+\def\Edisplay{\Edisplay2409,78946
+\def\next##1{\next2421,79257
+\def\format{\format2425,79360
+\def\Eformat{\Eformat2433,79656
+\def\next##1{\next2436,79745
+\def\flushleft{\flushleft2440,79797
+\def\Eflushleft{\Eflushleft2450,80168
+\def\next##1{\next2453,80261
+\def\flushright{\flushright2455,80283
+\def\Eflushright{\Eflushright2465,80655
+\def\next##1{\next2469,80786
+\def\quotation{\quotation2473,80844
+\def\Equotation{\Equotation2479,81036
+\def\setdeffont #1 {\setdeffont2492,81434
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2494,81480
+\newskip\defargsindent \defargsindent=50ptargsindent2495,81523
+\newskip\deftypemargin \deftypemargin=12pttypemargin2496,81566
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2497,81609
+\def\activeparens{\activeparens2502,81807
+\def\opnr{\opnr2528,83019
+\def\lbrb{\lbrb2529,83084
+\def\defname #1#2{\defname2535,83285
+\advance\dimen2 by -\defbodyindentbodyindent2539,83403
+\advance\dimen3 by -\defbodyindentbodyindent2541,83457
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2543,83511
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for
continuationsargsindent2545,83653
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2546,83728
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2553,84097
+\advance\leftskip by -\defbodyindentbodyindent2556,84231
+\exdentamount=\defbodyindentbodyindent2557,84268
+\def\defparsebody #1#2#3{\defparsebody2567,84627
+\def#1{2571,84811
+\def#2{2572,84847
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2574,84919
+\exdentamount=\defbodyindentbodyindent2575,84993
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2580,85097
+\def#1{2584,85258
+\def#2##1 {2585,85294
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2587,85377
+\exdentamount=\defbodyindentbodyindent2588,85451
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2591,85536
+\def#1{2595,85697
+\def#2##1 ##2 {2596,85733
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2599,85833
+\exdentamount=\defbodyindentbodyindent2600,85907
+\def\defvarparsebody #1#2#3{\defvarparsebody2607,86178
+\def#1{2611,86365
+\def#2{2612,86401
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2614,86460
+\exdentamount=\defbodyindentbodyindent2615,86534
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2620,86625
+\def#1{2624,86784
+\def#2##1 {2625,86820
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2627,86890
+\exdentamount=\defbodyindentbodyindent2628,86964
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2631,87036
+\def#1{2635,87200
+\def#2##1 ##2 {2636,87236
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2639,87323
+\exdentamount=\defbodyindentbodyindent2640,87397
+\def\defunargs #1{\defunargs2663,88157
+\def\deftypefunargs #1{\deftypefunargs2675,88539
+\def\deffn{\deffn2689,88921
+\def\deffnheader #1#2#3{\deffnheader2691,88978
+\begingroup\defname {name2692,89026
+\def\defun{\defun2698,89171
+\def\defunheader #1#2{\defunheader2700,89224
+\begingroup\defname {name2701,89299
+\defunargs {unargs2702,89335
+\def\deftypefun{\deftypefun2708,89483
+\def\deftypefunheader #1#2{\deftypefunheader2711,89605
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2713,89714
+\begingroup\defname {name2715,89806
+\deftypefunargs {typefunargs2716,89852
+\def\deftypefn{\deftypefn2722,90023
+\def\deftypefnheader #1#2#3{\deftypefnheader2725,90172
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2727,90308
+\begingroup\defname {name2729,90401
+\deftypefunargs {typefunargs2730,90441
+\def\defmac{\defmac2736,90562
+\def\defmacheader #1#2{\defmacheader2738,90619
+\begingroup\defname {name2739,90695
+\defunargs {unargs2740,90728
+\def\defspec{\defspec2746,90852
+\def\defspecheader #1#2{\defspecheader2748,90913
+\begingroup\defname {name2749,90990
+\defunargs {unargs2750,91030
+\def\deffnx #1 {\deffnx2757,91225
+\def\defunx #1 {\defunx2758,91282
+\def\defmacx #1 {\defmacx2759,91339
+\def\defspecx #1 {\defspecx2760,91398
+\def\deftypefnx #1 {\deftypefnx2761,91459
+\def\deftypeunx #1 {\deftypeunx2762,91524
+\def\defop #1 {\defop2768,91670
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2769,91705
+\def\defopheader #1#2#3{\defopheader2771,91759
+\begingroup\defname {name2773,91848
+\defunargs {unargs2774,91894
+\def\defmethod{\defmethod2779,91955
+\def\defmethodheader #1#2#3{\defmethodheader2781,92028
+\begingroup\defname {name2783,92116
+\defunargs {unargs2784,92156
+\def\defcv #1 {\defcv2789,92230
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2790,92265
+\def\defcvarheader #1#2#3{\defcvarheader2792,92324
+\begingroup\defname {name2794,92410
+\defvarargs {varargs2795,92456
+\def\defivar{\defivar2800,92529
+\def\defivarheader #1#2#3{\defivarheader2802,92592
+\begingroup\defname {name2804,92678
+\defvarargs {varargs2805,92729
+\def\defopx #1 {\defopx2811,92878
+\def\defmethodx #1 {\defmethodx2812,92935
+\def\defcvx #1 {\defcvx2813,93000
+\def\defivarx #1 {\defivarx2814,93057
+\def\defvarargs #1{\defvarargs2821,93328
+\def\defvr{\defvr2827,93472
+\def\defvrheader #1#2#3{\defvrheader2829,93527
+\begingroup\defname {name2830,93575
+\def\defvar{\defvar2834,93660
+\def\defvarheader #1#2{\defvarheader2836,93720
+\begingroup\defname {name2837,93791
+\defvarargs {varargs2838,93827
+\def\defopt{\defopt2843,93893
+\def\defoptheader #1#2{\defoptheader2845,93953
+\begingroup\defname {name2846,94024
+\defvarargs {varargs2847,94063
+\def\deftypevar{\deftypevar2852,94120
+\def\deftypevarheader #1#2{\deftypevarheader2855,94236
+\begingroup\defname {name2857,94319
+\def\deftypevr{\deftypevr2864,94493
+\def\deftypevrheader #1#2#3{\deftypevrheader2866,94564
+\begingroup\defname {name2867,94616
+\def\defvrx #1 {\defvrx2875,94853
+\def\defvarx #1 {\defvarx2876,94910
+\def\defoptx #1 {\defoptx2877,94969
+\def\deftypevarx #1 {\deftypevarx2878,95028
+\def\deftypevrx #1 {\deftypevrx2879,95095
+\def\deftpargs #1{\deftpargs2884,95244
+\def\deftp{\deftp2888,95324
+\def\deftpheader #1#2#3{\deftpheader2890,95379
+\begingroup\defname {name2891,95427
+\def\deftpx #1 {\deftpx2896,95586
+\def\setref#1{\setref2907,95907
+\def\unnumbsetref#1{\unnumbsetref2912,96021
+\def\appendixsetref#1{\appendixsetref2917,96128
+\def\pxref#1{\pxref2928,96539
+\def\xref#1{\xref2929,96575
+\def\ref#1{\ref2930,96610
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2931,96640
+\def\printedmanual{\printedmanual2932,96683
+\def\printednodename{\printednodename2933,96721
+\def\printednodename{\printednodename2938,96846
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2953,97479
+\refx{x2956,97557
+\def\dosetq #1#2{\dosetq2964,97777
+\def\internalsetq #1#2{\internalsetq2972,98035
+\def\Ypagenumber{\Ypagenumber2976,98136
+\def\Ytitle{\Ytitle2978,98162
+\def\Ynothing{\Ynothing2980,98189
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2982,98206
+\def\Yappendixletterandtype{\Yappendixletterandtype2991,98522
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2992,98552
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno
%no.\the\secno2993,98607
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno
%no.\the\secno.\the\subsecno2995,98711
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
%no.\the\secno.\the\subsecno.\the\subsubsecno2997,98782
+ \def\linenumber{\linenumber3008,99121
+\def\refx#1#2{\refx3014,99305
+\def\xrdef #1#2{\xrdef3036,99931
+\def\readauxfile{\readauxfile3039,100016
+\def\supereject{\supereject3109,101797
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3130,102482
+\def\openindices{\openindices3138,102668
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3150,102893
+\parindent = \defaultparindentaultparindent3151,102945
+\def\smallbook{\smallbook3174,103669
+\global\def\Esmallexample{\Esmallexample3191,104096
+\def\afourpaper{\afourpaper3195,104187
+\def\finalout{\finalout3223,104995
+\def\normaldoublequote{\normaldoublequote3234,105256
+\def\normaltilde{\normaltilde3235,105282
+\def\normalcaret{\normalcaret3236,105302
+\def\normalunderscore{\normalunderscore3237,105322
+\def\normalverticalbar{\normalverticalbar3238,105347
+\def\normalless{\normalless3239,105373
+\def\normalgreater{\normalgreater3240,105392
+\def\normalplus{\normalplus3241,105414
+\def\ifusingtt#1#2{\ifusingtt3252,105906
+\def\activedoublequote{\activedoublequote3260,106234
+\def~{~3263,106320
+\def^{^3266,106381
+\def_{_3269,106420
+\def\_{\_3271,106494
+\def\lvvmode{\lvvmode3278,106831
+\def|{|3281,106881
+\def<{<3284,106944
+\def>{>3287,107001
+\def+{+3289,107039
+\def\turnoffactive{\turnoffactive3295,107200
+\global\def={=3306,107486
+\def\normalbackslash{\normalbackslash3320,107868
+
+c-src//c.c,76
+T f(1,0
+}T i;2,14
+void bar(5,69
+int foobar(6,94
+interface_locate(9,131
+
+c.c,1663
+my_printf 135,
+void fatala 138,
+max 141,
+struct bar 143,
+__attribute__ ((always_inline)) max 147,
+struct foo150,
+char stack[stack155,
+struct S 156,
+} wait_status_ptr_t 161,
+Some_Class A 162,
+typedef T1 T3 163,
+T3 z 164,
+typedef int more_aligned_int 165,
+struct S __attribute__ ((vector_size (16))) foo;166,
+int foo 167,
+char *__attribute__((aligned(8))) *f;f168,
+int i 169,
+extern void foobar 170,
+typedef struct cacheLRUEntry_s172,
+__attribute__ ((packed)) cacheLRUEntry_t;177,
+struct foo 178,
+ f1 183,
+void f2 184,
+int x 188,
+struct foo 189,
+short array[array190,
+int f193,
+DEAFUN 196,
+XDEFUN 203,
+DEFUN ("x-get-selection-internal",
Fx_get_selection_internal,x-get-selection-internal206,
+ Fx_get_selection_internal,x-get-selection-internal212,
+ Fy_get_selection_internal,y-get-selection-internal216,
+defun_func1(218,
+DEFUN_func2(220,
+typedef int bool;222,
+bool funcboo 223,
+struct my_struct 226,
+typedef struct my_struct my_typedef;228,
+int bla 229,
+a(234,
+int func1237,
+static struct cca_control init_control 239,
+static tpcmd rbtp 240,
+static byte ring1 241,
+static byte ring2 242,
+request request 243,
+int func2 246,
+ aaa;249,
+ bbb;251,
+struct sss1 252,
+struct sss2253,
+ struct ss3255,
+struct a b;259,
+struct aa *b;b260,
+ **b;b262,
+caccacacca 263,
+a 267,
+ typedef struct aa 269,
+ typedef struct aa {} aaa;269,
+static void inita 271,
+node *lasta lasta272,
+b 273,
+ typedef int bb;275,
+static void initb 277,
+node *lastb lastb278,
+typedef enum { REG_ENOSYS 279,
+typedef enum { REG_ENOSYS = -1, aa 279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279,
+
+c-src/a/b/b.c,18
+#define this 1,0
+
+../c/c.web,20
+#define questo 34,
+
+y-src/parse.y,738
+#define obstack_chunk_alloc 46,1111
+#define obstack_chunk_free 47,1149
+VOIDSTAR parse_hash;63,1400
+unsigned char fnin[fnin67,1519
+#define YYSTYPE 71,1617
+typedef struct node *YYSTYPE;YYSTYPE72,1648
+YYSTYPE parse_return;73,1678
+char *instr;instr80,1790
+int parse_error 81,1803
+line:line86,1862
+exp:exp94,1975
+exp_list:exp_list262,5642
+range_exp:range_exp268,5740
+range_exp_list:range_exp_list272,5770
+cell:cell278,5888
+yyerror FUN1(285,5935
+make_list FUN2(292,6015
+#define ERROR 303,6215
+yylex FUN0(314,6392
+parse_cell_or_range FUN2(586,11758
+#define CK_ABS_R(670,13200
+#define CK_REL_R(674,13279
+#define CK_ABS_C(679,13408
+#define CK_REL_C(683,13487
+#define MAYBEREL(688,13616
+str_to_col FUN1(846,16817
+
+y-src/parse.c,520
+#define YYBISON 4,64
+# define NE 6,114
+# define LE 7,130
+# define GE 8,146
+# define NEG 9,162
+# define L_CELL 10,179
+# define L_RANGE 11,199
+# define L_VAR 12,220
+# define L_CONST 13,239
+# define L_FN0 14,260
+# define L_FN1 15,279
+# define L_FN2 16,298
+# define L_FN3 17,317
+# define L_FN4 18,336
+# define L_FNN 19,355
+# define L_FN1R 20,374
+# define L_FN2R 21,394
+# define L_FN3R 22,414
+# define L_FN4R 23,434
+# define L_FNNR 24,454
+# define L_LE 25,474
+# define L_NE 26,492
+# define L_GE 27,510
+
+parse.y,1181
+#define obstack_chunk_alloc 46,
+#define obstack_chunk_free 47,
+VOIDSTAR parse_hash;63,
+unsigned char fnin[fnin67,
+#define YYSTYPE 71,
+typedef struct node *YYSTYPE;YYSTYPE72,
+YYSTYPE parse_return;73,
+char *instr;instr80,
+int parse_error 81,
+#define YYSTYPE 85,
+# define YYDEBUG 88,
+#define YYFINAL 93,
+#define YYFLAG 94,
+#define YYNTBASE 95,
+#define YYTRANSLATE(98,
+static const char yytranslate[yytranslate101,
+static const short yyprhs[yyprhs134,
+static const short yyrhs[yyrhs142,
+static const short yyrline[yyrline171,
+static const char *const yytname[yytname185,
+static const short yyr1[yyr1197,
+static const short yyr2[yyr2207,
+static const short yydefact[yydefact219,
+static const short yydefgoto[yydefgoto237,
+static const short yypact[yypact242,
+static const short yypgoto[yypgoto260,
+#define YYLAST 266,
+static const short yytable[yytable269,
+static const short yycheck[yycheck330,
+yyerror FUN1(285,
+make_list FUN2(292,
+#define ERROR 303,
+yylex FUN0(314,
+parse_cell_or_range FUN2(586,
+#define CK_ABS_R(670,
+#define CK_REL_R(674,
+#define CK_ABS_C(679,
+#define CK_REL_C(683,
+#define MAYBEREL(688,
+str_to_col FUN1(846,
+
+/usr/share/bison/bison.simple,2110
+# define YYSTD(40,
+# define YYSTD(42,
+# define YYSTACK_ALLOC 50,
+# define YYSIZE_T 51,
+# define YYSTACK_ALLOC 55,
+# define YYSIZE_T 56,
+# define YYSTACK_ALLOC 59,
+# define YYSTACK_FREE(67,
+# define YYSIZE_T 71,
+# define YYSIZE_T 75,
+# define YYSTACK_ALLOC 78,
+# define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+# define YYSTACK_BYTES(98,
+# define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+# define YYSIZE_T 136,
+# define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok 148,
+#define yyclearin 149,
+#define YYEMPTY 150,
+#define YYEOF 151,
+#define YYACCEPT 152,
+#define YYABORT 153,
+#define YYERROR 154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR 177,
+#define YYERRCODE 178,
+# define YYLLOC_DEFAULT(189,
+# define YYLEX 200,
+# define YYLEX 202,
+# define YYLEX 206,
+# define YYLEX 208,
+# define YYLEX 212,
+# define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+# define yymemcpy 264,
+yymemcpy 271,
+# define yystrlen 293,
+yystrlen 298,
+# define yystpcpy 316,
+yystpcpy 322,
+# define YYPARSE_PARAM_ARG 351,
+# define YYPARSE_PARAM_DECL352,
+# define YYPARSE_PARAM_ARG 354,
+# define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES 374,
+# define YY_DECL_VARIABLES 385,
+# define YY_DECL_VARIABLES 391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+ *++yyvsp yyvsp746,
+ *++yylsp yylsp748,
+ yyn 755,
+ yystate 757,
+ yystate 761,
+ goto yynewstate;763,
+ goto yyerrlab1;823,
+ yyerrstatus 846,
+ goto yyerrhandle;848,
+ yyn 861,
+ yystate 875,
+ yyn 895,
+ yyn 903,
+ *++yyvsp yyvsp919,
+ *++yylsp yylsp921,
+ yystate 924,
+ goto yynewstate;925,
+ yyresult 932,
+ goto yyreturn;933,
+ yyresult 939,
+ goto yyreturn;940,
+ yyresult 947,
+
+y-src/atest.y,9
+exp 2,3
+
+y-src/cccp.c,303
+#define YYBISON 4,63
+# define INT 6,113
+# define CHAR 7,130
+# define NAME 8,148
+# define ERROR 9,166
+# define OR 10,185
+# define AND 11,201
+# define EQUAL 12,218
+# define NOTEQUAL 13,237
+# define LEQ 14,259
+# define GEQ 15,276
+# define LSH 16,293
+# define RSH 17,310
+# define UNARY 18,327
+
+cccp.y,1579
+typedef unsigned char U_CHAR;38,
+struct arglist 41,
+#define NULL 51,
+#define GENERIC_PTR 56,
+#define GENERIC_PTR 58,
+#define NULL_PTR 63,
+int expression_value;68,
+static jmp_buf parse_return_error;70,
+static int keyword_parsing 73,
+#define CHAR_TYPE_SIZE 87,
+#define INT_TYPE_SIZE 91,
+#define LONG_TYPE_SIZE 95,
+#define WCHAR_TYPE_SIZE 99,
+#define possible_sum_sign(104,
+ struct constant 113,
+ struct name 114,
+} yystype;118,
+# define YYSTYPE 119,
+# define YYDEBUG 122,
+#define YYFINAL 127,
+#define YYFLAG 128,
+#define YYNTBASE 129,
+#define YYTRANSLATE(132,
+static const char yytranslate[yytranslate135,
+static const short yyprhs[yyprhs167,
+static const short yyrhs[yyrhs174,
+static const short yyrline[yyrline195,
+static const char *const yytname[yytname208,
+static const short yyr1[yyr1219,
+static const short yyr2[yyr2228,
+static const short yydefact[yydefact239,
+static const short yydefgoto[yydefgoto251,
+static const short yypact[yypact256,
+static const short yypgoto[yypgoto268,
+#define YYLAST 274,
+static const short yytable[yytable277,
+static const short yycheck[yycheck301,
+static char *lexptr;lexptr332,
+parse_number 341,
+struct token 437,
+static struct token tokentab2[tokentab2442,
+yylex 459,
+parse_escape 740,
+yyerror 836,
+integer_overflow 844,
+left_shift 851,
+right_shift 873,
+parse_c_expression 893,
+main 923,
+unsigned char is_idchar[is_idchar948,
+unsigned char is_idstart[is_idstart950,
+char is_hor_space[is_hor_space953,
+initialize_random_junk 958,
+error 988,
+warning 993,
+lookup 999,
+
+/usr/share/bison/bison.simple,2110
+# define YYSTD(40,
+# define YYSTD(42,
+# define YYSTACK_ALLOC 50,
+# define YYSIZE_T 51,
+# define YYSTACK_ALLOC 55,
+# define YYSIZE_T 56,
+# define YYSTACK_ALLOC 59,
+# define YYSTACK_FREE(67,
+# define YYSIZE_T 71,
+# define YYSIZE_T 75,
+# define YYSTACK_ALLOC 78,
+# define YYSTACK_FREE 79,
+union yyalloc83,
+# define YYSTACK_GAP_MAX 93,
+# define YYSTACK_BYTES(98,
+# define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+# define YYSIZE_T 136,
+# define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok 148,
+#define yyclearin 149,
+#define YYEMPTY 150,
+#define YYEOF 151,
+#define YYACCEPT 152,
+#define YYABORT 153,
+#define YYERROR 154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR 177,
+#define YYERRCODE 178,
+# define YYLLOC_DEFAULT(189,
+# define YYLEX 200,
+# define YYLEX 202,
+# define YYLEX 206,
+# define YYLEX 208,
+# define YYLEX 212,
+# define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+# define yymemcpy 264,
+yymemcpy 271,
+# define yystrlen 293,
+yystrlen 298,
+# define yystpcpy 316,
+yystpcpy 322,
+# define YYPARSE_PARAM_ARG 351,
+# define YYPARSE_PARAM_DECL352,
+# define YYPARSE_PARAM_ARG 354,
+# define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+#define YY_DECL_NON_LSP_VARIABLES 374,
+# define YY_DECL_VARIABLES 385,
+# define YY_DECL_VARIABLES 391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+ *++yyvsp yyvsp746,
+ *++yylsp yylsp748,
+ yyn 755,
+ yystate 757,
+ yystate 761,
+ goto yynewstate;763,
+ goto yyerrlab1;823,
+ yyerrstatus 846,
+ goto yyerrhandle;848,
+ yyn 861,
+ yystate 875,
+ yyn 895,
+ yyn 903,
+ *++yyvsp yyvsp919,
+ *++yylsp yylsp921,
+ yystate 924,
+ goto yynewstate;925,
+ yyresult 932,
+ goto yyreturn;933,
+ yyresult 939,
+ goto yyreturn;940,
+ yyresult 947,
+
+y-src/cccp.y,1107
+typedef unsigned char U_CHAR;38,1201
+struct arglist 41,1301
+#define NULL 51,1468
+#define GENERIC_PTR 56,1578
+#define GENERIC_PTR 58,1611
+#define NULL_PTR 63,1670
+int expression_value;68,1743
+static jmp_buf parse_return_error;70,1766
+static int keyword_parsing 73,1865
+#define CHAR_TYPE_SIZE 87,2162
+#define INT_TYPE_SIZE 91,2229
+#define LONG_TYPE_SIZE 95,2296
+#define WCHAR_TYPE_SIZE 99,2365
+#define possible_sum_sign(104,2556
+ struct constant 112,2733
+ struct name 113,2789
+start 143,3226
+exp1 148,3330
+exp 156,3505
+exp 185,4295
+keywords 306,7835
+static char *lexptr;lexptr332,8579
+parse_number 341,8842
+struct token 437,11038
+static struct token tokentab2[tokentab2442,11088
+yylex 459,11367
+parse_escape 740,17718
+yyerror 836,19599
+integer_overflow 844,19690
+left_shift 851,19804
+right_shift 873,20194
+parse_c_expression 893,20732
+main 923,21483
+unsigned char is_idchar[is_idchar948,21901
+unsigned char is_idstart[is_idstart950,21996
+char is_hor_space[is_hor_space953,22160
+initialize_random_junk 958,22259
+error 988,22915
+warning 993,22963
+lookup 999,23033
+
+tex-src/nonewline.tex,0
+
+php-src/sendmail.php,0
+
+c-src/fail.c,0
+
+a-src/empty.zz,0
diff --git a/test/etags/ETAGS.good_5 b/test/etags/ETAGS.good_5
new file mode 100644
index 0000000..3291bf3
--- /dev/null
+++ b/test/etags/ETAGS.good_5
@@ -0,0 +1,7508 @@
+
+Makefile,701
+ADASRC=1,0
+ASRC=2,91
+CSRC=3,139
+CPSRC=7,410
+ELSRC=10,624
+ERLSRC=11,694
+FORTHSRC=12,759
+FSRC=13,809
+HTMLSRC=14,881
+JAVASRC=15,974
+LUASRC=16,1062
+MAKESRC=17,1105
+OBJCSRC=18,1147
+OBJCPPSRC=19,1228
+PASSRC=20,1291
+PERLSRC=21,1333
+PHPSRC=22,1413
+PSSRC=23,1485
+PROLSRC=24,1525
+PYTSRC=25,1587
+TEXSRC=26,1628
+YSRC=27,1707
+SRCS=28,1772
+NONSRCS=32,2024
+ETAGS_PROG=34,2098
+CTAGS_PROG=35,2129
+REGEX=37,2161
+xx=38,2207
+RUN=40,2256
+OPTIONS=42,2262
+ARGS=43,2314
+infiles 45,2332
+check:check47,2394
+ediff%:ediff%55,2697
+cdiff:cdiff58,2798
+ETAGS:ETAGS61,2895
+CTAGS:CTAGS64,2965
+srclist:srclist67,3043
+regexfile:regexfile71,3134
+.PRECIOUS:.PRECIOUS77,3311
+FRC:FRC79,3345
+
+ada-src/etags-test-for.ada,1969
+ type LL_Task_Procedure_Access LL_Task_Procedure_Access/t1,0
+ function Body_RequiredBody_Required/f3,78
+ type Type_Specific_Data Type_Specific_Data/t11,280
+ function "abs"abs/f19,504
+ type Barrier_Function_Pointer Barrier_Function_Pointer/t21,577
+ function "="=/f27,722
+ type usfreelock_ptr usfreelock_ptr/t30,803
+ function p p/f33,891
+ procedure LL_Wrapper LL_Wrapper/p37,1054
+function p p/f39,1094
+package Pkg1 Pkg1/s44,1203
+ type Private_T Private_T/t46,1220
+ package Inner1 Inner1/s48,1250
+ procedure Private_T;Private_T/p49,1270
+ package Inner2 Inner2/s52,1310
+ task Private_T;Private_T/k53,1330
+ type Public_T Public_T/t56,1365
+ procedure Pkg1_Proc1;Pkg1_Proc1/p62,1450
+ procedure Pkg1_Proc2 Pkg1_Proc2/p64,1475
+ function Pkg1_Func1 Pkg1_Func1/f66,1514
+ function Pkg1_Func2 Pkg1_Func2/f68,1553
+ package Pkg1_Pkg1 Pkg1_Pkg1/s71,1622
+ procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p72,1645
+ task type Task_Type Task_Type/k75,1694
+ type Private_T Private_T/t82,1786
+package body Pkg1 Pkg1/b89,1882
+ procedure Pkg1_Proc1 Pkg1_Proc1/p91,1904
+ package body Inner1 Inner1/b96,1956
+ procedure Private_T Private_T/p97,1981
+ package body Inner2 Inner2/b103,2054
+ task body Private_T Private_T/b104,2079
+ task body Task_Type Task_Type/b112,2181
+ procedure Pkg1_Proc2 Pkg1_Proc2/p126,2367
+ function Pkg1_Func1 Pkg1_Func1/f132,2445
+ function Pkg1_Func2 Pkg1_Func2/f134,2496
+ package body Pkg1_Pkg1 Pkg1_Pkg1/b140,2596
+package body Pkg1_Pkg1 Pkg1_Pkg1/b146,2663
+ procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p147,2689
+function Pkg1_Func1 Pkg1_Func1/f155,2778
+package Truc Truc/s162,2887
+package Truc.Bidule Truc.Bidule/s166,2929
+ protected Bidule Bidule/t168,2953
+ protected type Machin_T Machin_T/t172,3007
+package body Truc.Bidule Truc.Bidule/b178,3087
+ protected body Bidule Bidule/b179,3115
+ protected Machin_T Machin_T/t186,3207
+
+ada-src/2ataspri.adb,2190
+package body System.Task_Primitives System.Task_Primitives/b64,2603
+ package RTE RTE/s69,2712
+ package TSL TSL/s70,2759
+ function To_void_ptr To_void_ptr/f86,3287
+ function To_TCB_Ptr To_TCB_Ptr/f89,3366
+ function
pthread_mutexattr_setprotocolpthread_mutexattr_setprotocol/f92,3444
+ function
pthread_mutexattr_setprio_ceilingpthread_mutexattr_setprio_ceiling/f99,3728
+ procedure Abort_WrapperAbort_Wrapper/p115,4302
+ procedure LL_Wrapper LL_Wrapper/p122,4526
+ procedure Initialize_LL_Tasks Initialize_LL_Tasks/p131,4830
+ function Self Self/f160,5586
+ procedure Initialize_LockInitialize_Lock/p174,5958
+ procedure Finalize_Lock Finalize_Lock/p210,6927
+ procedure Write_Lock Write_Lock/p226,7338
+ procedure Read_Lock Read_Lock/p239,7700
+ procedure Unlock Unlock/p246,7850
+ procedure Initialize_Cond Initialize_Cond/p258,8160
+ procedure Finalize_Cond Finalize_Cond/p286,8979
+ procedure Cond_Wait Cond_Wait/p300,9303
+ procedure Cond_Timed_WaitCond_Timed_Wait/p312,9661
+ procedure Cond_Signal Cond_Signal/p343,10510
+ procedure Set_PrioritySet_Priority/p355,10836
+ procedure Set_Own_Priority Set_Own_Priority/p372,11243
+ function Get_Priority Get_Priority/f385,11598
+ function Get_Own_Priority Get_Own_Priority/f398,12023
+ procedure Create_LL_TaskCreate_LL_Task/p412,12438
+ function To_Start_Addr To_Start_Addr/f426,12873
+ procedure Exit_LL_Task Exit_LL_Task/p491,14995
+ procedure Abort_Task Abort_Task/p500,15158
+ procedure Test_Abort Test_Abort/p518,15716
+ procedure Install_Abort_Handler Install_Abort_Handler/p527,15878
+ procedure Abort_WrapperAbort_Wrapper/p557,16939
+ function Address_To_Call_State Address_To_Call_State/f562,17062
+ procedure Install_Error_Handler Install_Error_Handler/p573,17351
+ procedure LL_Assert LL_Assert/p599,18146
+ procedure LL_Wrapper LL_Wrapper/p608,18299
+ procedure Initialize_TAS_Cell Initialize_TAS_Cell/p630,19010
+ procedure Finalize_TAS_Cell Finalize_TAS_Cell/p635,19129
+ procedure Clear Clear/p640,19236
+ procedure Test_And_Set Test_And_Set/p645,19330
+ function Is_Set Is_Set/f659,19676
+
+ada-src/2ataspri.ads,2313
+package System.Task_Primitives System.Task_Primitives/s58,3169
+ type LL_Task_Procedure_Access LL_Task_Procedure_Access/t62,3253
+ type Pre_Call_State Pre_Call_State/t64,3331
+ type Task_Storage_Size Task_Storage_Size/t66,3378
+ type Machine_Exceptions Machine_Exceptions/t68,3433
+ type Error_Information Error_Information/t70,3499
+ type Lock Lock/t72,3569
+ type Condition_Variable Condition_Variable/t73,3594
+ type Task_Control_Block Task_Control_Block/t81,3955
+ type TCB_Ptr TCB_Ptr/t89,4241
+ function Address_To_TCB_Ptr Address_To_TCB_Ptr/f93,4333
+ procedure Initialize_LL_Tasks Initialize_LL_Tasks/p96,4425
+ function Self Self/f100,4602
+ procedure Initialize_Lock Initialize_Lock/p103,4707
+ procedure Finalize_Lock Finalize_Lock/p107,4879
+ procedure Write_Lock Write_Lock/p111,5034
+ procedure Read_Lock Read_Lock/p118,5428
+ procedure Unlock Unlock/p128,5995
+ procedure Initialize_Cond Initialize_Cond/p135,6300
+ procedure Finalize_Cond Finalize_Cond/p138,6413
+ procedure Cond_Wait Cond_Wait/p142,6591
+ procedure Cond_Timed_WaitCond_Timed_Wait/p155,7396
+ procedure Cond_Signal Cond_Signal/p164,7812
+ procedure Set_Priority Set_Priority/p169,8040
+ procedure Set_Own_Priority Set_Own_Priority/p173,8200
+ function Get_Priority Get_Priority/f177,8348
+ function Get_Own_Priority Get_Own_Priority/f181,8504
+ procedure Create_LL_TaskCreate_LL_Task/p185,8647
+ procedure Exit_LL_Task;Exit_LL_Task/p198,9282
+ procedure Abort_Task Abort_Task/p203,9516
+ procedure Test_Abort;Test_Abort/p210,9878
+ type Abort_Handler_Pointer Abort_Handler_Pointer/t217,10233
+ procedure Install_Abort_Handler Install_Abort_Handler/p219,10312
+ procedure Install_Error_Handler Install_Error_Handler/p226,10741
+ procedure LL_Assert LL_Assert/p231,10983
+ type Proc Proc/t238,11240
+ type TAS_Cell TAS_Cell/t242,11328
+ procedure Initialize_TAS_Cell Initialize_TAS_Cell/p249,11670
+ procedure Finalize_TAS_Cell Finalize_TAS_Cell/p255,11941
+ procedure Clear Clear/p260,12157
+ procedure Test_And_Set Test_And_Set/p267,12462
+ function Is_Set Is_Set/f275,12877
+ type Lock Lock/t283,13155
+ type Condition_Variable Condition_Variable/t288,13267
+ type TAS_Cell TAS_Cell/t293,13389
+
+ada-src/waroquiers.ada,1503
+package Pkg1 Pkg1/s3,89
+ type Private_T Private_T/t5,106
+ package Inner1 Inner1/s7,136
+ procedure Private_T;Private_T/p8,156
+ package Inner2 Inner2/s11,196
+ task Private_T;Private_T/k12,216
+ type Public_T Public_T/t15,251
+ procedure Pkg1_Proc1;Pkg1_Proc1/p21,336
+ procedure Pkg1_Proc2 Pkg1_Proc2/p23,361
+ function Pkg1_Func1 Pkg1_Func1/f25,400
+ function Pkg1_Func2 Pkg1_Func2/f27,439
+ package Pkg1_Pkg1 Pkg1_Pkg1/s30,508
+ procedure Pkg1_Pkg1_Proc1;Pkg1_Pkg1_Proc1/p31,531
+ task type Task_Type Task_Type/k34,580
+ type Private_T Private_T/t40,671
+package body Pkg1 Pkg1/b46,766
+ procedure Pkg1_Proc1 Pkg1_Proc1/p48,788
+ package body Inner1 Inner1/b53,840
+ procedure Private_T Private_T/p54,865
+ package body Inner2 Inner2/b60,938
+ task body Private_T Private_T/b61,963
+ task body Task_Type Task_Type/b68,1064
+ procedure Pkg1_Proc2 Pkg1_Proc2/p82,1250
+ function Pkg1_Func1 Pkg1_Func1/f88,1328
+ function Pkg1_Func2 Pkg1_Func2/f90,1379
+ package body Pkg1_Pkg1 Pkg1_Pkg1/b96,1479
+package body Pkg1_Pkg1 Pkg1_Pkg1/b100,1544
+ procedure Pkg1_Pkg1_Proc1 Pkg1_Pkg1_Proc1/p101,1570
+function Pkg1_Func1 Pkg1_Func1/f107,1657
+package Truc Truc/s112,1764
+package Truc.Bidule Truc.Bidule/s116,1816
+ protected Bidule Bidule/t125,1964
+ protected type Machin_T Machin_T/t131,2046
+package body Truc.Bidule Truc.Bidule/b138,2153
+ protected body Bidule Bidule/b139,2181
+ protected body Machin_T Machin_T/b146,2281
+
+c-src/abbrev.c,2634
+Lisp_Object Vabbrev_table_name_list;42,1416
+Lisp_Object Vglobal_abbrev_table;47,1561
+Lisp_Object Vfundamental_mode_abbrev_table;51,1672
+int abbrevs_changed;55,1773
+int abbrev_all_caps;57,1795
+Lisp_Object Vabbrev_start_location;62,1944
+Lisp_Object Vabbrev_start_location_buffer;65,2033
+Lisp_Object Vlast_abbrev;69,2142
+Lisp_Object Vlast_abbrev_text;74,2311
+int last_abbrev_point;78,2401
+Lisp_Object Vpre_abbrev_expand_hook,82,2474
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;82,2474
+DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table84,2538
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table91,2730
+DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev106,3111
+DEFUN ("define-global-abbrev",
Fdefine_global_abbrev,define-global-abbrev148,4430
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev159,4801
+DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol173,5269
+DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion201,6233
+DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev217,6748
+DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev388,11669
+write_abbrev 425,12876
+describe_abbrev 444,13311
+DEFUN ("insert-abbrev-table-description",
Finsert_abbrev_table_description,insert-abbrev-table-description465,13826
+DEFUN ("define-abbrev-table",
Fdefine_abbrev_table,define-abbrev-table505,14982
+syms_of_abbrev 539,16059
+ DEFVAR_LISP ("abbrev-table-name-list"541,16079
+ DEFVAR_LISP ("global-abbrev-table"547,16341
+ DEFVAR_LISP ("fundamental-mode-abbrev-table"554,16663
+ DEFVAR_LISP ("last-abbrev"560,17005
+ DEFVAR_LISP ("last-abbrev-text"563,17128
+ DEFVAR_INT ("last-abbrev-location"567,17286
+ DEFVAR_LISP ("abbrev-start-location"574,17485
+ DEFVAR_LISP ("abbrev-start-location-buffer"580,17762
+ DEFVAR_PER_BUFFER ("local-abbrev-table"585,18026
+ DEFVAR_BOOL ("abbrevs-changed"588,18169
+ DEFVAR_BOOL ("abbrev-all-caps"593,18372
+ DEFVAR_LISP ("pre-abbrev-expand-hook"597,18528
+ DEFVAR_LISP ("abbrev-table-name-list",\1541,16079
+ DEFVAR_LISP ("global-abbrev-table",\1547,16341
+ DEFVAR_LISP ("fundamental-mode-abbrev-table",\1554,16663
+ DEFVAR_LISP ("last-abbrev",\1560,17005
+ DEFVAR_LISP ("last-abbrev-text",\1563,17128
+ DEFVAR_INT ("last-abbrev-location",\1567,17286
+ DEFVAR_LISP ("abbrev-start-location",\1574,17485
+ DEFVAR_LISP ("abbrev-start-location-buffer",\1580,17762
+ DEFVAR_PER_BUFFER ("local-abbrev-table",\1585,18026
+ DEFVAR_BOOL ("abbrevs-changed",\1588,18169
+ DEFVAR_BOOL ("abbrev-all-caps",\1593,18372
+ DEFVAR_LISP ("pre-abbrev-expand-hook",\1597,18528
+
+c-src/torture.c,197
+(*tag1 tag118,452
+#define notag2 26,553
+(*tag2 tag229,630
+(*tag3 tag339,772
+#define notag4 45,861
+(*tag4 tag448,955
+tag5 57,1081
+tag6 66,1208
+int pp1(74,1317
+pp287,1419
+pp3(100,1518
+
+c-src/getopt.h,666
+#define _GETOPT_H 19,801
+extern char *optarg;optarg31,1109
+extern int optind;45,1617
+extern int opterr;50,1743
+struct option73,2797
+ const char *name;name76,2826
+ char *name;name78,2852
+ int has_arg;82,3009
+ int *flag;flag83,3024
+ int val;84,3037
+#define no_argument 89,3124
+#define required_argument 90,3147
+#define optional_argument 91,3175
+extern int getopt 98,3440
+extern int getopt 100,3544
+extern int getopt_long 102,3599
+extern int getopt_long_only 104,3731
+extern int _getopt_internal 109,3942
+extern int getopt 114,4140
+extern int getopt_long 115,4162
+extern int getopt_long_only 116,4189
+extern int _getopt_internal 118,4222
+
+c-src/etags.c,14175
+char pot_etags_version[pot_etags_version81,3470
+# undef DEBUG84,3552
+# define DEBUG 85,3567
+# define DEBUG 87,3594
+# define NDEBUG 88,3617
+# define _GNU_SOURCE 94,3705
+# undef MSDOS100,3876
+# undef WINDOWSNT101,3890
+# define WINDOWSNT102,3909
+# undef MSDOS106,3968
+# define MSDOS 107,3982
+# define MSDOS 110,4032
+# define MAXPATHLEN 115,4111
+# undef HAVE_NTGUI116,4141
+# undef DOS_NT117,4160
+# define DOS_NT118,4176
+# undef assert 135,4482
+# define assert(136,4541
+# undef CTAGS146,4857
+# define CTAGS 147,4872
+# define CTAGS 149,4898
+#define streq(152,4927
+#define strcaseeq(153,4996
+#define strneq(154,5075
+#define strncaseeq(155,5151
+#define CHARS 157,5238
+#define CHAR(158,5278
+#define iswhite(159,5329
+#define notinname(160,5394
+#define begtoken(161,5469
+#define intoken(162,5542
+#define endtoken(163,5614
+#define ISALNUM(165,5684
+#define ISALPHA(166,5722
+#define ISDIGIT(167,5760
+#define ISLOWER(168,5798
+#define lowcase(170,5837
+#define xnew(179,6015
+#define xrnew(180,6083
+typedef void Lang_function 182,6164
+ const char *suffix;suffix186,6219
+ const char *command;command187,6294
+} compressor;188,6365
+ const char *name;name192,6397
+ const char *help;help193,6449
+ Lang_function *function;function194,6508
+ const char **suffixes;suffixes195,6556
+ const char **filenames;filenames196,6633
+ const char **interpreters;interpreters197,6702
+ bool metasource;198,6771
+} language;199,6835
+typedef struct fdesc201,6848
+ struct fdesc *next;next203,6871
+ char *infname;infname204,6920
+ char *infabsname;infabsname205,6973
+ char *infabsdir;infabsdir206,7038
+ char *taggedfname;taggedfname207,7091
+ language *lang;lang208,7149
+ char *prop;prop209,7191
+ bool usecharno;210,7249
+ bool written;211,7311
+} fdesc;212,7366
+typedef struct node_st214,7376
+ struct node_st *left,left216,7428
+ struct node_st *left, *right;right216,7428
+ fdesc *fdp;fdp217,7486
+ char *name;name218,7548
+ char *regex;regex219,7580
+ bool valid;220,7617
+ bool is_func;221,7670
+ bool been_warned;222,7733
+ int lno;223,7801
+ long cno;224,7842
+} node;225,7894
+ long size;236,8208
+ int len;237,8221
+ char *buffer;buffer238,8232
+} linebuffer;239,8248
+ at_language,245,8344
+ at_regexp,246,8393
+ at_filename,247,8437
+ at_stdin,248,8473
+ at_end 249,8516
+ } arg_type;250,8557
+ language *lang;lang251,8593
+ char *what;what252,8656
+} argument;253,8698
+typedef struct regexp256,8758
+ struct regexp *p_next;p_next258,8782
+ language *lang;lang259,8837
+ char *pattern;pattern260,8897
+ char *name;name261,8940
+ struct re_pattern_buffer *pat;pat262,8971
+ struct re_registers regs;263,9031
+ bool error_signaled;264,9078
+ bool force_explicit_name;265,9141
+ bool ignore_case;266,9206
+ bool multi_line;267,9259
+} regexp;268,9325
+static void Ada_funcs 274,9428
+static void Asm_labels 275,9460
+static void C_entries 276,9493
+static void default_C_entries 277,9536
+static void plain_C_entries 278,9576
+static void Cjava_entries 279,9614
+static void Cobol_paragraphs 280,9650
+static void Cplusplus_entries 281,9689
+static void Cstar_entries 282,9729
+static void Erlang_functions 283,9765
+static void Forth_words 284,9804
+static void Fortran_functions 285,9838
+static void HTML_labels 286,9878
+static void Lisp_functions 287,9912
+static void Lua_functions 288,9949
+static void Makefile_targets 289,9985
+static void Pascal_functions 290,10024
+static void Perl_functions 291,10063
+static void PHP_functions 292,10100
+static void PS_functions 293,10136
+static void Prolog_functions 294,10171
+static void Python_functions 295,10210
+static void Scheme_functions 296,10249
+static void TeX_commands 297,10288
+static void Texinfo_nodes 298,10323
+static void Yacc_entries 299,10359
+static void just_read_file 300,10394
+static language *get_language_from_langname
get_language_from_langname302,10432
+static void readline 303,10492
+static long readline_internal 304,10537
+static bool nocase_tail 305,10591
+static void get_tag 306,10631
+static void analyze_regex 308,10671
+static void free_regexps 309,10707
+static void regex_tag_multiline 310,10740
+static void error 311,10780
+# undef STDIN408,15073
+#define STDIN 411,15095
+static compressor compressors[compressors457,17664
+static const char *Ada_suffixes Ada_suffixes473,17907
+static const char Ada_help 475,17977
+static const char *Asm_suffixes Asm_suffixes493,18580
+static const char Asm_help 504,18976
+static const char *default_C_suffixes default_C_suffixes512,19312
+static const char default_C_help 515,19413
+static const char default_C_help 523,19850
+static const char *Cplusplus_suffixes Cplusplus_suffixes535,20460
+static const char Cplusplus_help 540,20658
+static const char *Cjava_suffixes Cjava_suffixes549,21113
+static char Cjava_help 551,21172
+static const char *Cobol_suffixes Cobol_suffixes556,21337
+static char Cobol_help 558,21402
+static const char *Cstar_suffixes Cstar_suffixes562,21543
+static const char *Erlang_suffixes Erlang_suffixes565,21607
+static const char Erlang_help 567,21673
+const char *Forth_suffixes Forth_suffixes571,21799
+static const char Forth_help 573,21857
+static const char *Fortran_suffixes Fortran_suffixes577,22008
+static const char Fortran_help 579,22085
+static const char *HTML_suffixes HTML_suffixes582,22190
+static const char HTML_help 584,22264
+static const char *Lisp_suffixes Lisp_suffixes589,22452
+static const char Lisp_help 591,22556
+static const char *Lua_suffixes Lua_suffixes598,22871
+static const char Lua_help 600,22934
+static const char *Makefile_filenames Makefile_filenames603,23010
+static const char Makefile_help 605,23133
+static const char *Objc_suffixes Objc_suffixes609,23277
+static const char Objc_help 613,23399
+static const char *Pascal_suffixes Pascal_suffixes619,23714
+static const char Pascal_help 621,23778
+static const char *Perl_suffixes Perl_suffixes626,23966
+static const char *Perl_interpreters Perl_interpreters628,24028
+static const char Perl_help 630,24100
+static const char *PHP_suffixes PHP_suffixes637,24451
+static const char PHP_help 639,24523
+static const char *plain_C_suffixes plain_C_suffixes643,24678
+static const char *PS_suffixes PS_suffixes647,24762
+static const char PS_help 649,24848
+static const char *Prolog_suffixes Prolog_suffixes652,24931
+static const char Prolog_help 654,24993
+static const char *Python_suffixes Python_suffixes658,25107
+static const char Python_help 660,25165
+static const char *Scheme_suffixes Scheme_suffixes665,25347
+static const char Scheme_help 667,25460
+static const char *TeX_suffixes TeX_suffixes672,25683
+static const char TeX_help 674,25781
+static const char *Texinfo_suffixes Texinfo_suffixes686,26316
+static const char Texinfo_help 688,26395
+static const char *Yacc_suffixes Yacc_suffixes691,26492
+static const char Yacc_help 693,26606
+static const char auto_help 699,26856
+static const char none_help 703,27020
+static const char no_lang_help 707,27143
+static language lang_names 718,27355
+print_language_names 753,29532
+# define EMACS_NAME 786,30755
+# define VERSION 789,30811
+print_version 792,30869
+# define PRINT_UNDOCUMENTED_OPTIONS_HELP 804,31173
+print_help 808,31250
+main 981,37438
+get_compressor_from_suffix 1319,46217
+get_language_from_langname 1355,47158
+get_language_from_interpreter 1377,47545
+get_language_from_filename 1399,47976
+process_file_name 1433,48834
+process_file 1555,51665
+init 1632,54150
+find_entries 1656,54901
+make_tag 1814,59707
+pfnote 1856,60942
+free_tree 1917,62744
+free_fdesc 1935,63029
+add_node 1955,63472
+invalidate_nodes 2035,65537
+static int total_size_of_entries 2067,66150
+static int number_len 2068,66193
+total_size_of_entries 2087,66694
+put_entries 2107,67154
+#define C_EXT 2193,68995
+#define C_PLAIN 2194,69037
+#define C_PLPL 2195,69070
+#define C_STAR 2196,69104
+#define C_JAVA 2197,69137
+#define C_AUTO 2198,69172
+#define YACC 2199,69242
+enum sym_type2204,69312
+ st_none,2206,69328
+ st_C_objprot,2207,69339
+ st_C_objprot, st_C_objimpl,2207,69339
+ st_C_objprot, st_C_objimpl, st_C_objend,2207,69339
+ st_C_gnumacro,2208,69382
+ st_C_ignore,2209,69399
+ st_C_ignore, st_C_attribute,2209,69399
+ st_C_javastruct,2210,69430
+ st_C_operator,2211,69449
+ st_C_class,2212,69466
+ st_C_class, st_C_template,2212,69466
+ st_C_struct,2213,69495
+ st_C_struct, st_C_extern,2213,69495
+ st_C_struct, st_C_extern, st_C_enum,2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define,2213,69495
+ st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef2213,69495
+struct C_stab_entry 2271,71278
+struct C_stab_entry { const char *name;name2271,71278
+struct C_stab_entry { const char *name; int c_ext;2271,71278
+struct C_stab_entry { const char *name; int c_ext; enum sym_type
type;2271,71278
+hash 2275,71409
+in_word_set 2321,72937
+ TOTAL_KEYWORDS 2325,73018
+ MIN_WORD_LENGTH 2326,73045
+ MAX_WORD_LENGTH 2327,73072
+ MIN_HASH_VALUE 2328,73100
+ MAX_HASH_VALUE 2329,73126
+C_symtype 2387,74985
+static bool inattribute;2400,75234
+ fvnone,2408,75435
+ fdefunkey,2409,75466
+ fdefunname,2410,75512
+ foperator,2411,75556
+ fvnameseen,2412,75613
+ fstartlist,2413,75666
+ finlist,2414,75722
+ flistseen,2415,75765
+ fignore,2416,75813
+ vignore 2417,75856
+} fvdef;2418,75901
+static bool fvextern;2420,75911
+ tnone,2428,76089
+ tkeyseen,2429,76119
+ ttypeseen,2430,76160
+ tinbody,2431,76199
+ tend,2432,76238
+ tignore 2433,76279
+} typdef;2434,76320
+ snone,2443,76499
+ skeyseen,2445,76575
+ stagseen,2446,76620
+ scolonseen 2447,76661
+} structdef;2448,76715
+static const char *objtag objtag2453,76809
+ dnone,2460,76942
+ dsharpseen,2461,76972
+ ddefineseen,2462,77025
+ dignorerest 2463,77070
+} definedef;2464,77112
+ onone,2472,77267
+ oprotocol,2473,77297
+ oimplementation,2474,77347
+ otagseen,2475,77395
+ oparenseen,2476,77431
+ ocatseen,2477,77486
+ oinbody,2478,77525
+ omethodsign,2479,77568
+ omethodtag,2480,77626
+ omethodcolon,2481,77666
+ omethodparm,2482,77709
+ oignore 2483,77755
+} objdef;2484,77787
+static struct tok2491,77944
+ char *line;line2493,77964
+ int offset;2494,78014
+ int length;2495,78067
+ bool valid;2502,78352
+ bool named;2505,78487
+ int lineno;2506,78528
+ long linepos;2507,78576
+} token;2508,78626
+static void pushclass_above 2514,78784
+static void popclass_above 2515,78832
+static void write_classname 2516,78866
+ char **cname;cname2519,78950
+ int *bracelev;bracelev2520,78993
+ int nl;2521,79042
+ int size;2522,79096
+} cstack;2523,79136
+#define nestlev 2525,79264
+#define instruct 2527,79369
+pushclass_above 2531,79489
+popclass_above 2550,79948
+write_classname 2564,80162
+static bool consider_token 2592,80761
+static void make_C_tag 2593,80833
+consider_token 2613,81341
+ long linepos;2922,88499
+ linebuffer lb;2923,88515
+} lbs[lbs2924,88532
+#define current_lb_is_new 2926,88543
+#define switch_line_buffers(2927,88588
+#define curlb 2929,88641
+#define newlb 2930,88672
+#define curlinepos 2931,88703
+#define newlinepos 2932,88744
+#define plainc 2934,88786
+#define cplpl 2935,88830
+#define cjava 2936,88861
+#define CNL_SAVE_DEFINEDEF(2938,88905
+#define CNL(2947,89117
+make_C_tag 2960,89375
+C_entries 2986,90194
+default_C_entries 3833,110156
+plain_C_entries 3840,110276
+Cplusplus_entries 3847,110364
+Cjava_entries 3854,110460
+Cstar_entries 3861,110550
+Yacc_entries 3868,110642
+#define LOOP_ON_INPUT_LINES(3875,110720
+#define LOOKING_AT(3884,111056
+#define LOOKING_AT_NOCASE(3891,111461
+just_read_file 3901,111861
+static void F_takeprec 3910,111965
+static void F_getit 3911,111996
+F_takeprec 3914,112039
+F_getit 3937,112366
+Fortran_functions 3961,112840
+Ada_getit 4052,114669
+Ada_funcs 4115,116044
+Asm_labels 4228,118582
+Perl_functions 4261,119549
+Python_functions 4357,122057
+PHP_functions 4387,122684
+Cobol_paragraphs 4466,124471
+Makefile_targets 4494,125029
+Pascal_functions 4529,125950
+static void L_getit 4706,130277
+L_getit 4709,130318
+Lisp_functions 4725,130664
+Lua_functions 4785,131850
+PS_functions 4811,132385
+Forth_words 4841,133053
+Scheme_functions 4877,134092
+static linebuffer *TEX_toktab TEX_toktab4908,134781
+static const char *TEX_defenv TEX_defenv4912,134974
+static void TEX_mode 4917,135172
+static void TEX_decode_env 4918,135203
+static char TEX_esc 4920,135261
+static char TEX_opgrp 4921,135289
+static char TEX_clgrp 4922,135318
+TeX_commands 4928,135395
+#define TEX_LESC 4986,136652
+#define TEX_SESC 4987,136674
+TEX_mode 4992,136804
+TEX_decode_env 5026,137509
+Texinfo_nodes 5071,138554
+HTML_labels 5094,139013
+static size_t prolog_pr 5214,142192
+static void prolog_skip_comment 5215,142234
+static size_t prolog_atom 5216,142290
+Prolog_functions 5219,142347
+prolog_skip_comment 5255,143128
+prolog_pr 5281,143736
+prolog_atom 5319,144628
+static int erlang_func 5374,145540
+static void erlang_attribute 5375,145581
+static int erlang_atom 5376,145620
+Erlang_functions 5379,145666
+erlang_func 5438,146965
+erlang_attribute 5476,147642
+erlang_atom 5496,148061
+static char *scan_separators scan_separators5520,148487
+static void add_regex 5521,148526
+static char *substitute substitute5522,148570
+scan_separators 5534,149080
+analyze_regex 5586,150460
+add_regex 5654,152050
+substitute 5767,154797
+free_regexps 5814,155837
+regex_tag_multiline 5836,156291
+nocase_tail 5913,158263
+get_tag 5928,158519
+readline_internal 5959,159455
+readline 6037,161296
+savestr 6230,167243
+savenstr 6240,167473
+skip_spaces 6249,167679
+skip_non_spaces 6258,167833
+skip_name 6267,167983
+fatal 6277,168156
+pfatal 6284,168253
+suggest_asking_for_help 6291,168332
+error 6300,168554
+concat 6313,168846
+etags_getcwd 6329,169259
+relative_filename 6350,169725
+absolute_filename 6389,170751
+absolute_dirname 6453,172416
+filename_is_absolute 6472,172845
+canonicalize_filename 6484,173096
+# define ISUPPER(6491,173235
+linebuffer_init 6514,173656
+linebuffer_setlen 6524,173887
+xmalloc 6536,174148
+xrealloc 6545,174314
+
+c-src/exit.c,99
+ size_t n;28,961
+ void EXFUN((*fn[fn29,975
+ } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/exit.strange_suffix,99
+ size_t n;28,961
+ void EXFUN((*fn[fn29,975
+ } __libc_atexit;30,1011
+DEFUN(exit,38,1252
+
+c-src/sysdep.h,491
+#define ENTRY(21,865
+#define PSEUDO(26,972
+ movl $SYS_##syscall_nam$SYS_##syscall_na31,1132
+ movl $SYS_##syscall_name, %eax;eax31,1132
+ int $0x80;32,1180
+ test %eax,eax33,1210
+ test %eax, %eax;eax33,1210
+ jl syscall_error;34,1245
+#define XCHG_0 47,1562
+#define XCHG_1 48,1606
+#define XCHG_2 49,1648
+#define XCHG_3 50,1691
+#define XCHG_4 51,1734
+#define XCHG_5 52,1777
+#define r0 54,1821
+#define r1 55,1875
+#define scratch 56,1932
+#define MOVE(57,2001
+
+c-src/tab.c,196
+static int count_words(15,263
+static char *get_word(get_word35,553
+void tab_free(59,966
+char **tab_fill(tab_fill70,1129
+int tab_delete_first(91,1638
+int tab_count_words(103,1820
+
+c-src/dostorture.c,197
+(*tag1 tag118,451
+#define notag2 26,552
+(*tag2 tag229,629
+(*tag3 tag339,771
+#define notag4 45,860
+(*tag4 tag448,954
+tag5 57,1080
+tag6 66,1207
+int pp1(74,1316
+pp287,1418
+pp3(100,1517
+
+c-src/emacs/src/gmalloc.c,7311
+#define USE_PTHREAD25,1002
+#undef get_current_dir_name33,1126
+extern void emacs_abort 47,1305
+#undef malloc64,2110
+#undef realloc65,2124
+#undef calloc66,2139
+#undef free67,2153
+#define malloc 68,2165
+#define realloc 69,2188
+#define calloc 70,2213
+#define aligned_alloc 71,2236
+#define free 72,2273
+extern void *bss_sbrk bss_sbrk76,2335
+extern int bss_sbrk_did_unexec;77,2375
+extern char bss_sbrk_buffer[bss_sbrk_buffer78,2407
+extern void *bss_sbrk_buffer_end;bss_sbrk_buffer_end79,2438
+#define DUMPED 80,2472
+#define ALLOCATED_BEFORE_DUMPING(81,2507
+extern void *malloc malloc94,2718
+#define INT_BIT 124,3934
+#define BLOCKLOG 125,3977
+#define BLOCKSIZE 126,4018
+#define BLOCKIFY(127,4052
+#define HEAP 131,4215
+#define FINAL_FREE_BLOCKS 135,4391
+ int type;145,4676
+ size_t nfree;150,4720
+ size_t first;151,4777
+ } frag;152,4834
+ ptrdiff_t size;156,5055
+ } info;157,5076
+ } busy;158,5087
+ size_t size;163,5215
+ size_t next;164,5272
+ size_t prev;165,5321
+ } free;166,5374
+ } malloc_info;167,5388
+extern char *_heapbase;_heapbase170,5449
+extern malloc_info *_heapinfo;_heapinfo173,5541
+#define BLOCK(176,5620
+#define ADDRESS(177,5682
+extern size_t _heapindex;180,5797
+extern size_t _heaplimit;183,5866
+struct list186,5939
+ struct list *next;next188,5955
+ struct list *prev;prev189,5978
+extern struct list _fraghead[_fraghead193,6056
+struct alignlist196,6153
+ struct alignlist *next;next198,6174
+ void *aligned;aligned199,6202
+ void *exact;exact200,6270
+extern struct alignlist *_aligned_blocks;_aligned_blocks202,6334
+extern size_t _chunks_used;205,6401
+extern size_t _bytes_used;206,6429
+extern size_t _chunks_free;207,6456
+extern size_t _bytes_free;208,6484
+extern void *_malloc_internal _malloc_internal213,6673
+extern void *_realloc_internal _realloc_internal214,6713
+extern void _free_internal 215,6762
+extern void *_malloc_internal_nolock _malloc_internal_nolock216,6799
+extern void *_realloc_internal_nolock _realloc_internal_nolock217,6846
+extern void _free_internal_nolock 218,6902
+extern pthread_mutex_t _malloc_mutex,221,6966
+extern pthread_mutex_t _malloc_mutex, _aligned_blocks_mutex;221,6966
+extern int _malloc_thread_enabled_p;222,7027
+#define LOCK(223,7064
+#define UNLOCK(228,7195
+#define LOCK_ALIGNED_BLOCKS(233,7329
+#define UNLOCK_ALIGNED_BLOCKS(238,7484
+#define LOCK(244,7649
+#define UNLOCK(245,7664
+#define LOCK_ALIGNED_BLOCKS(246,7681
+#define UNLOCK_ALIGNED_BLOCKS(247,7711
+extern void *malloc_find_object_address malloc_find_object_address252,7865
+extern void *(*__morecore)__morecore256,8021
+extern void *__default_morecore __default_morecore259,8105
+extern void (*__after_morecore_hook)__after_morecore_hook263,8269
+extern size_t __malloc_extra_blocks;267,8442
+extern int __malloc_initialized;270,8552
+extern int __malloc_initialize 272,8646
+extern void (*__malloc_initialize_hook)__malloc_initialize_hook275,8723
+extern void (*__free_hook)__free_hook276,8771
+extern void *(*__malloc_hook)__malloc_hook277,8811
+extern void *(*__realloc_hook)__realloc_hook278,8856
+extern void *(*__memalign_hook)__memalign_hook279,8913
+enum mcheck_status283,9092
+ MCHECK_DISABLED 285,9115
+ MCHECK_OK,286,9187
+ MCHECK_FREE,287,9226
+ MCHECK_HEAD,288,9270
+ MCHECK_TAIL 289,9334
+extern int mcheck 296,9701
+extern enum mcheck_status mprobe 301,9952
+extern void mtrace 304,10055
+extern void muntrace 305,10082
+struct mstats308,10153
+ size_t bytes_total;310,10171
+ size_t chunks_used;311,10225
+ size_t bytes_used;312,10285
+ size_t chunks_free;313,10351
+ size_t bytes_free;314,10406
+extern struct mstats mstats 318,10518
+extern void memory_warnings 321,10625
+void *(*__malloc_hook)__malloc_hook352,11743
+char *_heapbase;_heapbase355,11829
+malloc_info *_heapinfo;_heapinfo358,11927
+static size_t heapsize;361,11983
+size_t _heapindex;364,12047
+size_t _heaplimit;367,12109
+struct list _fraghead[_fraghead370,12171
+size_t _chunks_used;373,12229
+size_t _bytes_used;374,12250
+size_t _chunks_free;375,12270
+size_t _bytes_free;376,12291
+int __malloc_initialized;379,12340
+size_t __malloc_extra_blocks;381,12367
+void (*__malloc_initialize_hook)__malloc_initialize_hook383,12398
+void (*__after_morecore_hook)__after_morecore_hook384,12439
+static int state_protected_p;400,12912
+static size_t last_state_size;401,12942
+static malloc_info *last_heapinfo;last_heapinfo402,12973
+protect_malloc_state 405,13014
+#define PROTECT_MALLOC_STATE(426,13627
+#define PROTECT_MALLOC_STATE(429,13697
+align 435,13794
+get_contiguous_space 466,14616
+register_heapinfo 497,15325
+pthread_mutex_t _malloc_mutex 517,15879
+pthread_mutex_t _aligned_blocks_mutex 518,15938
+int _malloc_thread_enabled_p;519,16005
+malloc_atfork_handler_prepare 522,16048
+malloc_atfork_handler_parent 529,16139
+malloc_atfork_handler_child 536,16233
+malloc_enable_thread 544,16375
+malloc_initialize_1 563,16961
+__malloc_initialize 594,17793
+static int morecore_recursing;604,17926
+morecore_nolock 609,18066
+_malloc_internal_nolock 722,21584
+_malloc_internal 920,28102
+malloc 932,28247
+extern void *_malloc _malloc956,29033
+extern void _free 957,29064
+extern void *_realloc _realloc958,29092
+_malloc 961,29140
+_free 967,29196
+_realloc 973,29240
+void (*__free_hook)__free_hook1001,30259
+struct alignlist *_aligned_blocks _aligned_blocks1004,30345
+_free_internal_nolock 1009,30474
+_free_internal 1255,38476
+free 1265,38603
+weak_alias 1277,38799
+#define min(1306,39813
+void *(*__realloc_hook)__realloc_hook1310,39898
+_realloc_internal_nolock 1319,40309
+_realloc_internal 1435,43563
+realloc 1447,43726
+calloc 1478,44894
+#define __sbrk 1513,46042
+extern void *__sbrk __sbrk1518,46247
+__default_morecore 1525,46511
+void *(*__memalign_hook)__memalign_hook1554,47456
+aligned_alloc 1557,47522
+memalign 1647,49704
+posix_memalign 1656,49909
+extern void *valloc valloc1695,51140
+extern int getpagesize 1700,51278
+static size_t pagesize;1703,51317
+valloc 1706,51349
+#undef malloc1715,51490
+#undef realloc1716,51504
+#undef calloc1717,51519
+#undef aligned_alloc1718,51533
+#undef free1719,51554
+extern void *malloc malloc1722,51609
+extern void *realloc realloc1723,51644
+extern void *calloc calloc1724,51691
+extern void free 1725,51740
+extern void *aligned_alloc aligned_alloc1727,51796
+extern int posix_memalign 1729,51890
+hybrid_malloc 1736,52083
+hybrid_calloc 1744,52188
+hybrid_free 1752,52319
+hybrid_aligned_alloc 1765,52626
+hybrid_realloc 1780,52984
+char *gget_current_dir_name gget_current_dir_name1808,53753
+hybrid_get_current_dir_name 1811,53797
+static void (*old_free_hook)old_free_hook1846,54921
+static void *(*old_malloc_hook)old_malloc_hook1847,54963
+static void *(*old_realloc_hook)old_realloc_hook1848,55010
+static void (*abortfunc)abortfunc1851,55124
+#define MAGICWORD 1854,55206
+#define MAGICFREE 1855,55261
+#define MAGICBYTE 1856,55316
+#define MALLOCFLOOD 1857,55348
+#define FREEFLOOD 1858,55382
+struct hdr1860,55415
+ size_t size;1862,55430
+ size_t magic;1863,55484
+checkhdr 1867,55581
+freehook 1891,56022
+mallochook 1927,56804
+reallochook 1944,57143
+mabort 1978,57901
+static int mcheck_used 2012,58586
+mcheck 2015,58619
+mprobe 2035,59138
+
+c-src/emacs/src/regex.h,5300
+#define _REGEX_H 21,836
+typedef unsigned long reg_syntax_t;43,1577
+#define RE_BACKSLASH_ESCAPE_IN_LISTS 47,1749
+#define RE_BK_PLUS_QM 52,1969
+#define RE_CHAR_CLASSES 58,2298
+#define RE_CONTEXT_INDEP_ANCHORS 72,3032
+#define RE_CONTEXT_INDEP_OPS 80,3458
+#define RE_CONTEXT_INVALID_OPS 84,3658
+#define RE_DOT_NEWLINE 88,3801
+#define RE_DOT_NOT_NULL 92,3937
+#define RE_HAT_LISTS_NOT_NEWLINE 96,4082
+#define RE_INTERVALS 101,4292
+#define RE_LIMITED_OPS 105,4441
+#define RE_NEWLINE_ALT 109,4583
+#define RE_NO_BK_BRACES 114,4773
+#define RE_NO_BK_PARENS 118,4964
+#define RE_NO_BK_REFS 122,5120
+#define RE_NO_BK_VBAR 126,5316
+#define RE_NO_EMPTY_RANGES 132,5610
+#define RE_UNMATCHED_RIGHT_PAREN_ORD 136,5766
+#define RE_NO_POSIX_BACKTRACKING 140,5937
+#define RE_NO_GNU_OPS 144,6133
+#define RE_FRUGAL 147,6253
+#define RE_SHY_GROUPS 150,6360
+#define RE_NO_NEWLINE_ANCHOR 153,6468
+#define RE_DEBUG 161,6884
+extern reg_syntax_t re_syntax_options;167,7170
+extern Lisp_Object re_match_object;172,7344
+extern size_t re_max_failures;176,7454
+#define RE_SYNTAX_EMACS 183,7684
+#define RE_SYNTAX_AWK 186,7780
+#define RE_SYNTAX_GNU_AWK 193,8084
+#define RE_SYNTAX_POSIX_AWK 197,8255
+#define RE_SYNTAX_GREP 201,8393
+#define RE_SYNTAX_EGREP 206,8549
+#define RE_SYNTAX_POSIX_EGREP 212,8765
+#define RE_SYNTAX_ED 216,8910
+#define RE_SYNTAX_SED 218,8954
+#define _RE_SYNTAX_POSIX_COMMON 221,9072
+#define RE_SYNTAX_POSIX_BASIC 225,9215
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC 231,9508
+#define RE_SYNTAX_POSIX_EXTENDED 234,9598
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED 242,9967
+# undef RE_DUP_MAX253,10454
+#define RE_DUP_MAX 256,10540
+#define REG_EXTENDED 263,10762
+#define REG_ICASE 267,10886
+#define REG_NEWLINE 272,11070
+#define REG_NOSUB 276,11248
+#define REG_NOTBOL 286,11614
+#define REG_NOTEOL 289,11688
+ REG_ENOSYS 297,11859
+ REG_NOERROR 300,11941
+ REG_NOMATCH,301,11976
+ REG_BADPAT,305,12123
+ REG_ECOLLATE,306,12162
+ REG_ECTYPE,307,12203
+ REG_EESCAPE,308,12255
+ REG_ESUBREG,309,12298
+ REG_EBRACK,310,12345
+ REG_EPAREN,311,12391
+ REG_EBRACE,312,12436
+ REG_BADBR,313,12472
+ REG_ERANGE,314,12519
+ REG_ESPACE,315,12560
+ REG_BADRPT,316,12601
+ REG_EEND,319,12693
+ REG_ESIZE,320,12728
+ REG_ERPAREN,321,12790
+ REG_ERANGEX 322,12859
+} reg_errcode_t;323,12911
+# define RE_TRANSLATE_TYPE 332,13273
+struct re_pattern_buffer335,13315
+ unsigned char *buffer;buffer341,13538
+ size_t allocated;344,13614
+ size_t used;347,13686
+ reg_syntax_t syntax;350,13769
+ char *fastmap;fastmap355,13975
+ RE_TRANSLATE_TYPE translate;361,14241
+ size_t re_nsub;364,14329
+ unsigned can_be_null 370,14624
+#define REGS_UNALLOCATED 376,14889
+#define REGS_REALLOCATE 377,14916
+#define REGS_FIXED 378,14942
+ unsigned regs_allocated 379,14963
+ unsigned fastmap_accurate 383,15136
+ unsigned no_sub 387,15267
+ unsigned not_bol 391,15398
+ unsigned not_eol 394,15475
+ unsigned used_syntax 398,15655
+ unsigned multibyte 403,15805
+ unsigned target_multibyte 407,15941
+ int charset_unibyte;410,16032
+typedef struct re_pattern_buffer regex_t;416,16098
+typedef ssize_t regoff_t;423,16492
+struct re_registers428,16652
+ unsigned num_regs;430,16674
+ regoff_t *start;start431,16695
+ regoff_t *end;end432,16714
+# define RE_NREGS 440,16942
+ regoff_t rm_so;449,17159
+ regoff_t rm_eo;450,17239
+} regmatch_t;451,17317
+extern reg_syntax_t re_set_syntax 457,17512
+extern const char *re_compile_pattern re_compile_pattern462,17776
+extern int re_compile_fastmap 469,18058
+extern regoff_t re_search 477,18466
+extern regoff_t re_search_2 485,18781
+extern regoff_t re_match 495,19177
+extern regoff_t re_match_2 501,19407
+extern void re_set_registers 520,20197
+extern char *re_comp re_comp528,20469
+extern int re_exec 529,20506
+# define _Restrict_ 540,20886
+# define _Restrict_ 542,20979
+# define _Restrict_544,21018
+# define _Restrict_arr_ 555,21418
+# define _Restrict_arr_557,21461
+extern reg_errcode_t regcomp 562,21530
+extern reg_errcode_t regexec 566,21656
+extern size_t regerror 571,21850
+extern void regfree 574,21956
+# define CHAR_CLASS_MAX_LENGTH 593,22470
+# define CHAR_CLASS_MAX_LENGTH 597,22648
+typedef wctype_t re_wctype_t;599,22692
+typedef wchar_t re_wchar_t;600,22722
+# define re_wctype 601,22750
+# define re_iswctype 602,22776
+# define re_wctype_to_bit(603,22806
+# define CHAR_CLASS_MAX_LENGTH 605,22844
+# define btowc(606,22906
+typedef enum { RECC_ERROR 609,22953
+ RECC_ALNUM,610,22984
+ RECC_ALNUM, RECC_ALPHA,610,22984
+ RECC_ALNUM, RECC_ALPHA, RECC_WORD,610,22984
+ RECC_GRAPH,611,23027
+ RECC_GRAPH, RECC_PRINT,611,23027
+ RECC_LOWER,612,23059
+ RECC_LOWER, RECC_UPPER,612,23059
+ RECC_PUNCT,613,23091
+ RECC_PUNCT, RECC_CNTRL,613,23091
+ RECC_DIGIT,614,23123
+ RECC_DIGIT, RECC_XDIGIT,614,23123
+ RECC_BLANK,615,23156
+ RECC_BLANK, RECC_SPACE,615,23156
+ RECC_MULTIBYTE,616,23188
+ RECC_MULTIBYTE, RECC_NONASCII,616,23188
+ RECC_ASCII,617,23227
+ RECC_ASCII, RECC_UNIBYTE617,23227
+} re_wctype_t;618,23260
+extern char re_iswctype 620,23276
+extern re_wctype_t re_wctype 621,23329
+typedef int re_wchar_t;623,23387
+extern void re_set_whitespace_regexp 625,23412
+
+c-src/emacs/src/keyboard.c,23269
+volatile int interrupt_input_blocked;76,1808
+volatile bool pending_signals;80,1944
+#define KBD_BUFFER_SIZE 82,1976
+KBOARD *initial_kboard;initial_kboard84,2006
+KBOARD *current_kboard;current_kboard85,2030
+static KBOARD *all_kboards;all_kboards86,2054
+static bool single_kboard;89,2154
+#define NUM_RECENT_KEYS 91,2182
+static int recent_keys_index;94,2269
+static int total_keys;97,2357
+static Lisp_Object recent_keys;100,2443
+Lisp_Object this_command_keys;107,2777
+ptrdiff_t this_command_key_count;108,2808
+static bool this_command_key_count_reset;112,2922
+static Lisp_Object raw_keybuf;116,3074
+static int raw_keybuf_count;117,3105
+#define GROW_RAW_KEYBUF 119,3135
+static ptrdiff_t this_single_command_key_start;125,3350
+static ptrdiff_t before_command_key_count;129,3498
+static ptrdiff_t before_command_echo_length;130,3541
+sigjmp_buf return_to_command_loop;135,3677
+static Lisp_Object recover_top_level_message;138,3791
+static Lisp_Object regular_top_level_message;143,3930
+static sys_jmp_buf getcjmp;147,4031
+bool waiting_for_input;150,4095
+static bool echoing;154,4186
+static struct kboard
*ok_to_echo_at_next_pause;ok_to_echo_at_next_pause159,4328
+struct kboard *echo_kboard;echo_kboard166,4632
+Lisp_Object echo_message_buffer;171,4744
+bool immediate_quit;174,4837
+int quit_char;192,5623
+EMACS_INT command_loop_level;195,5680
+Lisp_Object unread_switch_frame;204,6108
+static ptrdiff_t last_non_minibuf_size;207,6216
+uintmax_t num_input_events;210,6334
+static EMACS_INT last_auto_save;214,6428
+static ptrdiff_t last_point_position;217,6523
+Lisp_Object internal_last_event_frame;228,7028
+static Lisp_Object read_key_sequence_cmd;232,7168
+static Lisp_Object read_key_sequence_remapped;233,7210
+static FILE *dribble;dribble236,7310
+bool input_pending;239,7368
+static bool input_was_pending;287,10022
+static struct input_event kbd_buffer[kbd_buffer291,10107
+static struct input_event *kbd_fetch_ptr;kbd_fetch_ptr297,10386
+static struct input_event * volatile kbd_store_ptr;302,10601
+static void recursive_edit_unwind 313,11088
+static Lisp_Object command_loop 314,11144
+static void echo_now 316,11185
+static ptrdiff_t echo_length 317,11214
+unsigned timers_run;320,11296
+struct timespec
*input_available_clear_time;input_available_clear_time324,11408
+bool interrupt_input;328,11573
+bool interrupts_deferred;331,11671
+static struct timespec timer_idleness_start_time;335,11746
+static struct timespec timer_last_idleness_start_time;340,11916
+#define READABLE_EVENTS_DO_TIMERS_NOW 346,12046
+#define READABLE_EVENTS_FILTER_EVENTS 347,12094
+#define READABLE_EVENTS_IGNORE_SQUEEZABLES 348,12142
+static void (*keyboard_init_hook)keyboard_init_hook351,12264
+static bool get_input_pending 353,12307
+static bool readable_events 354,12344
+static Lisp_Object read_char_x_menu_prompt 355,12379
+static Lisp_Object read_char_minibuf_menu_prompt 357,12502
+static Lisp_Object make_lispy_event 358,12571
+static Lisp_Object make_lispy_movement 359,12631
+static Lisp_Object modify_event_symbol 363,12840
+static Lisp_Object make_lispy_switch_frame 366,13050
+static Lisp_Object make_lispy_focus_in 367,13108
+static Lisp_Object make_lispy_focus_out 369,13188
+static bool help_char_p 371,13275
+static void save_getcjmp 372,13314
+static void restore_getcjmp 373,13354
+static Lisp_Object apply_modifiers 374,13397
+static void clear_event 375,13452
+static void restore_kboard_configuration 376,13500
+static void deliver_input_available_signal 378,13568
+static void handle_interrupt 380,13631
+static _Noreturn void quit_throw_to_read_char 381,13668
+static void process_special_events 382,13722
+static void timer_start_idle 383,13765
+static void timer_stop_idle 384,13802
+static void timer_resume_idle 385,13838
+static void deliver_user_signal 386,13876
+static char *find_user_signal_name find_user_signal_name387,13915
+static void store_user_signal_events 388,13957
+kset_echo_string 392,14088
+kset_kbd_queue 397,14184
+kset_keyboard_translate_table 402,14276
+kset_last_prefix_arg 407,14399
+kset_last_repeatable_command 412,14504
+kset_local_function_key_map 417,14625
+kset_overriding_terminal_local_map 422,14744
+kset_real_last_command 427,14877
+kset_system_key_syms 432,14986
+echo_add_key 443,15249
+echo_char 527,17527
+echo_dash 541,17813
+echo_now 586,19140
+cancel_echoing 635,20614
+echo_length 648,20922
+echo_truncate 660,21253
+add_command_key 672,21582
+recursive_edit_1 697,22406
+record_auto_save 742,23848
+force_auto_save_soon 751,24016
+DEFUN ("recursive-edit", Frecursive_edit,recursive-edit759,24137
+recursive_edit_unwind 804,25747
+any_kboard_state 817,26013
+single_kboard_state 838,26665
+not_single_kboard_state 848,26803
+struct kboard_stack858,27065
+ KBOARD *kboard;kboard860,27087
+ struct kboard_stack *next;next861,27105
+static struct kboard_stack *kboard_stack;kboard_stack864,27138
+push_kboard 867,27186
+pop_kboard 879,27375
+temporarily_switch_to_single_kboard 914,28263
+record_single_kboard_state 943,29437
+restore_kboard_configuration 952,29621
+cmd_error 970,30077
+cmd_error_internal 1024,31510
+DEFUN ("command-error-default-function",
Fcommand_error_default_function,command-error-default-function1043,32030
+static Lisp_Object command_loop_2 1086,33637
+static Lisp_Object top_level_1 1087,33686
+command_loop 1094,33916
+command_loop_2 1134,35135
+top_level_2 1146,35339
+top_level_1 1152,35417
+DEFUN ("top-level", Ftop_level,top-level1164,35787
+user_error 1183,36288
+DEFUN ("exit-recursive-edit",
Fexit_recursive_edit,exit-recursive-edit1189,36429
+DEFUN ("abort-recursive-edit",
Fabort_recursive_edit,abort-recursive-edit1201,36819
+tracking_off 1216,37281
+DEFUN ("internal--track-mouse", Ftrack_mouse,track-mouse1234,37816
+bool ignore_mouse_drag_p;1256,38392
+some_mouse_moved 1259,38441
+static int read_key_sequence 1282,38799
+static void adjust_point_for_property 1284,38917
+Lisp_Object last_undo_boundary;1287,39032
+command_loop_1 1294,39273
+read_menu_command 1649,50889
+adjust_point_for_property 1678,51617
+safe_run_hooks_1 1831,57339
+safe_run_hooks_error 1841,57569
+safe_run_hook_funcall 1878,58576
+safe_run_hooks 1893,59058
+int poll_suppress_count;1908,59397
+static struct atimer *poll_timer;poll_timer1915,59487
+poll_for_input_1 1919,59589
+poll_for_input 1930,59789
+start_polling 1942,60053
+input_polling_used 1979,61091
+stop_polling 1994,61390
+set_poll_suppress_count 2009,61759
+bind_polling_period 2029,62141
+make_ctrl_char 2048,62492
+show_help_echo 2113,64455
+static Lisp_Object kbd_buffer_get_event 2152,65484
+static void record_char 2154,65596
+static Lisp_Object help_form_saved_window_configs;2156,65638
+read_char_help_form_unwind 2158,65701
+#define STOP_POLLING 2166,65959
+#define RESUME_POLLING 2170,66084
+read_event_from_main_queue 2175,66229
+read_decoded_event_from_main_queue 2249,68417
+#define MAX_ENCODED_BYTES 2254,68664
+echo_keystrokes_p 2342,71556
+read_char 2376,72848
+record_menu_key 3225,98949
+help_char_p 3258,99674
+record_char 3273,99953
+save_getcjmp 3412,104235
+restore_getcjmp 3418,104326
+readable_events 3430,104697
+int stop_character EXTERNALLY_VISIBLE;3497,106437
+event_to_kboard 3500,106493
+kbd_buffer_nr_stored 3522,107142
+kbd_buffer_store_event 3534,107483
+kbd_buffer_store_event_hold 3550,108025
+kbd_buffer_unget_event 3684,111617
+#define INPUT_EVENT_POS_MAX 3698,112018
+#define INPUT_EVENT_POS_MIN 3701,112147
+position_to_Time 3706,112287
+Time_to_position 3716,112514
+gen_help_event 3738,113171
+kbd_buffer_store_help_event 3756,113611
+discard_mouse_events 3773,113976
+kbd_buffer_events_waiting 3803,114711
+clear_event 3823,115068
+kbd_buffer_get_event 3836,115408
+process_special_events 4258,127881
+swallow_events 4322,129705
+timer_start_idle 4339,130098
+timer_stop_idle 4355,130576
+timer_resume_idle 4363,130720
+struct input_event last_timer_event EXTERNALLY_VISIBLE;4372,130912
+Lisp_Object pending_funcalls;4377,131172
+decode_timer 4381,131293
+timer_check_2 4414,132246
+timer_check 4572,136817
+DEFUN ("current-idle-time", Fcurrent_idle_time,current-idle-time4607,137662
+static Lisp_Object accent_key_syms;4625,138239
+static Lisp_Object func_key_syms;4626,138275
+static Lisp_Object mouse_syms;4627,138309
+static Lisp_Object wheel_syms;4628,138340
+static Lisp_Object drag_n_drop_syms;4629,138371
+static const int lispy_accent_codes[lispy_accent_codes4634,138516
+static const char *const lispy_accent_keys[lispy_accent_keys4741,139878
+#define FUNCTION_KEY_OFFSET 4766,140314
+const char *const lispy_function_keys[lispy_function_keys4768,140347
+static const char *const
lispy_multimedia_keys[lispy_multimedia_keys4962,148901
+static const char *const lispy_kana_keys[lispy_kana_keys5026,150135
+#define FUNCTION_KEY_OFFSET 5061,151751
+static const char *const lispy_function_keys[lispy_function_keys5065,151894
+#define ISO_FUNCTION_KEY_OFFSET 5149,154429
+static const char *const
iso_lispy_function_keys[iso_lispy_function_keys5151,154469
+static Lisp_Object Vlispy_mouse_stem;5172,155328
+static const char *const lispy_wheel_names[lispy_wheel_names5174,155367
+static const char *const
lispy_drag_n_drop_names[lispy_drag_n_drop_names5181,155619
+static short const scroll_bar_parts[scroll_bar_parts5189,155885
+static Lisp_Object button_down_location;5210,156910
+static int last_mouse_button;5215,157065
+static int last_mouse_x;5216,157095
+static int last_mouse_y;5217,157120
+static Time button_down_time;5218,157145
+static int double_click_count;5222,157229
+make_lispy_position 5228,157390
+toolkit_menubar_in_use 5456,163953
+make_scroll_bar_position 5469,164321
+make_lispy_event 5485,164967
+make_lispy_movement 6104,183531
+make_lispy_switch_frame 6131,184262
+make_lispy_focus_in 6137,184369
+make_lispy_focus_out 6145,184495
+parse_modifiers_uncached 6163,184945
+#define SINGLE_LETTER_MOD(6185,185465
+#undef SINGLE_LETTER_MOD6212,185906
+#define MULTI_LETTER_MOD(6214,185932
+#undef MULTI_LETTER_MOD6231,186400
+apply_modifiers_uncached 6273,187574
+static const char *const modifier_names[modifier_names6319,189193
+#define NUM_MOD_NAMES 6325,189399
+static Lisp_Object modifier_symbols;6327,189449
+lispy_modifier_list 6331,189586
+#define KEY_TO_CHAR(6353,190252
+parse_modifiers 6356,190328
+DEFUN ("internal-event-symbol-parse-modifiers",
Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517
+apply_modifiers 6422,192391
+reorder_modifiers 6491,194720
+modify_event_symbol 6536,196528
+DEFUN ("event-convert-list",
Fevent_convert_list,event-convert-list6628,199244
+parse_solitary_modifier 6695,201135
+#define SINGLE_LETTER_MOD(6701,201258
+#define MULTI_LETTER_MOD(6705,201343
+#undef SINGLE_LETTER_MOD6763,202641
+#undef MULTI_LETTER_MOD6764,202666
+lucid_event_type_list_p 6775,202889
+get_input_pending 6814,203960
+record_asynch_buffer_change 6834,204579
+gobble_input 6872,205702
+tty_read_avail_input 6967,208310
+handle_async_input 7149,214039
+process_pending_signals 7165,214359
+unblock_input_to 7177,214645
+unblock_input 7200,215277
+totally_unblock_input 7209,215445
+handle_input_available_signal 7217,215529
+deliver_input_available_signal 7226,215700
+struct user_signal_info7235,215865
+ int sig;7238,215915
+ char *name;name7241,215956
+ int npending;7244,216007
+ struct user_signal_info *next;next7246,216024
+static struct user_signal_info *user_signals user_signals7250,216090
+add_user_signal 7253,216149
+handle_user_signal 7275,216598
+deliver_user_signal 7316,217558
+find_user_signal_name 7322,217659
+store_user_signal_events 7334,217841
+static void menu_bar_item 7362,218341
+static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416
+static Lisp_Object menu_bar_items_vector;7368,218630
+static int menu_bar_items_index;7369,218672
+static const char *separator_names[separator_names7372,218707
+menu_separator_name_p 7393,219148
+menu_bar_items 7426,219852
+Lisp_Object item_properties;7568,224603
+menu_bar_item 7571,224645
+menu_item_eval_property_1 7647,227175
+eval_dyn 7658,227465
+menu_item_eval_property 7666,227675
+parse_menu_item 7686,228341
+static Lisp_Object tool_bar_items_vector;7965,236336
+static Lisp_Object tool_bar_item_properties;7970,236510
+static int ntool_bar_items;7974,236606
+static void init_tool_bar_items 7978,236664
+static void process_tool_bar_item 7979,236711
+static bool parse_tool_bar_item 7981,236801
+static void append_tool_bar_item 7982,236861
+tool_bar_items 7990,237083
+process_tool_bar_item 8075,239892
+#define PROP(8112,240969
+set_prop 8114,241038
+parse_tool_bar_item 8167,242453
+#undef PROP8379,248844
+init_tool_bar_items 8387,248969
+append_tool_bar_item 8401,249261
+read_char_x_menu_prompt 8443,250771
+read_char_minibuf_menu_prompt 8503,252445
+#define PUSH_C_STR(8527,253014
+follow_key 8726,258553
+active_maps 8733,258695
+typedef struct keyremap8742,259021
+ Lisp_Object parent;8745,259107
+ Lisp_Object map;8748,259224
+ int start,8753,259446
+ int start, end;8753,259446
+} keyremap;8754,259464
+access_keymap_keyremap 8764,259808
+keyremap_step 8811,261450
+test_undefined 8867,262934
+read_key_sequence 8916,264861
+read_key_sequence_vs 9826,295821
+DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294
+DEFUN ("read-key-sequence-vector",
Fread_key_sequence_vector,read-key-sequence-vector9938,299982
+detect_input_pending 9950,300488
+detect_input_pending_ignore_squeezables 9959,300654
+detect_input_pending_run_timers 9967,300870
+clear_input_pending 9985,301362
+requeued_events_pending_p 9997,301732
+DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813
+DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596
+DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517
+DEFUN ("this-command-keys-vector",
Fthis_command_keys_vector,this-command-keys-vector10068,303958
+DEFUN ("this-single-command-keys",
Fthis_single_command_keys,this-single-command-keys10080,304380
+DEFUN ("this-single-command-raw-keys",
Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955
+DEFUN ("reset-this-command-lengths",
Freset_this_command_lengths,reset-this-command-lengths10109,305495
+DEFUN ("clear-this-command-keys",
Fclear_this_command_keys,clear-this-command-keys10136,306510
+DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069
+DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406
+DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447
+DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949
+stuff_buffered_input 10285,311045
+set_waiting_for_input 10323,312016
+clear_waiting_for_input 10337,312390
+handle_interrupt_signal 10351,312754
+deliver_interrupt_signal 10378,313642
+static int volatile force_quit_count;10387,313932
+handle_interrupt 10401,314414
+quit_throw_to_read_char 10541,318711
+DEFUN ("set-input-interrupt-mode",
Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288
+DEFUN ("set-output-flow-control",
Fset_output_flow_control,set-output-flow-control10609,320516
+DEFUN ("set-input-meta-mode",
Fset_input_meta_mode,set-input-meta-mode10643,321432
+DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706
+DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570
+DEFUN ("current-input-mode",
Fcurrent_input_mode,current-input-mode10750,324459
+DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837
+DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060
+init_kboard 10861,328214
+allocate_kboard 10893,329284
+wipe_kboard 10909,329637
+delete_kboard 10917,329751
+init_keyboard 10942,330281
+struct event_head11021,332696
+ short var;11023,332716
+ short kind;11024,332729
+static const struct event_head head_table[head_table11027,332747
+syms_of_keyboard 11045,333577
+ DEFVAR_LISP ("internal--top-level-message"11058,333972
+ DEFVAR_LISP ("last-command-event"11312,342173
+ DEFVAR_LISP ("last-nonmenu-event"11315,342297
+ DEFVAR_LISP ("last-input-event"11321,342636
+ DEFVAR_LISP ("unread-command-events"11324,342730
+ DEFVAR_LISP ("unread-post-input-method-events"11332,343190
+ DEFVAR_LISP ("unread-input-method-events"11338,343529
+ DEFVAR_LISP ("meta-prefix-char"11346,343898
+ DEFVAR_KBOARD ("last-command"11351,344106
+ DEFVAR_KBOARD ("real-last-command"11368,344787
+ DEFVAR_KBOARD ("last-repeatable-command"11372,344973
+ DEFVAR_LISP ("this-command"11378,345261
+ DEFVAR_LISP ("real-this-command"11384,345498
+ DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680
+ DEFVAR_LISP ("this-original-command"11396,346123
+ DEFVAR_INT ("auto-save-interval"11403,346520
+ DEFVAR_LISP ("auto-save-timeout"11408,346734
+ DEFVAR_LISP ("echo-keystrokes"11415,347079
+ DEFVAR_INT ("polling-period"11421,347350
+ DEFVAR_LISP ("double-click-time"11428,347693
+ DEFVAR_INT ("double-click-fuzz"11435,348029
+ DEFVAR_INT ("num-input-keys"11446,348519
+ DEFVAR_INT ("num-nonmacro-input-events"11452,348794
+ DEFVAR_LISP ("last-event-frame"11457,349032
+ DEFVAR_LISP ("tty-erase-char"11463,349311
+ DEFVAR_LISP ("help-char"11466,349434
+ DEFVAR_LISP ("help-event-list"11472,349717
+ DEFVAR_LISP ("help-form"11477,349928
+ DEFVAR_LISP ("prefix-help-command"11483,350176
+ DEFVAR_LISP ("top-level"11489,350454
+ DEFVAR_KBOARD ("keyboard-translate-table"11495,350675
+ DEFVAR_BOOL ("cannot-suspend"11511,351488
+ DEFVAR_BOOL ("menu-prompting"11516,351715
+ DEFVAR_LISP ("menu-prompt-more-char"11526,352145
+ DEFVAR_INT ("extra-keyboard-modifiers"11531,352391
+ DEFVAR_LISP ("deactivate-mark"11545,353117
+ DEFVAR_LISP ("pre-command-hook"11553,353486
+ DEFVAR_LISP ("post-command-hook"11560,353841
+ DEFVAR_LISP ("echo-area-clear-hook"11568,354204
+ DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419
+ DEFVAR_LISP ("menu-bar-final-items"11578,354622
+ DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872
+ DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230
+ DEFVAR_LISP ("overriding-local-map"11598,355652
+ DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103
+ DEFVAR_LISP ("special-event-map"11613,356442
+ DEFVAR_LISP ("track-mouse"11617,356630
+ DEFVAR_KBOARD ("system-key-alist"11620,356757
+ DEFVAR_KBOARD ("local-function-key-map"11629,357138
+ DEFVAR_KBOARD ("input-decode-map"11658,358597
+ DEFVAR_LISP ("function-key-map"11675,359385
+ DEFVAR_LISP ("key-translation-map"11683,359801
+ DEFVAR_LISP ("deferred-action-list"11689,360145
+ DEFVAR_LISP ("deferred-action-function"11694,360393
+ DEFVAR_LISP ("delayed-warnings-list"11700,360692
+ DEFVAR_LISP ("timer-list"11708,361100
+ DEFVAR_LISP ("timer-idle-list"11712,361252
+ DEFVAR_LISP ("input-method-function"11716,361415
+ DEFVAR_LISP ("input-method-previous-message"11737,362384
+ DEFVAR_LISP ("show-help-function"11744,362745
+ DEFVAR_LISP ("disable-point-adjustment"11749,362977
+ DEFVAR_LISP ("global-disable-point-adjustment"11761,363527
+ DEFVAR_LISP ("minibuffer-message-timeout"11770,363893
+ DEFVAR_LISP ("throw-on-input"11775,364171
+ DEFVAR_LISP ("command-error-function"11781,364422
+ DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909
+ DEFVAR_LISP ("select-active-regions"11798,365236
+ DEFVAR_LISP ("saved-region-selection"11807,365628
+ DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013
+ DEFVAR_LISP ("debug-on-event"11825,366554
+keys_of_keyboard 11841,367115
+mark_kboards 11916,370434
+ DEFVAR_LISP ("internal--top-level-message",\111058,333972
+ DEFVAR_LISP ("last-command-event",\111312,342173
+ DEFVAR_LISP ("last-nonmenu-event",\111315,342297
+ DEFVAR_LISP ("last-input-event",\111321,342636
+ DEFVAR_LISP ("unread-command-events",\111324,342730
+ DEFVAR_LISP ("unread-post-input-method-events",\111332,343190
+ DEFVAR_LISP ("unread-input-method-events",\111338,343529
+ DEFVAR_LISP ("meta-prefix-char",\111346,343898
+ DEFVAR_KBOARD ("last-command",\111351,344106
+ DEFVAR_KBOARD ("real-last-command",\111368,344787
+ DEFVAR_KBOARD ("last-repeatable-command",\111372,344973
+ DEFVAR_LISP ("this-command",\111378,345261
+ DEFVAR_LISP ("real-this-command",\111384,345498
+ DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680
+ DEFVAR_LISP ("this-original-command",\111396,346123
+ DEFVAR_INT ("auto-save-interval",\111403,346520
+ DEFVAR_LISP ("auto-save-timeout",\111408,346734
+ DEFVAR_LISP ("echo-keystrokes",\111415,347079
+ DEFVAR_INT ("polling-period",\111421,347350
+ DEFVAR_LISP ("double-click-time",\111428,347693
+ DEFVAR_INT ("double-click-fuzz",\111435,348029
+ DEFVAR_INT ("num-input-keys",\111446,348519
+ DEFVAR_INT ("num-nonmacro-input-events",\111452,348794
+ DEFVAR_LISP ("last-event-frame",\111457,349032
+ DEFVAR_LISP ("tty-erase-char",\111463,349311
+ DEFVAR_LISP ("help-char",\111466,349434
+ DEFVAR_LISP ("help-event-list",\111472,349717
+ DEFVAR_LISP ("help-form",\111477,349928
+ DEFVAR_LISP ("prefix-help-command",\111483,350176
+ DEFVAR_LISP ("top-level",\111489,350454
+ DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675
+ DEFVAR_BOOL ("cannot-suspend",\111511,351488
+ DEFVAR_BOOL ("menu-prompting",\111516,351715
+ DEFVAR_LISP ("menu-prompt-more-char",\111526,352145
+ DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391
+ DEFVAR_LISP ("deactivate-mark",\111545,353117
+ DEFVAR_LISP ("pre-command-hook",\111553,353486
+ DEFVAR_LISP ("post-command-hook",\111560,353841
+ DEFVAR_LISP ("echo-area-clear-hook",\111568,354204
+ DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419
+ DEFVAR_LISP ("menu-bar-final-items",\111578,354622
+ DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872
+ DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230
+ DEFVAR_LISP ("overriding-local-map",\111598,355652
+ DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103
+ DEFVAR_LISP ("special-event-map",\111613,356442
+ DEFVAR_LISP ("track-mouse",\111617,356630
+ DEFVAR_KBOARD ("system-key-alist",\111620,356757
+ DEFVAR_KBOARD ("local-function-key-map",\111629,357138
+ DEFVAR_KBOARD ("input-decode-map",\111658,358597
+ DEFVAR_LISP ("function-key-map",\111675,359385
+ DEFVAR_LISP ("key-translation-map",\111683,359801
+ DEFVAR_LISP ("deferred-action-list",\111689,360145
+ DEFVAR_LISP ("deferred-action-function",\111694,360393
+ DEFVAR_LISP ("delayed-warnings-list",\111700,360692
+ DEFVAR_LISP ("timer-list",\111708,361100
+ DEFVAR_LISP ("timer-idle-list",\111712,361252
+ DEFVAR_LISP ("input-method-function",\111716,361415
+ DEFVAR_LISP ("input-method-previous-message",\111737,362384
+ DEFVAR_LISP ("show-help-function",\111744,362745
+ DEFVAR_LISP ("disable-point-adjustment",\111749,362977
+ DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527
+ DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893
+ DEFVAR_LISP ("throw-on-input",\111775,364171
+ DEFVAR_LISP ("command-error-function",\111781,364422
+ DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909
+ DEFVAR_LISP ("select-active-regions",\111798,365236
+ DEFVAR_LISP ("saved-region-selection",\111807,365628
+ DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013
+ DEFVAR_LISP ("debug-on-event",\111825,366554
+
+c-src/emacs/src/lisp.h,39173
+#define EMACS_LISP_H22,800
+#define DECLARE_GDB_SYM(47,1421
+# define DEFINE_GDB_SYMBOL_BEGIN(49,1508
+# define DEFINE_GDB_SYMBOL_END(50,1578
+# define DEFINE_GDB_SYMBOL_BEGIN(52,1625
+# define DEFINE_GDB_SYMBOL_END(53,1702
+#undef min57,1790
+#undef max58,1801
+#define max(59,1812
+#define min(60,1854
+#define ARRAYELTS(63,1936
+#define GCTYPEBITS 67,2079
+DEFINE_GDB_SYMBOL_BEGIN GCTYPEBITS66,2037
+# define NONPOINTER_BITS 78,2567
+# define NONPOINTER_BITS 80,2600
+typedef int EMACS_INT;91,3023
+typedef unsigned int EMACS_UINT;92,3046
+# define EMACS_INT_MAX 93,3079
+# define pI 94,3111
+typedef long int EMACS_INT;96,3203
+typedef unsigned long EMACS_UINT;97,3231
+# define EMACS_INT_MAX 98,3265
+# define pI 99,3298
+typedef long long int EMACS_INT;103,3477
+typedef unsigned long long int EMACS_UINT;104,3510
+# define EMACS_INT_MAX 105,3553
+# define pI 106,3587
+enum { BOOL_VECTOR_BITS_PER_CHAR 114,3804
+#define BOOL_VECTOR_BITS_PER_CHAR 115,3840
+typedef size_t bits_word;123,4165
+# define BITS_WORD_MAX 124,4191
+enum { BITS_PER_BITS_WORD 125,4223
+typedef unsigned char bits_word;127,4290
+# define BITS_WORD_MAX 128,4323
+enum { BITS_PER_BITS_WORD 129,4386
+verify 131,4450
+ BITS_PER_CHAR 136,4570
+ BITS_PER_SHORT 137,4605
+ BITS_PER_LONG 138,4657
+ BITS_PER_EMACS_INT 139,4712
+typedef intmax_t printmax_t;148,5089
+typedef uintmax_t uprintmax_t;149,5118
+# define pMd 150,5149
+# define pMu 151,5170
+typedef EMACS_INT printmax_t;153,5197
+typedef EMACS_UINT uprintmax_t;154,5227
+# define pMd 155,5259
+# define pMu 156,5278
+# define pD 165,5664
+# define pD 167,5709
+# define pD 169,5756
+# define pD 171,5779
+# define eassert(200,7062
+# define eassume(201,7140
+extern _Noreturn void die 204,7206
+extern bool suppress_checking EXTERNALLY_VISIBLE;206,7268
+# define eassert(208,7319
+# define eassume(212,7450
+enum Lisp_Bits239,8519
+#define GCALIGNMENT 243,8647
+ VALBITS 246,8742
+ INTTYPEBITS 249,8838
+ FIXNUM_BITS 252,8945
+#define VAL_MAX 263,9327
+#define USE_LSB_TAG 271,9777
+DEFINE_GDB_SYMBOL_BEGIN USE_LSB_TAG270,9733
+# define alignas(281,10077
+# define GCALIGNED 288,10227
+# define GCALIGNED 290,10292
+# define lisp_h_XLI(327,11642
+# define lisp_h_XIL(328,11673
+# define lisp_h_XLI(330,11724
+# define lisp_h_XIL(331,11751
+#define lisp_h_CHECK_LIST_CONS(333,11785
+#define lisp_h_CHECK_NUMBER(334,11856
+#define lisp_h_CHECK_SYMBOL(335,11927
+#define lisp_h_CHECK_TYPE(336,11996
+#define lisp_h_CONSP(338,12107
+#define lisp_h_EQ(339,12156
+#define lisp_h_FLOATP(340,12201
+#define lisp_h_INTEGERP(341,12252
+#define lisp_h_MARKERP(342,12333
+#define lisp_h_MISCP(343,12408
+#define lisp_h_NILP(344,12457
+#define lisp_h_SET_SYMBOL_VAL(345,12493
+#define lisp_h_SYMBOL_CONSTANT_P(347,12607
+#define lisp_h_SYMBOL_VAL(348,12671
+#define lisp_h_SYMBOLP(350,12772
+#define lisp_h_VECTORLIKEP(351,12825
+#define lisp_h_XCAR(352,12886
+#define lisp_h_XCDR(353,12924
+#define lisp_h_XCONS(354,12964
+#define lisp_h_XHASH(356,13059
+#define lisp_h_XPNTR(357,13093
+# define lisp_h_check_cons_list(360,13221
+# define lisp_h_make_number(363,13289
+# define lisp_h_XFASTINT(365,13392
+# define lisp_h_XINT(366,13429
+# define lisp_h_XSYMBOL(367,13478
+# define lisp_h_XTYPE(371,13631
+# define lisp_h_XUNTAG(372,13696
+# define XLI(381,14086
+# define XIL(382,14117
+# define CHECK_LIST_CONS(383,14148
+# define CHECK_NUMBER(384,14209
+# define CHECK_SYMBOL(385,14258
+# define CHECK_TYPE(386,14307
+# define CONSP(387,14382
+# define EQ(388,14417
+# define FLOATP(389,14452
+# define INTEGERP(390,14489
+# define MARKERP(391,14530
+# define MISCP(392,14569
+# define NILP(393,14604
+# define SET_SYMBOL_VAL(394,14637
+# define SYMBOL_CONSTANT_P(395,14700
+# define SYMBOL_VAL(396,14763
+# define SYMBOLP(397,14812
+# define VECTORLIKEP(398,14851
+# define XCAR(399,14898
+# define XCDR(400,14931
+# define XCONS(401,14964
+# define XHASH(402,14999
+# define XPNTR(403,15034
+# define check_cons_list(405,15097
+# define make_number(408,15176
+# define XFASTINT(409,15224
+# define XINT(410,15266
+# define XSYMBOL(411,15300
+# define XTYPE(412,15340
+# define XUNTAG(413,15376
+#define LISP_MACRO_DEFUN(421,15672
+#define LISP_MACRO_DEFUN_VOID(425,15845
+#define INTMASK 437,16289
+#define case_Lisp_Int 438,16342
+#define ENUM_BF(445,16681
+#define ENUM_BF(447,16722
+enum Lisp_Type451,16763
+ Lisp_Symbol 454,16851
+ Lisp_Misc 458,16993
+ Lisp_Int0 461,17067
+ Lisp_Int1 462,17086
+ Lisp_String 466,17264
+ Lisp_Vectorlike 472,17543
+ Lisp_Cons 475,17632
+ Lisp_Float 477,17670
+enum Lisp_Misc_Type485,18016
+ Lisp_Misc_Free 487,18040
+ Lisp_Misc_Marker,488,18069
+ Lisp_Misc_Overlay,489,18091
+ Lisp_Misc_Save_Value,490,18114
+ Lisp_Misc_Finalizer,491,18140
+ Lisp_Misc_Float,494,18275
+ Lisp_Misc_Limit496,18359
+enum Lisp_Fwd_Type502,18543
+ Lisp_Fwd_Int,504,18566
+ Lisp_Fwd_Bool,505,18619
+ Lisp_Fwd_Obj,506,18670
+ Lisp_Fwd_Buffer_Obj,507,18729
+ Lisp_Fwd_Kboard_Obj 508,18800
+typedef struct { EMACS_INT i;567,21781
+typedef struct { EMACS_INT i; } Lisp_Object;567,21781
+#define LISP_INITIALLY(569,21827
+#undef CHECK_LISP_OBJECT_TYPE571,21858
+enum CHECK_LISP_OBJECT_TYPE 572,21888
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 572,21888
+typedef EMACS_INT Lisp_Object;577,22064
+#define LISP_INITIALLY(578,22095
+enum CHECK_LISP_OBJECT_TYPE 579,22125
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE 579,22125
+#define LISP_INITIALLY_ZERO 582,22226
+INLINE bool BOOL_VECTOR_P 588,22350
+INLINE bool BUFFER_OBJFWDP 589,22391
+INLINE bool BUFFERP 590,22438
+INLINE bool CHAR_TABLE_P 591,22473
+INLINE Lisp_Object CHAR_TABLE_REF_ASCII 592,22513
+INLINE bool 593,22579
+INLINE bool 594,22614
+INLINE bool functionp 595,22650
+INLINE bool 596,22687
+INLINE bool 597,22725
+INLINE bool 598,22762
+INLINE bool 599,22797
+INLINE bool OVERLAYP 600,22831
+INLINE bool PROCESSP 601,22867
+INLINE bool PSEUDOVECTORP 602,22903
+INLINE bool SAVE_VALUEP 603,22949
+INLINE bool FINALIZERP 604,22988
+INLINE void set_sub_char_table_contents 605,23026
+INLINE bool STRINGP 607,23116
+INLINE bool SUB_CHAR_TABLE_P 608,23151
+INLINE bool SUBRP 609,23195
+INLINE bool 610,23228
+INLINE bool 611,23265
+INLINE bool WINDOWP 612,23306
+INLINE bool TERMINALP 613,23341
+INLINE struct Lisp_Save_Value *XSAVE_VALUE XSAVE_VALUE614,23378
+INLINE struct Lisp_Finalizer *XFINALIZER XFINALIZER615,23436
+INLINE struct Lisp_Symbol *(XSYMBOL)616,23492
+INLINE void 617,23544
+extern Lisp_Object char_table_ref 620,23616
+extern void char_table_set 621,23670
+extern _Noreturn Lisp_Object wrong_type_argument 624,23757
+extern _Noreturn void wrong_choice 625,23834
+extern bool might_dump;628,23925
+extern bool initialized;631,24061
+extern double extract_float 634,24117
+enum symbol_interned639,24199
+ SYMBOL_UNINTERNED 641,24222
+ SYMBOL_INTERNED 642,24247
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY 643,24270
+enum symbol_redirect646,24315
+ SYMBOL_PLAINVAL 648,24338
+ SYMBOL_VARALIAS 649,24362
+ SYMBOL_LOCALIZED 650,24386
+ SYMBOL_FORWARDED 651,24410
+struct Lisp_Symbol654,24437
+ bool_bf gcmarkbit 656,24458
+ ENUM_BF 663,24793
+ Lisp_Object value;687,25631
+ struct Lisp_Symbol *alias;alias688,25654
+ struct Lisp_Buffer_Local_Value *blv;blv689,25685
+ union Lisp_Fwd *fwd;fwd690,25726
+ } val;691,25751
+ Lisp_Object function;694,25823
+ Lisp_Object plist;697,25885
+ struct Lisp_Symbol *next;next700,25974
+#define EXFUN(707,26252
+#define DEFUN_ARGS_MANY 712,26446
+#define DEFUN_ARGS_UNEVALLED 713,26498
+#define DEFUN_ARGS_0 714,26541
+#define DEFUN_ARGS_1 715,26569
+#define DEFUN_ARGS_2 716,26604
+#define DEFUN_ARGS_3 717,26652
+#define DEFUN_ARGS_4 718,26713
+#define DEFUN_ARGS_5 719,26787
+#define DEFUN_ARGS_6 721,26880
+#define DEFUN_ARGS_7 723,26986
+#define DEFUN_ARGS_8 725,27105
+#define TAG_PTR(729,27296
+#define TAG_SYMOFFSET(734,27543
+#define XLI_BUILTIN_LISPSYM(741,27842
+#define DEFINE_LISP_SYMBOL(746,28101
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS 755,28572
+LISP_MACRO_DEFUN 762,28777
+# define ARRAY_MARK_FLAG 768,29024
+# define PSEUDOVECTOR_FLAG 774,29267
+enum pvec_type780,29568
+ PVEC_NORMAL_VECTOR,782,29585
+ PVEC_FREE,783,29607
+ PVEC_PROCESS,784,29620
+ PVEC_FRAME,785,29636
+ PVEC_WINDOW,786,29650
+ PVEC_BOOL_VECTOR,787,29665
+ PVEC_BUFFER,788,29685
+ PVEC_HASH_TABLE,789,29700
+ PVEC_TERMINAL,790,29719
+ PVEC_WINDOW_CONFIGURATION,791,29736
+ PVEC_SUBR,792,29765
+ PVEC_OTHER,793,29778
+ PVEC_COMPILED,795,29856
+ PVEC_CHAR_TABLE,796,29873
+ PVEC_SUB_CHAR_TABLE,797,29892
+ PVEC_FONT 798,29915
+enum More_Lisp_Bits801,29991
+ PSEUDOVECTOR_SIZE_BITS 808,30382
+ PSEUDOVECTOR_SIZE_MASK 809,30415
+ PSEUDOVECTOR_REST_BITS 813,30625
+ PSEUDOVECTOR_REST_MASK 814,30658
+ PSEUDOVECTOR_AREA_BITS 818,30823
+ PVEC_TYPE_MASK 819,30901
+# define VALMASK 829,31302
+DEFINE_GDB_SYMBOL_BEGIN VALMASK828,31257
+#define MOST_POSITIVE_FIXNUM 834,31532
+#define MOST_NEGATIVE_FIXNUM 835,31592
+XINT 874,32684
+XFASTINT 889,33035
+XSYMBOL 899,33263
+XTYPE 910,33481
+XUNTAG 918,33661
+LISP_MACRO_DEFUN 927,33857
+LISP_MACRO_DEFUN 940,34242
+#define FIXNUM_OVERFLOW_P(958,34855
+LISP_MACRO_DEFUN FIXNUM_OVERFLOW_P952,34632
+LISP_MACRO_DEFUN 970,35171
+XSTRING 980,35391
+#define SYMBOL_INDEX(988,35575
+XFLOAT 991,35636
+XPROCESS 1000,35778
+XWINDOW 1007,35895
+XTERMINAL 1014,36012
+XSUBR 1021,36134
+XBUFFER 1028,36245
+XCHAR_TABLE 1035,36369
+XSUB_CHAR_TABLE 1042,36506
+XBOOL_VECTOR 1049,36648
+make_lisp_ptr 1058,36827
+make_lisp_symbol 1066,37013
+builtin_lisp_symbol 1074,37197
+#define XSETINT(1079,37279
+#define XSETFASTINT(1080,37325
+#define XSETCONS(1081,37375
+#define XSETVECTOR(1082,37435
+#define XSETSTRING(1083,37503
+#define XSETSYMBOL(1084,37567
+#define XSETFLOAT(1085,37621
+#define XSETMISC(1086,37683
+#define XSETPVECTYPE(1090,37772
+#define XSETPVECTYPESIZE(1092,37888
+#define XSETPSEUDOVECTOR(1099,38185
+#define XSETTYPED_PSEUDOVECTOR(1105,38369
+#define XSETWINDOW_CONFIGURATION(1110,38579
+#define XSETPROCESS(1112,38675
+#define XSETWINDOW(1113,38741
+#define XSETTERMINAL(1114,38805
+#define XSETSUBR(1115,38873
+#define XSETCOMPILED(1116,38933
+#define XSETBUFFER(1117,39001
+#define XSETCHAR_TABLE(1118,39065
+#define XSETBOOL_VECTOR(1119,39137
+#define XSETSUB_CHAR_TABLE(1120,39211
+XINTPTR 1128,39581
+make_pointer_integer 1134,39661
+LISP_MACRO_DEFUN_VOID 1143,39826
+typedef struct interval *INTERVAL;INTERVAL1149,39987
+ Lisp_Object cdr;1159,40162
+ struct Lisp_Cons *chain;chain1162,40236
+xcar_addr 1174,40760
+xcdr_addr 1179,40837
+LISP_MACRO_DEFUN 1185,40931
+XSETCDR 1198,41307
+CAR 1205,41457
+CDR 1212,41591
+CAR_SAFE 1221,41791
+CDR_SAFE 1226,41877
+STRING_MULTIBYTE 1243,42250
+#define STRING_BYTES_BOUND 1261,43057
+#define STRING_SET_UNIBYTE(1265,43201
+#define STRING_SET_MULTIBYTE(1275,43516
+SDATA 1286,43830
+SSDATA 1291,43908
+SREF 1297,44037
+SSET 1302,44128
+SCHARS 1307,44242
+extern ptrdiff_t string_bytes 1313,44337
+STRING_BYTES 1316,44415
+SBYTES 1326,44595
+STRING_SET_CHARS 1331,44681
+struct vectorlike_header1343,45232
+ ptrdiff_t size;1364,46383
+struct Lisp_Vector1369,46482
+ struct vectorlike_header header;1371,46505
+ Lisp_Object contents[contents1372,46542
+ ALIGNOF_STRUCT_LISP_VECTOR1378,46681
+struct Lisp_Bool_Vector1384,46864
+ struct vectorlike_header header;1388,47012
+ EMACS_INT size;1390,47086
+ bits_word data[data1395,47319
+bool_vector_size 1399,47385
+bool_vector_data 1407,47523
+bool_vector_uchar_data 1413,47617
+bool_vector_words 1421,47803
+bool_vector_bytes 1428,47998
+bool_vector_bitref 1437,48238
+bool_vector_ref 1445,48478
+bool_vector_set 1453,48618
+ header_size 1471,49047
+ bool_header_size 1472,49106
+ word_size 1473,49171
+AREF 1479,49284
+aref_addr 1485,49391
+ASIZE 1491,49501
+ASET 1497,49583
+gc_aset 1504,49742
+enum { NIL_IS_ZERO 1515,50269
+memclear 1520,50464
+#define VECSIZE(1531,50762
+#define PSEUDOVECSIZE(1538,51047
+#define UNSIGNED_CMP(1546,51480
+#define ASCII_CHAR_P(1552,51734
+enum CHARTAB_SIZE_BITS1565,52489
+ CHARTAB_SIZE_BITS_0 1567,52516
+ CHARTAB_SIZE_BITS_1 1568,52545
+ CHARTAB_SIZE_BITS_2 1569,52574
+ CHARTAB_SIZE_BITS_3 1570,52603
+extern const int chartab_size[chartab_size1573,52637
+struct Lisp_Char_Table1575,52672
+ struct vectorlike_header header;1581,52928
+ Lisp_Object defalt;1585,53078
+ Lisp_Object parent;1590,53280
+ Lisp_Object purpose;1594,53398
+ Lisp_Object ascii;1598,53564
+ Lisp_Object contents[contents1600,53588
+ Lisp_Object extras[extras1603,53699
+struct Lisp_Sub_Char_Table1606,53752
+ struct vectorlike_header header;1610,53918
+ int depth;1618,54341
+ int min_char;1621,54417
+ Lisp_Object contents[contents1624,54492
+CHAR_TABLE_REF_ASCII 1628,54566
+CHAR_TABLE_REF 1648,55113
+CHAR_TABLE_SET 1658,55402
+struct Lisp_Subr1670,55786
+ struct vectorlike_header header;1672,55807
+ Lisp_Object (*a0)a01674,55856
+ Lisp_Object (*a1)a11675,55888
+ Lisp_Object (*a2)a21676,55927
+ Lisp_Object (*a3)a31677,55979
+ Lisp_Object (*a4)a41678,56044
+ Lisp_Object (*a5)a51679,56122
+ Lisp_Object (*a6)a61680,56213
+ Lisp_Object (*a7)a71681,56317
+ Lisp_Object (*a8)a81682,56434
+ Lisp_Object (*aUNEVALLED)aUNEVALLED1683,56564
+ Lisp_Object (*aMANY)aMANY1684,56616
+ } function;1685,56671
+ short min_args,1686,56687
+ short min_args, max_args;1686,56687
+ const char *symbol_name;symbol_name1687,56717
+ const char *intspec;intspec1688,56746
+ const char *doc;doc1689,56771
+enum char_table_specials1692,56798
+ CHAR_TABLE_STANDARD_SLOTS 1697,56993
+ SUB_CHAR_TABLE_OFFSET 1701,57214
+CHAR_TABLE_EXTRA_SLOTS 1707,57377
+verify 1714,57596
+LISP_MACRO_DEFUN 1723,57921
+SYMBOL_BLV 1732,58181
+SYMBOL_FWD 1738,58316
+LISP_MACRO_DEFUN_VOID 1744,58428
+SET_SYMBOL_BLV 1754,58691
+SET_SYMBOL_FWD 1760,58850
+SYMBOL_NAME 1767,59001
+SYMBOL_INTERNED_P 1775,59130
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P 1783,59299
+#define DEFSYM(1796,59809
+LISP_MACRO_DEFUN DEFSYM1792,59630
+struct hash_table_test1805,60062
+ Lisp_Object name;1808,60139
+ Lisp_Object user_hash_function;1811,60206
+ Lisp_Object user_cmp_function;1814,60297
+ bool (*cmpfn)cmpfn1817,60372
+ EMACS_UINT (*hashfn)hashfn1820,60486
+struct Lisp_Hash_Table1823,60555
+ struct vectorlike_header header;1826,60649
+ Lisp_Object weak;1830,60783
+ Lisp_Object rehash_size;1835,61007
+ Lisp_Object rehash_threshold;1839,61129
+ Lisp_Object hash;1843,61260
+ Lisp_Object next;1848,61490
+ Lisp_Object next_free;1851,61560
+ Lisp_Object index;1856,61771
+ ptrdiff_t count;1863,62041
+ Lisp_Object key_and_value;1868,62240
+ struct hash_table_test test;1871,62314
+ struct Lisp_Hash_Table *next_weak;next_weak1875,62457
+XHASH_TABLE 1880,62531
+#define XSET_HASH_TABLE(1885,62602
+HASH_TABLE_P 1889,62703
+HASH_KEY 1896,62860
+HASH_VALUE 1903,63040
+HASH_NEXT 1911,63254
+HASH_HASH 1918,63431
+HASH_INDEX 1926,63677
+HASH_TABLE_SIZE 1933,63826
+enum DEFAULT_HASH_SIZE 1940,63956
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE 1940,63956
+static double const DEFAULT_REHASH_THRESHOLD 1946,64176
+static double const DEFAULT_REHASH_SIZE 1950,64299
+sxhash_combine 1956,64465
+SXHASH_REDUCE 1964,64648
+struct Lisp_Misc_Any 1971,64806
+ ENUM_BF 1973,64866
+struct Lisp_Marker1978,64980
+ ENUM_BF 1980,65001
+struct Lisp_Overlay2021,66838
+ ENUM_BF 2034,67346
+ SAVE_UNUSED,2047,67641
+ SAVE_INTEGER,2048,67658
+ SAVE_FUNCPOINTER,2049,67676
+ SAVE_POINTER,2050,67698
+ SAVE_OBJECT2051,67716
+enum { SAVE_SLOT_BITS 2055,67801
+enum { SAVE_VALUE_SLOTS 2058,67898
+enum { SAVE_TYPE_BITS 2062,68006
+enum Lisp_Save_Type2064,68072
+ SAVE_TYPE_INT_INT 2066,68096
+ SAVE_TYPE_INT_INT_INT2067,68169
+ SAVE_TYPE_OBJ_OBJ 2069,68259
+ SAVE_TYPE_OBJ_OBJ_OBJ 2070,68330
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ2071,68411
+ SAVE_TYPE_PTR_INT 2073,68506
+ SAVE_TYPE_PTR_OBJ 2074,68579
+ SAVE_TYPE_PTR_PTR 2075,68651
+ SAVE_TYPE_FUNCPTR_PTR_OBJ2076,68724
+ SAVE_TYPE_MEMORY 2080,68882
+typedef void (*voidfuncptr)voidfuncptr2108,69836
+struct Lisp_Save_Value2110,69873
+ ENUM_BF 2112,69900
+ void *pointer;pointer2125,70555
+ voidfuncptr funcpointer;2126,70576
+ ptrdiff_t integer;2127,70607
+ Lisp_Object object;2128,70632
+ } data[data2129,70658
+save_type 2134,70752
+XSAVE_POINTER 2143,70982
+set_save_pointer 2149,71144
+XSAVE_FUNCPOINTER 2155,71326
+XSAVE_INTEGER 2164,71546
+set_save_integer 2170,71708
+XSAVE_OBJECT 2179,71929
+struct Lisp_Finalizer2186,72106
+ struct Lisp_Misc_Any base;2188,72132
+ struct Lisp_Finalizer *prev;prev2191,72220
+ struct Lisp_Finalizer *next;next2192,72253
+ Lisp_Object function;2197,72490
+struct Lisp_Free2201,72581
+ ENUM_BF 2203,72602
+union Lisp_Misc2212,72882
+ struct Lisp_Misc_Any u_any;2214,72902
+ struct Lisp_Free u_free;2215,72973
+ struct Lisp_Marker u_marker;2216,73002
+ struct Lisp_Overlay u_overlay;2217,73035
+ struct Lisp_Save_Value u_save_value;2218,73070
+ struct Lisp_Finalizer u_finalizer;2219,73111
+XMISC 2223,73181
+XMISCANY 2229,73270
+XMISCTYPE 2236,73379
+XMARKER 2242,73467
+XOVERLAY 2249,73582
+XSAVE_VALUE 2256,73703
+XFINALIZER 2263,73832
+struct Lisp_Intfwd2274,74117
+ enum Lisp_Fwd_Type type;2276,74140
+ EMACS_INT *intvar;intvar2277,74190
+struct Lisp_Boolfwd2284,74411
+ enum Lisp_Fwd_Type type;2286,74435
+ bool *boolvar;boolvar2287,74486
+struct Lisp_Objfwd2294,74702
+ enum Lisp_Fwd_Type type;2296,74725
+ Lisp_Object *objvar;objvar2297,74775
+struct Lisp_Buffer_Objfwd2302,74934
+ enum Lisp_Fwd_Type type;2304,74964
+ int offset;2305,75021
+ Lisp_Object predicate;2307,75113
+struct Lisp_Buffer_Local_Value2334,76470
+ bool_bf local_if_set 2338,76615
+ bool_bf frame_local 2341,76797
+ bool_bf found 2344,76939
+ union Lisp_Fwd *fwd;fwd2346,77041
+ Lisp_Object where;2348,77184
+ Lisp_Object defcell;2351,77310
+ Lisp_Object valcell;2357,77614
+struct Lisp_Kboard_Objfwd2362,77729
+ enum Lisp_Fwd_Type type;2364,77759
+ int offset;2365,77816
+union Lisp_Fwd2368,77838
+ struct Lisp_Intfwd u_intfwd;2370,77857
+ struct Lisp_Boolfwd u_boolfwd;2371,77890
+ struct Lisp_Objfwd u_objfwd;2372,77925
+ struct Lisp_Buffer_Objfwd u_buffer_objfwd;2373,77958
+ struct Lisp_Kboard_Objfwd u_kboard_objfwd;2374,78005
+XFWDTYPE 2378,78084
+XBUFFER_OBJFWD 2384,78180
+struct Lisp_Float2391,78316
+ double data;2395,78354
+ struct Lisp_Float *chain;chain2396,78373
+ } u;2397,78405
+XFLOAT_DATA 2401,78434
+ IEEE_FLOATING_POINT2415,78943
+#define _UCHAR_T2423,79266
+typedef unsigned char UCHAR;2424,79283
+enum Lisp_Compiled2429,79366
+ COMPILED_ARGLIST 2431,79389
+ COMPILED_BYTECODE 2432,79415
+ COMPILED_CONSTANTS 2433,79442
+ COMPILED_STACK_DEPTH 2434,79470
+ COMPILED_DOC_STRING 2435,79500
+ COMPILED_INTERACTIVE 2436,79529
+enum char_bits2443,79831
+ CHAR_ALT 2445,79850
+ CHAR_SUPER 2446,79876
+ CHAR_HYPER 2447,79904
+ CHAR_SHIFT 2448,79932
+ CHAR_CTL 2449,79960
+ CHAR_META 2450,79986
+ CHAR_MODIFIER_MASK 2452,80014
+ CHARACTERBITS 2457,80209
+LISP_MACRO_DEFUN 2462,80267
+NATNUMP 2470,80409
+RANGED_INTEGERP 2476,80490
+#define TYPE_RANGED_INTEGERP(2481,80612
+LISP_MACRO_DEFUN 2486,80797
+VECTORP 2500,81270
+OVERLAYP 2505,81373
+SAVE_VALUEP 2510,81472
+FINALIZERP 2516,81578
+AUTOLOADP 2522,81682
+BUFFER_OBJFWDP 2528,81773
+PSEUDOVECTOR_TYPEP 2534,81871
+PSEUDOVECTORP 2542,82124
+WINDOW_CONFIGURATIONP 2558,82476
+PROCESSP 2564,82586
+WINDOWP 2570,82670
+TERMINALP 2576,82752
+SUBRP 2582,82838
+COMPILEDP 2588,82916
+BUFFERP 2594,83002
+CHAR_TABLE_P 2600,83084
+SUB_CHAR_TABLE_P 2606,83175
+BOOL_VECTOR_P 2612,83274
+FRAMEP 2618,83367
+IMAGEP 2625,83484
+ARRAYP 2632,83589
+CHECK_LIST 2638,83708
+LISP_MACRO_DEFUN_VOID 2643,83789
+CHECK_STRING_CAR 2653,84086
+CHECK_CONS 2658,84190
+CHECK_VECTOR 2663,84270
+CHECK_BOOL_VECTOR 2668,84356
+CHECK_VECTOR_OR_STRING 2674,84533
+CHECK_ARRAY 2683,84707
+CHECK_BUFFER 2688,84815
+CHECK_WINDOW 2693,84901
+CHECK_PROCESS 2699,85007
+CHECK_NATNUM 2705,85103
+#define CHECK_RANGED_INTEGER(2710,85180
+#define CHECK_TYPE_RANGED_INTEGER(2721,85563
+#define CHECK_NUMBER_COERCE_MARKER(2729,85833
+XFLOATINT 2738,86086
+CHECK_NUMBER_OR_FLOAT 2744,86157
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(2749,86256
+CHECK_NUMBER_CAR 2760,86666
+CHECK_NUMBER_CDR 2768,86788
+#define DEFUN(2803,88383
+#define DEFUN(2812,88851
+FUNCTIONP 2822,89206
+extern void defsubr 2829,89358
+enum maxargs2831,89401
+ MANY 2833,89418
+ UNEVALLED 2834,89433
+#define CALLMANY(2838,89536
+#define CALLN(2844,89889
+extern void defvar_lisp 2846,89959
+extern void defvar_lisp_nopro 2847,90036
+extern void defvar_bool 2848,90119
+extern void defvar_int 2849,90190
+extern void defvar_kboard 2850,90264
+#define DEFVAR_LISP(2869,91094
+#define DEFVAR_LISP_NOPRO(2874,91266
+#define DEFVAR_BOOL(2879,91448
+#define DEFVAR_INT(2884,91621
+#define DEFVAR_BUFFER_DEFAULTS(2890,91792
+#define DEFVAR_KBOARD(2896,91996
+typedef jmp_buf sys_jmp_buf;2906,92320
+# define sys_setjmp(2907,92349
+# define sys_longjmp(2908,92384
+typedef sigjmp_buf sys_jmp_buf;2910,92456
+# define sys_setjmp(2911,92488
+# define sys_longjmp(2912,92528
+typedef jmp_buf sys_jmp_buf;2916,92687
+# define sys_setjmp(2917,92716
+# define sys_longjmp(2918,92750
+enum specbind_tag 2943,93802
+ SPECPDL_UNWIND,2944,93822
+ SPECPDL_UNWIND_PTR,2945,93891
+ SPECPDL_UNWIND_INT,2946,93942
+ SPECPDL_UNWIND_VOID,2947,93990
+ SPECPDL_BACKTRACE,2948,94044
+ SPECPDL_LET,2949,94102
+ SPECPDL_LET_LOCAL,2951,94232
+ SPECPDL_LET_DEFAULT 2952,94289
+union specbinding2955,94361
+ ENUM_BF 2957,94383
+ ENUM_BF 2959,94440
+ ENUM_BF 2964,94570
+ ENUM_BF 2969,94693
+ ENUM_BF 2974,94811
+ ENUM_BF 2978,94916
+ ENUM_BF 2983,95091
+enum handlertype 3021,96407
+enum handlertype { CATCHER,3021,96407
+enum handlertype { CATCHER, CONDITION_CASE 3021,96407
+struct handler3023,96454
+ enum handlertype type;3025,96471
+ Lisp_Object tag_or_ch;3026,96496
+ Lisp_Object val;3027,96521
+ struct handler *next;next3028,96540
+ struct handler *nextfree;nextfree3029,96564
+ Lisp_Object *bytecode_top;bytecode_top3036,96922
+ int bytecode_dest;3037,96951
+ struct gcpro *gcpro;gcpro3042,97188
+ sys_jmp_buf jmp;3044,97218
+ EMACS_INT lisp_eval_depth;3045,97237
+ ptrdiff_t pdlcount;3046,97266
+ int poll_suppress_count;3047,97288
+ int interrupt_input_blocked;3048,97315
+ struct byte_stack *byte_stack;byte_stack3049,97346
+#define PUSH_HANDLER(3053,97443
+extern Lisp_Object memory_signal_data;3075,98149
+extern char *stack_bottom;stack_bottom3079,98282
+extern void process_pending_signals 3097,99099
+extern bool volatile pending_signals;3098,99143
+extern void process_quit_flag 3100,99182
+#define QUIT 3101,99220
+#define QUITP 3112,99470
+extern Lisp_Object Vascii_downcase_table;3114,99531
+extern Lisp_Object Vascii_canon_table;3115,99573
+extern struct gcpro *gcprolist;gcprolist3130,100280
+struct gcpro3132,100313
+ struct gcpro *next;next3134,100328
+ volatile Lisp_Object *var;var3137,100397
+ ptrdiff_t nvars;3140,100479
+ const char *name;name3144,100564
+ int lineno;3147,100620
+ int idx;3150,100681
+ int level;3153,100717
+#define GC_USE_GCPROS_AS_BEFORE 3171,101294
+#define GC_MAKE_GCPROS_NOOPS 3172,101329
+#define GC_MARK_STACK_CHECK_GCPROS 3173,101361
+#define GC_USE_GCPROS_CHECK_ZOMBIES 3174,101398
+#define GC_MARK_STACK 3177,101459
+#define BYTE_MARK_STACK 3181,101559
+#define GCPRO1(3190,101830
+#define GCPRO2(3191,101870
+#define GCPRO3(3192,101936
+#define GCPRO4(3194,102031
+#define GCPRO5(3196,102151
+#define GCPRO6(3198,102296
+#define GCPRO7(3201,102471
+#define UNGCPRO 3202,102550
+#define GCPRO1(3208,102650
+#define GCPRO2(3212,102772
+#define GCPRO3(3217,102964
+#define GCPRO4(3223,103226
+#define GCPRO5(3230,103557
+#define GCPRO6(3238,103958
+#define GCPRO7(3247,104428
+#define UNGCPRO 3257,104968
+extern int gcpro_level;3261,105037
+#define GCPRO1(3263,105062
+#define GCPRO2(3269,105296
+#define GCPRO3(3278,105714
+#define GCPRO4(3289,106271
+#define GCPRO5(3302,106969
+#define GCPRO6(3317,107809
+#define GCPRO7(3334,108790
+#define UNGCPRO 3353,109913
+#define RETURN_UNGCPRO(3363,110180
+void staticpro 3375,110453
+vcopy 3384,110654
+set_hash_key_slot 3393,110929
+set_hash_value_slot 3399,111068
+set_symbol_function 3408,111303
+set_symbol_plist 3414,111418
+set_symbol_next 3420,111521
+blv_found 3428,111694
+set_overlay_plist 3437,111877
+string_intervals 3445,112028
+set_string_intervals 3453,112150
+set_char_table_defalt 3462,112352
+set_char_table_purpose 3467,112464
+set_char_table_extras 3475,112633
+set_char_table_contents 3482,112842
+set_sub_char_table_contents 3489,113037
+extern Lisp_Object indirect_function 3495,113196
+extern Lisp_Object find_symbol_value 3496,113248
+enum Arith_Comparison 3497,113300
+ ARITH_EQUAL,3498,113324
+ ARITH_NOTEQUAL,3499,113339
+ ARITH_LESS,3500,113357
+ ARITH_GRTR,3501,113371
+ ARITH_LESS_OR_EQUAL,3502,113385
+ ARITH_GRTR_OR_EQUAL3503,113408
+extern Lisp_Object arithcompare 3505,113433
+#define INTEGER_TO_CONS(3511,113759
+#define CONS_TO_INTEGER(3529,114622
+extern intmax_t cons_to_signed 3533,114837
+extern uintmax_t cons_to_unsigned 3534,114903
+extern struct Lisp_Symbol *indirect_variable indirect_variable3536,114964
+extern _Noreturn void args_out_of_range 3537,115033
+extern _Noreturn void args_out_of_range_3 3538,115101
+extern Lisp_Object do_symval_forwarding 3540,115192
+extern void set_internal 3541,115252
+extern void syms_of_data 3542,115324
+extern void swap_in_global_binding 3543,115357
+extern void syms_of_cmds 3546,115441
+extern void keys_of_cmds 3547,115474
+extern Lisp_Object detect_coding_system 3550,115536
+extern void init_coding 3552,115689
+extern void init_coding_once 3553,115721
+extern void syms_of_coding 3554,115758
+extern ptrdiff_t chars_in_text 3557,115825
+extern ptrdiff_t multibyte_chars_in_text 3558,115892
+extern void syms_of_character 3559,115969
+extern void init_charset 3562,116037
+extern void init_charset_once 3563,116070
+extern void syms_of_charset 3564,116108
+extern void init_syntax_once 3569,116228
+extern void syms_of_syntax 3570,116265
+enum { NEXT_ALMOST_PRIME_LIMIT 3573,116326
+extern EMACS_INT next_almost_prime 3574,116365
+enum constype 3739,123817
+enum constype {CONSTYPE_HEAP,CONSTYPE_HEAP3739,123817
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE}CONSTYPE_PURE3739,123817
+extern Lisp_Object listn 3740,123863
+list2i 3745,124007
+list3i 3751,124116
+list4i 3757,124255
+extern Lisp_Object make_uninit_bool_vector 3763,124407
+extern Lisp_Object bool_vector_fill 3764,124463
+extern _Noreturn void string_overflow 3765,124527
+extern Lisp_Object make_string 3766,124573
+extern Lisp_Object make_formatted_string 3767,124631
+extern Lisp_Object make_multibyte_string 3779,124985
+extern Lisp_Object make_event_array 3780,125064
+extern Lisp_Object make_uninit_string 3781,125128
+extern Lisp_Object make_uninit_multibyte_string 3782,125179
+extern Lisp_Object make_string_from_bytes 3783,125251
+extern Lisp_Object make_specified_string 3784,125331
+extern Lisp_Object make_pure_string 3786,125423
+extern Lisp_Object make_pure_c_string 3787,125503
+build_pure_c_string 3792,125659
+build_string 3801,125864
+extern Lisp_Object pure_cons 3806,125942
+extern void make_byte_code 3807,125999
+extern struct Lisp_Vector *allocate_vector allocate_vector3808,126050
+make_uninit_vector 3820,126435
+make_uninit_sub_char_table 3833,126654
+extern struct Lisp_Vector *allocate_pseudovector
allocate_pseudovector3844,126963
+#define ALLOCATE_PSEUDOVECTOR(3850,127198
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(3858,127534
+extern bool gc_in_progress;3863,127735
+extern bool abort_on_gc;3864,127763
+extern Lisp_Object make_float 3865,127788
+extern void display_malloc_warning 3866,127828
+extern ptrdiff_t inhibit_garbage_collection 3867,127871
+extern Lisp_Object make_save_int_int_int 3868,127923
+extern Lisp_Object make_save_obj_obj_obj_obj 3869,127999
+extern Lisp_Object make_save_ptr 3871,128109
+extern Lisp_Object make_save_ptr_int 3872,128152
+extern Lisp_Object make_save_ptr_ptr 3873,128210
+extern Lisp_Object make_save_funcptr_ptr_obj 3874,128265
+extern Lisp_Object make_save_memory 3876,128361
+extern void free_save_value 3877,128425
+extern Lisp_Object build_overlay 3878,128468
+extern void free_marker 3879,128542
+extern void free_cons 3880,128581
+extern void init_alloc_once 3881,128625
+extern void init_alloc 3882,128661
+extern void syms_of_alloc 3883,128692
+extern struct buffer * allocate_buffer 3884,128726
+extern int valid_lisp_object_p 3885,128773
+extern int relocatable_string_data_p 3886,128819
+extern void check_cons_list 3888,128898
+INLINE void 3890,128940
+extern void *r_alloc r_alloc3895,129061
+#define FLOAT_TO_STRING_BUFSIZE 3927,130524
+extern int openp 3957,131673
+extern Lisp_Object string_to_number 3959,131783
+extern void map_obarray 3960,131846
+extern void dir_warning 3962,131960
+extern void init_obarray 3963,132013
+extern void init_lread 3964,132046
+extern void syms_of_lread 3965,132077
+intern 3968,132131
+intern_c_string 3974,132219
+extern EMACS_INT lisp_eval_depth;3980,132332
+extern Lisp_Object Vautoload_queue;3981,132366
+extern Lisp_Object Vrun_hooks;3982,132402
+extern Lisp_Object Vsignaling_function;3983,132433
+extern Lisp_Object inhibit_lisp_code;3984,132473
+extern struct handler *handlerlist;handlerlist3985,132511
+extern void run_hook 3994,132753
+extern void run_hook_with_args_2 3995,132789
+extern Lisp_Object run_hook_with_args 3996,132863
+extern _Noreturn void xsignal 3999,133022
+extern _Noreturn void xsignal0 4000,133080
+extern _Noreturn void xsignal1 4001,133126
+extern _Noreturn void xsignal2 4002,133185
+extern _Noreturn void xsignal3 4003,133257
+extern _Noreturn void signal_error 4005,133346
+extern Lisp_Object eval_sub 4006,133410
+extern Lisp_Object apply1 4007,133458
+extern Lisp_Object call0 4008,133512
+extern Lisp_Object call1 4009,133552
+extern Lisp_Object call2 4010,133605
+extern Lisp_Object call3 4011,133671
+extern Lisp_Object call4 4012,133750
+extern Lisp_Object call5 4013,133842
+extern Lisp_Object call6 4014,133947
+extern Lisp_Object call7 4015,134065
+extern Lisp_Object internal_catch 4016,134196
+extern Lisp_Object internal_lisp_condition_case 4017,134289
+extern Lisp_Object internal_condition_case 4018,134378
+extern Lisp_Object internal_condition_case_1 4019,134491
+extern Lisp_Object internal_condition_case_2 4020,134626
+extern Lisp_Object internal_condition_case_n4021,134787
+extern void specbind 4024,134983
+extern void record_unwind_protect 4025,135032
+extern void record_unwind_protect_ptr 4026,135105
+extern void record_unwind_protect_int 4027,135172
+extern void record_unwind_protect_void 4028,135233
+extern void record_unwind_protect_nothing 4029,135291
+extern void clear_unwind_protect 4030,135341
+extern void set_unwind_protect 4031,135387
+extern void set_unwind_protect_ptr 4032,135468
+extern Lisp_Object unbind_to 4033,135543
+extern _Noreturn void error 4034,135598
+fast_string_match_ignore_case 4136,140086
+extern ptrdiff_t fast_c_string_match_ignore_case 4141,140236
+extern ptrdiff_t fast_looking_at 4143,140333
+extern ptrdiff_t find_newline 4145,140472
+extern ptrdiff_t scan_newline 4147,140601
+extern ptrdiff_t scan_newline_from_point 4149,140704
+extern ptrdiff_t find_newline_no_quit 4150,140784
+extern ptrdiff_t find_before_next_newline 4152,140881
+extern void syms_of_search 4154,140979
+extern void clear_regexp_cache 4155,141014
+extern Lisp_Object Vminibuffer_list;4159,141084
+extern Lisp_Object last_minibuf_string;4160,141121
+extern Lisp_Object get_minibuffer 4161,141161
+extern void init_minibuf_once 4162,141208
+extern void syms_of_minibuf 4163,141246
+extern void syms_of_callint 4167,141313
+extern void syms_of_casefiddle 4171,141383
+extern void keys_of_casefiddle 4172,141422
+extern void init_casetab_once 4176,141492
+extern void syms_of_casetab 4177,141530
+extern Lisp_Object echo_message_buffer;4181,141598
+extern struct kboard *echo_kboard;echo_kboard4182,141638
+extern void cancel_echoing 4183,141673
+extern Lisp_Object last_undo_boundary;4184,141708
+extern bool input_pending;4185,141747
+extern sigjmp_buf return_to_command_loop;4187,141810
+extern Lisp_Object menu_bar_items 4189,141859
+extern Lisp_Object tool_bar_items 4190,141908
+extern void discard_mouse_events 4191,141964
+void handle_input_available_signal 4193,142025
+extern Lisp_Object pending_funcalls;4195,142074
+extern bool detect_input_pending 4196,142111
+extern bool detect_input_pending_ignore_squeezables 4197,142152
+extern bool detect_input_pending_run_timers 4198,142212
+extern void safe_run_hooks 4199,142264
+extern void cmd_error_internal 4200,142306
+extern Lisp_Object command_loop_1 4201,142366
+extern Lisp_Object read_menu_command 4202,142408
+extern Lisp_Object recursive_edit_1 4203,142453
+extern void record_auto_save 4204,142497
+extern void force_auto_save_soon 4205,142534
+extern void init_keyboard 4206,142575
+extern void syms_of_keyboard 4207,142609
+extern void keys_of_keyboard 4208,142646
+extern ptrdiff_t current_column 4211,142712
+extern void invalidate_current_column 4212,142752
+extern bool indented_beyond_p 4213,142798
+extern void syms_of_indent 4214,142863
+extern void store_frame_param 4217,142926
+extern void store_in_alist 4218,143000
+extern Lisp_Object do_switch_frame 4219,143070
+extern Lisp_Object get_frame_param 4220,143143
+extern void frames_discard_buffer 4221,143209
+extern void syms_of_frame 4222,143258
+extern char **initial_argv;initial_argv4225,143320
+extern int initial_argc;4226,143348
+extern bool display_arg;4228,143423
+extern Lisp_Object decode_env_path 4230,143455
+extern Lisp_Object empty_unibyte_string,4231,143526
+extern Lisp_Object empty_unibyte_string, empty_multibyte_string;4231,143526
+extern _Noreturn void terminate_due_to_signal 4232,143591
+extern Lisp_Object Vlibrary_cache;4234,143666
+void fixup_locale 4237,143727
+void synchronize_system_messages_locale 4238,143753
+void synchronize_system_time_locale 4239,143801
+INLINE void fixup_locale 4241,143851
+INLINE void synchronize_system_messages_locale 4242,143886
+INLINE void synchronize_system_time_locale 4243,143943
+extern void shut_down_emacs 4245,144003
+extern bool noninteractive;4248,144129
+extern bool no_site_lisp;4251,144221
+extern int daemon_pipe[daemon_pipe4256,144389
+#define IS_DAEMON 4257,144416
+#define DAEMON_RUNNING 4258,144456
+extern void *w32_daemon_event;w32_daemon_event4260,144524
+#define IS_DAEMON 4261,144555
+#define DAEMON_RUNNING 4262,144600
+extern bool fatal_error_in_progress;4266,144721
+extern bool inhibit_window_system;4269,144827
+extern bool running_asynch_code;4271,144920
+extern void kill_buffer_processes 4274,144983
+extern int wait_reading_process_output 4275,145032
+# define WAIT_READING_MAX 4281,145419
+# define WAIT_READING_MAX 4283,145491
+extern void add_timer_wait_descriptor 4286,145555
+extern void add_keyboard_wait_descriptor 4288,145607
+extern void delete_keyboard_wait_descriptor 4289,145655
+extern void add_gpm_wait_descriptor 4291,145722
+extern void delete_gpm_wait_descriptor 4292,145765
+extern void init_process_emacs 4294,145818
+extern void syms_of_process 4295,145857
+extern void setup_process_coding_systems 4296,145893
+extern int child_setup 4302,146013
+extern void init_callproc_1 4303,146081
+extern void init_callproc 4304,146117
+extern void set_initial_environment 4305,146151
+extern void syms_of_callproc 4306,146195
+extern Lisp_Object read_doc_string 4309,146258
+extern Lisp_Object get_doc_string 4310,146308
+extern void syms_of_doc 4311,146369
+extern int read_bytecode_char 4312,146401
+extern void syms_of_bytecode 4315,146470
+extern struct byte_stack *byte_stack_list;byte_stack_list4316,146507
+extern void mark_byte_stack 4318,146570
+extern void unmark_byte_stack 4320,146613
+extern Lisp_Object exec_byte_code 4321,146651
+extern void init_macros 4325,146801
+extern void syms_of_macros 4326,146833
+extern void truncate_undo_list 4329,146895
+extern void record_insert 4330,146945
+extern void record_delete 4331,146995
+extern void record_first_change 4332,147053
+extern void record_change 4333,147093
+extern void record_property_change 4334,147143
+extern void syms_of_undo 4337,147285
+extern void report_interval_modification 4340,147349
+extern void syms_of_menu 4343,147445
+extern void syms_of_xmenu 4346,147506
+extern char *get_current_dir_name get_current_dir_name4356,147708
+extern void stuff_char 4358,147757
+extern void init_foreground_group 4359,147790
+extern void sys_subshell 4360,147832
+extern void sys_suspend 4361,147865
+extern void discard_tty_input 4362,147897
+extern void init_sys_modes 4363,147935
+extern void reset_sys_modes 4364,147991
+extern void init_all_sys_modes 4365,148048
+extern void reset_all_sys_modes 4366,148087
+extern void child_setup_tty 4367,148127
+extern void setup_pty 4368,148162
+extern int set_window_size 4369,148191
+extern EMACS_INT get_random 4370,148235
+extern void seed_random 4371,148271
+extern void init_random 4372,148316
+extern void emacs_backtrace 4373,148348
+extern _Noreturn void emacs_abort 4374,148383
+extern void xputenv 4527,152697
+extern char *egetenv_internal egetenv_internal4529,152734
+egetenv 4532,152806
+extern void init_system_name 4539,153009
+#define eabs(4545,153302
+#define make_fixnum_or_float(4550,153435
+enum MAX_ALLOCA 4556,153686
+enum MAX_ALLOCA { MAX_ALLOCA 4556,153686
+extern void *record_xmalloc record_xmalloc4558,153731
+#define USE_SAFE_ALLOCA 4560,153797
+#define AVAIL_ALLOCA(4564,153930
+#define SAFE_ALLOCA(4568,154041
+#define SAFE_NALLOCA(4576,154382
+#define SAFE_ALLOCA_STRING(4590,154858
+#define SAFE_FREE(4598,155110
+#define SAFE_ALLOCA_LISP(4625,155688
+# define USE_STACK_LISP_OBJECTS 4652,156810
+# undef USE_STACK_LISP_OBJECTS4658,156976
+# define USE_STACK_LISP_OBJECTS 4659,157007
+enum { defined_GC_CHECK_STRING_BYTES 4663,157082
+enum { defined_GC_CHECK_STRING_BYTES 4665,157135
+union Aligned_Cons4670,157269
+ struct Lisp_Cons s;4672,157290
+ double d;4673,157312
+ double d; intmax_t i;4673,157312
+ double d; intmax_t i; void *p;p4673,157312
+union Aligned_String4676,157349
+ struct Lisp_String s;4678,157372
+ double d;4679,157396
+ double d; intmax_t i;4679,157396
+ double d; intmax_t i; void *p;p4679,157396
+ USE_STACK_CONS 4689,157704
+ USE_STACK_STRING 4691,157810
+#define STACK_CONS(4699,158147
+#define AUTO_CONS_EXPR(4701,158244
+#define AUTO_CONS(4709,158607
+#define AUTO_LIST1(4710,158678
+#define AUTO_LIST2(4712,158786
+#define AUTO_LIST3(4716,158941
+#define AUTO_LIST4(4720,159116
+extern const char *verify_ascii verify_ascii4730,159453
+# define verify_ascii(4732,159507
+#define AUTO_STRING(4740,159815
+#define FOR_EACH_TAIL(4752,160279
+#define FOR_EACH_ALIST_VALUE(4766,160770
+maybe_gc 4774,161057
+functionp 4784,161296
+
+c-src/machsyscalls.c,23
+#define SYSCALL(6,113
+
+c-src/machsyscalls.h,159
+SYSCALL (mach_msg_trap,1,0
+SYSCALL (mach_reply_port,13,314
+SYSCALL (mach_thread_self,18,377
+SYSCALL (mach_task_self,23,441
+SYSCALL (mach_host_self,28,503
+
+c-src/fail.c,30
+void (*prt_call(prt_call1,0
+
+c-src/h.h,2506
+ ELEM_I/ELEM_I3,15
+} Fails_t;5,85
+typedef void Lang_function 6,96
+void Asm_labels 7,127
+typedef struct tpcmd8,147
+#define ggg 10,170
+ } arg;13,198
+tpcmd;15,209
+typedef struct foobar2_ 16,216
+ fu int (*funcptr)funcptr17,242
+ long foo;18,279
+ char bar;19,293
+} foobar2;20,307
+ DEVICE_SWP,23,333
+ DEVICE_LAST24,349
+} bsp_DevId;25,365
+ struct constant_args 27,394
+ unsigned int burst;28,419
+ } constant;29,443
+} args;30,457
+typedef int *regset;regset31,465
+typedef int INT;32,486
+typedef union abc33,503
+ int def;35,523
+} ghi1;36,534
+typedef union abc 37,542
+ int def;38,562
+} ghi2;39,573
+typedef struct a 40,581
+} b;41,600
+#define c(42,605
+typedef struct an_extern_linkage
*an_extern_linkage_ptr;an_extern_linkage_ptr43,619
+typedef struct an_extern_linkage 44,676
+ kind;46,733
+ is_explicit;49,812
+ a_byte_boolean is_curly_brace_form;54,1009
+} an_extern_linkage;56,1054
+typedef struct pollfd pfdset[pfdset57,1075
+typedef union rtunion_def58,1119
+ int rtint;60,1149
+ char *rtstr;rtstr61,1164
+ struct rtx_def *rtx;rtx62,1181
+ } womboid 63,1206
+typedef union rtunion_def64,1220
+ int rtint;68,1250
+ char *rtstr;rtstr69,1263
+ struct rtx_def *rtxp;rtxp70,1278
+ struct rtx_def rtxnp;71,1302
+womboid75,1330
+enum {dog,dog81,1416
+enum {dog, cat}cat81,1416
+enum {dog, cat} animals;81,1416
+typedef void (_CALLBACK_ *signal_handler)signal_handler82,1441
+typedef void (_CALLBACK_ *signal_handler1)signal_handler183,1489
+/* comment */ #define ANSIC84,1538
+ #define ANSIC85,1566
+typedef void (proc)87,1588
+typedef void OperatorFun(88,1612
+typedef int f(89,1648
+struct my_struct 91,1691
+typedef struct my_struct my_typedef;93,1713
+typedef RETSIGTYPE (*signal_handler_t)signal_handler_t94,1750
+ Date 04 May 87 235311 PDT 96,1802
+typedef unsigned char unchar;99,1880
+typedef int X,100,1910
+typedef int X, Y,100,1910
+typedef int X, Y, Z;100,1910
+typedef mio mao;101,1931
+extern void ab(102,1948
+typedef struct a 103,1966
+typedef struct a { } b;103,1966
+typedef struct b104,1990
+} c;106,2009
+int (*oldhup)oldhup107,2014
+request (*oldhup)oldhup108,2031
+int extvar;109,2053
+#define tag1110,2065
+#define aaaaaa 111,2078
+#define bbbbbb\bbbbbb113,2102
+#define cccccccccc115,2125
+#define enter_critical_section 116,2144
+#define exit_critical_to_previous 117,2199
+#define UNDEFINED118,2259
+struct re_pattern_buffer 119,2277
+struct re_pattern_buffer { unsigned char *buffer;buffer119,2277
+
+cp-src/c.C,3629
+template <typename ipc3dIslandHierarchy,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned
numOfChannels,1,0
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned
numOfChannels, typename ipc3dLinkControl,1,0
+class CMultiChannelCSC19_3D2,151
+ ipc3dLinkControlSetup setup;CMultiChannelCSC19_3D::setup5,190
+ ipc3dCSC19<CMultiChannelCSC19_3D::ipc3dCSC196,227
+
ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl>
mcCSC;CMultiChannelCSC19_3D::mcCSC6,227
+ advTimer cscInitTime;CMultiChannelCSC19_3D::cscInitTime7,388
+ advTimer
cscSegmentationTime;CMultiChannelCSC19_3D::cscSegmentationTime8,418
+ advTimer outputTime;CMultiChannelCSC19_3D::outputTime9,456
+ void execute(CMultiChannelCSC19_3D::execute11,493
+static void my_function1(24,984
+int main 25,1026
+double base 26,1088
+operator += operator +=29,1174
+class TestRecord;31,1233
+typedef struct s1 32,1251
+ int counter;s1::counter33,1271
+} t1;34,1287
+struct s2 35,1293
+ int counter;s2::counter36,1305
+typedef struct s2 t2;38,1324
+class A 39,1346
+ enum { rosso,A::rosso40,1356
+ enum { rosso, giallo,A::giallo40,1356
+ enum { rosso, giallo, verde A::verde40,1356
+ enum { rosso, giallo, verde } colori;A::colori40,1356
+ const A& operator+(A::operator+41,1396
+const A& A::operator+(43,1431
+void operator+(44,1467
+void operator -(operator -45,1495
+void operator int(operator int46,1524
+A<int>* f(48,1556
+int f(49,1571
+int A<int>::f(f50,1590
+A<float,B<int> > A<B<float>,int>::f(f51,1618
+template <class C, int n> class AT 52,1668
+template <class C, int n> class AT { C t[AT::t52,1668
+class AU 53,1716
+class AU { T x;AU::x53,1716
+class B<B54,1735
+class B<int> { void f(B::f54,1735
+const A::B::T& abt 55,1765
+class A 56,1791
+class A { class B A::B56,1791
+class A { class B { int f(A::B::f56,1791
+class A 57,1826
+ int get_data(A::get_data58,1836
+ A operator+(A::operator+59,1860
+is_muldiv_operation(61,1887
+domain foo 68,1955
+ void f(foo::f69,1968
+void A::A(72,1989
+struct A 73,2004
+struct A { A(A::A73,2004
+struct B 74,2022
+struct B { B(B::B74,2022
+void B::B(75,2041
+void BE_Node::BE_Node(76,2056
+class BE_Node 77,2083
+struct foo 79,2102
+ int x;foo::x80,2115
+class test 86,2156
+ int f(test::f87,2169
+ int ff(test::ff89,2231
+ int g(test::g90,2254
+class AST_Root 92,2278
+class AST_Root;96,2327
+AST_ConcreteType::AST_ConcreteType(99,2393
+AST_Array::AST_Array(107,2532
+ void f(::f115,2733
+struct A 117,2753
+ ~A(A::~A118,2764
+A::~A(120,2777
+struct B 122,2789
+ ~B(B::~B123,2800
+enum {dog,::dog126,2817
+enum {dog, cat}::cat126,2817
+enum {dog, cat} animals;126,2817
+struct {int teats;::teats127,2842
+struct {int teats;} cow;127,2842
+class Boo 129,2868
+ enum {dog,Boo::dog130,2880
+ enum {dog, cat}Boo::cat130,2880
+ enum {dog, cat} animals;Boo::animals130,2880
+ struct {int treats;Boo::treats131,2909
+ struct {int treats;} cow;Boo::cow131,2909
+ int i,Boo::i132,2939
+ int i,a,Boo::a132,2939
+ int i,a,b;Boo::b132,2939
+ foo(Boo::foo133,2954
+ Boo(Boo::Boo137,2995
+ Boo(Boo::Boo138,3052
+Boo::Boo(141,3070
+typedef int should_see_this_one_enclosed_in_extern_C;149,3155
+typedef int
(*should_see_this_function_pointer)should_see_this_function_pointer153,3228
+typedef int should_see_this_array_type[should_see_this_array_type156,3310
+
+cp-src/abstract.C,11317
+Half_Container::Half_Container(34,703
+void Half_Container::SetPosition(45,941
+void Half_Container::SetDimensions(58,1259
+void Half_Container::SetFather(81,1697
+void Half_Container::SetCollapsed(87,1787
+Specification::Specification(98,1958
+void Specification::SetPosition(119,2453
+void Specification::SetDimensions(164,3742
+void Specification::SetFather(188,4616
+void Specification::SetPath(202,4908
+Coord Specification::GetMaxX(212,5125
+Coord Specification::GetMaxY(215,5174
+Process::Process(222,5298
+void Process::SetPosition(242,5697
+void Process::SetDimensions(291,6959
+void Process::SetFather(315,7913
+void Process::SetPath(326,8123
+Coord Process::GetMaxX(335,8323
+Coord Process::GetMaxY(338,8365
+Choice::Choice(346,8482
+void Choice::SetPosition(357,8698
+void Choice::SetDimensions(405,10053
+void Choice::ChangeH(466,12014
+void Choice::ChangeW(495,12947
+void Choice::SetFather(522,13700
+void Choice::SetTextual(532,13918
+void Choice::SetCollapsed(540,14041
+int Choice::Get_Textual_H(549,14168
+int Choice::Get_Textual_W(557,14408
+void Choice::SetTerminalPos(566,14615
+Stop::Stop(588,15087
+void Stop::SetPosition(595,15207
+void Stop::SetDimensions(605,15373
+void Stop::SetFather(644,16369
+void Stop::SetTextual(652,16537
+void Stop::SetCollapsed(655,16616
+Exit::Exit(667,16768
+void Exit::SetPosition(676,16935
+void Exit::SetDimensions(687,17164
+void Exit::SetFather(695,17350
+Exit_Bex::Exit_Bex(703,17476
+void Exit_Bex::SetPosition(713,17678
+void Exit_Bex::SetDimensions(740,18430
+void Exit_Bex::SetFather(798,20444
+void Exit_Bex::SetTextual(807,20646
+void Exit_Bex::SetCollapsed(814,20757
+NoExit::NoExit(826,20943
+void NoExit::SetPosition(835,21092
+void NoExit::SetDimensions(845,21266
+void NoExit::SetFather(852,21359
+ID_Place::ID_Place(861,21488
+void ID_Place::SetIdent(875,21745
+void ID_Place::SetPosition(886,21936
+void ID_Place::SetDimensions(897,22173
+void ID_Place::SetFather(928,23017
+ID_Place::~ID_Place(932,23073
+void ID_Place::SetVisible(935,23112
+void ID_Place::ClearID(941,23193
+ID_List::ID_List(953,23379
+void ID_List::SetPosition(967,23644
+void ID_List::SetDimensions(999,24385
+void ID_List::SetFather(1038,25456
+void ID_List::SetCollapsed(1047,25595
+void ID_List::HideMe(1056,25734
+void ID_List::SetRBubble(1065,25862
+void ID_List::SetAlignement(1073,25980
+int ID_List::GetCardinality(1082,26123
+void ID_List::SetVisible(1093,26291
+void ID_List::BuildSigSorts(1103,26518
+void ID_List::ClearIDs(1126,27081
+Id_Decl::Id_Decl(1139,27280
+void Id_Decl::SetPosition(1156,27659
+void Id_Decl::SetDimensions(1174,28016
+void Id_Decl::SetFather(1191,28417
+void Id_Decl::SetCollapsed(1200,28568
+Id_Decl_List::Id_Decl_List(1214,28799
+void Id_Decl_List::SetPosition(1227,29069
+void Id_Decl_List::SetDimensions(1245,29424
+void Id_Decl_List::SetFather(1262,29844
+void Id_Decl_List::SetCollapsed(1271,29988
+Comment::Comment(1286,30209
+void Comment::SetComment(1299,30446
+void Comment::SetFather(1317,30800
+void Comment::SetPosition(1321,30854
+void Comment::SetDimensions(1331,31031
+Comment::~Comment(1345,31265
+Comment_List::Comment_List(1352,31382
+void Comment_List::SetPosition(1362,31541
+void Comment_List::SetDimensions(1380,31860
+void Comment_List::SetFather(1392,32139
+Parallel::Parallel(1406,32360
+void Parallel::SetPosition(1417,32573
+void Parallel::SetDimensions(1473,34272
+void Parallel::SetTextual(1534,36167
+int Parallel::Get_Textual_W(1543,36313
+int Parallel::Get_Textual_H(1559,36722
+void Parallel::SetTerminalPos(1570,37191
+void Parallel::SetFather(1590,37698
+void Parallel::SetCollapsed(1601,37950
+Ident_Eq::Ident_Eq(1615,38177
+void Ident_Eq::SetPosition(1632,38546
+void Ident_Eq::SetDimensions(1647,38851
+void Ident_Eq::SetFather(1662,39191
+void Ident_Eq::SetCollapsed(1669,39295
+Ident_Eq_List::Ident_Eq_List(1681,39480
+void Ident_Eq_List::SetPosition(1694,39753
+void Ident_Eq_List::SetDimensions(1712,40111
+void Ident_Eq_List::SetCollapsed(1729,40538
+void Ident_Eq_List::SetFather(1738,40683
+Local_Def::Local_Def(1751,40904
+void Local_Def::SetPosition(1761,41102
+void Local_Def::SetDimensions(1791,41833
+void Local_Def::SetFather(1832,43262
+void Local_Def::SetCollapsed(1839,43370
+void Local_Def::SetTextual(1848,43504
+Hide::Hide(1860,43681
+void Hide::SetPosition(1871,43872
+void Hide::SetDimensions(1901,44569
+void Hide::SetFather(1944,45771
+void Hide::SetCollapsed(1951,45873
+void Hide::SetTextual(1961,46003
+Interl::Interl(1972,46175
+void Interl::SetPosition(1982,46361
+void Interl::SetDimensions(1993,46593
+void Interl::SetFather(2021,47103
+Syncr::Syncr(2031,47257
+void Syncr::SetPosition(2041,47438
+void Syncr::SetDimensions(2051,47609
+void Syncr::SetFather(2079,48153
+Enable::Enable(2090,48436
+void Enable::SetPosition(2102,48690
+void Enable::SetDimensions(2169,50473
+void Enable::SetTextual(2243,53017
+void Enable::SetTerminalPos(2251,53140
+int Enable::Get_Textual_W(2271,53720
+int Enable::Get_Textual_H(2282,53985
+void Enable::SetFather(2285,54104
+void Enable::SetCollapsed(2298,54418
+Disable::Disable(2314,54780
+void Disable::SetPosition(2325,55001
+void Disable::SetDimensions(2376,56251
+void Disable::SetFather(2436,58064
+void Disable::SetCollapsed(2446,58284
+void Disable::SetTextual(2455,58412
+void Disable::SetTerminalPos(2463,58536
+int Disable::Get_Textual_W(2479,58987
+int Disable::Get_Textual_H(2488,59190
+Gen_Paral::Gen_Paral(2500,59630
+void Gen_Paral::SetPosition(2513,59899
+void Gen_Paral::SetDimensions(2540,60659
+void Gen_Paral::SetFather(2590,62171
+void Gen_Paral::SetCollapsed(2597,62290
+Action_Pref::Action_Pref(2609,62583
+void Action_Pref::SetPosition(2620,62829
+void Action_Pref::SetDimensions(2669,63937
+void Action_Pref::SetFather(2724,65777
+void Action_Pref::SetCollapsed(2734,66010
+void Action_Pref::SetTextual(2743,66147
+Internal::Internal(2757,66484
+void Internal::SetPosition(2768,66658
+void Internal::SetDimensions(2778,66838
+void Internal::SetFather(2806,67442
+Communication::Communication(2816,67702
+void Communication::SetPosition(2827,67956
+void Communication::SetDimensions(2897,70390
+void Communication::SetFather(2935,71706
+void Communication::SetCollapsed(2942,71837
+void Communication::SetTextual(2949,71968
+NoGuard::NoGuard(2961,72262
+void NoGuard::SetPosition(2974,72462
+void NoGuard::SetDimensions(2984,72639
+void NoGuard::SetFather(2987,72678
+Guard::Guard(2996,72929
+void Guard::SetPosition(3008,73118
+void Guard::SetDimensions(3022,73428
+void Guard::SetFather(3044,73894
+void Guard::SetCollapsed(3050,73974
+NoExperiment::NoExperiment(3062,74258
+void NoExperiment::SetPosition(3075,74478
+void NoExperiment::SetDimensions(3085,74670
+void NoExperiment::SetFather(3088,74714
+Experiment::Experiment(3097,74978
+void Experiment::SetPosition(3110,75245
+void Experiment::SetDimensions(3128,75611
+void Experiment::SetFather(3150,76066
+void Experiment::SetCollapsed(3157,76188
+void Experiment::SetTextual(3165,76311
+Proc_Inst::Proc_Inst(3175,76476
+void Proc_Inst::SetPosition(3191,76777
+void Proc_Inst::SetDimensions(3236,77965
+void Proc_Inst::SetFather(3286,79596
+void Proc_Inst::SetCollapsed(3294,79739
+void Proc_Inst::SetTextual(3304,79909
+Value_Expr::Value_Expr(3316,80100
+void Value_Expr::SetPosition(3329,80327
+void Value_Expr::SetDimensions(3340,80572
+void Value_Expr::SetFather(3343,80614
+Value_Expr_List::Value_Expr_List(3351,80755
+void Value_Expr_List::SetPosition(3364,81042
+void Value_Expr_List::SetDimensions(3382,81406
+void Value_Expr_List::SetFather(3399,81830
+void Value_Expr_List::SetCollapsed(3408,81977
+Sum_Ident::Sum_Ident(3423,82203
+void Sum_Ident::SetPosition(3435,82445
+void Sum_Ident::SetDimensions(3466,83196
+void Sum_Ident::SetFather(3509,84540
+void Sum_Ident::SetCollapsed(3516,84653
+void Sum_Ident::SetTextual(3525,84793
+void Sum_Ident::SetTerminalPos(3532,84897
+Value::Value(3552,85432
+void Value::SetPosition(3569,85792
+void Value::SetDimensions(3583,86091
+void Value::SetFather(3606,86628
+void Value::SetCollapsed(3613,86731
+Term::Term(3626,86908
+void Term::SetPosition(3646,87323
+void Term::SetDimensions(3671,87942
+void Term::SetFather(3697,88599
+void Term::SetCollapsed(3705,88732
+Exit_Entry::Exit_Entry(3719,88947
+void Exit_Entry::SetPosition(3732,89176
+void Exit_Entry::SetDimensions(3743,89421
+void Exit_Entry::SetFather(3746,89463
+Exit_Entry_List::Exit_Entry_List(3754,89604
+void Exit_Entry_List::SetPosition(3766,89875
+void Exit_Entry_List::SetDimensions(3785,90304
+void Exit_Entry_List::SetFather(3802,90753
+void Exit_Entry_List::SetCollapsed(3811,90900
+Sum_Gate::Sum_Gate(3826,91125
+void Sum_Gate::SetPosition(3837,91363
+void Sum_Gate::SetDimensions(3873,92120
+void Sum_Gate::SetFather(3915,93438
+void Sum_Gate::SetCollapsed(3922,93549
+void Sum_Gate::SetTextual(3931,93687
+void Sum_Gate::SetTerminalPos(3938,93790
+Gate_Decl::Gate_Decl(3959,94421
+void Gate_Decl::SetPosition(3977,94900
+void Gate_Decl::SetDimensions(3995,95298
+void Gate_Decl::SetFather(4011,95694
+void Gate_Decl::SetCollapsed(4020,95871
+Gate_Decl_List::Gate_Decl_List(4034,96130
+void Gate_Decl_List::SetPosition(4047,96414
+void Gate_Decl_List::SetDimensions(4065,96779
+void Gate_Decl_List::SetFather(4082,97207
+void Gate_Decl_List::SetCollapsed(4091,97353
+Par::Par(4106,97572
+void Par::SetPosition(4126,97957
+void Par::SetDimensions(4174,99236
+void Par::SetFather(4226,100814
+void Par::SetCollapsed(4234,100943
+void Par::SetTextual(4245,101100
+Sort_Id_Exit::Sort_Id_Exit(4258,101329
+void Sort_Id_Exit::SetPosition(4270,101556
+void Sort_Id_Exit::SetDimensions(4283,101834
+void Sort_Id_Exit::SetFather(4297,102142
+void Sort_Id_Exit::SetCollapsed(4303,102228
+Equality::Equality(4314,102512
+Equality::Equality(4327,102736
+void Equality::SetPosition(4340,102987
+void Equality::SetDimensions(4357,103329
+void Equality::SetFather(4377,103720
+void Equality::SetCollapsed(4387,103858
+Guarded::Guarded(4401,104167
+void Guarded::SetPosition(4413,104384
+void Guarded::SetDimensions(4441,105084
+void Guarded::SetFather(4482,106273
+void Guarded::SetCollapsed(4489,106377
+void Guarded::SetTextual(4499,106509
+Exper_Off::Exper_Off(4510,106813
+void Exper_Off::SetPosition(4523,107035
+void Exper_Off::SetDimensions(4533,107220
+void Exper_Off::SetFather(4536,107261
+Exper_Off_List::Exper_Off_List(4544,107521
+void Exper_Off_List::SetPosition(4557,107802
+void Exper_Off_List::SetDimensions(4575,108167
+void Exper_Off_List::SetFather(4592,108594
+void Exper_Off_List::SetCollapsed(4601,108740
+Exclam::Exclam(4616,109087
+void Exclam::SetPosition(4629,109300
+void Exclam::SetDimensions(4641,109541
+void Exclam::SetFather(4655,109830
+void Exclam::SetCollapsed(4661,109912
+Query::Query(4673,110194
+void Query::SetPosition(4686,110399
+void Query::SetDimensions(4698,110636
+void Query::SetFather(4712,110918
+void Query::SetCollapsed(4718,110997
+Definition::Definition(4729,111279
+void Definition::SetPosition(4741,111448
+void Definition::SetDimensions(4752,111658
+void Definition::SetFather(4766,111896
+void Definition::SetPath(4777,112089
+Proc_List::Proc_List(4790,112374
+void Proc_List::SetPosition(4799,112505
+void Proc_List::SetDimensions(4809,112686
+void Proc_List::SetFather(4815,112767
+void Proc_List::SetPath(4824,112908
+char *Proc_List::GetPath(Proc_List::GetPath4832,113068
+
+cp-src/abstract.H,25321
+#define abstract_hh16,453
+class SignatureSorts;21,513
+class ID_Place:ID_Place23,536
+ char *str;ID_Place::str25,571
+ char RBubble;ID_Place::RBubble26,583
+ ID_Place(ID_Place::ID_Place31,637
+ void SetIdent(ID_Place::SetIdent32,650
+ void SetPosition(ID_Place::SetPosition33,675
+ void SetDimensions(ID_Place::SetDimensions34,708
+ void SetVisible(ID_Place::SetVisible35,735
+ void SetFather(ID_Place::SetFather36,759
+ void ClearID(ID_Place::ClearID37,789
+ virtual ~ID_Place(ID_Place::~ID_Place38,810
+ char *GetIdent(ID_Place::GetIdent41,857
+ void SetRBubble(ID_Place::SetRBubble42,891
+ char GetRBubble(ID_Place::GetRBubble43,934
+class ID_List:ID_List47,1012
+ ID_Place *elem;ID_List::elem49,1046
+ ID_List *next;ID_List::next50,1063
+ ID_List(ID_List::ID_List57,1134
+ void SetPosition(ID_List::SetPosition58,1167
+ void SetDimensions(ID_List::SetDimensions59,1200
+ void SetFather(ID_List::SetFather60,1227
+ ID_Place *GetElem(ID_List::GetElem61,1257
+ void HideMe(ID_List::HideMe62,1279
+ void SetCollapsed(ID_List::SetCollapsed63,1299
+ void SetRBubble(ID_List::SetRBubble64,1325
+ void BuildSigSorts(ID_List::BuildSigSorts65,1349
+ void SetVisible(ID_List::SetVisible66,1409
+ void SetAlignement(ID_List::SetAlignement67,1433
+ void ClearIDs(ID_List::ClearIDs68,1460
+ int GetCardinality(ID_List::GetCardinality69,1482
+class Id_Decl:Id_Decl73,1540
+ ID_List *id_list;Id_Decl::id_list75,1574
+ ID_Place *sort_id;Id_Decl::sort_id76,1593
+ Id_Decl(Id_Decl::Id_Decl81,1648
+ void SetPosition(Id_Decl::SetPosition82,1681
+ void SetDimensions(Id_Decl::SetDimensions83,1714
+ void SetFather(Id_Decl::SetFather84,1741
+ void SetCollapsed(Id_Decl::SetCollapsed85,1771
+class Id_Decl_List:Id_Decl_List89,1829
+ Id_Decl *elem;Id_Decl_List::elem91,1868
+ Id_Decl_List *next;Id_Decl_List::next92,1884
+ Id_Decl_List(Id_Decl_List::Id_Decl_List97,1945
+ void SetPosition(Id_Decl_List::SetPosition98,1987
+ void SetDimensions(Id_Decl_List::SetDimensions99,2020
+ void SetFather(Id_Decl_List::SetFather100,2047
+ void SetCollapsed(Id_Decl_List::SetCollapsed101,2077
+class Comment:Comment105,2140
+ char *comm;Comment::comm107,2174
+ Comment(Comment::Comment112,2222
+ Comment(Comment::Comment113,2234
+ void SetComment(Comment::SetComment114,2271
+ void SetPosition(Comment::SetPosition115,2297
+ void SetDimensions(Comment::SetDimensions116,2330
+ void SetFather(Comment::SetFather117,2357
+ virtual ~Comment(Comment::~Comment118,2387
+class Comment_List:Comment_List122,2440
+ Comment *elem;Comment_List::elem124,2479
+ Comment_List *next;Comment_List::next125,2495
+ Comment_List(Comment_List::Comment_List128,2525
+ void SetPosition(Comment_List::SetPosition129,2567
+ void SetDimensions(Comment_List::SetDimensions130,2600
+ void SetFather(Comment_List::SetFather131,2627
+class Value_Expr:Value_Expr135,2694
+ Value_Expr(Value_Expr::Value_Expr141,2769
+ void SetPosition(Value_Expr::SetPosition142,2784
+ void SetDimensions(Value_Expr::SetDimensions143,2817
+ void SetFather(Value_Expr::SetFather144,2844
+class Value_Expr_List:Value_Expr_List149,2911
+ Tree_Node *elem;Value_Expr_List::elem151,2953
+ Value_Expr_List *next;Value_Expr_List::next152,2971
+ Value_Expr_List(Value_Expr_List::Value_Expr_List157,3038
+ void SetPosition(Value_Expr_List::SetPosition158,3088
+ void SetDimensions(Value_Expr_List::SetDimensions159,3121
+ void SetFather(Value_Expr_List::SetFather160,3148
+ void SetCollapsed(Value_Expr_List::SetCollapsed161,3178
+class Exit_Entry:Exit_Entry165,3244
+ Exit_Entry(Exit_Entry::Exit_Entry171,3319
+ void SetPosition(Exit_Entry::SetPosition172,3334
+ void SetDimensions(Exit_Entry::SetDimensions173,3367
+ void SetFather(Exit_Entry::SetFather174,3394
+class Exit_Entry_List:Exit_Entry_List179,3460
+ Tree_Node *elem;Exit_Entry_List::elem181,3502
+ Exit_Entry_List *next;Exit_Entry_List::next182,3520
+ Exit_Entry_List(Exit_Entry_List::Exit_Entry_List187,3587
+ void SetPosition(Exit_Entry_List::SetPosition188,3637
+ void SetDimensions(Exit_Entry_List::SetDimensions189,3670
+ void SetFather(Exit_Entry_List::SetFather190,3697
+ void SetCollapsed(Exit_Entry_List::SetCollapsed191,3727
+class Exper_Off:Exper_Off195,3793
+ Exper_Off(Exper_Off::Exper_Off199,3838
+ void SetPosition(Exper_Off::SetPosition200,3852
+ void SetDimensions(Exper_Off::SetDimensions201,3885
+ void SetFather(Exper_Off::SetFather202,3912
+class Exper_Off_List:Exper_Off_List207,3977
+ Exper_Off *elem;Exper_Off_List::elem209,4018
+ Exper_Off_List *next;Exper_Off_List::next210,4043
+ Exper_Off_List(Exper_Off_List::Exper_Off_List215,4115
+ void SetPosition(Exper_Off_List::SetPosition216,4163
+ void SetDimensions(Exper_Off_List::SetDimensions217,4196
+ void SetFather(Exper_Off_List::SetFather218,4223
+ void SetCollapsed(Exper_Off_List::SetCollapsed219,4253
+class Gate_Decl:Gate_Decl223,4323
+ ID_List *gate_id_list1;Gate_Decl::gate_id_list1225,4359
+ ID_List *gate_id_list2;Gate_Decl::gate_id_list2226,4384
+ Gate_Decl(Gate_Decl::Gate_Decl231,4446
+ void SetPosition(Gate_Decl::SetPosition232,4480
+ void SetDimensions(Gate_Decl::SetDimensions233,4513
+ void SetFather(Gate_Decl::SetFather234,4540
+ void SetCollapsed(Gate_Decl::SetCollapsed235,4570
+class Gate_Decl_List:Gate_Decl_List239,4630
+ Gate_Decl *elem;Gate_Decl_List::elem241,4671
+ Gate_Decl_List *next;Gate_Decl_List::next242,4689
+ Gate_Decl_List(Gate_Decl_List::Gate_Decl_List247,4754
+ void SetPosition(Gate_Decl_List::SetPosition248,4802
+ void SetDimensions(Gate_Decl_List::SetDimensions249,4835
+ void SetFather(Gate_Decl_List::SetFather250,4862
+ void SetCollapsed(Gate_Decl_List::SetCollapsed251,4892
+class Ident_Eq:Ident_Eq255,4957
+ Id_Decl *iddecl;Ident_Eq::iddecl257,4992
+ Value_Expr *expr;Ident_Eq::expr258,5017
+ Ident_Eq(Ident_Eq::Ident_Eq263,5079
+ void SetPosition(Ident_Eq::SetPosition264,5116
+ void SetDimensions(Ident_Eq::SetDimensions265,5149
+ void SetFather(Ident_Eq::SetFather266,5176
+ void SetCollapsed(Ident_Eq::SetCollapsed267,5206
+class Ident_Eq_List:Ident_Eq_List271,5270
+ Ident_Eq *elem;Ident_Eq_List::elem273,5310
+ Ident_Eq_List *next;Ident_Eq_List::next274,5334
+ Ident_Eq_List(Ident_Eq_List::Ident_Eq_List279,5404
+ void SetPosition(Ident_Eq_List::SetPosition280,5449
+ void SetDimensions(Ident_Eq_List::SetDimensions281,5482
+ void SetFather(Ident_Eq_List::SetFather282,5509
+ void SetCollapsed(Ident_Eq_List::SetCollapsed283,5539
+class Half_Container:Half_Container287,5608
+ ID_List *gate_list;Half_Container::gate_list289,5649
+ Half_Container(Half_Container::Half_Container294,5712
+ void SetPosition(Half_Container::SetPosition295,5740
+ void SetDimensions(Half_Container::SetDimensions296,5773
+ void SetFather(Half_Container::SetFather297,5800
+ void SetCollapsed(Half_Container::SetCollapsed298,5830
+class Specification:Specification308,5954
+class Definition;Specification::Definition310,5994
+ Comment_List *com_list;Specification::com_list312,6013
+ ID_Place *ident;Specification::ident313,6045
+ ID_List *gate_list;Specification::gate_list314,6063
+ Id_Decl_List *id_decl_list;Specification::id_decl_list315,6084
+ Comment_List *com_list1;Specification::com_list1316,6113
+ Tree_Node *func;Specification::func317,6146
+ Data_List *dt_list;Specification::dt_list318,6164
+ Definition *def;Specification::def319,6185
+ Coord yl1,Specification::yl1320,6203
+ Coord yl1,yl2,Specification::yl2320,6203
+ Coord yl1,yl2,yl3;Specification::yl3320,6203
+ Coord MaxX,Specification::MaxX321,6223
+ Coord MaxX, MaxY;Specification::MaxY321,6223
+ Specification(Specification::Specification326,6283
+ void SetPosition(Specification::SetPosition328,6418
+ void SetDimensions(Specification::SetDimensions329,6451
+ void SetFather(Specification::SetFather330,6478
+ void SetPath(Specification::SetPath331,6508
+ Coord GetMaxX(Specification::GetMaxX332,6535
+ Coord GetMaxY(Specification::GetMaxY333,6553
+class Process:Process337,6609
+ Comment_List *com_list;Process::com_list339,6643
+ ID_Place *ident;Process::ident340,6675
+ ID_List *gate_list;Process::gate_list341,6693
+ Id_Decl_List *id_decl_list;Process::id_decl_list342,6714
+ Definition *def;Process::def343,6743
+ Tree_Node *func;Process::func344,6761
+ char nesting;Process::nesting345,6779
+ Coord yl1,Process::yl1346,6794
+ Coord yl1,yl2,Process::yl2346,6794
+ Coord yl1,yl2,yl3,Process::yl3346,6794
+ Coord yl1,yl2,yl3,ypath;Process::ypath346,6794
+ Coord MaxX,Process::MaxX347,6820
+ Coord MaxX, MaxY;Process::MaxY347,6820
+ Process(Process::Process352,6874
+ void SetPosition(Process::SetPosition353,6966
+ void SetDimensions(Process::SetDimensions354,6999
+ void SetFather(Process::SetFather355,7026
+ void SetPath(Process::SetPath356,7056
+ void NewBex(Process::NewBex357,7097
+ Coord GetMaxY(Process::GetMaxY359,7125
+ Coord GetMaxX(Process::GetMaxX360,7143
+ char GetNesting(Process::GetNesting363,7186
+class Proc_List:Proc_List367,7257
+ Process *elem;Proc_List::elem369,7293
+ Proc_List *next;Proc_List::next370,7316
+ Proc_List(Proc_List::Proc_List373,7350
+ void SetPosition(Proc_List::SetPosition374,7386
+ void SetDimensions(Proc_List::SetDimensions375,7419
+ void SetFather(Proc_List::SetFather376,7446
+ void SetPath(Proc_List::SetPath377,7476
+ char *GetPath(Proc_List::GetPath378,7517
+class Definition:Definition382,7574
+ Tree_Node *bex;Definition::bex384,7611
+ Proc_List *process_list;Definition::process_list385,7635
+ Data_List *data_list;Definition::data_list386,7668
+ char path[Definition::path387,7698
+ Definition(Definition::Definition390,7732
+ void SetPosition(Definition::SetPosition391,7784
+ void SetDimensions(Definition::SetDimensions392,7817
+ void SetFather(Definition::SetFather393,7844
+ void SetPath(Definition::SetPath394,7874
+ char *GetPath(Definition::GetPath397,7940
+class Exit:Exit407,8071
+ ID_List *sort_list;Exit::sort_list409,8102
+ Exit(Exit::Exit414,8155
+ void SetPosition(Exit::SetPosition415,8173
+ void SetDimensions(Exit::SetDimensions416,8220
+ void SetFather(Exit::SetFather417,8247
+class NoExit:NoExit421,8305
+ NoExit(NoExit::NoExit427,8372
+ void SetPosition(NoExit::SetPosition428,8383
+ void SetDimensions(NoExit::SetDimensions429,8416
+ void SetFather(NoExit::SetFather430,8443
+class Value:Value440,8560
+ ID_Place *ident;Value::ident442,8592
+ ID_Place *sort_id;Value::sort_id443,8610
+ Value(Value::Value448,8663
+ void SetPosition(Value::SetPosition449,8695
+ void SetDimensions(Value::SetDimensions450,8728
+ void SetFather(Value::SetFather451,8755
+ void SetCollapsed(Value::SetCollapsed452,8785
+class Term:Term456,8841
+ ID_Place *op_ident;Term::op_ident458,8872
+ Value_Expr_List *expr_list;Term::expr_list459,8893
+ ID_Place *sort_id;Term::sort_id460,8922
+ Term(Term::Term465,8974
+ void SetPosition(Term::SetPosition466,9024
+ void SetDimensions(Term::SetDimensions467,9057
+ void SetFather(Term::SetFather468,9084
+ void SetCollapsed(Term::SetCollapsed469,9114
+class Equality:Equality473,9169
+ Tree_Node *express1;Equality::express1475,9204
+ Tree_Node *express2;Equality::express2476,9233
+ Equality(Equality::Equality481,9298
+ Equality(Equality::Equality482,9311
+ void SetPosition(Equality::SetPosition483,9348
+ void SetDimensions(Equality::SetDimensions484,9381
+ void SetFather(Equality::SetFather485,9408
+ void SetCollapsed(Equality::SetCollapsed486,9438
+class Sort_Id_Exit:Sort_Id_Exit490,9504
+ ID_Place *sort_id;Sort_Id_Exit::sort_id492,9543
+ Sort_Id_Exit(Sort_Id_Exit::Sort_Id_Exit497,9603
+ void SetPosition(Sort_Id_Exit::SetPosition498,9630
+ void SetDimensions(Sort_Id_Exit::SetDimensions499,9663
+ void SetFather(Sort_Id_Exit::SetFather500,9690
+ void SetCollapsed(Sort_Id_Exit::SetCollapsed501,9720
+class NoGuard:NoGuard511,9837
+ NoGuard(NoGuard::NoGuard517,9906
+ void SetPosition(NoGuard::SetPosition518,9918
+ void SetDimensions(NoGuard::SetDimensions519,9951
+ void SetFather(NoGuard::SetFather520,9978
+class Guard:Guard524,10045
+ Equality *equality;Guard::equality526,10077
+ Guard(Guard::Guard531,10138
+ void SetPosition(Guard::SetPosition532,10158
+ void SetDimensions(Guard::SetDimensions533,10191
+ void SetFather(Guard::SetFather534,10218
+ void SetCollapsed(Guard::SetCollapsed535,10248
+class NoExperiment:NoExperiment545,10368
+ NoExperiment(NoExperiment::NoExperiment551,10447
+ void SetPosition(NoExperiment::SetPosition552,10464
+ void SetDimensions(NoExperiment::SetDimensions553,10497
+ void SetFather(NoExperiment::SetFather554,10524
+class Experiment:Experiment558,10591
+ Exper_Off_List *exp_offer_list;Experiment::exp_offer_list560,10628
+ Tree_Node *guard_option;Experiment::guard_option561,10668
+ Experiment(Experiment::Experiment566,10739
+ void SetPosition(Experiment::SetPosition567,10783
+ void SetDimensions(Experiment::SetDimensions568,10816
+ void SetFather(Experiment::SetFather569,10843
+ void SetTextual(Experiment::SetTextual570,10873
+ void SetCollapsed(Experiment::SetCollapsed571,10911
+ Tree_Node *GetGuard(Experiment::GetGuard574,10962
+class Exclam:Exclam578,11053
+ Tree_Node *value_exp;Exclam::value_exp580,11086
+ Exclam(Exclam::Exclam585,11150
+ void SetPosition(Exclam::SetPosition586,11172
+ void SetDimensions(Exclam::SetDimensions587,11205
+ void SetFather(Exclam::SetFather588,11232
+ void SetCollapsed(Exclam::SetCollapsed589,11262
+class Query:Query593,11324
+ Id_Decl *id_decl;Query::id_decl595,11356
+ Query(Query::Query600,11415
+ void SetPosition(Query::SetPosition601,11434
+ void SetDimensions(Query::SetDimensions602,11467
+ void SetFather(Query::SetFather603,11494
+ void SetCollapsed(Query::SetCollapsed604,11524
+class Internal:Internal614,11643
+ Internal(Internal::Internal620,11714
+ void SetPosition(Internal::SetPosition621,11727
+ void SetDimensions(Internal::SetDimensions622,11760
+ void SetFather(Internal::SetFather623,11787
+class Communication:Communication627,11854
+ ID_Place *gate_identifier;Communication::gate_identifier629,11894
+ Tree_Node
*experiment_option;Communication::experiment_option630,11922
+ Coord xl,Communication::xl631,11960
+ Coord xl, yl;Communication::yl631,11960
+ int hr;Communication::hr632,11982
+ Communication(Communication::Communication637,12039
+ void SetPosition(Communication::SetPosition638,12080
+ void SetDimensions(Communication::SetDimensions639,12113
+ void SetFather(Communication::SetFather640,12140
+ void SetTextual(Communication::SetTextual641,12170
+ void SetCollapsed(Communication::SetCollapsed642,12208
+class Gen_Paral:Gen_Paral652,12337
+ ID_List *gate_id_list;Gen_Paral::gate_id_list654,12373
+ Coord Xclose;Gen_Paral::Xclose655,12404
+ char border;Gen_Paral::border656,12419
+ Gen_Paral(Gen_Paral::Gen_Paral661,12470
+ void SetPosition(Gen_Paral::SetPosition662,12493
+ void SetDimensions(Gen_Paral::SetDimensions663,12526
+ void SetFather(Gen_Paral::SetFather664,12553
+ void SetCollapsed(Gen_Paral::SetCollapsed665,12583
+ void HideGate(Gen_Paral::HideGate668,12634
+class Interl:Interl672,12730
+ Interl(Interl::Interl678,12797
+ void SetPosition(Interl::SetPosition679,12808
+ void SetDimensions(Interl::SetDimensions680,12841
+ void SetFather(Interl::SetFather681,12868
+class Syncr:Syncr685,12929
+ Syncr(Syncr::Syncr691,12994
+ void SetPosition(Syncr::SetPosition692,13004
+ void SetDimensions(Syncr::SetDimensions693,13037
+ void SetFather(Syncr::SetFather694,13064
+class Action_Pref:Action_Pref704,13185
+ Tree_Node *action_den;Action_Pref::action_den706,13223
+ Tree_Node *bex;Action_Pref::bex707,13254
+ char havebox;Action_Pref::havebox708,13278
+ char border;Action_Pref::border709,13293
+ Action_Pref(Action_Pref::Action_Pref714,13346
+ void SetPosition(Action_Pref::SetPosition715,13386
+ void SetDimensions(Action_Pref::SetDimensions716,13419
+ void SetFather(Action_Pref::SetFather717,13446
+ void SetTextual(Action_Pref::SetTextual718,13476
+ void SetCollapsed(Action_Pref::SetCollapsed719,13514
+class Enable:Enable723,13577
+ Tree_Node *bex1,Enable::bex1725,13610
+ Tree_Node *bex1, *bex2;Enable::bex2725,13610
+ ID_List *gate_id_list;Enable::gate_id_list726,13642
+ Coord xl,Enable::xl727,13666
+ Coord xl, yl1,Enable::yl1727,13666
+ Coord xl, yl1, xl2,Enable::xl2727,13666
+ Coord xl, yl1, xl2, yl2,Enable::yl2727,13666
+ Coord xl, yl1, xl2, yl2, xid,Enable::xid727,13666
+ Coord xl, yl1, xl2, yl2, xid, yid,Enable::yid727,13666
+ Coord xl, yl1, xl2, yl2, xid, yid, Yclose;Enable::Yclose727,13666
+ char havebox;Enable::havebox728,13717
+ char border;Enable::border729,13732
+ Enable(Enable::Enable734,13780
+ void SetPosition(Enable::SetPosition735,13826
+ void SetDimensions(Enable::SetDimensions736,13859
+ void SetFather(Enable::SetFather737,13886
+ void SetTextual(Enable::SetTextual738,13916
+ int Get_Textual_H(Enable::Get_Textual_H739,13954
+ int Get_Textual_W(Enable::Get_Textual_W740,13980
+ void SetTerminalPos(Enable::SetTerminalPos741,14006
+ void SetCollapsed(Enable::SetCollapsed742,14034
+class Disable:Disable746,14097
+ Tree_Node *bex1,Disable::bex1748,14131
+ Tree_Node *bex1, *bex2;Disable::bex2748,14131
+ Coord xl,Disable::xl749,14163
+ Coord xl, yl,Disable::yl749,14163
+ Coord xl, yl, yl2;Disable::yl2749,14163
+ char havebox;Disable::havebox750,14190
+ char border;Disable::border751,14205
+ Disable(Disable::Disable756,14254
+ void SetPosition(Disable::SetPosition757,14290
+ void SetDimensions(Disable::SetDimensions758,14323
+ void SetFather(Disable::SetFather759,14350
+ void SetTextual(Disable::SetTextual760,14380
+ int Get_Textual_H(Disable::Get_Textual_H761,14418
+ int Get_Textual_W(Disable::Get_Textual_W762,14444
+ void SetTerminalPos(Disable::SetTerminalPos763,14470
+ void SetCollapsed(Disable::SetCollapsed764,14498
+class Choice:Choice768,14561
+ Tree_Node *bex1,Choice::bex1770,14594
+ Tree_Node *bex1, *bex2;Choice::bex2770,14594
+ Coord xl,Choice::xl771,14619
+ Coord xl, yl,Choice::yl771,14619
+ Coord xl, yl, yl1;Choice::yl1771,14619
+ char havebox;Choice::havebox772,14639
+ int delta;Choice::delta773,14654
+ char border;Choice::border774,14666
+ Choice(Choice::Choice779,14714
+ void SetPosition(Choice::SetPosition780,14749
+ void SetDimensions(Choice::SetDimensions781,14782
+ void SetFather(Choice::SetFather782,14809
+ void SetTextual(Choice::SetTextual783,14839
+ void SetCollapsed(Choice::SetCollapsed784,14877
+ int Get_Textual_H(Choice::Get_Textual_H785,14903
+ int Get_Textual_W(Choice::Get_Textual_W786,14929
+ void SetTerminalPos(Choice::SetTerminalPos787,14955
+ void ChangeH(Choice::ChangeH788,14983
+ void ChangeW(Choice::ChangeW789,15003
+class Stop:Stop793,15054
+ char havebox;Stop::havebox795,15085
+ char border;Stop::border796,15100
+ Stop(Stop::Stop801,15146
+ void SetPosition(Stop::SetPosition802,15155
+ void SetDimensions(Stop::SetDimensions803,15188
+ void SetFather(Stop::SetFather804,15215
+ void SetTextual(Stop::SetTextual805,15245
+ void SetCollapsed(Stop::SetCollapsed806,15283
+class Exit_Bex:Exit_Bex810,15338
+ Exit_Entry_List *entry_list;Exit_Bex::entry_list812,15373
+ Coord Xopen,Exit_Bex::Xopen813,15404
+ Coord Xopen, Xclose;Exit_Bex::Xclose813,15404
+ char havebox;Exit_Bex::havebox814,15426
+ char border;Exit_Bex::border815,15441
+ Exit_Bex(Exit_Bex::Exit_Bex820,15491
+ void SetPosition(Exit_Bex::SetPosition821,15521
+ void SetDimensions(Exit_Bex::SetDimensions822,15554
+ void SetFather(Exit_Bex::SetFather823,15581
+ void SetTextual(Exit_Bex::SetTextual824,15611
+ void SetCollapsed(Exit_Bex::SetCollapsed825,15649
+class Hide:Hide829,15707
+ ID_List *gate_list;Hide::gate_list831,15738
+ Tree_Node *bex;Hide::bex832,15759
+ char border;Hide::border833,15776
+ Coord yl;Hide::yl834,15790
+ Hide(Hide::Hide839,15833
+ void SetPosition(Hide::SetPosition840,15864
+ void SetDimensions(Hide::SetDimensions841,15897
+ void SetFather(Hide::SetFather842,15924
+ void SetTextual(Hide::SetTextual843,15954
+ void SetCollapsed(Hide::SetCollapsed844,15992
+class Guarded:Guarded848,16047
+ Equality *equality;Guarded::equality850,16081
+ Tree_Node *bex;Guarded::bex851,16109
+ Coord Xclose;Guarded::Xclose852,16133
+ char border;Guarded::border853,16148
+ Guarded(Guarded::Guarded858,16197
+ void SetPosition(Guarded::SetPosition859,16232
+ void SetDimensions(Guarded::SetDimensions860,16265
+ void SetFather(Guarded::SetFather861,16292
+ void SetTextual(Guarded::SetTextual862,16322
+ void SetCollapsed(Guarded::SetCollapsed863,16360
+class Proc_Inst:Proc_Inst867,16425
+ ID_List *gate_list;Proc_Inst::gate_list869,16461
+ ID_Place *ident;Proc_Inst::ident870,16482
+ Value_Expr_List *value_expr_list;Proc_Inst::value_expr_list871,16500
+ Coord yp,Proc_Inst::yp872,16535
+ Coord yp, yl1,Proc_Inst::yl1872,16535
+ Coord yp, yl1, Xopen,Proc_Inst::Xopen872,16535
+ Coord yp, yl1, Xopen, Xclose;Proc_Inst::Xclose872,16535
+ int hp;Proc_Inst::hp873,16566
+ char border;Proc_Inst::border874,16575
+ Proc_Inst(Proc_Inst::Proc_Inst879,16626
+ void SetPosition(Proc_Inst::SetPosition880,16681
+ void SetDimensions(Proc_Inst::SetDimensions881,16714
+ void SetFather(Proc_Inst::SetFather882,16741
+ void SetTextual(Proc_Inst::SetTextual883,16771
+ void SetCollapsed(Proc_Inst::SetCollapsed884,16809
+class Parallel:Parallel888,16870
+ Tree_Node *bex1,Parallel::bex1890,16905
+ Tree_Node *bex1, *bex2,Parallel::bex2890,16905
+ Tree_Node *bex1, *bex2, *oper;Parallel::oper890,16905
+ Coord xl,Parallel::xl891,16937
+ Coord xl, yl,Parallel::yl891,16937
+ Coord xl, yl, yl1;Parallel::yl1891,16937
+ char havebox;Parallel::havebox892,16957
+ int delta;Parallel::delta893,16972
+ char border;Parallel::border894,16984
+ Parallel(Parallel::Parallel899,17034
+ void SetPosition(Parallel::SetPosition900,17084
+ void SetDimensions(Parallel::SetDimensions901,17117
+ void SetFather(Parallel::SetFather902,17144
+ void SetTextual(Parallel::SetTextual903,17174
+ int Get_Textual_W(Parallel::Get_Textual_W904,17212
+ int Get_Textual_H(Parallel::Get_Textual_H905,17238
+ void SetTerminalPos(Parallel::SetTerminalPos906,17264
+ void SetCollapsed(Parallel::SetCollapsed907,17292
+ char GetOperType(Parallel::GetOperType910,17343
+class Local_Def:Local_Def914,17429
+ Ident_Eq_List *equa_list;Local_Def::equa_list916,17465
+ Tree_Node *bex;Local_Def::bex917,17492
+ Coord yl;Local_Def::yl918,17509
+ char border;Local_Def::border919,17520
+ Local_Def(Local_Def::Local_Def924,17571
+ void SetPosition(Local_Def::SetPosition925,17613
+ void SetDimensions(Local_Def::SetDimensions926,17646
+ void SetFather(Local_Def::SetFather927,17673
+ void SetTextual(Local_Def::SetTextual928,17703
+ void SetCollapsed(Local_Def::SetCollapsed929,17741
+class Par:Par933,17801
+ Gate_Decl_List *gate_decl_list;Par::gate_decl_list935,17831
+ Tree_Node *oper,Par::oper936,17864
+ Tree_Node *oper, *bex;Par::bex936,17864
+ Coord xl,Par::xl937,17888
+ Coord xl, yl;Par::yl937,17888
+ char border;Par::border938,17903
+ Par(Par::Par943,17948
+ void SetPosition(Par::SetPosition944,17998
+ void SetDimensions(Par::SetDimensions945,18031
+ void SetFather(Par::SetFather946,18058
+ void SetTextual(Par::SetTextual947,18088
+ void SetCollapsed(Par::SetCollapsed948,18126
+class Sum_Gate:Sum_Gate952,18180
+ Gate_Decl_List *gate_decl_list;Sum_Gate::gate_decl_list954,18215
+ Tree_Node *bex;Sum_Gate::bex955,18248
+ Coord xl,Sum_Gate::xl956,18265
+ Coord xl, yl,Sum_Gate::yl956,18265
+ Coord xl, yl, Xch,Sum_Gate::Xch956,18265
+ Coord xl, yl, Xch, Ych,Sum_Gate::Ych956,18265
+ Coord xl, yl, Xch, Ych, Xclose,Sum_Gate::Xclose956,18265
+ Coord xl, yl, Xch, Ych, Xclose, Yclose;Sum_Gate::Yclose956,18265
+ char border;Sum_Gate::border957,18306
+ Sum_Gate(Sum_Gate::Sum_Gate962,18356
+ void SetPosition(Sum_Gate::SetPosition963,18398
+ void SetDimensions(Sum_Gate::SetDimensions964,18431
+ void SetFather(Sum_Gate::SetFather965,18458
+ void SetTextual(Sum_Gate::SetTextual966,18488
+ void SetTerminalPos(Sum_Gate::SetTerminalPos967,18526
+ void SetCollapsed(Sum_Gate::SetCollapsed968,18554
+class Sum_Ident:Sum_Ident972,18613
+ Id_Decl_List *ident_decl_list;Sum_Ident::ident_decl_list974,18649
+ Tree_Node *bex;Sum_Ident::bex975,18681
+ Coord xl,Sum_Ident::xl976,18698
+ Coord xl, yl,Sum_Ident::yl976,18698
+ Coord xl, yl, Xch,Sum_Ident::Xch976,18698
+ Coord xl, yl, Xch, Ych,Sum_Ident::Ych976,18698
+ Coord xl, yl, Xch, Ych, Xclose,Sum_Ident::Xclose976,18698
+ Coord xl, yl, Xch, Ych, Xclose, Yclose;Sum_Ident::Yclose976,18698
+ char border;Sum_Ident::border977,18739
+ Sum_Ident(Sum_Ident::Sum_Ident982,18790
+ void SetPosition(Sum_Ident::SetPosition983,18831
+ void SetDimensions(Sum_Ident::SetDimensions984,18864
+ void SetFather(Sum_Ident::SetFather985,18891
+ void SetTextual(Sum_Ident::SetTextual986,18921
+ void SetTerminalPos(Sum_Ident::SetTerminalPos987,18959
+ void SetCollapsed(Sum_Ident::SetCollapsed988,18987
+
+cp-src/cfront.H,18434
+extern bit old_fct_accepted;28,897
+extern bit fct_void;32,1028
+extern char* prog_name;42,1297
+extern int inline_restr;43,1351
+extern bit emode;44,1410
+extern Pname name_free;47,1457
+extern Pexpr expr_free;48,1496
+extern Pstmt stmt_free;49,1520
+extern int Nspy;52,1569
+extern int Nfile,53,1586
+extern int Nfile, Nline,53,1586
+extern int Nfile, Nline, Ntoken,53,1586
+extern int Nfile, Nline, Ntoken, Nname,53,1586
+extern int Nfile, Nline, Ntoken, Nname, Nfree_store,53,1586
+extern int Nfile, Nline, Ntoken, Nname, Nfree_store, Nalloc,53,1586
+extern int Nfile, Nline, Ntoken, Nname, Nfree_store, Nalloc, Nfree;53,1586
+extern int Nn,54,1654
+extern int Nn, Nbt,54,1654
+extern int Nn, Nbt, Nt,54,1654
+extern int Nn, Nbt, Nt, Ne,54,1654
+extern int Nn, Nbt, Nt, Ne, Ns,54,1654
+extern int Nn, Nbt, Nt, Ne, Ns, Nstr,54,1654
+extern int Nn, Nbt, Nt, Ne, Ns, Nstr, Nc,54,1654
+extern int Nn, Nbt, Nt, Ne, Ns, Nstr, Nc, Nl;54,1654
+extern int NFn,55,1700
+extern int NFn, NFtn,55,1700
+extern int NFn, NFtn, NFpv,55,1700
+extern int NFn, NFtn, NFpv, NFbt,55,1700
+extern int NFn, NFtn, NFpv, NFbt, NFf,55,1700
+extern int NFn, NFtn, NFpv, NFbt, NFf, NFs,55,1700
+extern int NFn, NFtn, NFpv, NFbt, NFf, NFs, NFc,55,1700
+extern int NFn, NFtn, NFpv, NFbt, NFf, NFs, NFc, NFe,55,1700
+extern int NFn, NFtn, NFpv, NFbt, NFf, NFs, NFc, NFe, NFl;55,1700
+extern TOK lex(57,1760
+extern Pname syn(58,1778
+extern void init_print(60,1799
+extern void init_lex(61,1847
+extern void int_syn(62,1871
+extern void ext(63,1894
+extern char* make_name(65,1917
+struct loc 67,1948
+ short file;loc::file69,1988
+ short line;loc::line70,2036
+ void put(loc::put72,2062
+ void putline(loc::putline73,2080
+extern Loc curloc;77,2108
+extern int curr_file;78,2127
+struct ea 80,2150
+ void* p;ea::p82,2224
+ int i;ea::i83,2235
+ ea(ea::ea86,2249
+ ea(ea::ea87,2275
+ ea(ea::ea88,2301
+ ea(ea::ea89,2310
+extern ea* ea0;92,2332
+overload error;94,2349
+int error(95,2365
+int error(96,2437
+int error(97,2515
+int error(98,2592
+extern int error_count;101,2689
+extern bit debug;102,2713
+extern int vtbl_opt;103,2731
+extern FILE* out_file;104,2752
+extern FILE* in_file;105,2775
+extern char scan_started;106,2797
+extern bit warn;107,2823
+extern int br_level;110,2848
+extern int bl_level;111,2869
+extern Ptable ktbl;112,2890
+extern Ptable gtbl;113,2941
+extern char* oper_name(114,2978
+extern Pclass ccl;115,3007
+extern Pbase defa_type;116,3026
+extern Pbase moe_type;117,3050
+extern Pstmt Cstmt;120,3087
+extern Pname Cdcl;121,3135
+extern void put_dcl_context(122,3194
+extern Ptable any_tbl;124,3226
+extern Pbase any_type;125,3287
+extern Pbase int_type;128,3318
+extern Pbase char_type;129,3341
+extern Pbase short_type;130,3365
+extern Pbase long_type;131,3390
+extern Pbase uint_type;132,3414
+extern Pbase float_type;133,3438
+extern Pbase double_type;134,3463
+extern Pbase void_type;135,3489
+extern Pbase uchar_type;138,3527
+extern Pbase ushort_type;139,3552
+extern Pbase ulong_type;140,3578
+extern Ptype Pchar_type;141,3603
+extern Ptype Pint_type;142,3628
+extern Ptype Pfctvec_type;143,3652
+extern Ptype Pfctchar_type;144,3679
+extern Ptype Pvoid_type;145,3707
+extern Pbase zero_type;146,3732
+extern int byte_offset;148,3757
+extern int bit_offset;149,3781
+extern int max_align;150,3804
+extern int stack_size;151,3826
+extern int enum_count;152,3849
+extern int const_save;153,3872
+extern Pexpr dummy;156,3903
+extern Pexpr zero;157,3950
+extern Pexpr one;158,3969
+extern Pname sta_name;159,3987
+#define DEL(161,4040
+#define PERM(162,4092
+#define UNPERM(163,4123
+struct node 165,4157
+ TOK base;node::base166,4171
+ TOK n_key;node::n_key167,4182
+ bit permanent;node::permanent168,4226
+extern Pclass Ebase,172,4259
+extern Pclass Ebase, Epriv;172,4259
+struct table 175,4321
+ char init_stat;table::init_stat177,4406
+ short size;table::size181,4571
+ short hashsize;table::hashsize182,4584
+ short free_slot;table::free_slot183,4601
+ Pname* entries;table::entries184,4651
+ short* hashtbl;table::hashtbl185,4668
+ Pstmt real_block;table::real_block186,4685
+ Ptable next;table::next189,4787
+ Pname t_name;table::t_name190,4834
+ table(table::table192,4875
+ Pname look(table::look194,4906
+ Pname insert(table::insert195,4931
+ void grow(table::grow197,4971
+ void set_scope(table::set_scope198,4988
+ void set_name(table::set_name199,5029
+ Pname get_mem(table::get_mem200,5070
+ int max(table::max201,5091
+ void dcl_print(table::dcl_print202,5129
+ Pname lookc(table::lookc203,5155
+ Pexpr find_name(table::find_name204,5181
+ void del(table::del205,5218
+extern bit Nold;210,5255
+extern bit vec_const,211,5272
+extern bit vec_const, fct_const;211,5272
+extern void restore(214,5313
+extern void set_scope(215,5336
+extern Plist modified_tn;216,5366
+extern Pbase start_cl(217,5392
+extern void end_cl(218,5434
+extern Pbase end_enum(219,5456
+extern bit new_type;224,5581
+extern Pname cl_obj_vec;225,5602
+extern Pname eobj;226,5627
+#define DEFINED 230,5655
+#define SIMPLIFIED 231,5712
+#define DEF_SEEN 232,5754
+#define IN_ERROR 234,5859
+struct type 236,5881
+ bit defined;type::defined237,5902
+ char* signature(type::signature240,6005
+ void print(type::print242,6043
+ void dcl_print(type::dcl_print243,6058
+ void base_print(type::base_print244,6082
+ void del(type::del245,6102
+ Pname is_cl_obj(type::is_cl_obj247,6116
+ int is_ref(type::is_ref248,6158
+ void dcl(type::dcl249,6173
+ int tsizeof(type::tsizeof250,6192
+ bit tconst(type::tconst251,6208
+ TOK set_const(type::set_const252,6223
+ int align(type::align253,6244
+ TOK kind(type::kind254,6258
+ TOK integral(type::integral255,6278
+ TOK numeric(type::numeric256,6324
+ TOK num_ptr(type::num_ptr257,6370
+ bit vec_type(type::vec_type258,6416
+ bit check(type::check259,6433
+ Ptype deref(type::deref260,6457
+ Pptr addrof(type::addrof261,6473
+struct enumdef 265,6500
+ bit e_body;enumdef::e_body266,6535
+ short no_of_enumerators;enumdef::no_of_enumerators267,6548
+ Pname mem;enumdef::mem268,6574
+ enumdef(enumdef::enumdef269,6586
+ void print(enumdef::print271,6641
+ void dcl_print(enumdef::dcl_print272,6656
+ void dcl(enumdef::dcl273,6680
+ void simpl(enumdef::simpl274,6706
+struct classdef 278,6732
+ bit pubbase;classdef::pubbase279,6769
+ bit c_body;classdef::c_body280,6783
+ TOK csu;classdef::csu281,6830
+ char obj_align;classdef::obj_align282,6877
+ char bit_ass;classdef::bit_ass283,6894
+ char virt_count;classdef::virt_count284,6943
+ Pname clbase;classdef::clbase286,7033
+ char* string;classdef::string287,7063
+ Pname mem_list;classdef::mem_list288,7099
+ Ptable memtbl;classdef::memtbl289,7116
+ int obj_size;classdef::obj_size290,7132
+ int real_size;classdef::real_size291,7147
+ Plist friend_list;classdef::friend_list292,7196
+ Pname pubdef;classdef::pubdef293,7216
+ Plist tn_list;classdef::tn_list294,7231
+ Pclass in_class;classdef::in_class295,7289
+ Ptype this_type;classdef::this_type296,7335
+ Pname* virt_init;classdef::virt_init297,7353
+ Pname itor;classdef::itor298,7412
+ Pname conv;classdef::conv299,7450
+ classdef(classdef::classdef301,7490
+ TOK is_simple(classdef::is_simple302,7506
+ void print(classdef::print304,7568
+ void dcl_print(classdef::dcl_print305,7583
+ void simpl(classdef::simpl306,7607
+ void print_members(classdef::print_members308,7623
+ void dcl(classdef::dcl309,7646
+ bit has_friend(classdef::has_friend310,7672
+ bit baseof(classdef::baseof311,7696
+ bit baseof(classdef::baseof312,7716
+ Pname has_oper(classdef::has_oper313,7737
+ Pname has_ctor(classdef::has_ctor314,7759
+ Pname has_dtor(classdef::has_dtor315,7813
+ Pname has_itor(classdef::has_itor316,7867
+ Pname has_ictor(classdef::has_ictor317,7902
+struct basetype 323,7935
+ bit b_unsigned;basetype::b_unsigned334,8195
+ bit b_const;basetype::b_const335,8212
+ bit b_typedef;basetype::b_typedef336,8226
+ bit b_inline;basetype::b_inline337,8242
+ bit b_virtual;basetype::b_virtual338,8257
+ bit b_short;basetype::b_short339,8273
+ bit b_long;basetype::b_long340,8287
+ char b_bits;basetype::b_bits341,8300
+ char b_offset;basetype::b_offset342,8345
+ TOK b_sto;basetype::b_sto343,8384
+ Pname b_name;basetype::b_name344,8433
+ Ptable b_table;basetype::b_table345,8478
+ Pexpr b_field;basetype::b_field346,8525
+ Pname b_xname;basetype::b_xname347,8582
+ Ptype b_fieldtype;basetype::b_fieldtype348,8615
+ basetype(basetype::basetype350,8636
+ Pbase type_adj(basetype::type_adj352,8660
+ Pbase base_adj(basetype::base_adj353,8682
+ Pbase name_adj(basetype::name_adj354,8706
+ Pname aggr(basetype::aggr355,8730
+ void normalize(basetype::normalize356,8747
+ Pbase check(basetype::check358,8779
+ void dcl_print(basetype::dcl_print359,8800
+ Pbase arit_conv(basetype::arit_conv360,8819
+struct fct 365,8857
+ TOK nargs;fct::nargs367,8885
+ TOK nargs_known;fct::nargs_known368,8897
+ char f_virtual;fct::f_virtual369,8940
+ char f_inline;fct::f_inline370,8991
+ Ptype returns;fct::returns371,9052
+ Pname argtype;fct::argtype372,9068
+ Ptype s_returns;fct::s_returns373,9084
+ Pname f_this;fct::f_this374,9102
+ Pclass memof;fct::memof375,9117
+ Pblock body;fct::body376,9158
+ Pname f_init;fct::f_init377,9172
+ Pexpr b_init;fct::b_init380,9295
+ Pexpr f_expr;fct::f_expr383,9389
+ Pexpr last_expanded;fct::last_expanded384,9441
+ Pname f_result;fct::f_result385,9463
+ fct(fct::fct387,9517
+ void argdcl(fct::argdcl389,9543
+ Ptype normalize(fct::normalize391,9583
+ void dcl_print(fct::dcl_print392,9608
+ void dcl(fct::dcl393,9627
+ Pexpr base_init(fct::base_init394,9645
+ Pexpr mem_init(fct::mem_init395,9685
+ bit declared(fct::declared396,9724
+ void simpl(fct::simpl397,9765
+ Pexpr expand(fct::expand398,9780
+struct name_list 403,9827
+ Pname f;name_list::f404,9846
+ Plist l;name_list::l405,9856
+ name_list(name_list::name_list406,9866
+struct gen 410,9931
+ Plist fct_list;gen::fct_list411,9964
+ char* string;gen::string412,9981
+ gen(gen::gen413,9996
+ Pname add(gen::add414,10010
+ Pname find(gen::find415,10034
+struct pvtyp 419,10071
+ Ptype typ;pvtyp::typ420,10093
+struct vec 423,10109
+ Pexpr dim;vec::dim426,10157
+ int size;vec::size427,10169
+ vec(vec::vec429,10182
+ Ptype normalize(vec::normalize431,10253
+struct ptr 435,10289
+ Pclass memof;ptr::memof437,10339
+ bit rdo;ptr::rdo438,10395
+ ptr(ptr::ptr440,10419
+ Ptype normalize(ptr::normalize442,10497
+inline Pptr type::addrof(447,10546
+extern bit vrp_equiv;449,10606
+extern Pexpr next_elem(461,10867
+extern void new_list(462,10893
+extern void list_check(463,10922
+extern Pexpr ref_init(464,10967
+extern Pexpr class_init(465,11009
+extern Pexpr check_cond(466,11060
+struct expr 469,11113
+ Ptype tp;expr::tp481,11414
+ int syn_class;expr::syn_class482,11426
+ Pexpr e1;expr::e1485,11456
+ char* string;expr::string486,11468
+ int i1;expr::i1487,11484
+ Pexpr e2;expr::e2490,11507
+ Pexpr n_initializer;expr::n_initializer491,11519
+ char* string2;expr::string2492,11542
+ Ptype tp2;expr::tp2495,11608
+ Pname fct_name;expr::fct_name496,11621
+ Pexpr cond;expr::cond497,11639
+ Pname mem;expr::mem498,11653
+ Ptype as_type;expr::as_type499,11666
+ Ptable n_table;expr::n_table500,11683
+ Pin il;expr::il501,11701
+ expr(expr::expr504,11716
+ ~expr(expr::~expr505,11742
+ void del(expr::del507,11765
+ void print(expr::print508,11778
+ Pexpr typ(expr::typ509,11793
+ int eval(expr::eval510,11813
+ int lval(expr::lval511,11826
+ Ptype fct_call(expr::fct_call512,11842
+ Pexpr address(expr::address513,11867
+ Pexpr contents(expr::contents514,11885
+ void simpl(expr::simpl515,11904
+ Pexpr expand(expr::expand516,11919
+ bit not_simple(expr::not_simple517,11936
+ Pexpr try_to_overload(expr::try_to_overload518,11955
+ Pexpr docast(expr::docast519,11987
+ Pexpr dovalue(expr::dovalue520,12010
+ Pexpr donew(expr::donew521,12034
+ void simpl_new(expr::simpl_new522,12056
+ void simpl_delete(expr::simpl_delete523,12075
+struct texpr 527,12108
+ texpr(texpr::texpr528,12149
+struct ival 531,12218
+ ival(ival::ival532,12258
+struct call 535,12308
+ call(call::call536,12338
+ void simpl(call::simpl538,12404
+ Pexpr expand(call::expand539,12419
+struct qexpr 543,12453
+ qexpr(qexpr::qexpr544,12500
+struct ref 547,12582
+ ref(ref::ref548,12632
+struct text_expr 551,12697
+ text_expr(text_expr::text_expr552,12731
+struct name 557,12884
+ TOK n_oper;name::n_oper558,12948
+ TOK n_sto;name::n_sto559,12987
+ TOK n_stclass;name::n_stclass560,13038
+ TOK n_scope;name::n_scope561,13080
+ unsigned char n_union;name::n_union562,13129
+ bit n_evaluated;name::n_evaluated563,13173
+ bit n_xref;name::n_xref564,13221
+ unsigned char lex_level;name::lex_level565,13261
+ TOK n_protect;name::n_protect566,13287
+ short n_addr_taken;name::n_addr_taken567,13337
+ short n_used;name::n_used568,13358
+ short n_assigned_to;name::n_assigned_to569,13373
+ Loc where;name::where570,13395
+ int n_val;name::n_val571,13407
+ int n_offset;name::n_offset574,13518
+ Pname n_list;name::n_list575,13567
+ Pname n_tbl_list;name::n_tbl_list576,13582
+ Pname n_qualifier;name::n_qualifier578,13610
+ Ptable n_realscope;name::n_realscope579,13659
+ name(name::name585,13815
+ ~name(name::~name586,13832
+ Pname normalize(name::normalize588,13843
+ Pname tdef(name::tdef589,13881
+ Pname tname(name::tname590,13896
+ void hide(name::hide591,13915
+ void unhide(name::unhide592,13929
+ Pname dcl(name::dcl594,13981
+ int no_of_names(name::no_of_names595,14005
+ void use(name::use596,14025
+ void assign(name::assign597,14053
+ void take_addr(name::take_addr598,14069
+ void check_oper(name::check_oper599,14108
+ void simpl(name::simpl600,14133
+ void del(name::del601,14148
+ void print(name::print602,14161
+ void dcl_print(name::dcl_print603,14176
+ void field_align(name::field_align604,14198
+ Pname dofct(name::dofct605,14219
+extern int friend_in_class;610,14269
+struct stmt 615,14374
+ Pstmt s;stmt::s617,14479
+ Pstmt s_list;stmt::s_list618,14489
+ Loc where;stmt::where619,14504
+ Pname d;stmt::d621,14525
+ Pexpr e2;stmt::e2622,14536
+ Pstmt has_default;stmt::has_default623,14548
+ int case_value;stmt::case_value624,14569
+ Ptype ret_tp;stmt::ret_tp625,14587
+ Pexpr e;stmt::e628,14616
+ bit own_tbl;stmt::own_tbl629,14627
+ Pstmt s2;stmt::s2630,14642
+ Ptable memtbl;stmt::memtbl632,14658
+ Pstmt for_init;stmt::for_init634,14683
+ Pstmt else_stmt;stmt::else_stmt635,14701
+ Pstmt case_list;stmt::case_list636,14720
+ bit empty;stmt::empty637,14739
+ stmt(stmt::stmt640,14757
+ ~stmt(stmt::~stmt641,14781
+ void del(stmt::del643,14804
+ void print(stmt::print644,14817
+ void dcl(stmt::dcl645,14832
+ void reached(stmt::reached646,14845
+ Pstmt simpl(stmt::simpl647,14862
+ Pstmt expand(stmt::expand648,14878
+ Pstmt copy(stmt::copy649,14895
+extern char* Neval;654,14934
+extern Pname dcl_temp(655,14954
+extern char* temp(656,14992
+extern Ptable scope;657,15032
+extern Ptable expand_tbl;658,15053
+extern Pname expand_fn;659,15079
+struct estmt 662,15111
+ estmt(estmt::estmt669,15303
+struct ifstmt 672,15379
+ ifstmt(ifstmt::ifstmt676,15484
+struct lstmt 680,15586
+ lstmt(lstmt::lstmt686,15650
+struct forstmt 689,15728
+ forstmt(forstmt::forstmt690,15759
+struct block 694,15880
+ block(block::block695,15919
+ void dcl(block::dcl697,16001
+ Pstmt simpl(block::simpl698,16020
+struct pair 703,16060
+ pair(pair::pair704,16096
+struct nlist 708,16173
+ Pname head;nlist::head709,16188
+ Pname tail;nlist::tail710,16201
+ nlist(nlist::nlist711,16214
+ void add(nlist::add712,16230
+ void add_list(nlist::add_list713,16282
+extern Pname name_unlist(716,16309
+struct slist 718,16344
+ Pstmt head;slist::head719,16359
+ Pstmt tail;slist::tail720,16372
+ slist(slist::slist721,16385
+ void add(slist::add722,16430
+extern Pstmt stmt_unlist(725,16486
+struct elist 727,16521
+ Pexpr head;elist::head728,16536
+ Pexpr tail;elist::tail729,16549
+ elist(elist::elist730,16562
+ void add(elist::add731,16607
+extern Pexpr expr_unlist(734,16659
+extern class dcl_context * cc;737,16707
+struct dcl_context 739,16739
+ Pname c_this;dcl_context::c_this740,16760
+ Ptype tot;dcl_context::tot741,16802
+ Pname not;dcl_context::not742,16840
+ Pclass cot;dcl_context::cot743,16886
+ Ptable ftbl;dcl_context::ftbl744,16938
+ Pname nof;dcl_context::nof745,16985
+ void stack(dcl_context::stack747,17023
+ void unstack(dcl_context::unstack748,17064
+#define MAXCONT 751,17095
+extern dcl_context ccvec[ccvec752,17114
+extern void yyerror(755,17157
+extern TOK back;756,17185
+extern char* line_format;760,17217
+extern Plist isf_list;762,17244
+extern Pstmt st_ilist;763,17267
+extern Pstmt st_dlist;764,17290
+extern Ptable sti_tbl;765,17313
+extern Ptable std_tbl;766,17336
+Pexpr try_to_coerce(767,17359
+extern bit can_coerce(768,17409
+extern Ptype np_promote(769,17446
+extern void new_key(770,17505
+extern Pname dcl_list;772,17544
+extern int over_call(773,17567
+extern Pname Nover;774,17603
+extern Pname Ntncheck;775,17623
+extern Pname Ncoerce;776,17646
+extern Nover_coerce;777,17668
+const MIA 779,17690
+struct iline 780,17705
+ Pname fct_name;iline::fct_name781,17720
+ Pin i_next;iline::i_next782,17754
+ Ptable i_table;iline::i_table783,17767
+ Pname local[iline::local784,17784
+ Pexpr arg[iline::arg785,17838
+ Ptype tp[iline::tp786,17887
+extern Pexpr curr_expr;789,17938
+extern Pin curr_icall;790,17962
+#define FUDGE111 791,17985
+extern Pstmt curr_loop;793,18007
+extern Pblock curr_block;794,18031
+extern Pstmt curr_switch;795,18057
+extern bit arg_err_suppress;796,18083
+extern loc last_line;797,18112
+extern no_of_undcl;799,18135
+extern no_of_badcall;800,18155
+extern Pname undcl,801,18177
+extern Pname undcl, badcall;801,18177
+extern int strlen(803,18207
+extern char* strcpy(804,18239
+extern int str_to_int(805,18280
+extern int c_strlen(806,18316
+extern int strcmp(809,18360
+extern Pname vec_new_fct;812,18419
+extern Pname vec_del_fct;813,18445
+extern int Nstd;815,18472
+extern int stcount;817,18555
+extern Pname find_hidden(819,18623
+Pexpr replace_temp(820,18656
+void make_res(821,18689
+Pexpr ptr_init(822,18710
+extern bit fake_sizeof;826,18755
+extern TOK lalex(828,18823
+extern fprintf(830,18856
+#define DB(831,18890
+#define DB(833,18920
+
+cp-src/burton.cpp,103
+::dummy::dummy test::dummy1(1,0
+::dummy::dummy test::dummy2(6,64
+::dummy::dummy test::dummy3(11,143
+
+cp-src/functions.cpp,807
+void Date::setDate 5,148
+void Date::plus 32,939
+void Date::minus 42,1229
+void Date::shift 52,1407
+Date & Date::operator = Date::operator =62,1628
+Date & Date::operator += Date::operator +=69,1789
+Date & Date::operator -= Date::operator -=78,1939
+Date & Date::operator ++ Date::operator ++87,2080
+Date & Date::operator -- Date::operator --96,2216
+int Date::operator - Date::operator -104,2331
+int Date::operator < Date::operator <112,2483
+int Date::operator > Date::operator >116,2557
+int Date::operator == Date::operator ==120,2631
+ostream& operator << operator <<124,2707
+istream& operator >> operator >>133,2943
+bool isLeap 159,3543
+bool isHoliday 163,3629
+void asort(173,3865
+void ReadVacation 186,4064
+void Debug 201,4523
+int WorkingDays(211,4867
+Date StartDay(226,5129
+
+cp-src/MDiagArray2.h,1538
+#define octave_MDiagArray2_h 29,870
+#undef LTGT35,967
+#define LTGT39,1031
+#define LTGT 42,1051
+class MDiagArray2;45,1087
+operator += operator +=48,1145
+operator -= operator -=51,1242
+operator * operator *54,1339
+operator / operator /57,1428
+operator * operator *60,1517
+operator + operator +63,1605
+operator - operator -66,1707
+product 69,1808
+operator - operator -72,1907
+class MDiagArray2 78,2022
+ MDiagArray2 MDiagArray2::MDiagArray282,2077
+ MDiagArray2 MDiagArray2::MDiagArray286,2154
+ MDiagArray2 MDiagArray2::MDiagArray287,2198
+ MDiagArray2 MDiagArray2::MDiagArray288,2254
+ MDiagArray2 MDiagArray2::MDiagArray289,2329
+ MDiagArray2 MDiagArray2::MDiagArray290,2387
+ MDiagArray2 MDiagArray2::MDiagArray291,2450
+ ~MDiagArray2 MDiagArray2::~MDiagArray293,2515
+ MDiagArray2<T>& operator = MDiagArray2::operator =95,2542
+ DiagArray2<T>::operator = MDiagArray2::operator =97,2603
+ operator MArray2<T> MDiagArray2::operator MArray2<T>101,2667
+ operator += MDiagArray2::operator +=116,2966
+ operator -= MDiagArray2::operator -=119,3057
+ friend MDiagArray2<T> operator * MDiagArray2::operator *123,3174
+ friend MDiagArray2<T> operator / MDiagArray2::operator /124,3253
+ friend MDiagArray2<T> operator * MDiagArray2::operator *128,3384
+ operator + MDiagArray2::operator +133,3544
+ operator - MDiagArray2::operator -136,3640
+ friend MDiagArray2<T> operator - MDiagArray2::operator -141,3803
+#undef LTGT144,3874
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(146,3887
+
+cp-src/Pctest.h,816
+#define PCTEST_H24,837
+class TestRecord;42,1118
+ PctestActionValid,::PctestActionValid47,1286
+ PctestActionValidLasthop,::PctestActionValidLasthop49,1370
+ PctestActionFiltered,::PctestActionFiltered51,1481
+ PctestActionAbort ::PctestActionAbort53,1566
+} PctestActionType;54,1616
+class Pctest 56,1637
+ Pctest(Pctest::Pctest59,1663
+ virtual ~Pctest(Pctest::~Pctest65,1813
+ virtual void TimeSyscall(Pctest::TimeSyscall68,1889
+ virtual char *GeneratePayload(Pctest::GeneratePayload71,1975
+ virtual char *GetTargetName(Pctest::GetTargetName77,2171
+ virtual PctestActionType GetAction(Pctest::GetAction86,2555
+ int initialized;Pctest::initialized93,2698
+ char *targetName;Pctest::targetName94,2743
+ struct timeval syscallTime;Pctest::syscallTime95,2785
+
+cp-src/Range.h,1136
+#define octave_Range_h 24,765
+class istream;30,840
+class ostream;31,855
+class Matrix;32,870
+Range35,891
+ Range Range::Range39,909
+ Range Range::Range42,995
+ Range Range::Range46,1130
+ Range Range::Range50,1248
+ double base Range::base54,1376
+ double limit Range::limit55,1425
+ double inc Range::inc56,1475
+ int nelem Range::nelem57,1523
+ bool all_elements_are_ints Range::all_elements_are_ints59,1571
+ Matrix matrix_value Range::matrix_value61,1615
+ double min Range::min63,1652
+ double max Range::max64,1679
+ void sort Range::sort66,1707
+ void set_base Range::set_base68,1728
+ void set_limit Range::set_limit69,1774
+ void set_inc Range::set_inc70,1821
+ friend ostream& operator << Range::operator <<72,1867
+ friend istream& operator >> Range::operator >>73,1928
+ void print_range Range::print_range75,1984
+ double rng_base;Range::rng_base79,2023
+ double rng_limit;Range::rng_limit80,2042
+ double rng_inc;Range::rng_inc81,2062
+ int rng_nelem;Range::rng_nelem83,2081
+ int nelem_internal Range::nelem_internal85,2099
+extern Range operator - operator -88,2138
+
+cp-src/screen.cpp,228
+unsigned char cursor_x,15,548
+unsigned char cursor_x, cursor_y;15,548
+static union REGS regs;16,582
+void goto_xy(18,607
+void hide_cursor(27,774
+void cursor_position(32,836
+void clear_screen(41,997
+void write_xyc(55,1247
+
+cp-src/screen.hpp,791
+#define __COLORS9,401
+enum COLORS 11,419
+ BLACK,COLORS::BLACK12,433
+ BLUE,COLORS::BLUE13,471
+ GREEN,COLORS::GREEN14,481
+ CYAN,COLORS::CYAN15,492
+ RED,COLORS::RED16,502
+ MAGENTA,COLORS::MAGENTA17,511
+ BROWN,COLORS::BROWN18,524
+ LIGHTGRAY,COLORS::LIGHTGRAY19,535
+ DARKGRAY,COLORS::DARKGRAY20,550
+ LIGHTBLUE,COLORS::LIGHTBLUE21,589
+ LIGHTGREEN,COLORS::LIGHTGREEN22,604
+ LIGHTCYAN,COLORS::LIGHTCYAN23,620
+ LIGHTRED,COLORS::LIGHTRED24,635
+ LIGHTMAGENTA,COLORS::LIGHTMAGENTA25,649
+ YELLOW,COLORS::YELLOW26,667
+ WHITECOLORS::WHITE27,679
+#define SCREEN_FP(31,700
+#define SCREEN_START 33,795
+void goto_xy(35,835
+void hide_cursor(36,883
+void cursor_position(37,907
+void clear_screen(38,935
+void write_xyc(39,960
+
+cp-src/conway.cpp,270
+#define max(12,357
+#define min(13,393
+const int num_rows 15,430
+const int num_columns 16,470
+class site *field_of_play[field_of_play18,499
+int site::total_surrounding(20,550
+void display(37,958
+void glider(50,1239
+void traffic_light(59,1478
+void main(67,1633
+
+cp-src/conway.hpp,483
+class site:site5,235
+ char x,site::x7,269
+ char x, y,site::y7,269
+ char x, y, alive,site::alive7,269
+ char x, y, alive, next_alive;site::next_alive7,269
+ int total_surrounding(site::total_surrounding8,303
+ site(site::site10,344
+ ~site(site::~site11,397
+ char read(site::read12,410
+ void set(site::set13,444
+ void clear(site::clear14,478
+ void compute_next_state(site::compute_next_state15,514
+ void step(site::step22,717
+
+cp-src/clheir.cpp,307
+const int max_num_generic_objects 9,298
+generic_object * object_registry[object_registry10,340
+void init_registry(12,400
+void step_everybody(19,527
+void discrete_location::clear_neighbors(31,852
+generic_object::generic_object(36,981
+generic_object::~generic_object(48,1255
+void agent::move(53,1353
+
+cp-src/clheir.hpp,1600
+extern void init_registry(10,452
+extern void step_everybody(11,485
+class generic_object13,520
+ int where_in_registry;generic_object::where_in_registry15,547
+ generic_object(generic_object::generic_object17,582
+ ~generic_object(generic_object::~generic_object19,724
+ virtual void compute_next_state(generic_object::compute_next_state21,842
+ virtual void step(generic_object::step22,888
+const int max_num_directions 31,1219
+class location:location33,1289
+ location(location::location43,1642
+ ~location(location::~location44,1661
+class irregular_location:irregular_location47,1686
+ double x,irregular_location::x49,1734
+ double x, y,irregular_location::y49,1734
+ double x, y, z;irregular_location::z49,1734
+ irregular_location(irregular_location::irregular_location51,1762
+ ~irregular_location(irregular_location::~irregular_location53,1854
+class discrete_location:discrete_location56,1889
+ int x,discrete_location::x58,1936
+ int x, y,discrete_location::y58,1936
+ int x, y, z;discrete_location::z58,1936
+ class location *neighbors[discrete_location::neighbors59,1953
+ void clear_neighbors(discrete_location::clear_neighbors60,2004
+ discrete_location(discrete_location::discrete_location62,2044
+ ~discrete_location(discrete_location::~discrete_location65,2154
+ void assign_neighbor(discrete_location::assign_neighbor66,2184
+class agent:agent75,2508
+ location *where;agent::where77,2549
+ agent(agent::agent79,2578
+ ~agent(agent::~agent80,2591
+ void move(agent::move81,2605
+
+cp-src/fail.C,438
+struct A 7,263
+ struct B A::B8,274
+ struct C A::B::C9,289
+ int x;A::B::C::x10,305
+ C(A::B::C::C11,318
+ operator int(A::B::C::operator int12,342
+ typedef C T;A::B::T14,389
+ typedef B T2;A::T216,414
+class String;20,437
+class A 23,453
+ class B A::B24,463
+ class C A::B::C25,474
+ int f(A::B::f26,488
+int A::B::f(31,521
+main(37,571
+ class D 41,622
+ D(D::D43,659
+ int x;D::x44,694
+
+el-src/TAGTEST.EL,148
+(foo::defmumble bletch 1,0
+(defalias 'pending-delete-mode pending-delete-mode5,102
+(defalias (quote explicitly-quoted-pending-delete-mode)8,175
+
+el-src/emacs/lisp/progmodes/etags.el,5188
+(defvar tags-file-name 34,1034
+(defgroup etags 43,1498
+(defcustom tags-case-fold-search 47,1566
+(defcustom tags-table-list 59,2051
+(defcustom tags-compression-info-list69,2449
+(defcustom tags-add-tables 88,3231
+(defcustom tags-revert-without-query 98,3627
+(defvar tags-table-computed-list 103,3778
+(defvar tags-table-computed-list-for 112,4262
+(defvar tags-table-list-pointer 117,4510
+(defvar tags-table-list-started-at 121,4701
+(defvar tags-table-set-list 124,4821
+(defcustom find-tag-hook 129,5000
+(defcustom find-tag-default-function 137,5263
+(define-obsolete-variable-alias
'find-tag-marker-ring-lengthfind-tag-marker-ring-length145,5602
+(defcustom tags-tag-face 148,5699
+(defcustom tags-apropos-verbose 154,5834
+(defcustom tags-apropos-additional-actions 160,5998
+(defvaralias 'find-tag-marker-ring find-tag-marker-ring183,6917
+(defvar default-tags-table-function 189,7097
+(defvar tags-location-ring 194,7323
+(defvar tags-table-files 201,7599
+(defvar tags-completion-table 206,7766
+(defvar tags-included-tables 209,7858
+(defvar next-file-list 212,7953
+(defvar tags-table-format-functions 217,8059
+(defvar file-of-tag-function 224,8440
+(defvar tags-table-files-function 228,8634
+(defvar tags-completion-table-function 230,8745
+(defvar snarf-tag-function 232,8840
+(defvar goto-tag-location-function 236,9049
+(defvar find-tag-regexp-search-function 239,9222
+(defvar find-tag-regexp-tag-order 241,9343
+(defvar find-tag-regexp-next-line-after-failure-p 243,9452
+(defvar find-tag-search-function 245,9572
+(defvar find-tag-tag-order 247,9679
+(defvar find-tag-next-line-after-failure-p 249,9774
+(defvar list-tags-function 251,9880
+(defvar tags-apropos-function 253,9968
+(defvar tags-included-tables-function 255,10062
+(defvar verify-tags-table-function 257,10181
+(defun initialize-new-tags-table 260,10292
+(defun tags-table-mode 276,10980
+(defun visit-tags-table 285,11245
+(defun tags-table-check-computed-list 321,12783
+(defun tags-table-extend-computed-list 360,14654
+(defun tags-expand-table-name 400,16367
+(defun tags-table-list-member 409,16710
+(defun tags-verify-table 421,17182
+(defun tags-table-including 470,19302
+(defun tags-next-table 522,21346
+(defun visit-tags-table-buffer 543,22203
+(defun tags-reset-tags-tables 712,28513
+(defun file-of-tag 731,29170
+(defun tags-table-files 740,29519
+(defun tags-included-tables 749,29869
+(defun tags-completion-table 755,30115
+(defun tags-lazy-completion-table 783,31309
+(defun tags-completion-at-point-function 799,31944
+(defun find-tag-tag 818,32694
+(defvar last-tag 837,33367
+(defun find-tag-interactive 840,33426
+(defvar find-tag-history 852,33841
+(defvar etags-case-fold-search)855,33906
+(defvar etags-syntax-table)856,33938
+(defvar local-find-tag-hook)857,33966
+(defun find-tag-noselect 860,34011
+(defun find-tag 932,37125
+(defun find-tag-other-window 959,38341
+(defun find-tag-other-frame 1000,40269
+(defun find-tag-regexp 1025,41443
+(defalias 'pop-tag-mark pop-tag-mark1049,42605
+(defvar tag-lines-already-matched 1052,42656
+(defun find-tag-in-order 1055,42763
+(defun tag-find-file-of-tag-noselect 1167,47109
+(defun tag-find-file-of-tag 1200,48955
+(defun etags-recognize-tags-table 1208,49181
+(defun etags-verify-tags-table 1241,50812
+(defun etags-file-of-tag 1246,51010
+(defun etags-tags-completion-table 1256,51345
+(defun etags-snarf-tag 1286,52551
+(defun etags-goto-tag-location 1324,54120
+(defun etags-list-tags 1388,56563
+(defmacro tags-with-face 1423,57838
+(defun etags-tags-apropos-additional 1431,58171
+(defun etags-tags-apropos 1465,59408
+(defun etags-tags-table-files 1527,61617
+(defun etags-tags-included-tables 1542,62053
+(defun tags-recognize-empty-tags-table 1559,62593
+(defun tag-exact-file-name-match-p 1587,63739
+(defun tag-file-name-match-p 1596,64132
+(defun tag-exact-match-p 1609,64688
+(defun tag-implicit-name-match-p 1620,65256
+(defun tag-symbol-match-p 1633,65856
+(defun tag-word-match-p 1643,66292
+(defun tag-partial-file-name-match-p 1652,66690
+(defun tag-any-match-p 1662,67134
+(defun tag-re-match-p 1667,67318
+(defcustom tags-loop-revert-buffers 1675,67567
+(defun next-file 1685,67976
+(defvar tags-loop-operate 1760,70890
+(defvar tags-loop-scan1763,70984
+(defun tags-loop-eval 1771,71314
+(defun tags-loop-continue 1782,71643
+(defun tags-search 1850,73949
+(defun tags-query-replace 1871,74775
+(defun tags-complete-tags-table-file 1896,75999
+(defun list-tags 1906,76378
+(defun tags-apropos 1934,77331
+(define-button-type 'tags-select-tags-tabletags-select-tags-table1957,78157
+(defun select-tags-table 1964,78396
+(defvar select-tags-table-mode-map 2019,80523
+(define-derived-mode select-tags-table-mode 2030,80906
+(defun select-tags-table-select 2034,81090
+(defun select-tags-table-quit 2043,81456
+(defun complete-tag 2049,81611
+(defconst etags--xref-limit 2074,82552
+(defvar etags-xref-find-definitions-tag-order 2076,82587
+(defun etags-xref-find 2082,82877
+(defun etags--xref-find-definitions 2096,83406
+(defclass xref-etags-location 2129,85121
+(defun xref-make-etags-location 2135,85344
+(cl-defmethod xref-location-marker 2139,85499
+(cl-defmethod xref-location-line 2146,85743
+
+erl-src/gs_dialog.erl,98
+-define(VERSION2,32
+behaviour_info(51,2177
+show(124,5458
+dialog_loop(219,9529
+test(252,10806
+
+erl-src/lines.erl,386
+-define(BREAK66,2377
+-define(dbg68,2437
+new(73,2565
+count(80,2686
+nth(87,2815
+append(104,3301
+replace(119,3816
+insert(138,4559
+insert_after(165,5501
+delete(192,6456
+convert_to_list(215,7110
+convert_from_list(220,7259
+replace_nth(229,7518
+insert_nth(234,7618
+insert_after_nth(239,7711
+delete_nth(244,7828
+split_at(252,8027
+balance_left(267,8451
+balance_right(282,8865
+
+erl-src/lists.erl,593
+member(21,663
+append(30,790
+reverse(48,1099
+nth(59,1310
+nthtail(64,1382
+prefix(73,1546
+suffix(83,1707
+last(92,1882
+seq(101,2058
+sum(109,2265
+duplicate(116,2432
+min(124,2628
+max(132,2837
+sublist(141,3083
+delete(152,3329
+sort(161,3483
+split_and_sort(165,3559
+merge(175,3811
+concat(190,4219
+thing_to_list(195,4300
+flatten(204,4606
+flat_length(222,5003
+keymember(239,5451
+keysearch(246,5609
+keydelete(253,5770
+keyreplace(260,5923
+keysort(266,6113
+split_and_keysort(270,6229
+keymerge(277,6504
+keymap(288,6851
+map(311,7829
+foldl(315,7919
+foldr(320,8037
+zf(325,8155
+
+f-src/entry.for,172
+ LOGICAL FUNCTION PRTPKG 3,75
+ ENTRY SETPRT 194,3866
+ ENTRY MSGSEL 395,8478
+ & intensity1(577,12231
+ character*(*) function foo(579,12307
+
+f-src/entry.strange_suffix,172
+ LOGICAL FUNCTION PRTPKG 3,75
+ ENTRY SETPRT 194,3866
+ ENTRY MSGSEL 395,8478
+ & intensity1(577,12231
+ character*(*) function foo(579,12307
+
+f-src/entry.strange,103
+ ENTRY MSGSEL 193,4382
+ & intensity1(375,8135
+ character*(*) function foo(377,8211
+
+forth-src/test-forth.fth,408
+: a-forth-word 20,301
+99 constant a-forth-constant!22,343
+55 value a-forth-value?23,373
+create :a-forth-dictionary-entry24,397
+defer #a-defer-word27,460
+: (another-forth-word)(another-forth-word29,481
+ 9 field >field136,582
+ 5 field >field237,605
+constant (a-forth-constant(a-forth-constant38,628
+2000 buffer: #some-storage41,657
+code assemby-code-word 43,685
+: a-forth-word 50,870
+
+html-src/softwarelibero.html,198
+Cos'� il software libero?4,38
+Licenze d'uso di un programmalicenze65,2474
+Sfatiamo alcuni miti138,6064
+Il movimento open sourceoss191,7968
+Impatto pratico del software liberoimpatto231,9986
+
+html-src/index.shtml,104
+ 8,281
+In evidenza15,446
+Comunicati e iniziative32,974
+Ultime notizie dall'associazione63,2027
+
+html-src/algrthms.html,467
+Tutorial on Convolutional Coding with Viterbi Decoding--Description of the
Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and
Quantizing Algorithms7,276
+Descriptionalgorithms10,477
+Generating the Datagenalgorithm48,1953
+Convolutionallyconalgorithm55,2463
+Nextstatetable262,11331
+Outputoutputtable350,13571
+Mapping the Channel Symbolsmapping433,15786
+Adding Noise to theaddnoise439,16174
+Quantizing the Receivedquantizing469,18637
+
+html-src/software.html,438
+Francesco Potort� Software Page9,280
+Software that I wrote for supporting my research activitysimulation36,1400
+MTGmtg41,1484
+Fracasfracas65,2626
+GaliLEOgalileo101,4234
+Leasqrleasqr114,4679
+Free software that I wrote for the GNU project or for my personal or
workgnu142,6067
+Etagsetags148,6182
+checkiso161,6731
+cgrep178,7549
+debian-bug.eldebian-bug190,7981
+tcpdump205,8566
+Links to interesting softwarelinks216,8893
+
+java-src/AWTEMul.java,4481
+public class AWTEventMulticaster 63,2111
+ protected EventListener a,AWTEventMulticaster.a69,2356
+ protected EventListener a, b;AWTEventMulticaster.b69,2356
+ protected
AWTEventMulticaster(AWTEventMulticaster.AWTEventMulticaster77,2555
+ protected EventListener remove(AWTEventMulticaster.remove86,2820
+ public void componentResized(AWTEventMulticaster.componentResized102,3294
+ public void componentMoved(AWTEventMulticaster.componentMoved112,3626
+ public void componentShown(AWTEventMulticaster.componentShown122,3952
+ public void componentHidden(AWTEventMulticaster.componentHidden132,4280
+ public void componentAdded(AWTEventMulticaster.componentAdded142,4619
+ public void componentRemoved(AWTEventMulticaster.componentRemoved152,4959
+ public void focusGained(AWTEventMulticaster.focusGained162,5281
+ public void focusLost(AWTEventMulticaster.focusLost172,5572
+ public void keyTyped(AWTEventMulticaster.keyTyped182,5853
+ public void keyPressed(AWTEventMulticaster.keyPressed192,6129
+ public void keyReleased(AWTEventMulticaster.keyReleased202,6413
+ public void mouseClicked(AWTEventMulticaster.mouseClicked212,6704
+ public void mousePressed(AWTEventMulticaster.mousePressed222,7004
+ public void mouseReleased(AWTEventMulticaster.mouseReleased232,7306
+ public void mouseEntered(AWTEventMulticaster.mouseEntered242,7609
+ public void mouseExited(AWTEventMulticaster.mouseExited252,7907
+ public void mouseDragged(AWTEventMulticaster.mouseDragged262,8204
+ public void mouseMoved(AWTEventMulticaster.mouseMoved272,8512
+ public void windowOpened(AWTEventMulticaster.windowOpened282,8819
+ public void windowClosing(AWTEventMulticaster.windowClosing292,9125
+ public void windowClosed(AWTEventMulticaster.windowClosed302,9432
+ public void windowIconified(AWTEventMulticaster.windowIconified312,9742
+ public void
windowDeiconified(AWTEventMulticaster.windowDeiconified322,10064
+ public void windowActivated(AWTEventMulticaster.windowActivated332,10389
+ public void
windowDeactivated(AWTEventMulticaster.windowDeactivated342,10712
+ public void actionPerformed(AWTEventMulticaster.actionPerformed352,11037
+ public void
itemStateChanged(AWTEventMulticaster.itemStateChanged362,11356
+ public void
adjustmentValueChanged(AWTEventMulticaster.adjustmentValueChanged372,11690
+ public void
textValueChanged(AWTEventMulticaster.textValueChanged376,11874
+ public static ComponentListener add(AWTEventMulticaster.add387,12225
+ public static ContainerListener add(AWTEventMulticaster.add397,12571
+ public static FocusListener add(AWTEventMulticaster.add407,12901
+ public static KeyListener add(AWTEventMulticaster.add417,13207
+ public static MouseListener add(AWTEventMulticaster.add427,13513
+ public static MouseMotionListener add(AWTEventMulticaster.add437,13855
+ public static WindowListener add(AWTEventMulticaster.add447,14197
+ public static ActionListener add(AWTEventMulticaster.add457,14519
+ public static ItemListener add(AWTEventMulticaster.add467,14833
+ public static AdjustmentListener add(AWTEventMulticaster.add477,15163
+ public static TextListener add(AWTEventMulticaster.add480,15310
+ public static ComponentListener
remove(AWTEventMulticaster.remove490,15664
+ public static ContainerListener
remove(AWTEventMulticaster.remove500,16044
+ public static FocusListener remove(AWTEventMulticaster.remove510,16408
+ public static KeyListener remove(AWTEventMulticaster.remove520,16748
+ public static MouseListener remove(AWTEventMulticaster.remove530,17088
+ public static MouseMotionListener
remove(AWTEventMulticaster.remove540,17465
+ public static WindowListener remove(AWTEventMulticaster.remove550,17841
+ public static ActionListener remove(AWTEventMulticaster.remove560,18197
+ public static ItemListener remove(AWTEventMulticaster.remove570,18545
+ public static AdjustmentListener
remove(AWTEventMulticaster.remove580,18909
+ public static TextListener remove(AWTEventMulticaster.remove583,19062
+ protected static EventListener
addInternal(AWTEventMulticaster.addInternal597,19608
+ protected static EventListener
removeInternal(AWTEventMulticaster.removeInternal614,20244
+ protected void saveInternal(AWTEventMulticaster.saveInternal628,20582
+ static void save(AWTEventMulticaster.save646,21131
+
+java-src/KeyEve.java,8202
+public class KeyEvent 36,1075
+ public static final int KEY_FIRST KeyEvent.KEY_FIRST41,1201
+ public static final int KEY_LAST KeyEvent.KEY_LAST46,1328
+ public static final int KEY_TYPED KeyEvent.KEY_TYPED52,1513
+ public static final int KEY_PRESSED KeyEvent.KEY_PRESSED57,1616
+ public static final int KEY_RELEASED KeyEvent.KEY_RELEASED62,1744
+ public static final int VK_ENTER KeyEvent.VK_ENTER85,2950
+ public static final int VK_BACK_SPACE KeyEvent.VK_BACK_SPACE86,3004
+ public static final int VK_TAB KeyEvent.VK_TAB87,3058
+ public static final int VK_CANCEL KeyEvent.VK_CANCEL88,3112
+ public static final int VK_CLEAR KeyEvent.VK_CLEAR89,3166
+ public static final int VK_SHIFT KeyEvent.VK_SHIFT90,3220
+ public static final int VK_CONTROL KeyEvent.VK_CONTROL91,3274
+ public static final int VK_ALT KeyEvent.VK_ALT92,3328
+ public static final int VK_PAUSE KeyEvent.VK_PAUSE93,3382
+ public static final int VK_CAPS_LOCK KeyEvent.VK_CAPS_LOCK94,3436
+ public static final int VK_ESCAPE KeyEvent.VK_ESCAPE95,3490
+ public static final int VK_SPACE KeyEvent.VK_SPACE96,3544
+ public static final int VK_PAGE_UP KeyEvent.VK_PAGE_UP97,3598
+ public static final int VK_PAGE_DOWN KeyEvent.VK_PAGE_DOWN98,3652
+ public static final int VK_END KeyEvent.VK_END99,3706
+ public static final int VK_HOME KeyEvent.VK_HOME100,3760
+ public static final int VK_LEFT KeyEvent.VK_LEFT101,3814
+ public static final int VK_UP KeyEvent.VK_UP102,3868
+ public static final int VK_RIGHT KeyEvent.VK_RIGHT103,3922
+ public static final int VK_DOWN KeyEvent.VK_DOWN104,3976
+ public static final int VK_COMMA KeyEvent.VK_COMMA105,4030
+ public static final int VK_PERIOD KeyEvent.VK_PERIOD106,4084
+ public static final int VK_SLASH KeyEvent.VK_SLASH107,4138
+ public static final int VK_0 KeyEvent.VK_0110,4268
+ public static final int VK_1 KeyEvent.VK_1111,4322
+ public static final int VK_2 KeyEvent.VK_2112,4376
+ public static final int VK_3 KeyEvent.VK_3113,4430
+ public static final int VK_4 KeyEvent.VK_4114,4484
+ public static final int VK_5 KeyEvent.VK_5115,4538
+ public static final int VK_6 KeyEvent.VK_6116,4592
+ public static final int VK_7 KeyEvent.VK_7117,4646
+ public static final int VK_8 KeyEvent.VK_8118,4700
+ public static final int VK_9 KeyEvent.VK_9119,4754
+ public static final int VK_SEMICOLON KeyEvent.VK_SEMICOLON121,4809
+ public static final int VK_EQUALS KeyEvent.VK_EQUALS122,4863
+ public static final int VK_A KeyEvent.VK_A125,4993
+ public static final int VK_B KeyEvent.VK_B126,5047
+ public static final int VK_C KeyEvent.VK_C127,5101
+ public static final int VK_D KeyEvent.VK_D128,5155
+ public static final int VK_E KeyEvent.VK_E129,5209
+ public static final int VK_F KeyEvent.VK_F130,5263
+ public static final int VK_G KeyEvent.VK_G131,5317
+ public static final int VK_H KeyEvent.VK_H132,5371
+ public static final int VK_I KeyEvent.VK_I133,5425
+ public static final int VK_J KeyEvent.VK_J134,5479
+ public static final int VK_K KeyEvent.VK_K135,5533
+ public static final int VK_L KeyEvent.VK_L136,5587
+ public static final int VK_M KeyEvent.VK_M137,5641
+ public static final int VK_N KeyEvent.VK_N138,5695
+ public static final int VK_O KeyEvent.VK_O139,5749
+ public static final int VK_P KeyEvent.VK_P140,5803
+ public static final int VK_Q KeyEvent.VK_Q141,5857
+ public static final int VK_R KeyEvent.VK_R142,5911
+ public static final int VK_S KeyEvent.VK_S143,5965
+ public static final int VK_T KeyEvent.VK_T144,6019
+ public static final int VK_U KeyEvent.VK_U145,6073
+ public static final int VK_V KeyEvent.VK_V146,6127
+ public static final int VK_W KeyEvent.VK_W147,6181
+ public static final int VK_X KeyEvent.VK_X148,6235
+ public static final int VK_Y KeyEvent.VK_Y149,6289
+ public static final int VK_Z KeyEvent.VK_Z150,6343
+ public static final int VK_OPEN_BRACKET KeyEvent.VK_OPEN_BRACKET152,6398
+ public static final int VK_BACK_SLASH KeyEvent.VK_BACK_SLASH153,6452
+ public static final int VK_CLOSE_BRACKET
KeyEvent.VK_CLOSE_BRACKET154,6506
+ public static final int VK_NUMPAD0 KeyEvent.VK_NUMPAD0156,6561
+ public static final int VK_NUMPAD1 KeyEvent.VK_NUMPAD1157,6615
+ public static final int VK_NUMPAD2 KeyEvent.VK_NUMPAD2158,6669
+ public static final int VK_NUMPAD3 KeyEvent.VK_NUMPAD3159,6723
+ public static final int VK_NUMPAD4 KeyEvent.VK_NUMPAD4160,6777
+ public static final int VK_NUMPAD5 KeyEvent.VK_NUMPAD5161,6831
+ public static final int VK_NUMPAD6 KeyEvent.VK_NUMPAD6162,6885
+ public static final int VK_NUMPAD7 KeyEvent.VK_NUMPAD7163,6939
+ public static final int VK_NUMPAD8 KeyEvent.VK_NUMPAD8164,6993
+ public static final int VK_NUMPAD9 KeyEvent.VK_NUMPAD9165,7047
+ public static final int VK_MULTIPLY KeyEvent.VK_MULTIPLY166,7101
+ public static final int VK_ADD KeyEvent.VK_ADD167,7155
+ public static final int VK_SEPARATER KeyEvent.VK_SEPARATER168,7209
+ public static final int VK_SUBTRACT KeyEvent.VK_SUBTRACT169,7263
+ public static final int VK_DECIMAL KeyEvent.VK_DECIMAL170,7317
+ public static final int VK_DIVIDE KeyEvent.VK_DIVIDE171,7371
+ public static final int VK_F1 KeyEvent.VK_F1172,7425
+ public static final int VK_F2 KeyEvent.VK_F2173,7479
+ public static final int VK_F3 KeyEvent.VK_F3174,7533
+ public static final int VK_F4 KeyEvent.VK_F4175,7587
+ public static final int VK_F5 KeyEvent.VK_F5176,7641
+ public static final int VK_F6 KeyEvent.VK_F6177,7695
+ public static final int VK_F7 KeyEvent.VK_F7178,7749
+ public static final int VK_F8 KeyEvent.VK_F8179,7803
+ public static final int VK_F9 KeyEvent.VK_F9180,7857
+ public static final int VK_F10 KeyEvent.VK_F10181,7911
+ public static final int VK_F11 KeyEvent.VK_F11182,7965
+ public static final int VK_F12 KeyEvent.VK_F12183,8019
+ public static final int VK_DELETE KeyEvent.VK_DELETE184,8073
+ public static final int VK_NUM_LOCK KeyEvent.VK_NUM_LOCK185,8143
+ public static final int VK_SCROLL_LOCK KeyEvent.VK_SCROLL_LOCK186,8197
+ public static final int VK_PRINTSCREEN KeyEvent.VK_PRINTSCREEN188,8252
+ public static final int VK_INSERT KeyEvent.VK_INSERT189,8306
+ public static final int VK_HELP KeyEvent.VK_HELP190,8360
+ public static final int VK_META KeyEvent.VK_META191,8414
+ public static final int VK_BACK_QUOTE KeyEvent.VK_BACK_QUOTE193,8469
+ public static final int VK_QUOTE KeyEvent.VK_QUOTE194,8523
+ public static final int VK_FINAL KeyEvent.VK_FINAL197,8608
+ public static final int VK_CONVERT KeyEvent.VK_CONVERT198,8662
+ public static final int VK_NONCONVERT KeyEvent.VK_NONCONVERT199,8716
+ public static final int VK_ACCEPT KeyEvent.VK_ACCEPT200,8770
+ public static final int VK_MODECHANGE KeyEvent.VK_MODECHANGE201,8824
+ public static final int VK_KANA KeyEvent.VK_KANA202,8878
+ public static final int VK_KANJI KeyEvent.VK_KANJI203,8932
+ public static final int VK_UNDEFINED KeyEvent.VK_UNDEFINED208,9062
+ public static final char CHAR_UNDEFINED KeyEvent.CHAR_UNDEFINED214,9259
+ int keyCode;KeyEvent.keyCode216,9313
+ char keyChar;KeyEvent.keyChar217,9331
+ private static final long serialVersionUID
KeyEvent.serialVersionUID222,9398
+ public KeyEvent(KeyEvent.KeyEvent234,9912
+ public KeyEvent(KeyEvent.KeyEvent252,10510
+ public int getKeyCode(KeyEvent.getKeyCode261,10836
+ public void setKeyCode(KeyEvent.setKeyCode265,10897
+ public void setKeyChar(KeyEvent.setKeyChar269,10978
+ public void setModifiers(KeyEvent.setModifiers273,11060
+ public char getKeyChar(KeyEvent.getKeyChar282,11331
+ public static String getKeyText(KeyEvent.getKeyText290,11561
+ public static String
getKeyModifiersText(KeyEvent.getKeyModifiersText377,16662
+ public boolean isActionKey(KeyEvent.isActionKey403,17618
+ public String paramString(KeyEvent.paramString407,17704
+
+java-src/SMan.java,5665
+class SecurityManager 80,3387
+ protected boolean inCheck;SecurityManager.inCheck87,3576
+ private boolean initialized SecurityManager.initialized90,3678
+ public boolean getInCheck(SecurityManager.getInCheck101,4075
+ protected SecurityManager(SecurityManager.SecurityManager114,4497
+ protected native Class[]
getClassContext(SecurityManager.getClassContext130,5038
+ protected native ClassLoader
currentClassLoader(SecurityManager.currentClassLoader142,5529
+ protected Class
currentLoadedClass(SecurityManager.currentLoadedClass149,5707
+ protected native int classDepth(SecurityManager.classDepth162,6167
+ protected native int
classLoaderDepth(SecurityManager.classLoaderDepth174,6668
+ protected boolean inClass(SecurityManager.inClass184,7034
+ protected boolean inClassLoader(SecurityManager.inClassLoader196,7372
+ public Object
getSecurityContext(SecurityManager.getSecurityContext221,8485
+ public void
checkCreateClassLoader(SecurityManager.checkCreateClassLoader238,9069
+ public void checkAccess(SecurityManager.checkAccess268,10298
+ public void checkAccess(SecurityManager.checkAccess298,11632
+ public void checkExit(SecurityManager.checkExit323,12649
+ public void checkExec(SecurityManager.checkExec349,13734
+ public void checkLink(SecurityManager.checkLink375,14813
+ public void checkRead(SecurityManager.checkRead394,15485
+ public void checkRead(SecurityManager.checkRead412,16111
+ public void checkRead(SecurityManager.checkRead434,17017
+ public void checkWrite(SecurityManager.checkWrite453,17706
+ public void checkWrite(SecurityManager.checkWrite471,18337
+ public void checkDelete(SecurityManager.checkDelete493,19165
+ public void checkConnect(SecurityManager.checkConnect517,20119
+ public void checkConnect(SecurityManager.checkConnect543,21254
+ public void checkListen(SecurityManager.checkListen561,21910
+ public void checkAccept(SecurityManager.checkAccept585,22887
+ public void checkMulticast(SecurityManager.checkMulticast597,23272
+ public void checkMulticast(SecurityManager.checkMulticast610,23732
+ public void
checkPropertiesAccess(SecurityManager.checkPropertiesAccess632,24609
+ public void
checkPropertyAccess(SecurityManager.checkPropertyAccess654,25449
+ public boolean
checkTopLevelWindow(SecurityManager.checkTopLevelWindow680,26580
+ public void
checkPrintJobAccess(SecurityManager.checkPrintJobAccess689,26763
+ public void
checkSystemClipboardAccess(SecurityManager.checkSystemClipboardAccess698,26958
+ public void
checkAwtEventQueueAccess(SecurityManager.checkAwtEventQueueAccess707,27159
+ public void
checkPackageAccess(SecurityManager.checkPackageAccess729,27966
+ public void
checkPackageDefinition(SecurityManager.checkPackageDefinition751,28803
+ public void checkSetFactory(SecurityManager.checkSetFactory775,29929
+ public void checkMemberAccess(SecurityManager.checkMemberAccess786,30209
+ public void
checkSecurityAccess(SecurityManager.checkSecurityAccess796,30430
+ private native Class
currentLoadedClass0(SecurityManager.currentLoadedClass0800,30522
+ public ThreadGroup getThreadGroup(SecurityManager.getThreadGroup811,30923
+class NullSecurityManager 817,31025
+ public void
checkCreateClassLoader(NullSecurityManager.checkCreateClassLoader818,31077
+ public void checkAccess(NullSecurityManager.checkAccess819,31123
+ public void checkAccess(NullSecurityManager.checkAccess820,31165
+ public void checkExit(NullSecurityManager.checkExit821,31212
+ public void checkExec(NullSecurityManager.checkExec822,31254
+ public void checkLink(NullSecurityManager.checkLink823,31296
+ public void checkRead(NullSecurityManager.checkRead824,31338
+ public void checkRead(NullSecurityManager.checkRead825,31387
+ public void checkRead(NullSecurityManager.checkRead826,31430
+ public void checkWrite(NullSecurityManager.checkWrite827,31489
+ public void checkWrite(NullSecurityManager.checkWrite828,31539
+ public void checkDelete(NullSecurityManager.checkDelete829,31583
+ public void checkConnect(NullSecurityManager.checkConnect830,31628
+ public void checkConnect(NullSecurityManager.checkConnect831,31684
+ public void checkListen(NullSecurityManager.checkListen832,31756
+ public void checkAccept(NullSecurityManager.checkAccept833,31798
+ public void checkMulticast(NullSecurityManager.checkMulticast834,31853
+ public void checkMulticast(NullSecurityManager.checkMulticast835,31907
+ public void
checkPropertiesAccess(NullSecurityManager.checkPropertiesAccess836,31971
+ public void
checkPropertyAccess(NullSecurityManager.checkPropertyAccess837,32015
+ public void
checkPropertyAccess(NullSecurityManager.checkPropertyAccess838,32067
+ public boolean
checkTopLevelWindow(NullSecurityManager.checkTopLevelWindow839,32131
+ public void
checkPrintJobAccess(NullSecurityManager.checkPrintJobAccess840,32202
+ public void
checkSystemClipboardAccess(NullSecurityManager.checkSystemClipboardAccess841,32244
+ public void
checkAwtEventQueueAccess(NullSecurityManager.checkAwtEventQueueAccess842,32293
+ public void
checkPackageAccess(NullSecurityManager.checkPackageAccess843,32340
+ public void
checkPackageDefinition(NullSecurityManager.checkPackageDefinition844,32391
+ public void checkSetFactory(NullSecurityManager.checkSetFactory845,32446
+ public void
checkMemberAccess(NullSecurityManager.checkMemberAccess846,32484
+ public void
checkSecurityAccess(NullSecurityManager.checkSecurityAccess847,32546
+
+java-src/SysCol.java,4762
+public final class SystemColor 37,1402
+ public final static int DESKTOP SystemColor.DESKTOP42,1555
+ public final static int ACTIVE_CAPTION SystemColor.ACTIVE_CAPTION47,1677
+ public final static int ACTIVE_CAPTION_TEXT
SystemColor.ACTIVE_CAPTION_TEXT52,1800
+ public final static int ACTIVE_CAPTION_BORDER
SystemColor.ACTIVE_CAPTION_BORDER57,1930
+ public final static int INACTIVE_CAPTION
SystemColor.INACTIVE_CAPTION62,2068
+ public final static int INACTIVE_CAPTION_TEXT
SystemColor.INACTIVE_CAPTION_TEXT67,2195
+ public final static int INACTIVE_CAPTION_BORDER
SystemColor.INACTIVE_CAPTION_BORDER72,2329
+ public final static int WINDOW SystemColor.WINDOW77,2459
+ public final static int WINDOW_BORDER SystemColor.WINDOW_BORDER82,2568
+ public final static int WINDOW_TEXT SystemColor.WINDOW_TEXT87,2682
+ public final static int MENU SystemColor.MENU92,2798
+ public final static int MENU_TEXT SystemColor.MENU_TEXT97,2902
+ public final static int TEXT SystemColor.TEXT102,3017
+ public final static int TEXT_TEXT SystemColor.TEXT_TEXT107,3121
+ public final static int TEXT_HIGHLIGHT SystemColor.TEXT_HIGHLIGHT112,3235
+ public final static int TEXT_HIGHLIGHT_TEXT
SystemColor.TEXT_HIGHLIGHT_TEXT117,3359
+ public final static int TEXT_INACTIVE_TEXT
SystemColor.TEXT_INACTIVE_TEXT122,3487
+ public final static int CONTROL SystemColor.CONTROL127,3614
+ public final static int CONTROL_TEXT SystemColor.CONTROL_TEXT132,3724
+ public final static int CONTROL_HIGHLIGHT
SystemColor.CONTROL_HIGHLIGHT137,3844
+ public final static int CONTROL_LT_HIGHLIGHT
SystemColor.CONTROL_LT_HIGHLIGHT142,3975
+ public final static int CONTROL_SHADOW SystemColor.CONTROL_SHADOW147,4100
+ public final static int CONTROL_DK_SHADOW
SystemColor.CONTROL_DK_SHADOW152,4224
+ public final static int SCROLLBAR SystemColor.SCROLLBAR157,4352
+ public final static int INFO SystemColor.INFO162,4467
+ public final static int INFO_TEXT SystemColor.INFO_TEXT167,4571
+ public final static int NUM_COLORS SystemColor.NUM_COLORS172,4681
+ public final static SystemColor desktop SystemColor.desktop177,4790
+ public final static SystemColor activeCaption
SystemColor.activeCaption182,4945
+ public final static SystemColor activeCaptionText
SystemColor.activeCaptionText187,5107
+ public final static SystemColor activeCaptionBorder
SystemColor.activeCaptionBorder192,5280
+ public final static SystemColor inactiveCaption
SystemColor.inactiveCaption197,5470
+ public final static SystemColor inactiveCaptionText
SystemColor.inactiveCaptionText202,5645
+ public final static SystemColor inactiveCaptionBorder
SystemColor.inactiveCaptionBorder207,5830
+ public final static SystemColor window SystemColor.window212,5996
+ public final static SystemColor windowBorder
SystemColor.windowBorder217,6126
+ public final static SystemColor windowText SystemColor.windowText222,6267
+ public final static SystemColor menu SystemColor.menu227,6408
+ public final static SystemColor menuText SystemColor.menuText232,6530
+ public final static SystemColor text SystemColor.text237,6677
+ public final static SystemColor textText SystemColor.textText242,6809
+ public final static SystemColor textHighlight
SystemColor.textHighlight247,6957
+ public final static SystemColor textHighlightText
SystemColor.textHighlightText252,7109
+ public final static SystemColor textInactiveText
SystemColor.textInactiveText257,7267
+ public final static SystemColor control SystemColor.control262,7431
+ public final static SystemColor controlText
SystemColor.controlText267,7569
+ public final static SystemColor controlHighlight
SystemColor.controlHighlight272,7727
+ public final static SystemColor controlLtHighlight
SystemColor.controlLtHighlight277,7897
+ public final static SystemColor controlShadow
SystemColor.controlShadow282,8069
+ public final static SystemColor controlDkShadow
SystemColor.controlDkShadow287,8227
+ public final static SystemColor scrollbar SystemColor.scrollbar292,8384
+ public final static SystemColor info SystemColor.info297,8532
+ public final static SystemColor infoText SystemColor.infoText302,8664
+ private static int[] systemColors SystemColor.systemColors308,8885
+ private static final long serialVersionUID
SystemColor.serialVersionUID340,10406
+ static SystemColor.static342,10478
+ private static void
updateSystemColors(SystemColor.updateSystemColors349,10617
+ private SystemColor(SystemColor.SystemColor357,10885
+ public int getRGB(SystemColor.getRGB370,11245
+ public String toString(SystemColor.toString377,11388
+
+java-src/TG.java,2547
+class ThreadGroup 54,2104
+ ThreadGroup parent;ThreadGroup.parent55,2124
+ String name;ThreadGroup.name56,2148
+ int maxPriority;ThreadGroup.maxPriority57,2165
+ boolean destroyed;ThreadGroup.destroyed58,2186
+ boolean daemon;ThreadGroup.daemon59,2209
+ boolean vmAllowSuspension;ThreadGroup.vmAllowSuspension60,2229
+ int nthreads;ThreadGroup.nthreads62,2261
+ Thread threads[ThreadGroup.threads63,2279
+ int ngroups;ThreadGroup.ngroups65,2302
+ ThreadGroup groups[ThreadGroup.groups66,2319
+ private ThreadGroup(ThreadGroup.ThreadGroup72,2495
+ public ThreadGroup(ThreadGroup.ThreadGroup84,2848
+ public ThreadGroup(ThreadGroup.ThreadGroup105,3714
+ public final String getName(ThreadGroup.getName124,4189
+ public final ThreadGroup getParent(ThreadGroup.getParent135,4492
+ public final int getMaxPriority(ThreadGroup.getMaxPriority148,4867
+ public final boolean isDaemon(ThreadGroup.isDaemon161,5305
+ public synchronized boolean isDestroyed(ThreadGroup.isDestroyed170,5470
+ public final void setDaemon(ThreadGroup.setDaemon192,6368
+ public final void setMaxPriority(ThreadGroup.setMaxPriority213,7110
+ public final boolean parentOf(ThreadGroup.parentOf246,8106
+ public final void checkAccess(ThreadGroup.checkAccess268,8834
+ public int activeCount(ThreadGroup.activeCount283,9286
+ public int enumerate(ThreadGroup.enumerate322,10497
+ public int enumerate(ThreadGroup.enumerate344,11481
+ private int enumerate(ThreadGroup.enumerate348,11584
+ public int activeGroupCount(ThreadGroup.activeGroupCount389,12588
+ public int enumerate(ThreadGroup.enumerate425,13727
+ public int enumerate(ThreadGroup.enumerate445,14595
+ private int enumerate(ThreadGroup.enumerate449,14703
+ public final void stop(ThreadGroup.stop499,16212
+ public final void suspend(ThreadGroup.suspend537,17477
+ public final void resume(ThreadGroup.resume575,18749
+ public final void destroy(ThreadGroup.destroy607,19779
+ private final void add(ThreadGroup.add643,20704
+ private void remove(ThreadGroup.remove668,21402
+ void add(ThreadGroup.add697,22142
+ void remove(ThreadGroup.remove722,22808
+ public void list(ThreadGroup.list751,23503
+ void list(ThreadGroup.list754,23556
+ public void uncaughtException(ThreadGroup.uncaughtException810,25512
+ public boolean
allowThreadSuspension(ThreadGroup.allowThreadSuspension823,25823
+ public String toString(ThreadGroup.toString837,26142
+
+lua-src/allegro.lua,400
+local function get_layer_by_name 7,175
+local function count_layers 33,621
+function GetLayerByName 54,980
+function GetUniqueLayerName 65,1204
+function SelectLayer 76,1415
+function NewLayer 86,1773
+function NewLayerSet 144,3226
+function RemoveLayer 170,3750
+function MoveLayerTop 211,4767
+function MoveLayerBottom 223,5079
+function MoveLayerBefore 236,5457
+function MoveLayerAfter 258,6090
+
+make-src/Makefile,1156
+LATEST=1,0
+NONSRCS=35,1578
+CPPFLAGS=49,2191
+LDFLAGS=50,2260
+FASTCFLAGS=55,2531
+FILTER=58,2642
+ @-$($72,3064
+ @-$($73,3113
+ @-$($74,3177
+ @-$($75,3223
+ @-$($76,3291
+ @-$($77,3383
+ @$(81,3466
+ @$(82,3514
+ @$(83,3577
+ @$(84,3622
+ @$(85,3689
+ @$(86,3780
+${CHECKOBJS}: CFLAGS=88,3806
+ @env CHECKEROPTS=92,3922
+ @$(98,4094
+ @$(106,4250
+ @$(110,4374
+ @$(114,4500
+ @for i in $(140,5315
+ @for i in $(SRCS); do echo $$i;140,5315
+ $(160,6053
+ $(163,6114
+ $(166,6177
+ $(169,6228
+ $(172,6317
+ sdiff --suppress-common-lines --width=width186,6614
+ sdiff --suppress-common-lines --width=width189,6703
+ sdiff --suppress-common-lines --width=width192,6791
+ sdiff --suppress-common-lines --width=width195,6880
+ TEXTAGS=204,7122
+ TEXTAGS=def:newcommand:newenvironment ${RUN} etags$*
--regex=regex204,7122
+ ${RUN} etags12 --members -o $@ --regex=regex207,7239
+ ${RUN} ./ctags -o $@ --regex=regex213,7388
+ ${RUN} ctags$* -wtTd --globals --members -o $@ --regex=regex216,7464
+ TEXTAGS=219,7583
+ TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@
--regex=regex219,7583
+ ${RUN} ./extags -e --regex-c=c222,7710
+
+objc-src/Subprocess.h,98
+#define Subprocess 41,1217
+#define BUFFERSIZE 43,1267
address@hidden Subprocess:Subprocess45,1292
+
+objc-src/Subprocess.m,505
+#define PTY_TEMPLATE 20,494
+#define PTY_LENGTH 21,528
+static void showError(23,551
address@hidden Subprocess(Private)Subprocess(Private)32,737
+- childDidExit39,851
+- fdHandler:67,1589
+showError 98,2360
+fdHandler 112,2785
+getptys 119,2907
+- init:183,4815
+ andStdErr:init:withDelegate:andPtySupport:andStdErr:197,5147
+- send:(const char *)string withNewline:send:withNewline:300,7436
+- send:308,7599
+- terminateInput314,7689
+- terminate:321,7810
+- setDelegate:332,7961
+- delegate338,8031
+
+objc-src/PackInsp.h,109
+#define NUMSTATS 36,1101
+#define TYPESTOSTAT 37,1120
address@hidden PackageInspector:PackageInspector39,1172
+
+objc-src/PackInsp.m,1360
+static const char RCSid[RCSid30,1032
+#define VERSION 34,1116
+# define DEBUG 37,1155
+#define LISTCONTENTS 39,1181
+#define OPENBUTTON 47,1352
+#define LISTCONTENTSBUTTON 48,1449
+#define LISTDESCRIPTIONBUTTON 49,1562
+#define STATE_UNINSTALLED 52,1687
+#define STATE_INSTALLED 53,1807
+#define STATE_COMPRESSD 54,1948
+#define SIZEFORMAT 57,2152
+#define KBYTES 58,2362
+#define MBYTES 59,2473
+#define LOCALIZE(61,2585
+#define LOCALIZE_ARCH(62,2668
++newnew67,2802
+-showInfo:showInfo:93,3417
+-revert:revert:107,3737
+-ok:ok:136,4297
+-loadload143,4424
+#define LOOKUP(156,4826
+#undef LOOKUP176,5694
+-loadKeyValuesFrom:(const char *)type
inTable:loadKeyValuesFrom:inTable:186,5852
+-loadContentsOf:(const char *)type inTable:loadContentsOf:inTable:238,7079
+-loadImageloadImage257,7552
+#define STAT_EQ(275,7940
+-(BOOL)shouldLoad280,8116
+-toggleDescriptiontoggleDescription301,8626
+-(const char *)getPath:(char *)buf forType:getPath:forType:317,8899
+-setRevertButtonTitlesetRevertButtonTitle333,9320
+-(const char *)formatSize:(const char *)size inBuf:formatSize:inBuf:344,9525
+#define WORKING 368,10045
+-(void)getArchs370,10100
+-(void)addArchs:385,10520
+-subprocess:(Subprocess *)sender output:subprocess:output:428,11351
+-subprocessDone:subprocessDone:436,11484
+static void openInWorkspace(446,11634
+-open:open:464,12063
+
+objcpp-src/SimpleCalc.H,41
address@hidden SimpleCalc:SimpleCalc14,400
+
+objcpp-src/SimpleCalc.M,300
+- init52,1747
+- appendToDisplay:60,1933
+- registerAction:70,2210
+- decimalKey:77,2348
+- numberKeys:91,2661
+- equalsKey:112,3192
+- operationKeys:131,3680
+- clearKey:153,4301
+- clearAllKey:160,4410
+- appDidInit:168,4591
+- windowWillClose:178,4882
+- infoPanel:186,5132
+- helpPanel:198,5482
+
+pas-src/common.pas,1875
+procedure InitializeStringPackage;26,527
+function newtextstring;34,874
+procedure disposetextstring;52,1404
+function ConcatT;78,2066
+function AppendTextString;112,3238
+function CopyTextString;132,3947
+procedure CONVERT_CHARSTRING_TO_VALUE;151,4505
+procedure append_string;172,5166
+function To_Upper;186,5462
+function To_Lower;194,5617
+function EmptyNmStr(209,6213
+function chartonmstr;219,6436
+function LowerCaseNmStr;230,6682
+function concatenatenamestrings;242,7007
+procedure writenamestring;263,7517
+function IsControlChar;277,7928
+function namestringequal;283,8079
+function NameStringLess;302,8539
+function IsControlCharName(343,9710
+function SubString;358,10208
+function SkipChars;379,10791
+function RemoveUnderlineControl;397,11311
+procedure First100Chars;427,12162
+procedure SkipSpaces;462,13298
+function SkipBlanks;477,13782
+function stripname;505,14595
+function Locate;522,15039
+function NameHasChar;543,15581
+function integertonmstr;561,16134
+function NmStrToInteger;585,16901
+function AddNullToNmStr;600,17317
+function ValToNmStr;611,17585
+function ChangeFileType;625,18037
+function StripPath;647,18734
+function ReprOfChar;675,19343
+procedure ExtractCommentInfo;702,20749
+procedure INSERT_TREE_NODE;784,24053
+function GetNameList;920,27926
+procedure DisposeANameList(925,28010
+procedure DisposeNameList;938,28340
+function GetNewNameListNode;943,28409
+function insertname;972,29051
+procedure InitNameList;988,29471
+procedure InitNameStringPool;998,29767
+procedure NewNameString;1004,29867
+procedure ReleaseNameString;1022,30232
+procedure SDTrefStringToRec 1045,30741
+procedure SDTrefSkipSpaces;1059,31092
+function SDTrefIsEnd 1070,31323
+function SDTrefGetInteger 1082,31529
+procedure SDTrefRecToString 1303,37546
+function NmStrToErrStr;1497,42305
+function ErrStrToNmStr;1509,42557
+function GetTextRef;1529,43112
+
+php-src/lce_functions.php,2864
+ define("LCE_FUNCTIONS"LCE_FUNCTIONS4,38
+ define("LCE_UNKNOWN"LCE_UNKNOWN9,145
+ define("LCE_WS"LCE_WS11,194
+ define("LCE_COMMENT"LCE_COMMENT13,244
+ define("LCE_COMMENT_USER"LCE_COMMENT_USER15,303
+ define("LCE_COMMENT_TOOL"LCE_COMMENT_TOOL17,366
+ define("LCE_MSGID"LCE_MSGID19,430
+ define("LCE_MSGSTR"LCE_MSGSTR21,488
+ define("LCE_TEXT"LCE_TEXT23,541
+ define("STATE_ABORT"STATE_ABORT25,567
+ define("STATE_OK"STATE_OK26,595
+ define("STATE_LOOP"STATE_LOOP27,620
+ class POEntryAD 29,648
+ function validate(31,683
+ function checkQuotation(59,1384
+ class CommentAD 70,1639
+ var $prefix;72,1674
+ function CommentAD(73,1693
+ function validate(83,1944
+ class POEntry 105,2410
+ var $msgid;107,2454
+ var $msgstr;108,2472
+ var $user_comment;109,2491
+ var $sys_comment;110,2516
+ var $unk_comment;111,2540
+ var $msgid_lc 113,2565
+ var $msgstr_lc 114,2590
+ var $user_comment_lc 115,2616
+ var $sys_comment_lc 116,2648
+ var $unk_comment_lc 117,2679
+ function POEntry(119,2711
+ function lineCount(135,3255
+ function serializeToVars(141,3365
+ function write(151,3800
+ class POReader 163,4178
+ var $msgid;165,4223
+ var $msgstr;166,4241
+ var $user_comment;167,4260
+ var $sys_comment;168,4285
+ var $unk_comment;169,4309
+ var $state;170,4333
+ var $ignore_ws;171,4351
+ var $po_entries;172,4373
+ var $poe_num;173,4396
+ var $filename;174,4416
+ var $domain;175,4437
+ function gettext(177,4457
+ function parseFromVars(189,4705
+ function serializeToVars(215,5331
+ function POReader(229,5613
+ function read(243,5983
+ function write(259,6307
+ function isComment(277,6645
+ function comment(284,6822
+ function msgid(304,7247
+ function msgstr(320,7574
+ function start(340,8232
+ function createPOEntries(360,8644
+ function stripLine(394,9472
+ function printClassification(421,10056
+ function classifyLine(432,10301
+ function getTextDomains(471,11094
+ class PORManager 498,11756
+ var $por_a;500,11803
+ function PORManager(502,11822
+ function addPOReader(507,11896
+ function &getPOReader(getPOReader512,11992
+ function getDomainNames(517,12081
+ function &loadPORManager(loadPORManager523,12174
+ function fileJoin(536,12436
+ function lce_bindtextdomain(557,12839
+ function lce_textdomain(614,14530
+ function lce_gettext(620,14641
+ function lce_dgettext(626,14767
+ function lce(634,14966
+ function lce_bindtextdomain(651,15488
+ function lce_textdomain(656,15592
+ function lce_gettext(661,15674
+ function lce_dgettext(666,15755
+ function lce(670,15855
+ function lce_geteditcode(676,15898
+
+php-src/ptest.php,135
+define("TEST"TEST1,0
+test 4,26
+ var $member;8,71
+ var $memassign=9,85
+ var $memassign_space 10,110
+ var $test12,176
+foo(16,200
+
+perl-src/htlmify-cystic,1443
+my @section_name;section_name12,236
+my @appendix_name;appendix_name13,254
+my @section_toc;section_toc15,274
+my @appendix_toc;appendix_toc16,291
+my $new_tag new_tag18,310
+my $appendix;appendix24,409
+my $section;section25,423
+my $subsection;subsection26,436
+my $subsubsection;subsubsection27,452
+my $this_file_toc this_file_toc29,472
+my %file_tocs;file_tocs30,496
+my @output_files output_files32,512
+my $file_index file_index33,535
+my $output_file;output_file35,556
+my $line;line37,574
+my $subsection_marker;subsection_marker161,3883
+my $new;new163,3907
+sub read_toc main::read_toc165,3917
+ my $entry entry218,5621
+ my $entry entry234,6077
+ my $entry entry245,6351
+ my $entry entry252,6536
+ my $entry entry268,7010
+ my $entry entry276,7204
+ my $entry entry281,7328
+ my $entry entry296,7698
+sub finish_subsubsections main::finish_subsubsections302,7805
+sub finish_subsections main::finish_subsections309,7987
+sub finish_sections main::finish_sections320,8310
+sub finish_appendices main::finish_appendices331,8599
+sub section_url_base main::section_url_base337,8724
+sub section_url_name main::section_url_name342,8922
+sub section_url main::section_url355,9284
+ my $name name357,9336
+sub section_href main::section_href364,9452
+sub section_name main::section_name368,9551
+sub toc_line main::toc_line372,9655
+sub file_end main::file_end375,9750
+
+perl-src/yagrip.pl,258
+sub getopt main::getopt7,156
+ local($_,$flag,$opt,$f,$r,@temp)($_,$flag,$opt,$f,$r,@temp8,169
+sub usage main::usage38,856
+ local($prog,$_,@list)($prog,$_,@list39,868
+
local($string,$flag,@string,@temp,@last)($string,$flag,@string,@temp,@last40,897
+
+perl-src/kai-test.pl,244
+sub f1 main::f12,16
+sub main::f2 6,50
+package Foo;10,90
+sub f3 Foo::f312,104
+sub Bar::f4 16,138
+package Bar;20,177
+sub f5 Bar::f522,191
+package Foo::Bar;26,225
+sub f6 Foo::Bar::f628,244
+package main;32,278
+sub f7 main::f734,293
+
+perl-src/mirror.pl,13410
+sub msg_versionmain::msg_version459,18271
+ local( $arg )( $arg 468,18582
+ local( $flag, $p )( $flag, $p 480,18757
+ local( $site_path )( $site_path 525,19687
+ local( $site, $path )( $site, $path 539,19958
+ local( $key_val )( $key_val 578,20743
+ local( $user )( $user 595,21097
+ local( $c )( $c 634,21853
+ local( $sec,$min,$hour,$mday,$mon,$year,(
$sec,$min,$hour,$mday,$mon,$year,678,22807
+ local( $c )( $c 706,23393
+ local( $dir, $mp )( $dir, $mp 723,23695
+ local( $f )( $f 725,23740
+sub interpret_config_filesmain::interpret_config_files756,24304
+ local( $fname )( $fname 758,24333
+sub interpret_configmain::interpret_config785,24927
+sub parse_linemain::parse_line827,25710
+ local( $eqpl )( $eqpl 829,25727
+ local( $cont )( $cont 830,25744
+ local( $v )( $v 839,26029
+sub set_defaultsmain::set_defaults860,26448
+sub command_line_overridemain::command_line_override868,26579
+ local( $key, $val, $overrides )( $key, $val, $overrides 870,26607
+sub set_variablesmain::set_variables894,27072
+ local( $key, $val )( $key, $val 896,27092
+ local( $val_name )( $val_name 902,27259
+ local( $val )( $val 953,28825
+sub upd_valmain::upd_val962,28974
+ local( $key )( $key 964,28988
+sub pr_variablesmain::pr_variables970,29083
+ local( $msg )( $msg 972,29102
+ local( $nle )( $nle 973,29123
+ local( $out )( $out 974,29144
+ local( $key, $val, $str )( $key, $val, $str 975,29164
+sub do_mirrormain::do_mirror1007,29923
+ local( $get_one_package )( $get_one_package 1009,29939
+ local( $exit_status )( $exit_status 1030,30384
+ local( @t )( @t 1154,33165
+ local( $con )( $con 1241,35499
+ local( @rhelp )( @rhelp 1289,36702
+ local( @sub_dirs )( @sub_dirs 1329,37778
+ local( $now )( $now 1493,41348
+ local( $arg )( $arg 1506,41774
+sub disconnectmain::disconnect1528,42250
+sub connectmain::connect1546,42576
+ local( $attempts )( $attempts 1548,42590
+ local( $res )( $res 1549,42642
+sub prodmain::prod1573,43156
+sub checkout_regexpsmain::checkout_regexps1585,43327
+ local( $ret )( $ret 1587,43350
+ local( $t )( $t 1589,43395
+ local( $val )( $val 1597,43701
+ local( $err )( $err 1601,43786
+sub clear_localmain::clear_local1610,43909
+sub clear_remotemain::clear_remote1625,44172
+sub get_local_directory_detailsmain::get_local_directory_details1640,44445
+ local( @dirs, $dir )( @dirs, $dir 1642,44479
+ local( $last_prodded )( $last_prodded 1643,44502
+ local( $dir_level )( $dir_level 1691,45615
+ local( $i )( $i 1692,45641
+ local( $path, $time, $size, $type, $mode, $name, $isdir, $value,
$follow )( $path, $time, $size, $type, $mode, $name, $isdir, $value, $follow
1693,45659
+ local( $dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,(
$dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,1694,45736
+ local( $mapi )( $mapi 1763,47586
+sub get_remote_directory_detailsmain::get_remote_directory_details1789,48122
+ local( $type_changed )( $type_changed 1791,48157
+ local( $udirtmp )( $udirtmp 1792,48186
+ local( $storename )( $storename 1793,48206
+ local( $rls )( $rls 1825,48944
+ local( $dirtmp )( $dirtmp 1830,49002
+ local( $unsquish )( $unsquish 1832,49130
+ local( $f )( $f 1840,49360
+ local( $dirtmp )( $dirtmp 1859,49866
+ local( $unsquish )( $unsquish 1870,50215
+ local( $f, $uf )( $f, $uf 1878,50445
+ local( $flags )( $flags 1912,51259
+ local( $parse_state )( $parse_state 1946,52111
+ local( $msg )( $msg 1963,52486
+sub patch_ls_lR_filemain::patch_ls_lR_file1984,52955
+ local( $f, $fr, $flb, $flt, $flp, $flz, $frb, $frt )( $f, $fr, $flb,
$flt, $flp, $flz, $frb, $frt 1990,53055
+ local( $to , $tn )( $to , $tn 1991,53110
+ local( $tlb )( $tlb 1995,53225
+ local( $p, $s, $trz, $t, $m )( $p, $s, $trz, $t, $m 2030,54182
+ local( $tlz )( $tlz 2037,54467
+sub parse_timeoutmain::parse_timeout2089,55670
+sub parse_remote_detailsmain::parse_remote_details2095,55754
+ local( $ret )( $ret 2097,55781
+ local( $old_sig )( $old_sig 2098,55797
+sub parse_remote_details_realmain::parse_remote_details_real2125,56234
+ local( $path, $size, $time, $type, $mode, $rdir, $rcwd )( $path,
$size, $time, $type, $mode, $rdir, $rcwd 2127,56266
+ local( @dir_list )( @dir_list 2128,56325
+ local( $i )( $i 2129,56346
+ local( $old_path )( $old_path 2130,56364
+ local( $old_path )( $old_path 2143,56630
+ local( $ri )( $ri 2203,58078
+ local( $mapi )( $mapi 2214,58335
+ local( $done )( $done 2239,58911
+sub compare_dirsmain::compare_dirs2283,59825
+ local( *src_paths,( *src_paths,2286,59915
+ local( $src_path, $dest_path, $i )( $src_path, $dest_path, $i
2293,60099
+ local( $last_prodded )( $last_prodded 2294,60136
+ local( $desti, $srci, $compress, $srciZ, $srcigz, $split,
$dest_path_real )( $desti, $srci, $compress, $srciZ, $srcigz, $split,
$dest_path_real 2299,60350
+ local( $old_dest_path, $existing_path, $tmp, $restart )(
$old_dest_path, $existing_path, $tmp, $restart 2300,60428
+ local( $sp, $dp )( $sp, $dp 2301,60486
+ local( $real, $reali, $reali1 )( $real, $reali, $reali1
2352,62034
+ local( $count )( $count 2353,62072
+ local( $value )( $value 2408,63996
+ local( $real )( $real 2409,64028
+ local( $reali )( $reali 2410,64086
+ local( $old )( $old 2421,64571
+ local( $old_dest_path )( $old_dest_path 2432,64842
+ local( $dpp, $dps )( $dpp, $dps 2509,67031
+ local( $update )( $update 2534,67671
+sub map_namemain::map_name2651,71028
+ local( $name )( $name 2653,71043
+ local( $old_name )( $old_name 2656,71089
+ local( $tmp )( $tmp 2666,71252
+sub set_timestampsmain::set_timestamps2675,71362
+ local( $src_path )( $src_path 2677,71383
+ local( $dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime )(
$dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime 2685,71517
+sub set_timestampmain::set_timestamp2699,71901
+ local( $path, $time )( $path, $time 2701,71921
+ local( $pr_time )( $pr_time 2703,71953
+sub make_dirsmain::make_dirs2719,72284
+ local( $thing )( $thing 2721,72300
+sub make_symlinksmain::make_symlinks2736,72489
+ local( $thing )( $thing 2738,72509
+ local( $dest, $existing )( $dest, $existing 2745,72623
+ local( $dirpart )( $dirpart 2746,72663
+ local( $ft )( $ft 2747,72704
+ local( $p )( $p 2762,73261
+ local( $f )( $f 2770,73467
+ local( $dl )( $dl 2788,74038
+sub do_all_transfersmain::do_all_transfers2806,74439
+ local( $src_path )( $src_path 2808,74462
+ local( $dest_path, $attribs )( $dest_path, $attribs 2809,74483
+ local( $srci )( $srci 2810,74515
+ local( $newpath )( $newpath 2838,75124
+sub transfer_filemain::transfer_file2869,75847
+ local( $src_path, $dest_path, $attribs, $timestamp )( $src_path,
$dest_path, $attribs, $timestamp 2871,75867
+ local( $dir, $file, $temp, $compress, $split, $restart, $mesg,
$got_mesg )( $dir, $file, $temp, $compress, $split, $restart, $mesg, $got_mesg
2872,75927
+ local( $src_file )( $src_file 2915,76782
+ local( $comptemp )( $comptemp 2916,76816
+ local( $f )( $f 2921,76964
+ local($filesize)($filesize2944,77569
+ local( $ti )( $ti 2975,78401
+ local( $f )( $f 2997,78887
+ local( $comp )( $comp 2998,78912
+ local( $filesize )( $filesize 3015,79427
+ local( $sizemsg )( $sizemsg 3016,79469
+ local( $srcsize )( $srcsize 3017,79501
+ local( $time )( $time 3029,79865
+ local( $as )( $as 3046,80223
+ local( $locali )( $locali 3054,80499
+sub filename_to_tempnamemain::filename_to_tempname3062,80713
+ local( $dir, $file )( $dir, $file 3064,80740
+ local ( $dest_path )( $dest_path 3066,80769
+sub log_uploadmain::log_upload3090,81228
+ local( $src_path, $dest_path, $got_mesg, $size )( $src_path,
$dest_path, $got_mesg, $size 3092,81245
+sub do_deletesmain::do_deletes3118,81773
+ local( *src_paths,( *src_paths,3121,81861
+ local( $files_to_go, $dirs_to_go )( $files_to_go, $dirs_to_go
3125,81960
+ local( $src_path, $i )( $src_path, $i 3131,82055
+ local( $orig_do_deletes )( $orig_do_deletes 3132,82080
+ local( $orig_save_deletes )( $orig_save_deletes 3133,82122
+ local( $del_patt )( $del_patt 3135,82169
+ local( $per )( $per 3162,82843
+ local( $per )( $per 3184,83513
+ local( $save_dir_tail )( $save_dir_tail 3226,84617
+sub save_deletemain::save_delete3245,85019
+ local( $save, $kind )( $save, $kind 3247,85037
+ local( $real_save_dir, $save_dest )( $real_save_dir, $save_dest
3249,85067
+ local( $dirname )( $dirname 3284,85704
+sub save_mkdirmain::save_mkdir3304,86155
+ local( $dir )( $dir 3306,86172
+sub do_deletemain::do_delete3320,86459
+ local( $del, $kind )( $del, $kind 3322,86475
+sub filesizemain::filesize3377,87532
+ local( $fname )( $fname 3379,87547
+sub istruemain::istrue3390,87654
+ local( $val )( $val 3392,87667
+sub mksymlinkmain::mksymlink3398,87773
+ local( $dest_path, $existing_path )( $dest_path, $existing_path
3400,87789
+ local( $msg )( $msg 3417,88246
+ local( $msg )( $msg 3431,88590
+ local( $status )( $status 3442,88816
+sub mkdirsmain::mkdirs3457,89196
+ local( $dir )( $dir 3459,89209
+ local( @dir, $d, $path )( @dir, $d, $path 3460,89230
+sub make_dirmain::make_dir3497,90042
+ local( $dir, $mode )( $dir, $mode 3499,90057
+ local( $val )( $val 3500,90085
+sub dir_existsmain::dir_exists3528,90573
+ local( $dir )( $dir 3530,90590
+ local( $val )( $val 3531,90611
+ local($old_dir)($old_dir3539,90750
+sub set_attribsmain::set_attribs3553,91053
+ local( $path, $src_path, $type )( $path, $src_path, $type 3555,91071
+ local( $mode )( $mode 3556,91111
+ local( $pathi )( $pathi 3564,91229
+ local( $pathi )( $pathi 3568,91320
+sub get_passwdmain::get_passwd3606,91977
+ local( $user )( $user 3608,91994
+ local( $pass )( $pass 3609,92016
+ local( $| )( $| 3610,92033
+sub compare_timesmain::compare_times3631,92384
+ local( $t1, $t2 )( $t1, $t2 3637,92564
+ local( $diff )( $diff 3638,92589
+sub create_assocsmain::create_assocs3643,92688
+ local( $map )( $map 3645,92708
+sub delete_assocsmain::delete_assocs3657,92957
+ local( $map )( $map 3659,92977
+sub unlink_dbmmain::unlink_dbm3671,93247
+ local( $file )( $file 3673,93264
+sub bsplitmain::bsplit3681,93462
+ local( $temp, $dest_path, $time )( $temp, $dest_path, $time 3683,93475
+ local( $dest_dir )( $dest_dir 3684,93516
+ local( $bufsiz )( $bufsiz 3685,93558
+ local( $buffer, $in, $sofar )( $buffer, $in, $sofar 3686,93583
+ local( $d )( $d 3691,93721
+ local( $index )( $index 3697,93840
+ local( $part )( $part 3698,93865
+ local( $locali )( $locali 3714,94336
+ local( $readme )( $readme 3730,94740
+sub sysmain::sys3739,95116
+ local( $com )( $com 3741,95126
+sub set_assoc_from_arraymain::set_assoc_from_array3751,95355
+ local( *things )( *things 3754,95453
+sub find_progmain::find_prog3760,95537
+ local( $prog )( $prog 3762,95553
+ local( $path )( $path 3763,95575
+ local( $path )( $path 3766,95657
+sub real_dir_from_pathmain::real_dir_from_path3780,95842
+ local( $program )( $program 3782,95867
+ local( @prog_path )( @prog_path 3783,95892
+ local( $dir )( $dir 3784,95970
+sub msgmain::msg3807,96489
+ local( $todo, $msg )( $todo, $msg 3809,96499
+sub to_bytesmain::to_bytes3838,96979
+ local( $size )( $size 3840,96994
+sub unix2vmsmain::unix2vms3858,97332
+ local( $v, $kind )( $v, $kind 3860,97347
+ local( $dir, $rest )( $dir, $rest 3873,97559
+sub dirpartmain::dirpart3886,97730
+ local( $path )( $path 3888,97744
+sub expand_symlinkmain::expand_symlink3902,98076
+ local( $orig_path, $points_to )( $orig_path, $points_to 3904,98097
+ local( $dirpart )( $dirpart 3905,98136
+sub flatten_pathmain::flatten_path3913,98365
+ local( $path )( $path 3915,98384
+ local( $changed )( $changed 3916,98406
+ local( $i )( $i 3917,98430
+ local( $rooted )( $rooted 3919,98446
+ local( $count )( $count 3920,98482
+ local( $orig_path )( $orig_path 3921,98504
+ local( $in )( $in 3932,98741
+ local( @parts )( @parts 3933,98765
+sub fix_packagemain::fix_package3963,99438
+ local( $package )( $package 3965,99456
+sub will_compressmain::will_compress3970,99529
+sub will_splitmain::will_split3981,99859
+sub myflockmain::myflock3989,100001
+ local( $file, $kind )( $file, $kind 3991,100015
+sub t2strmain::t2str4004,100221
+ local( @t )( @t 4006,100233
+
local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst4013,100335
+sub handlermain::handler4022,100583
+ local( $sig )( $sig 4029,100651
+ local( $msg )( $msg 4030,100679
+ local( $package, $filename, $line )( $package, $filename, $line
4031,100737
+sub trap_signalsmain::trap_signals4036,100859
+ local( $sig )( $sig 4038,100878
+sub map_user_groupmain::map_user_group4047,101158
+sub keepmain::keep4069,101537
+ local( $pathi, $path, *keep, *keep_totals, *keep_map, $kind )( $pathi,
$path, *keep, *keep_totals, *keep_map, $kind 4071,101548
+sub alarmmain::alarm4104,102330
+ local( $time_to_sig )( $time_to_sig 4106,102342
+sub chownmain::chown4110,102405
+ local( $uid, $gid, $path )( $uid, $gid, $path 4112,102417
+sub utimemain::utime4116,102494
+ local( $atime, $mtime, $path )( $atime, $mtime, $path 4118,102506
+ local( $old_mode )( $old_mode 4124,102685
+ local( $tmp_mode )( $tmp_mode 4125,102730
+ local( $ret )( $ret 4126,102763
+sub cwdmain::cwd4135,102913
+ local( $lcwd )( $lcwd 4137,102923
+
+ps-src/rfc1245.ps,2478
+/FMversion 12,311
+/FrameDict 17,500
+/FMVERSION 47,1307
+/FMLOCAL 56,1494
+/FMDOCUMENT 73,1766
+/FMBEGINPAGE 95,2279
+/FMENDPAGE 109,2516
+/FMDEFINEFONT 115,2582
+/FMNORMALIZEGRAPHICS 126,2725
+/FMBEGINEPSF 142,2955
+/FMENDEPSF 153,3207
+/setmanualfeed 158,3283
+/max 163,3386
+/min 164,3426
+/inch 165,3466
+/pagedimen 166,3485
+/setpapername 172,3629
+/papersize 190,4214
+/manualpapersize 211,4789
+/desperatepapersize 230,5211
+/savematrix 239,5370
+/restorematrix 242,5425
+/dmatrix 245,5475
+/dpi 246,5495
+/freq 248,5583
+/sangle 249,5658
+/DiacriticEncoding 250,5717
+/.notdef 251,5738
+/.notdef 252,5801
+/.notdef 253,5864
+/.notdef 254,5927
+/.notdef 255,5990
+/numbersign 256,6051
+/parenright 257,6115
+/two 258,6184
+/less 259,6251
+/L 260,6320
+/bracketright 261,6389
+/i 262,6459
+/braceright 263,6529
+/Ntilde 264,6598
+/atilde 265,6668
+/iacute 266,6733
+/ocircumflex 267,6797
+/udieresis 268,6858
+/paragraph 269,6919
+/dieresis 270,6983
+/yen 271,7050
+/ordfeminine 272,7109
+/exclamdown 273,7171
+/guillemotleft 274,7230
+/Otilde 275,7296
+/quoteleft 276,7357
+/fraction 277,7420
+/periodcentered 278,7490
+/Acircumflex 279,7549
+/Icircumflex 280,7610
+/Uacute 281,7680
+/breve 282,7746
+/ReEncode 284,7814
+/graymode 300,8020
+/setpattern 310,8184
+/grayness 331,8725
+/normalize 394,9873
+/dnormalize 397,9942
+/lnormalize 400,10014
+/H 403,10104
+/Z 406,10147
+/X 409,10176
+/V 412,10219
+/N 415,10260
+/M 418,10286
+/E 419,10315
+/D 420,10336
+/O 421,10358
+/L 423,10394
+/Y 430,10489
+/R 439,10588
+/RR 450,10696
+/C 467,10959
+/U 473,11004
+/F 477,11039
+/T 481,11084
+/RF 484,11115
+/TF 488,11164
+/P 495,11219
+/PF 499,11270
+/S 506,11344
+/SF 510,11384
+/B 517,11446
+/BF 521,11505
+/W 538,11714
+/G 573,12382
+/A 582,12525
+/BEGINPRINTCODE 606,12918
+/ENDPRINTCODE 615,13131
+/gn 620,13259
+/cfs 631,13384
+/ic 636,13473
+/ms 658,14285
+/ip 668,14395
+/wh 678,14492
+/bl 684,14607
+/s1 690,14722
+/fl 691,14739
+/hx 698,14887
+/wbytes 709,15055
+/BEGINBITMAPBWc 713,15147
+/BEGINBITMAPGRAYc 716,15198
+/BEGINBITMAP2BITc 719,15251
+/COMMONBITMAPc 722,15304
+/BEGINBITMAPBW 739,15660
+/BEGINBITMAPGRAY 742,15709
+/BEGINBITMAP2BIT 745,15760
+/COMMONBITMAP 748,15811
+/Fmcc 765,16156
+/ngrayt 773,16371
+/nredt 774,16393
+/nbluet 775,16414
+/ngreent 776,16436
+/colorsetup 787,16603
+/fakecolorsetup 814,17370
+/BITMAPCOLOR 826,17636
+/BITMAPCOLORc 839,17926
+/BITMAPGRAY 855,18275
+/BITMAPGRAYc 858,18335
+/ENDBITMAP 861,18397
+/fillprocs 868,18497
+
+prol-src/ordsets.prolog,525
+is_ordset(47,1310
+list_to_ord_set(63,1688
+ord_add_element(71,1867
+ord_del_element(85,2344
+ord_disjoint(100,2783
+ord_intersect(108,2953
+ord_intersection(126,3552
+ord_intersection3(130,3691
+ord_intersection(150,4531
+ord_intersection4(154,4703
+ord_intersection(176,5664
+ord_intersection2(181,5812
+ord_member(200,6318
+ord_seteq(216,6683
+ord_setproduct(225,6971
+ord_subset(240,7377
+ord_subtract(257,7861
+ord_symdiff(265,8054
+ord_union(288,8887
+ord_union4(303,9352
+ord_union(324,10171
+ord_union_all(329,10313
+
+prol-src/natded.prolog,2319
+expandmng(100,2879
+normalize(116,3359
+fresh_vars(125,3716
+subst(138,4134
+normalize_fresh(159,4660
+reduce_subterm(171,5112
+reduce(185,5559
+free_var(196,5903
+free_for(209,6246
+compile_lex(231,6875
+consult_lex:-consult_lex248,7384
+lex(259,7754
+expandsyn(267,8068
+bas_syn(292,8897
+compile_empty:-compile_empty310,9376
+complete(328,10055
+add_active(340,10527
+parse(353,10949
+derived_analyses(364,11341
+build(378,11965
+buildact(392,12521
+mapsyn(412,13542
+add_edge(434,14278
+findcats(447,14758
+normalize_tree(465,15478
+normalize_trees(475,15856
+expandmng_tree(486,16248
+expandmng_trees(496,16614
+cat(511,17013
+subtree(644,21266
+hypothetical_mem(653,21565
+make_coor(667,22130
+start_up:-start_up688,23013
+tokenizeatom(710,23921
+tokenize(720,24348
+isoperator(752,25377
+isoptab(756,25431
+specialsymbol(765,25756
+sstab(771,25861
+parse_cgi(787,26347
+keyvalseq(792,26510
+andkeyvalseq(796,26609
+keyval(799,26688
+valseq(807,26920
+plusvalseq(810,27007
+val(816,27109
+argvals(824,27426
+commaargvals(828,27503
+atomval(833,27578
+atom(836,27640
+action(846,28004
+keyvalcgi(864,28649
+keyvalscgi(865,28670
+outsyn(868,28726
+act(876,29060
+actout(901,29906
+texttreelist(912,30089
+htmltreelist(918,30190
+fitchtreelist(924,30304
+pp_html_table_tree(938,30759
+pp_html_tree(949,31113
+pp_html_trees(988,32381
+pp_html_table_fitch_tree(999,32769
+pp_html_fitch_tree(1017,33672
+removeexp(1129,39002
+splitexp(1142,39490
+pp_exp(1155,39990
+map_word(1168,40249
+pp_exps(1180,40474
+pp_tree(1188,40777
+pp_trees(1216,41807
+pp_word_list(1225,42128
+pp_word(1231,42262
+pp_word_list_rest(1238,42569
+pp_cat(1248,42929
+pp_syn(1255,43196
+pp_syn_paren(1276,43899
+pp_paren(1293,44377
+pp_syn_back(1300,44661
+pp_bas_cat(1311,45001
+writecat(1322,45409
+writesubs(1351,46455
+writesups(1361,46757
+writelistsubs(1371,47090
+pp_lam(1380,47408
+pp_lam_bracket(1398,48022
+pp_lam_paren(1407,48338
+pp_rule(1429,49238
+member(1447,49866
+append_list(1451,49919
+append(1456,50010
+at_least_one_member(1460,50076
+numbervars(1464,50171
+reverse(1467,50209
+select(1471,50290
+select_last(1475,50357
+cat_atoms(1479,50436
+writelist(1485,50524
+write_lex_cat(1492,50676
+writebreaklex(1500,50988
+write_lex(1513,51265
+writebreak(1521,51541
+tt:-tt1531,51713
+mt:-mt1534,51784
+cmt:-cmt1537,51878
+
+pyt-src/server.py,1438
+class Controls:Controls17,358
+ def __init__(18,374
+ def __repr__(24,590
+ def __str__(34,871
+class Server:Server37,934
+ def __init__(38,948
+ def dump(73,2198
+ def __repr__(125,3896
+ def __str__(128,3945
+class User:User131,4014
+ def __init__(132,4026
+ def __repr__(172,5445
+ def __str__(206,6883
+def flag2str(223,7212
+class LabeledEntry(232,7442
+ def bind(234,7525
+ def focus_set(236,7584
+ def __init__(238,7629
+def ButtonBar(245,7909
+def helpwin(255,8280
+class ListEdit(267,8707
+ def __init__(269,8808
+ def handleList(303,10042
+ def handleNew(306,10094
+ def editItem(314,10426
+ def deleteItem(320,10596
+def ConfirmQuit(326,10760
+class ControlEdit(375,12377
+ def PostControls(376,12403
+ def GatherControls(421,13530
+class ServerEdit(512,16264
+ def __init__(513,16289
+ def post(525,16629
+ def gather(543,17191
+ def nosave(547,17304
+ def save(551,17408
+ def refreshPort(556,17509
+ def createWidgets(561,17663
+ def edituser(631,20708
+class UserEdit(645,20921
+ def __init__(646,20944
+ def post(658,21283
+ def gather(676,21841
+ def nosave(680,21950
+ def save(684,22052
+ def createWidgets(689,22151
+class Configure(760,24879
+ def __init__(761,24916
+ def MakeDispose(772,25211
+ def MakeSitelist(786,25706
+ def editsite(794,25949
+ def save(797,26022
+ def nosave(807,26310
+
+tex-src/testenv.tex,52
+\newcommand{\nm}\nm4,77
+\section{blah}blah8,139
+
+tex-src/gzip.texi,303
address@hidden Top,62,2139
address@hidden Copying,80,2652
address@hidden Overview,83,2705
address@hidden Sample,166,7272
address@hidden Invoking gzip,Invoking gzip210,8828
address@hidden Advanced usage,Advanced usage357,13495
address@hidden Environment,420,15207
address@hidden Tapes,437,15768
address@hidden Problems,460,16767
address@hidden Concept Index,Concept Index473,17287
+
+tex-src/texinfo.tex,30626
+\def\texinfoversion{\texinfoversion25,1019
+\def\tie{\tie48,1510
+\def\gloggingall{\gloggingall71,2260
+\def\loggingall{\loggingall72,2329
+\def\onepageout#1{\onepageout98,3266
+\def\croppageout#1{\croppageout114,4016
+\def\cropmarks{\cropmarks141,5076
+\def\pagebody#1{\pagebody143,5123
+\def\ewtop{\ewtop156,5578
+\def\nstop{\nstop157,5642
+\def\ewbot{\ewbot159,5725
+\def\nsbot{\nsbot160,5789
+\def\parsearg #1{\parsearg169,6088
+\def\parseargx{\parseargx171,6166
+\def\parseargline{\parseargline181,6406
+\def\flushcr{\flushcr185,6527
+\newif\ifENV \ENVfalse \def\inENV{\inENV189,6726
+\def\ENVcheck{\ENVcheck190,6790
+\outer\def\begin{\begin197,7037
+\def\beginxxx #1{\beginxxx199,7075
+\def\end{\end207,7330
+\def\endxxx #1{\endxxx209,7358
+\def\errorE#1{\errorE215,7547
+\def\singlespace{\singlespace221,7741
address@hidden@231,7964
+\def\`{\`235,8064
+\def\'{\'236,8076
+\def\mylbrace {\mylbrace240,8124
+\def\myrbrace {\myrbrace241,8157
+\def\:{\:246,8271
+\def\*{\*249,8325
+\def\.{\.252,8401
+\def\w#1{\w257,8632
+\def\group{\group267,9115
+ \def\Egroup{\Egroup272,9279
+\def\need{\need288,9721
+\def\needx#1{\needx299,9998
+\def\dots{\dots338,11384
+\def\page{\page342,11448
+\def\exdent{\exdent352,11775
+\def\exdentyyy #1{\exdentyyy353,11808
+\def\nofillexdent{\nofillexdent356,11952
+\def\nofillexdentyyy #1{\nofillexdentyyy357,11997
+\def\include{\include364,12181
+\def\includezzz #1{\includezzz365,12216
+\def\thisfile{\thisfile368,12267
+\def\center{\center372,12330
+\def\centerzzz #1{\centerzzz373,12363
+\def\sp{\sp379,12505
+\def\spxxx #1{\spxxx380,12530
+\def\comment{\comment386,12704
+\def\commentxxx #1{\commentxxx389,12801
+\def\ignoresections{\ignoresections395,12970
+\let\chapter=\relax=\relax396,12992
+\let\section=\relax=\relax405,13237
+\let\subsection=\relax=\relax408,13298
+\let\subsubsection=\relax=\relax409,13321
+\let\appendix=\relax=\relax410,13347
+\let\appendixsec=\relaxsec=\relax411,13368
+\let\appendixsection=\relaxsection=\relax412,13392
+\let\appendixsubsec=\relaxsubsec=\relax413,13420
+\let\appendixsubsection=\relaxsubsection=\relax414,13447
+\let\appendixsubsubsec=\relaxsubsubsec=\relax415,13478
+\let\appendixsubsubsection=\relaxsubsubsection=\relax416,13508
+\def\ignore{\ignore422,13610
+\long\def\ignorexxx #1\end ignore{\ignorexxx426,13750
+\def\direntry{\direntry428,13809
+\long\def\direntryxxx #1\end direntry{\direntryxxx429,13848
+\def\ifset{\ifset433,13958
+\def\ifsetxxx #1{\ifsetxxx435,14016
+\def\Eifset{\Eifset439,14143
+\def\ifsetfail{\ifsetfail440,14157
+\long\def\ifsetfailxxx #1\end ifset{\ifsetfailxxx441,14213
+\def\ifclear{\ifclear443,14274
+\def\ifclearxxx #1{\ifclearxxx445,14336
+\def\Eifclear{\Eifclear449,14467
+\def\ifclearfail{\ifclearfail450,14483
+\long\def\ifclearfailxxx #1\end ifclear{\ifclearfailxxx451,14543
+\def\set{\set455,14694
+\def\setxxx #1{\setxxx456,14721
+\def\clear{\clear459,14783
+\def\clearxxx #1{\clearxxx460,14814
+\def\iftex{\iftex465,14931
+\def\Eiftex{\Eiftex466,14944
+\def\ifinfo{\ifinfo467,14958
+\long\def\ifinfoxxx #1\end ifinfo{\ifinfoxxx468,15008
+\long\def\menu #1\end menu{\menu470,15067
+\def\asis#1{\asis471,15096
+\def\math#1{\math484,15639
+\def\node{\node486,15683
+\def\nodezzz#1{\nodezzz487,15721
+\def\nodexxx[#1,#2]{\nodexxx[488,15752
+\def\donoderef{\donoderef491,15814
+\def\unnumbnoderef{\unnumbnoderef495,15935
+\def\appendixnoderef{\appendixnoderef499,16066
+\expandafter\expandafter\expandafter\appendixsetref{setref500,16112
+\let\refill=\relaxill=\relax503,16201
+\def\setfilename{\setfilename508,16415
+\outer\def\bye{\bye517,16661
+\def\inforef #1{\inforef519,16717
+\def\inforefzzz #1,#2,#3,#4**{\inforefzzz520,16755
+\def\losespace #1{\losespace522,16852
+\def\sf{\sf531,17056
+\font\defbf=cmbx10 scaled \magstep1 %was 1314bf=cmbx10557,17851
+\font\deftt=cmtt10 scaled \magstep1tt=cmtt10558,17897
+\def\df{\df559,17933
+\def\resetmathfonts{\resetmathfonts634,20527
+\def\textfonts{\textfonts647,21116
+\def\chapfonts{\chapfonts652,21331
+\def\secfonts{\secfonts657,21547
+\def\subsecfonts{\subsecfonts662,21752
+\def\indexfonts{\indexfonts667,21969
+\def\smartitalicx{\smartitalicx690,22701
+\def\smartitalic#1{\smartitalic691,22777
+\let\cite=\smartitalic=\smartitalic697,22922
+\def\b#1{\b699,22946
+\def\t#1{\t702,22981
+\def\samp #1{\samp705,23133
+\def\key #1{\key706,23166
+\def\ctrl #1{\ctrl707,23227
+\def\tclose#1{\tclose715,23429
+\def\ {\719,23595
+\def\xkey{\xkey727,23864
+\def\kbdfoo#1#2#3\par{\kbdfoo728,23880
+\def\dmn#1{\dmn737,24181
+\def\kbd#1{\kbd739,24208
+\def\l#1{\l741,24265
+\def\r#1{\r743,24294
+\def\sc#1{\sc745,24362
+\def\ii#1{\ii746,24405
+\def\titlefont#1{\titlefont754,24638
+\def\titlepage{\titlepage760,24741
+ \def\subtitlefont{\subtitlefont765,24968
+ \def\authorfont{\authorfont767,25052
+ \def\title{\title773,25262
+ \def\titlezzz##1{\titlezzz774,25297
+ \def\subtitle{\subtitle782,25612
+ \def\subtitlezzz##1{\subtitlezzz783,25653
+ \def\author{\author786,25771
+ \def\authorzzz##1{\authorzzz787,25808
+ \def\page{\page793,26099
+\def\Etitlepage{\Etitlepage803,26268
+\def\finishtitlepage{\finishtitlepage816,26656
+\def\evenheading{\evenheading845,27664
+\def\oddheading{\oddheading846,27707
+\def\everyheading{\everyheading847,27748
+\def\evenfooting{\evenfooting849,27794
+\def\oddfooting{\oddfooting850,27837
+\def\everyfooting{\everyfooting851,27878
+\def\headings #1 {\headings892,29570
+\def\HEADINGSoff{\HEADINGSoff894,29619
+\def\HEADINGSdouble{\HEADINGSdouble903,30046
+\def\HEADINGSsingle{\HEADINGSsingle913,30366
+\def\HEADINGSon{\HEADINGSon921,30587
+\def\HEADINGSafter{\HEADINGSafter923,30621
+\def\HEADINGSdoublex{\HEADINGSdoublex925,30716
+\def\HEADINGSsingleafter{\HEADINGSsingleafter932,30904
+\def\HEADINGSsinglex{\HEADINGSsinglex933,30965
+\def\today{\today942,31240
+\def\thistitle{\thistitle957,31785
+\def\settitle{\settitle958,31810
+\def\settitlezzz #1{\settitlezzz959,31847
+\def\internalBitem{\internalBitem991,32777
+\def\internalBitemx{\internalBitemx992,32827
+\def\internalBxitem "#1"{\internalBxitem994,32872
+\def\internalBxitemx "#1"{\internalBxitemx995,32952
+\def\internalBkitem{\internalBkitem997,33027
+\def\internalBkitemx{\internalBkitemx998,33079
+\def\kitemzzz #1{\kitemzzz1000,33126
+\def\xitemzzz #1{\xitemzzz1003,33228
+\def\itemzzz #1{\itemzzz1006,33331
+\def\item{\item1036,34402
+\def\itemx{\itemx1037,34453
+\def\kitem{\kitem1038,34506
+\def\kitemx{\kitemx1039,34559
+\def\xitem{\xitem1040,34614
+\def\xitemx{\xitemx1041,34667
+\def\description{\description1044,34777
+\def\table{\table1046,34827
+\def\ftable{\ftable1051,34971
+\def\Eftable{\Eftable1055,35117
+\def\vtable{\vtable1058,35186
+\def\Evtable{\Evtable1062,35332
+\def\dontindex #1{\dontindex1065,35401
+\def\fnitemindex #1{\fnitemindex1066,35421
+\def\vritemindex #1{\vritemindex1067,35466
+\def\tablez #1#2#3#4#5#6{\tablez1073,35615
+\def\Edescription{\Edescription1076,35673
+\def\itemfont{\itemfont1081,35875
+\def\Etable{\Etable1089,36101
+\def\itemize{\itemize1102,36425
+\def\itemizezzz #1{\itemizezzz1104,36461
+\def\itemizey #1#2{\itemizey1109,36556
+\def#2{1118,36802
+\def\itemcontents{\itemcontents1119,36843
+\def\bullet{\bullet1122,36891
+\def\minus{\minus1123,36918
+\def\frenchspacing{\frenchspacing1127,37026
+\def\splitoff#1#2\endmark{\splitoff1133,37251
+\def\enumerate{\enumerate1139,37481
+\def\enumeratezzz #1{\enumeratezzz1140,37520
+\def\enumeratey #1 #2\endenumeratey{\enumeratey1141,37573
+ \def\thearg{\thearg1145,37720
+ \ifx\thearg\empty \def\thearg{\thearg1146,37739
+\def\numericenumerate{\numericenumerate1183,39073
+\def\lowercaseenumerate{\lowercaseenumerate1189,39203
+\def\uppercaseenumerate{\uppercaseenumerate1202,39550
+\def\startenumeration#1{\startenumeration1218,40040
+\def\alphaenumerate{\alphaenumerate1226,40222
+\def\capsenumerate{\capsenumerate1227,40257
+\def\Ealphaenumerate{\Ealphaenumerate1228,40291
+\def\Ecapsenumerate{\Ecapsenumerate1229,40325
+\def\itemizeitem{\itemizeitem1233,40405
+\def\newindex #1{\newindex1258,41262
+\def\defindex{\defindex1267,41551
+\def\newcodeindex #1{\newcodeindex1271,41659
+\def\defcodeindex{\defcodeindex1278,41919
+\def\synindex #1 #2 {\synindex1282,42099
+\def\syncodeindex #1 #2 {\syncodeindex1291,42439
+\def\doindex#1{\doindex1308,43118
+\def\singleindexer #1{\singleindexer1309,43177
+\def\docodeindex#1{\docodeindex1312,43289
+\def\singlecodeindexer #1{\singlecodeindexer1313,43356
+\def\indexdummies{\indexdummies1315,43414
+\def\_{\_1316,43434
+\def\w{\w1317,43462
+\def\bf{\bf1318,43489
+\def\rm{\rm1319,43518
+\def\sl{\sl1320,43547
+\def\sf{\sf1321,43576
+\def\tt{\tt1322,43604
+\def\gtr{\gtr1323,43632
+\def\less{\less1324,43662
+\def\hat{\hat1325,43694
+\def\char{\char1326,43724
+\def\TeX{\TeX1327,43756
+\def\dots{\dots1328,43786
+\def\copyright{\copyright1329,43819
+\def\tclose##1{\tclose1330,43862
+\def\code##1{\code1331,43907
+\def\samp##1{\samp1332,43948
+\def\t##1{\t1333,43989
+\def\r##1{\r1334,44024
+\def\i##1{\i1335,44059
+\def\b##1{\b1336,44094
+\def\cite##1{\cite1337,44129
+\def\key##1{\key1338,44170
+\def\file##1{\file1339,44209
+\def\var##1{\var1340,44250
+\def\kbd##1{\kbd1341,44289
+\def\indexdummyfont#1{\indexdummyfont1346,44445
+\def\indexdummytex{\indexdummytex1347,44471
+\def\indexdummydots{\indexdummydots1348,44495
+\def\indexnofonts{\indexnofonts1350,44521
+\let\w=\indexdummyfontdummyfont1351,44541
+\let\t=\indexdummyfontdummyfont1352,44564
+\let\r=\indexdummyfontdummyfont1353,44587
+\let\i=\indexdummyfontdummyfont1354,44610
+\let\b=\indexdummyfontdummyfont1355,44633
+\let\emph=\indexdummyfontdummyfont1356,44656
+\let\strong=\indexdummyfontdummyfont1357,44682
+\let\cite=\indexdummyfont=\indexdummyfont1358,44710
+\let\sc=\indexdummyfontdummyfont1359,44736
+\let\tclose=\indexdummyfontdummyfont1363,44908
+\let\code=\indexdummyfontdummyfont1364,44936
+\let\file=\indexdummyfontdummyfont1365,44962
+\let\samp=\indexdummyfontdummyfont1366,44988
+\let\kbd=\indexdummyfontdummyfont1367,45014
+\let\key=\indexdummyfontdummyfont1368,45039
+\let\var=\indexdummyfontdummyfont1369,45064
+\let\TeX=\indexdummytexdummytex1370,45089
+\let\dots=\indexdummydotsdummydots1371,45113
+\let\indexbackslash=0 %overridden during \printindex.backslash=01381,45365
+\def\doind #1#2{\doind1383,45421
+{\indexdummies % Must do this here, since \bf, etc expand at this
stagedummies1385,45464
+\def\rawbackslashxx{\rawbackslashxx1388,45604
+{\indexnofontsnofonts1393,45866
+\def\dosubind #1#2#3{\dosubind1404,46177
+{\indexdummies % Must do this here, since \bf, etc expand at this
stagedummies1406,46225
+\def\rawbackslashxx{\rawbackslashxx1409,46329
+{\indexnofontsnofonts1413,46483
+\def\findex {\findex1442,47414
+\def\kindex {\kindex1443,47437
+\def\cindex {\cindex1444,47460
+\def\vindex {\vindex1445,47483
+\def\tindex {\tindex1446,47506
+\def\pindex {\pindex1447,47529
+\def\cindexsub {\cindexsub1449,47553
+\def\printindex{\printindex1461,47880
+\def\doprintindex#1{\doprintindex1463,47921
+ \def\indexbackslash{\indexbackslash1480,48406
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1481,48445
+\def\initial #1{\initial1516,49517
+\def\entry #1#2{\entry1522,49724
+ \null\nobreak\indexdotfill % Have leaders before the page
number.dotfill1539,50371
+\def\indexdotfill{\indexdotfill1548,50699
+\def\primary #1{\primary1551,50805
+\def\secondary #1#2{\secondary1555,50887
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1558,50969
+\newbox\partialpageialpage1565,51142
+\def\begindoublecolumns{\begindoublecolumns1571,51300
+ \output={\global\setbox\partialpage=ialpage=1572,51336
+\def\enddoublecolumns{\enddoublecolumns1576,51524
+\def\doublecolumnout{\doublecolumnout1579,51609
+ address@hidden \advance\dimen@ by-\ht\partialpageialpage1580,51678
+\def\pagesofar{\pagesofar1583,51856
+\def\balancecolumns{\balancecolumns1587,52093
+ address@hidden \advance\availdimen@ by-\ht\partialpageialpage1593,52264
+ address@hidden \advance\dimen@ by-\ht\partialpageialpage1599,52525
+\newcount \appendixno \appendixno = address@hidden,53430
+\def\appendixletter{\appendixletter1627,53471
+\def\opencontents{\opencontents1631,53574
+\def\thischapter{\thischapter1636,53755
+\def\seccheck#1{\seccheck1637,53793
+\def\chapternofonts{\chapternofonts1642,53897
+\def\result{\result1645,53972
+\def\equiv{\equiv1646,54007
+\def\expansion{\expansion1647,54040
+\def\print{\print1648,54081
+\def\TeX{\TeX1649,54114
+\def\dots{\dots1650,54143
+\def\copyright{\copyright1651,54174
+\def\tt{\tt1652,54215
+\def\bf{\bf1653,54242
+\def\w{\w1654,54270
+\def\less{\less1655,54295
+\def\gtr{\gtr1656,54326
+\def\hat{\hat1657,54355
+\def\char{\char1658,54384
+\def\tclose##1{\tclose1659,54415
+\def\code##1{\code1660,54459
+\def\samp##1{\samp1661,54499
+\def\r##1{\r1662,54539
+\def\b##1{\b1663,54573
+\def\key##1{\key1664,54607
+\def\file##1{\file1665,54645
+\def\kbd##1{\kbd1666,54685
+\def\i##1{\i1668,54793
+\def\cite##1{\cite1669,54827
+\def\var##1{\var1670,54867
+\def\emph##1{\emph1671,54905
+\def\dfn##1{\dfn1672,54945
+\def\thischaptername{\thischaptername1675,54986
+\outer\def\chapter{\chapter1676,55025
+\def\chapterzzz #1{\chapterzzz1677,55066
+{\chapternofonts%nofonts%1686,55462
+\global\let\section = \numberedsec=1691,55615
+\global\let\subsection = \numberedsubsec=1692,55650
+\global\let\subsubsection = \numberedsubsubsec=1693,55691
+\outer\def\appendix{\appendix1696,55742
+\def\appendixzzz #1{\appendixzzz1697,55785
+\global\advance \appendixno by 1 \message{no1699,55862
+\chapmacro {#1}{Appendix \appendixletter}letter1700,55931
+\xdef\thischapter{Appendix \appendixletter:
\noexpand\thischaptername}letter:1703,56024
+{\chapternofonts%nofonts%1704,56096
+ {#1}{Appendix \appendixletter}letter1706,56152
+\appendixnoderef %noderef1709,56252
+\global\let\section = \appendixsec=1710,56271
+\global\let\subsection = \appendixsubsec=1711,56306
+\global\let\subsubsection = \appendixsubsubsec=1712,56347
+\outer\def\top{\top1715,56398
+\outer\def\unnumbered{\unnumbered1716,56438
+\def\unnumberedzzz #1{\unnumberedzzz1717,56485
+{\chapternofonts%nofonts%1721,56648
+\global\let\section = \unnumberedsec=1726,56798
+\global\let\subsection = \unnumberedsubsec=1727,56835
+\global\let\subsubsection = \unnumberedsubsubsec=1728,56878
+\outer\def\numberedsec{\numberedsec1731,56931
+\def\seczzz #1{\seczzz1732,56972
+{\chapternofonts%nofonts%1735,57128
+\outer\def\appendixsection{\appendixsection1744,57314
+\outer\def\appendixsec{\appendixsec1745,57371
+\def\appendixsectionzzz #1{\appendixsectionzzz1746,57424
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1748,57536
+{\chapternofonts%nofonts%1749,57604
+{#1}{\appendixletter}letter1751,57660
+\appendixnoderef %noderef1754,57760
+\outer\def\unnumberedsec{\unnumberedsec1758,57800
+\def\unnumberedseczzz #1{\unnumberedseczzz1759,57853
+{\chapternofonts%nofonts%1761,57948
+\outer\def\numberedsubsec{\numberedsubsec1769,58116
+\def\numberedsubseczzz #1{\numberedsubseczzz1770,58171
+{\chapternofonts%nofonts%1773,58350
+\outer\def\appendixsubsec{\appendixsubsec1782,58554
+\def\appendixsubseczzz #1{\appendixsubseczzz1783,58609
+\subsecheading {#1}{\appendixletter}letter1785,58731
+{\chapternofonts%nofonts%1786,58796
+{#1}{\appendixletter}letter1788,58855
+\appendixnoderef %noderef1791,58970
+\outer\def\unnumberedsubsec{\unnumberedsubsec1795,59010
+\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1796,59069
+{\chapternofonts%nofonts%1798,59170
+\outer\def\numberedsubsubsec{\numberedsubsubsec1806,59341
+\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1807,59402
+{\chapternofonts%nofonts%1811,59599
+\outer\def\appendixsubsubsec{\appendixsubsubsec1822,59832
+\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1823,59893
+ {\appendixletter}letter1826,60032
+{\chapternofonts%nofonts%1827,60098
+ {\appendixletter}letter1829,60163
+\appendixnoderef %noderef1833,60297
+\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1837,60337
+\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1838,60402
+{\chapternofonts%nofonts%1840,60509
+\def\infotop{\infotop1850,60838
+\def\infounnumbered{\infounnumbered1851,60876
+\def\infounnumberedsec{\infounnumberedsec1852,60921
+\def\infounnumberedsubsec{\infounnumberedsubsec1853,60972
+\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1854,61029
+\def\infoappendix{\infoappendix1856,61093
+\def\infoappendixsec{\infoappendixsec1857,61134
+\def\infoappendixsubsec{\infoappendixsubsec1858,61181
+\def\infoappendixsubsubsec{\infoappendixsubsubsec1859,61234
+\def\infochapter{\infochapter1861,61294
+\def\infosection{\infosection1862,61333
+\def\infosubsection{\infosubsection1863,61372
+\def\infosubsubsection{\infosubsubsection1864,61417
+\global\let\section = \numberedsec=1869,61654
+\global\let\subsection = \numberedsubsec=1870,61689
+\global\let\subsubsection = \numberedsubsubsec=1871,61730
+\def\majorheading{\majorheading1885,62237
+\def\majorheadingzzz #1{\majorheadingzzz1886,62282
+\def\chapheading{\chapheading1892,62515
+\def\chapheadingzzz #1{\chapheadingzzz1893,62558
+\def\heading{\heading1898,62753
+\def\subheading{\subheading1900,62790
+\def\subsubheading{\subsubheading1902,62833
+\def\dobreak#1#2{\dobreak1909,63110
+\def\setchapterstyle #1 {\setchapterstyle1911,63188
+\def\chapbreak{\chapbreak1918,63443
+\def\chappager{\chappager1919,63493
+\def\chapoddpage{\chapoddpage1920,63531
+\def\setchapternewpage #1 {\setchapternewpage1922,63610
+\def\CHAPPAGoff{\CHAPPAGoff1924,63667
+\def\CHAPPAGon{\CHAPPAGon1928,63761
+\global\def\HEADINGSon{\HEADINGSon1931,63852
+\def\CHAPPAGodd{\CHAPPAGodd1933,63894
+\global\def\HEADINGSon{\HEADINGSon1936,63990
+\def\CHAPFplain{\CHAPFplain1940,64044
+\def\chfplain #1#2{\chfplain1944,64136
+\def\unnchfplain #1{\unnchfplain1955,64359
+\def\unnchfopen #1{\unnchfopen1963,64588
+\def\chfopen #1#2{\chfopen1969,64796
+\def\CHAPFopen{\CHAPFopen1974,64940
+\def\subsecheadingbreak{\subsecheadingbreak1981,65158
+\def\secheadingbreak{\secheadingbreak1984,65287
+\def\secheading #1#2#3{\secheading1992,65569
+\def\plainsecheading #1{\plainsecheading1993,65625
+\def\secheadingi #1{\secheadingi1994,65668
+\def\subsecheading #1#2#3#4{\subsecheading2005,66036
+\def\subsecheadingi #1{\subsecheadingi2006,66103
+\def\subsubsecfonts{\subsubsecfonts2013,66400
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2016,66523
+\def\subsubsecheadingi #1{\subsubsecheadingi2017,66601
+\def\startcontents#1{\startcontents2031,67073
+ \unnumbchapmacro{#1}\def\thischapter{\thischapter2039,67346
+\outer\def\contents{\contents2048,67705
+\outer\def\summarycontents{\summarycontents2056,67849
+ \def\secentry ##1##2##3##4{\secentry2066,68220
+ \def\unnumbsecentry ##1##2{\unnumbsecentry2067,68255
+ \def\subsecentry ##1##2##3##4##5{\subsecentry2068,68290
+ \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2069,68331
+ \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2070,68369
+ \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2071,68416
+\def\chapentry#1#2#3{\chapentry2084,68850
+\def\shortchapentry#1#2#3{\shortchapentry2087,68967
+ {#2\labelspace #1}space2090,69077
+\def\unnumbchapentry#1#2{\unnumbchapentry2093,69131
+\def\shortunnumberedentry#1#2{\shortunnumberedentry2094,69178
+\def\secentry#1#2#3#4{\secentry2101,69342
+\def\unnumbsecentry#1#2{\unnumbsecentry2102,69401
+\def\subsecentry#1#2#3#4#5{\subsecentry2105,69462
+\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2106,69532
+\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2109,69606
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2110,69640
+\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2111,69691
+\def\dochapentry#1#2{\dochapentry2122,70065
+\def\dosecentry#1#2{\dosecentry2137,70670
+\def\dosubsecentry#1#2{\dosubsecentry2144,70848
+\def\dosubsubsecentry#1#2{\dosubsubsecentry2151,71033
+\def\labelspace{\labelspace2159,71284
+\def\dopageno#1{\dopageno2161,71319
+\def\doshortpageno#1{\doshortpageno2162,71345
+\def\chapentryfonts{\chapentryfonts2164,71377
+\def\secentryfonts{\secentryfonts2165,71412
+\def\point{\point2191,72371
+\def\result{\result2193,72392
+\def\expansion{\expansion2194,72465
+\def\print{\print2195,72536
+\def\equiv{\equiv2197,72603
+\def\error{\error2217,73376
+\def\tex{\tex2223,73605
address@hidden@2241,73988
+\gdef\sepspaces{\def {\ }}}\2264,74720
+\def\aboveenvbreak{\aboveenvbreak2267,74802
+\def\afterenvbreak{\afterenvbreak2271,74968
+\def\ctl{\ctl2285,75479
+\def\ctr{\ctr2286,75551
+\def\cbl{\cbl2287,75590
+\def\cbr{\cbr2288,75630
+\def\carttop{\carttop2289,75669
+\def\cartbot{\cartbot2292,75777
+\long\def\cartouche{\cartouche2298,75917
+\def\Ecartouche{\Ecartouche2325,76705
+\def\lisp{\lisp2337,76840
+\def\Elisp{\Elisp2347,77187
+\def\next##1{\next2359,77513
+\def\Eexample{\Eexample2363,77555
+\def\Esmallexample{\Esmallexample2366,77602
+\def\smalllispx{\smalllispx2372,77780
+\def\Esmalllisp{\Esmalllisp2382,78134
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2395,78490
+\def\next##1{\next2396,78547
+\def\display{\display2400,78627
+\def\Edisplay{\Edisplay2409,78946
+\def\next##1{\next2421,79257
+\def\format{\format2425,79360
+\def\Eformat{\Eformat2433,79656
+\def\next##1{\next2436,79745
+\def\flushleft{\flushleft2440,79797
+\def\Eflushleft{\Eflushleft2450,80168
+\def\next##1{\next2453,80261
+\def\flushright{\flushright2455,80283
+\def\Eflushright{\Eflushright2465,80655
+\def\next##1{\next2469,80786
+\def\quotation{\quotation2473,80844
+\def\Equotation{\Equotation2479,81036
+\def\setdeffont #1 {\setdeffont2492,81434
+\newskip\defbodyindent \defbodyindent=.4inbodyindent2494,81480
+\newskip\defargsindent \defargsindent=50ptargsindent2495,81523
+\newskip\deftypemargin \deftypemargin=12pttypemargin2496,81566
+\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2497,81609
+\def\activeparens{\activeparens2502,81807
+\def\opnr{\opnr2528,83019
+\def\lbrb{\lbrb2529,83084
+\def\defname #1#2{\defname2535,83285
+\advance\dimen2 by -\defbodyindentbodyindent2539,83403
+\advance\dimen3 by -\defbodyindentbodyindent2541,83457
+\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2543,83511
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for
continuationsargsindent2545,83653
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2546,83728
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2553,84097
+\advance\leftskip by -\defbodyindentbodyindent2556,84231
+\exdentamount=\defbodyindentbodyindent2557,84268
+\def\defparsebody #1#2#3{\defparsebody2567,84627
+\def#1{2571,84811
+\def#2{2572,84847
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2574,84919
+\exdentamount=\defbodyindentbodyindent2575,84993
+\def\defmethparsebody #1#2#3#4 {\defmethparsebody2580,85097
+\def#1{2584,85258
+\def#2##1 {2585,85294
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2587,85377
+\exdentamount=\defbodyindentbodyindent2588,85451
+\def\defopparsebody #1#2#3#4#5 {\defopparsebody2591,85536
+\def#1{2595,85697
+\def#2##1 ##2 {2596,85733
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2599,85833
+\exdentamount=\defbodyindentbodyindent2600,85907
+\def\defvarparsebody #1#2#3{\defvarparsebody2607,86178
+\def#1{2611,86365
+\def#2{2612,86401
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2614,86460
+\exdentamount=\defbodyindentbodyindent2615,86534
+\def\defvrparsebody #1#2#3#4 {\defvrparsebody2620,86625
+\def#1{2624,86784
+\def#2##1 {2625,86820
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2627,86890
+\exdentamount=\defbodyindentbodyindent2628,86964
+\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2631,87036
+\def#1{2635,87200
+\def#2##1 ##2 {2636,87236
+\advance\leftskip by \defbodyindent \advance \rightskip by
\defbodyindentbodyindent2639,87323
+\exdentamount=\defbodyindentbodyindent2640,87397
+\def\defunargs #1{\defunargs2663,88157
+\def\deftypefunargs #1{\deftypefunargs2675,88539
+\def\deffn{\deffn2689,88921
+\def\deffnheader #1#2#3{\deffnheader2691,88978
+\begingroup\defname {name2692,89026
+\def\defun{\defun2698,89171
+\def\defunheader #1#2{\defunheader2700,89224
+\begingroup\defname {name2701,89299
+\defunargs {unargs2702,89335
+\def\deftypefun{\deftypefun2708,89483
+\def\deftypefunheader #1#2{\deftypefunheader2711,89605
+\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2713,89714
+\begingroup\defname {name2715,89806
+\deftypefunargs {typefunargs2716,89852
+\def\deftypefn{\deftypefn2722,90023
+\def\deftypefnheader #1#2#3{\deftypefnheader2725,90172
+\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2727,90308
+\begingroup\defname {name2729,90401
+\deftypefunargs {typefunargs2730,90441
+\def\defmac{\defmac2736,90562
+\def\defmacheader #1#2{\defmacheader2738,90619
+\begingroup\defname {name2739,90695
+\defunargs {unargs2740,90728
+\def\defspec{\defspec2746,90852
+\def\defspecheader #1#2{\defspecheader2748,90913
+\begingroup\defname {name2749,90990
+\defunargs {unargs2750,91030
+\def\deffnx #1 {\deffnx2757,91225
+\def\defunx #1 {\defunx2758,91282
+\def\defmacx #1 {\defmacx2759,91339
+\def\defspecx #1 {\defspecx2760,91398
+\def\deftypefnx #1 {\deftypefnx2761,91459
+\def\deftypeunx #1 {\deftypeunx2762,91524
+\def\defop #1 {\defop2768,91670
+\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2769,91705
+\def\defopheader #1#2#3{\defopheader2771,91759
+\begingroup\defname {name2773,91848
+\defunargs {unargs2774,91894
+\def\defmethod{\defmethod2779,91955
+\def\defmethodheader #1#2#3{\defmethodheader2781,92028
+\begingroup\defname {name2783,92116
+\defunargs {unargs2784,92156
+\def\defcv #1 {\defcv2789,92230
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2790,92265
+\def\defcvarheader #1#2#3{\defcvarheader2792,92324
+\begingroup\defname {name2794,92410
+\defvarargs {varargs2795,92456
+\def\defivar{\defivar2800,92529
+\def\defivarheader #1#2#3{\defivarheader2802,92592
+\begingroup\defname {name2804,92678
+\defvarargs {varargs2805,92729
+\def\defopx #1 {\defopx2811,92878
+\def\defmethodx #1 {\defmethodx2812,92935
+\def\defcvx #1 {\defcvx2813,93000
+\def\defivarx #1 {\defivarx2814,93057
+\def\defvarargs #1{\defvarargs2821,93328
+\def\defvr{\defvr2827,93472
+\def\defvrheader #1#2#3{\defvrheader2829,93527
+\begingroup\defname {name2830,93575
+\def\defvar{\defvar2834,93660
+\def\defvarheader #1#2{\defvarheader2836,93720
+\begingroup\defname {name2837,93791
+\defvarargs {varargs2838,93827
+\def\defopt{\defopt2843,93893
+\def\defoptheader #1#2{\defoptheader2845,93953
+\begingroup\defname {name2846,94024
+\defvarargs {varargs2847,94063
+\def\deftypevar{\deftypevar2852,94120
+\def\deftypevarheader #1#2{\deftypevarheader2855,94236
+\begingroup\defname {name2857,94319
+\def\deftypevr{\deftypevr2864,94493
+\def\deftypevrheader #1#2#3{\deftypevrheader2866,94564
+\begingroup\defname {name2867,94616
+\def\defvrx #1 {\defvrx2875,94853
+\def\defvarx #1 {\defvarx2876,94910
+\def\defoptx #1 {\defoptx2877,94969
+\def\deftypevarx #1 {\deftypevarx2878,95028
+\def\deftypevrx #1 {\deftypevrx2879,95095
+\def\deftpargs #1{\deftpargs2884,95244
+\def\deftp{\deftp2888,95324
+\def\deftpheader #1#2#3{\deftpheader2890,95379
+\begingroup\defname {name2891,95427
+\def\deftpx #1 {\deftpx2896,95586
+\def\setref#1{\setref2907,95907
+\def\unnumbsetref#1{\unnumbsetref2912,96021
+\def\appendixsetref#1{\appendixsetref2917,96128
+\def\pxref#1{\pxref2928,96539
+\def\xref#1{\xref2929,96575
+\def\ref#1{\ref2930,96610
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2931,96640
+\def\printedmanual{\printedmanual2932,96683
+\def\printednodename{\printednodename2933,96721
+\def\printednodename{\printednodename2938,96846
+section ``\printednodename'' in \cite{\printedmanual}\printedmanual2953,97479
+\refx{x2956,97557
+\def\dosetq #1#2{\dosetq2964,97777
+\def\internalsetq #1#2{\internalsetq2972,98035
+\def\Ypagenumber{\Ypagenumber2976,98136
+\def\Ytitle{\Ytitle2978,98162
+\def\Ynothing{\Ynothing2980,98189
+\def\Ysectionnumberandtype{\Ysectionnumberandtype2982,98206
+\def\Yappendixletterandtype{\Yappendixletterandtype2991,98522
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2992,98552
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno
%no.\the\secno2993,98607
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno
%no.\the\secno.\the\subsecno2995,98711
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
%no.\the\secno.\the\subsecno.\the\subsubsecno2997,98782
+ \def\linenumber{\linenumber3008,99121
+\def\refx#1#2{\refx3014,99305
+\def\xrdef #1#2{\xrdef3036,99931
+\def\readauxfile{\readauxfile3039,100016
+\def\supereject{\supereject3109,101797
+\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3130,102482
+\def\openindices{\openindices3138,102668
+\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3150,102893
+\parindent = \defaultparindentaultparindent3151,102945
+\def\smallbook{\smallbook3174,103669
+\global\def\Esmallexample{\Esmallexample3191,104096
+\def\afourpaper{\afourpaper3195,104187
+\def\finalout{\finalout3223,104995
+\def\normaldoublequote{\normaldoublequote3234,105256
+\def\normaltilde{\normaltilde3235,105282
+\def\normalcaret{\normalcaret3236,105302
+\def\normalunderscore{\normalunderscore3237,105322
+\def\normalverticalbar{\normalverticalbar3238,105347
+\def\normalless{\normalless3239,105373
+\def\normalgreater{\normalgreater3240,105392
+\def\normalplus{\normalplus3241,105414
+\def\ifusingtt#1#2{\ifusingtt3252,105906
+\def\activedoublequote{\activedoublequote3260,106234
+\def~{~3263,106320
+\def^{^3266,106381
+\def_{_3269,106420
+\def\_{\_3271,106494
+\def\lvvmode{\lvvmode3278,106831
+\def|{|3281,106881
+\def<{<3284,106944
+\def>{>3287,107001
+\def+{+3289,107039
+\def\turnoffactive{\turnoffactive3295,107200
+\global\def={=3306,107486
+\def\normalbackslash{\normalbackslash3320,107868
+
+c-src//c.c,76
+T f(1,0
+}T i;2,14
+void bar(5,69
+int foobar(6,94
+interface_locate(9,131
+
+c.c,2136
+void (*fa)fa131,
+void 132,
+my_printf 135,
+void fatala 138,
+void fatalb 139,
+max 141,
+struct bar 143,
+ char z;144,
+ struct foo f;145,
+__attribute__ ((always_inline)) max 147,
+extern int old_var 149,
+struct foo150,
+ char a;152,
+ int x[x153,
+char stack[stack155,
+struct S 156,
+struct S { short f[f156,
+ int *__ip;__ip159,
+ union wait *__up;__up160,
+} wait_status_ptr_t 161,
+Some_Class A 162,
+typedef T1 T3 163,
+T3 z 164,
+typedef int more_aligned_int 165,
+struct S __attribute__ ((vector_size (16))) foo;166,
+int foo 167,
+char *__attribute__((aligned(8))) *f;f168,
+int i 169,
+extern void foobar 170,
+typedef struct cacheLRUEntry_s172,
+ U16 next;174,
+ U16 prev;175,
+__attribute__ ((packed)) cacheLRUEntry_t;177,
+struct foo 178,
+ int x;179,
+ char a,180,
+ char a, b,180,
+ char a, b, c,180,
+ char a, b, c, d;180,
+ f1 183,
+void f2 184,
+__attribute__((noreturn)) void d0 185,
+ __attribute__((format(printf, 1, 2))) d1 186,
+ d2 187,
+int x 188,
+struct foo 189,
+struct foo { int x[x189,
+short array[array190,
+int f193,
+DEAFUN 196,
+XDEFUN 203,
+DEFUN ("x-get-selection-internal",
Fx_get_selection_internal,x-get-selection-internal206,
+ Fx_get_selection_internal,x-get-selection-internal212,
+ Fy_get_selection_internal,y-get-selection-internal216,
+defun_func1(218,
+DEFUN_func2(220,
+typedef int bool;222,
+bool funcboo 223,
+struct my_struct 226,
+typedef struct my_struct my_typedef;228,
+int bla 229,
+a(234,
+int func1237,
+static struct cca_control init_control 239,
+static tpcmd rbtp 240,
+static byte ring1 241,
+static byte ring2 242,
+request request 243,
+int func2 246,
+ aaa;249,
+ bbb;251,
+struct sss1 252,
+struct sss2253,
+ struct ss3255,
+struct a b;259,
+struct aa *b;b260,
+ **b;b262,
+caccacacca 263,
+a 267,
+ typedef struct aa 269,
+ typedef struct aa {} aaa;269,
+static void inita 271,
+node *lasta lasta272,
+b 273,
+ typedef int bb;275,
+static void initb 277,
+node *lastb lastb278,
+typedef enum { REG_ENOSYS 279,
+typedef enum { REG_ENOSYS = -1, aa 279,
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;279,
+
+c-src/a/b/b.c,18
+#define this 1,0
+
+../c/c.web,20
+#define questo 34,
+
+y-src/parse.y,1061
+#define obstack_chunk_alloc 46,1111
+#define obstack_chunk_free 47,1149
+int yylex 57,1317
+void yyerror 59,1347
+void yyerror 61,1376
+VOIDSTAR parse_hash;63,1400
+extern VOIDSTAR hash_find(64,1421
+unsigned char fnin[fnin67,1519
+#define YYSTYPE 71,1617
+typedef struct node *YYSTYPE;YYSTYPE72,1648
+YYSTYPE parse_return;73,1678
+YYSTYPE make_list 75,1716
+YYSTYPE make_list 77,1760
+char *instr;instr80,1790
+int parse_error 81,1803
+extern struct obstack tmp_mem;82,1824
+line:line86,1862
+exp:exp94,1975
+exp_list:exp_list262,5642
+range_exp:range_exp268,5740
+range_exp_list:range_exp_list272,5770
+cell:cell278,5888
+yyerror FUN1(285,5935
+make_list FUN2(292,6015
+#define ERROR 303,6215
+extern struct node *yylval;yylval305,6233
+unsigned char parse_cell_or_range 308,6278
+unsigned char parse_cell_or_range 310,6342
+yylex FUN0(314,6392
+parse_cell_or_range FUN2(586,11758
+#define CK_ABS_R(670,13200
+#define CK_REL_R(674,13279
+#define CK_ABS_C(679,13408
+#define CK_REL_C(683,13487
+#define MAYBEREL(688,13616
+str_to_col FUN1(846,16817
+
+y-src/parse.c,520
+#define YYBISON 4,64
+# define NE 6,114
+# define LE 7,130
+# define GE 8,146
+# define NEG 9,162
+# define L_CELL 10,179
+# define L_RANGE 11,199
+# define L_VAR 12,220
+# define L_CONST 13,239
+# define L_FN0 14,260
+# define L_FN1 15,279
+# define L_FN2 16,298
+# define L_FN3 17,317
+# define L_FN4 18,336
+# define L_FNN 19,355
+# define L_FN1R 20,374
+# define L_FN2R 21,394
+# define L_FN3R 22,414
+# define L_FN4R 23,434
+# define L_FNNR 24,454
+# define L_LE 25,474
+# define L_NE 26,492
+# define L_GE 27,510
+
+parse.y,1464
+#define obstack_chunk_alloc 46,
+#define obstack_chunk_free 47,
+int yylex 57,
+void yyerror 59,
+void yyerror 61,
+VOIDSTAR parse_hash;63,
+extern VOIDSTAR hash_find(64,
+unsigned char fnin[fnin67,
+#define YYSTYPE 71,
+typedef struct node *YYSTYPE;YYSTYPE72,
+YYSTYPE parse_return;73,
+YYSTYPE make_list 75,
+YYSTYPE make_list 77,
+char *instr;instr80,
+int parse_error 81,
+extern struct obstack tmp_mem;82,
+#define YYSTYPE 85,
+# define YYDEBUG 88,
+#define YYFINAL 93,
+#define YYFLAG 94,
+#define YYNTBASE 95,
+#define YYTRANSLATE(98,
+static const char yytranslate[yytranslate101,
+static const short yyprhs[yyprhs134,
+static const short yyrhs[yyrhs142,
+static const short yyrline[yyrline171,
+static const char *const yytname[yytname185,
+static const short yyr1[yyr1197,
+static const short yyr2[yyr2207,
+static const short yydefact[yydefact219,
+static const short yydefgoto[yydefgoto237,
+static const short yypact[yypact242,
+static const short yypgoto[yypgoto260,
+#define YYLAST 266,
+static const short yytable[yytable269,
+static const short yycheck[yycheck330,
+yyerror FUN1(285,
+make_list FUN2(292,
+#define ERROR 303,
+extern struct node *yylval;yylval305,
+unsigned char parse_cell_or_range 308,
+unsigned char parse_cell_or_range 310,
+yylex FUN0(314,
+parse_cell_or_range FUN2(586,
+#define CK_ABS_R(670,
+#define CK_REL_R(674,
+#define CK_ABS_C(679,
+#define CK_REL_C(683,
+#define MAYBEREL(688,
+str_to_col FUN1(846,
+
+/usr/share/bison/bison.simple,2238
+# define YYSTD(40,
+# define YYSTD(42,
+# define YYSTACK_ALLOC 50,
+# define YYSIZE_T 51,
+# define YYSTACK_ALLOC 55,
+# define YYSIZE_T 56,
+# define YYSTACK_ALLOC 59,
+# define YYSTACK_FREE(67,
+# define YYSIZE_T 71,
+# define YYSIZE_T 75,
+# define YYSTACK_ALLOC 78,
+# define YYSTACK_FREE 79,
+union yyalloc83,
+ short yyss;85,
+ YYSTYPE yyvs;86,
+ YYLTYPE yyls;88,
+# define YYSTACK_GAP_MAX 93,
+# define YYSTACK_BYTES(98,
+# define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+# define YYSIZE_T 136,
+# define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok 148,
+#define yyclearin 149,
+#define YYEMPTY 150,
+#define YYEOF 151,
+#define YYACCEPT 152,
+#define YYABORT 153,
+#define YYERROR 154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR 177,
+#define YYERRCODE 178,
+# define YYLLOC_DEFAULT(189,
+# define YYLEX 200,
+# define YYLEX 202,
+# define YYLEX 206,
+# define YYLEX 208,
+# define YYLEX 212,
+# define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+# define yymemcpy 264,
+yymemcpy 271,
+# define yystrlen 293,
+yystrlen 298,
+# define yystpcpy 316,
+yystpcpy 322,
+# define YYPARSE_PARAM_ARG 351,
+# define YYPARSE_PARAM_DECL352,
+# define YYPARSE_PARAM_ARG 354,
+# define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+int yyparse 365,
+int yyparse 367,
+#define YY_DECL_NON_LSP_VARIABLES 374,
+# define YY_DECL_VARIABLES 385,
+# define YY_DECL_VARIABLES 391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+ *++yyvsp yyvsp746,
+ *++yylsp yylsp748,
+ yyn 755,
+ yystate 757,
+ yystate 761,
+ goto yynewstate;763,
+ goto yyerrlab1;823,
+ yyerrstatus 846,
+ goto yyerrhandle;848,
+ yyn 861,
+ yystate 875,
+ yyn 895,
+ yyn 903,
+ YYDPRINTF 917,
+ *++yyvsp yyvsp919,
+ *++yylsp yylsp921,
+ yystate 924,
+ goto yynewstate;925,
+ yyresult 932,
+ goto yyreturn;933,
+ yyresult 939,
+ goto yyreturn;940,
+ yyerror 946,
+ yyresult 947,
+
+y-src/atest.y,9
+exp 2,3
+
+y-src/cccp.c,303
+#define YYBISON 4,63
+# define INT 6,113
+# define CHAR 7,130
+# define NAME 8,148
+# define ERROR 9,166
+# define OR 10,185
+# define AND 11,201
+# define EQUAL 12,218
+# define NOTEQUAL 13,237
+# define LEQ 14,259
+# define GEQ 15,276
+# define LSH 16,293
+# define RSH 17,310
+# define UNARY 18,327
+
+cccp.y,2532
+typedef unsigned char U_CHAR;38,
+struct arglist 41,
+ struct arglist *next;next42,
+ U_CHAR *name;name43,
+ int length;44,
+ int argno;45,
+#define NULL 51,
+#define GENERIC_PTR 56,
+#define GENERIC_PTR 58,
+#define NULL_PTR 63,
+int yylex 66,
+void yyerror 67,
+int expression_value;68,
+static jmp_buf parse_return_error;70,
+static int keyword_parsing 73,
+extern unsigned char is_idstart[is_idstart76,
+extern unsigned char is_idstart[], is_idchar[is_idchar76,
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[is_hor_space76,
+extern char *xmalloc xmalloc78,
+extern int pedantic;81,
+extern int traditional;84,
+#define CHAR_TYPE_SIZE 87,
+#define INT_TYPE_SIZE 91,
+#define LONG_TYPE_SIZE 95,
+#define WCHAR_TYPE_SIZE 99,
+#define possible_sum_sign(104,
+static void integer_overflow 106,
+static long left_shift 107,
+static long right_shift 108,
+ struct constant 113,
+ struct constant {long value;113,
+ struct constant {long value; int unsignedp;113,
+ struct constant {long value; int unsignedp;} integer;113,
+ struct name 114,
+ struct name {U_CHAR *address;address114,
+ struct name {U_CHAR *address; int length;114,
+ struct name {U_CHAR *address; int length;} name;114,
+ struct arglist *keywords;keywords115,
+ int voidval;116,
+ char *sval;sval117,
+} yystype;118,
+# define YYSTYPE 119,
+# define YYDEBUG 122,
+#define YYFINAL 127,
+#define YYFLAG 128,
+#define YYNTBASE 129,
+#define YYTRANSLATE(132,
+static const char yytranslate[yytranslate135,
+static const short yyprhs[yyprhs167,
+static const short yyrhs[yyrhs174,
+static const short yyrline[yyrline195,
+static const char *const yytname[yytname208,
+static const short yyr1[yyr1219,
+static const short yyr2[yyr2228,
+static const short yydefact[yydefact239,
+static const short yydefgoto[yydefgoto251,
+static const short yypact[yypact256,
+static const short yypgoto[yypgoto268,
+#define YYLAST 274,
+static const short yytable[yytable277,
+static const short yycheck[yycheck301,
+static char *lexptr;lexptr332,
+parse_number 341,
+struct token 437,
+ char *operator;operator438,
+ int token;439,
+static struct token tokentab2[tokentab2442,
+yylex 459,
+parse_escape 740,
+yyerror 836,
+integer_overflow 844,
+left_shift 851,
+right_shift 873,
+parse_c_expression 893,
+extern int yydebug;919,
+main 923,
+unsigned char is_idchar[is_idchar948,
+unsigned char is_idstart[is_idstart950,
+char is_hor_space[is_hor_space953,
+initialize_random_junk 958,
+error 988,
+warning 993,
+lookup 999,
+
+/usr/share/bison/bison.simple,2238
+# define YYSTD(40,
+# define YYSTD(42,
+# define YYSTACK_ALLOC 50,
+# define YYSIZE_T 51,
+# define YYSTACK_ALLOC 55,
+# define YYSIZE_T 56,
+# define YYSTACK_ALLOC 59,
+# define YYSTACK_FREE(67,
+# define YYSIZE_T 71,
+# define YYSIZE_T 75,
+# define YYSTACK_ALLOC 78,
+# define YYSTACK_FREE 79,
+union yyalloc83,
+ short yyss;85,
+ YYSTYPE yyvs;86,
+ YYLTYPE yyls;88,
+# define YYSTACK_GAP_MAX 93,
+# define YYSTACK_BYTES(98,
+# define YYSTACK_BYTES(102,
+# define YYSTACK_RELOCATE(112,
+# define YYSIZE_T 128,
+# define YYSIZE_T 131,
+# define YYSIZE_T 136,
+# define YYSIZE_T 140,
+# define YYSIZE_T 145,
+#define yyerrok 148,
+#define yyclearin 149,
+#define YYEMPTY 150,
+#define YYEOF 151,
+#define YYACCEPT 152,
+#define YYABORT 153,
+#define YYERROR 154,
+#define YYFAIL 158,
+#define YYRECOVERING(159,
+#define YYBACKUP(160,
+#define YYTERROR 177,
+#define YYERRCODE 178,
+# define YYLLOC_DEFAULT(189,
+# define YYLEX 200,
+# define YYLEX 202,
+# define YYLEX 206,
+# define YYLEX 208,
+# define YYLEX 212,
+# define YYFPRINTF 225,
+# define YYDPRINTF(228,
+int yydebug;237,
+# define YYDPRINTF(239,
+# define YYINITDEPTH 244,
+# undef YYMAXDEPTH255,
+# define YYMAXDEPTH 259,
+# define yymemcpy 264,
+yymemcpy 271,
+# define yystrlen 293,
+yystrlen 298,
+# define yystpcpy 316,
+yystpcpy 322,
+# define YYPARSE_PARAM_ARG 351,
+# define YYPARSE_PARAM_DECL352,
+# define YYPARSE_PARAM_ARG 354,
+# define YYPARSE_PARAM_DECL 355,
+# define YYPARSE_PARAM_ARG358,
+# define YYPARSE_PARAM_DECL359,
+int yyparse 365,
+int yyparse 367,
+#define YY_DECL_NON_LSP_VARIABLES 374,
+# define YY_DECL_VARIABLES 385,
+# define YY_DECL_VARIABLES 391,
+yyparse 403,
+# define YYPOPSTACK 445,
+# define YYPOPSTACK 447,
+# undef YYSTACK_RELOCATE548,
+ *++yyvsp yyvsp746,
+ *++yylsp yylsp748,
+ yyn 755,
+ yystate 757,
+ yystate 761,
+ goto yynewstate;763,
+ goto yyerrlab1;823,
+ yyerrstatus 846,
+ goto yyerrhandle;848,
+ yyn 861,
+ yystate 875,
+ yyn 895,
+ yyn 903,
+ YYDPRINTF 917,
+ *++yyvsp yyvsp919,
+ *++yylsp yylsp921,
+ yystate 924,
+ goto yynewstate;925,
+ yyresult 932,
+ goto yyreturn;933,
+ yyresult 939,
+ goto yyreturn;940,
+ yyerror 946,
+ yyresult 947,
+
+y-src/cccp.y,2171
+typedef unsigned char U_CHAR;38,1201
+struct arglist 41,1301
+ struct arglist *next;next42,1318
+ U_CHAR *name;name43,1342
+ int length;44,1358
+ int argno;45,1372
+#define NULL 51,1468
+#define GENERIC_PTR 56,1578
+#define GENERIC_PTR 58,1611
+#define NULL_PTR 63,1670
+int yylex 66,1712
+void yyerror 67,1726
+int expression_value;68,1743
+static jmp_buf parse_return_error;70,1766
+static int keyword_parsing 73,1865
+extern unsigned char is_idstart[is_idstart76,1944
+extern unsigned char is_idstart[], is_idchar[is_idchar76,1944
+extern unsigned char is_idstart[], is_idchar[],
is_hor_space[is_hor_space76,1944
+extern char *xmalloc xmalloc78,2009
+extern int pedantic;81,2062
+extern int traditional;84,2114
+#define CHAR_TYPE_SIZE 87,2162
+#define INT_TYPE_SIZE 91,2229
+#define LONG_TYPE_SIZE 95,2296
+#define WCHAR_TYPE_SIZE 99,2365
+#define possible_sum_sign(104,2556
+static void integer_overflow 106,2632
+static long left_shift 107,2665
+static long right_shift 108,2692
+ struct constant 112,2733
+ struct constant {long value;112,2733
+ struct constant {long value; int unsignedp;112,2733
+ struct constant {long value; int unsignedp;} integer;112,2733
+ struct name 113,2789
+ struct name {U_CHAR *address;address113,2789
+ struct name {U_CHAR *address; int length;113,2789
+ struct name {U_CHAR *address; int length;} name;113,2789
+ struct arglist *keywords;keywords114,2840
+ int voidval;115,2868
+ char *sval;sval116,2883
+start 143,3226
+exp1 148,3330
+exp 156,3505
+exp 185,4295
+keywords 306,7835
+static char *lexptr;lexptr332,8579
+parse_number 341,8842
+struct token 437,11038
+ char *operator;operator438,11053
+ int token;439,11071
+static struct token tokentab2[tokentab2442,11088
+yylex 459,11367
+parse_escape 740,17718
+yyerror 836,19599
+integer_overflow 844,19690
+left_shift 851,19804
+right_shift 873,20194
+parse_c_expression 893,20732
+extern int yydebug;919,21416
+main 923,21483
+unsigned char is_idchar[is_idchar948,21901
+unsigned char is_idstart[is_idstart950,21996
+char is_hor_space[is_hor_space953,22160
+initialize_random_junk 958,22259
+error 988,22915
+warning 993,22963
+lookup 999,23033
+
+tex-src/nonewline.tex,0
+
+php-src/sendmail.php,0
+
+a-src/empty.zz,0
diff --git a/test/etags/Makefile b/test/etags/Makefile
new file mode 100644
index 0000000..635d129
--- /dev/null
+++ b/test/etags/Makefile
@@ -0,0 +1,79 @@
+ADASRC=$(addprefix ./ada-src/,etags-test-for.ada 2ataspri.adb 2ataspri.ads
waroquiers.ada)
+ASRC=$(addprefix ./a-src/,empty.zz empty.zz.gz)
+CSRC=$(addprefix ./c-src/,abbrev.c .//c.c torture.c getopt.h etags.c\
+ exit.c exit.strange_suffix sysdep.h tab.c dostorture.c\
+ emacs/src/gmalloc.c emacs/src/regex.h emacs/src/keyboard.c emacs/src/lisp.h\
+ machsyscalls.c machsyscalls.h fail.c a/b/b.c) ../etags/c-src/h.h
+CPSRC=$(addprefix ./cp-src/,c.C abstract.C abstract.H cfront.H burton.cpp
burton.cpp\
+ functions.cpp MDiagArray2.h Pctest.h Range.h\
+ screen.cpp screen.hpp conway.cpp conway.hpp clheir.cpp.gz clheir.hpp.gz
fail.C)
+ELSRC=$(addprefix ./el-src/,TAGTEST.EL emacs/lisp/progmodes/etags.el)
+ERLSRC=$(addprefix ./erl-src/,gs_dialog.erl lines.erl lists.erl)
+FORTHSRC=$(addprefix ./forth-src/,test-forth.fth)
+FSRC=$(addprefix ./f-src/,entry.for entry.strange_suffix entry.strange)
+HTMLSRC=$(addprefix ./html-src/,softwarelibero.html index.shtml algrthms.html
software.html)
+JAVASRC=$(addprefix ./java-src/,AWTEMul.java KeyEve.java SMan.java SysCol.java
TG.java)
+LUASRC=$(addprefix ./lua-src/,allegro.lua)
+MAKESRC=$(addprefix ./make-src/,Makefile)
+OBJCSRC=$(addprefix ./objc-src/,Subprocess.h Subprocess.m PackInsp.h
PackInsp.m)
+OBJCPPSRC=$(addprefix ./objcpp-src/,SimpleCalc.H SimpleCalc.M)
+PASSRC=$(addprefix ./pas-src/,common.pas)
+PERLSRC=$(addprefix ./perl-src/,htlmify-cystic yagrip.pl kai-test.pl mirror.pl)
+PHPSRC=$(addprefix ./php-src/,lce_functions.php ptest.php sendmail.php)
+PSSRC=$(addprefix ./ps-src/,rfc1245.ps)
+PROLSRC=$(addprefix ./prol-src/,ordsets.prolog natded.prolog)
+PYTSRC=$(addprefix ./pyt-src/,server.py)
+TEXSRC=$(addprefix ./tex-src/,testenv.tex gzip.texi texinfo.tex nonewline.tex)
+YSRC=$(addprefix ./y-src/,parse.y parse.c atest.y cccp.c cccp.y)
+SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\
+ ${FORTHSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC} ${OBJCSRC}\
+ ${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC} ${PROLSRC} ${PYTSRC}\
+ ${TEXSRC} ${YSRC}
+NONSRCS=./f-src/entry.strange ./erl-src/lists.erl ./cp-src/clheir.hpp.gz
+
+ETAGS_PROG=../../lib-src/etags
+CTAGS_PROG=../../lib-src/ctags
+
+REGEX=/[ \t]*DEFVAR_[A-Z_ \t\n(]+"\([^"]+\)"/
+xx="this line is here because of a fontlock bug
+
+RUN=
+
+OPTIONS=--members --declarations address@hidden
+ARGS=- < srclist
+
+infiles = $(filter-out ${NONSRCS},${SRCS}) srclist regexfile
+
+check:
+ @$(MAKE) OPTIONS='--no-members' ediff_1
+ @$(MAKE) OPTIONS='--declarations --no-members' ediff_2
+ @$(MAKE) OPTIONS='--members' ediff_3
+ @$(MAKE) OPTIONS='address@hidden --no-members' ediff_4
+ @$(MAKE) OPTIONS='nonexistent --members --declarations address@hidden'
ediff_5
+ @$(MAKE) cdiff
+
+ediff%: ETAGS.good% ETAGS ${infiles}
+ diff -u --suppress-common-lines --width=80 ETAGS.good$* ETAGS
+
+cdiff: CTAGS.good CTAGS ${infiles}
+ diff -u --suppress-common-lines --width=80 CTAGS.good CTAGS
+
+ETAGS: FRC ${infiles}
+ ${RUN} ${ETAGS_PROG} ${OPTIONS} -o $@ ${ARGS}
+
+CTAGS: FRC ${infiles}
+ ${RUN} ${CTAGS_PROG} -o $@ address@hidden ${ARGS}
+
+srclist: Makefile
+ @for i in $(SRCS); do echo $$i; done > srclist
+ @echo "srclist remade"
+
+regexfile: Makefile
+ @echo ' -- This is for GNU Emacs source files' > regexfile
+ @echo '${REGEX}' >> regexfile
+ @echo '{c}${REGEX}\\1/m' >> regexfile
+ @echo "regexfile remade"
+
+.PRECIOUS: ETAGS.good CTAGS.good
+
+FRC:;
diff --git a/test/etags/a-src/empty.zz b/test/etags/a-src/empty.zz
new file mode 100644
index 0000000..e69de29
diff --git a/test/etags/a-src/empty.zz.gz b/test/etags/a-src/empty.zz.gz
new file mode 100644
index 0000000..e69de29
diff --git a/test/etags/ada-src/2ataspri.adb b/test/etags/ada-src/2ataspri.adb
new file mode 100644
index 0000000..43ca983
--- /dev/null
+++ b/test/etags/ada-src/2ataspri.adb
@@ -0,0 +1,665 @@
+------------------------------------------------------------------------------
+-- --
+-- GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . T A S K _ P R I M I T I V E S --
+-- --
+-- B o d y --
+-- --
+-- $Revision: 1.1 $ --
+-- --
+-- Copyright (C) 1991,1992,1993,1994,1996 Florida State University --
+-- --
+-- GNARL is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU Library General Public License as published by the --
+-- Free Software Foundation; either version 2, or (at your option) any --
+-- later version. GNARL is distributed in the hope that it will be use- --
+-- ful, but but WITHOUT ANY WARRANTY; without even the implied warranty of --
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Gen- --
+-- eral Library Public License for more details. You should have received --
+-- a copy of the GNU Library General Public License along with GNARL; see --
+-- file COPYING.LIB. If not, write to the Free Software Foundation, 675 --
+-- Mass Ave, Cambridge, MA 02139, USA. --
+-- --
+------------------------------------------------------------------------------
+
+with GNAT.IO;
+with Interfaces.C.POSIX_timers;
+
+with Interfaces.C.POSIX_Error;
+use Interfaces.C.POSIX_Error;
+
+with Interfaces.C.POSIX_RTE;
+use Interfaces.C.POSIX_RTE;
+
+with Interfaces.C.Pthreads;
+use Interfaces.C.Pthreads;
+
+with Interfaces.C;
+use Interfaces.C;
+
+with System.Tasking;
+use System.Tasking;
+
+with System.Storage_Elements;
+use System.Storage_Elements;
+
+with System.Compiler_Exceptions;
+use System.Compiler_Exceptions;
+
+with System.Task_Specific_Data;
+use System.Task_Specific_Data;
+
+with System.Secondary_Stack;
+use System.Secondary_Stack;
+
+with System.Tasking_Soft_Links;
+
+with System.Task_Clock;
+use System.Task_Clock;
+
+with Unchecked_Conversion;
+with Interfaces.C.System_Constants;
+
+package body System.Task_Primitives is
+
+ use Interfaces.C.Pthreads;
+ use Interfaces.C.System_Constants;
+
+ package RTE renames Interfaces.C.POSIX_RTE;
+ package TSL renames System.Tasking_Soft_Links;
+
+ Test_And_Set_Mutex : Lock;
+
+ Abort_Signal : constant := 6;
+
+ Abort_Handler : Abort_Handler_Pointer;
+
+ ATCB_Key : aliased pthread_key_t;
+
+ Unblocked_Signal_Mask : aliased RTE.Signal_Set;
+ -- The set of signals that should be unblocked in a task.
+ -- This is in general the signals that can be generated synchronously,
+ -- and which should therefore be converted into Ada exceptions.
+ -- It also includes the Abort_Signal, to allow asynchronous abortion.
+
+ function To_void_ptr is new
+ Unchecked_Conversion (TCB_Ptr, void_ptr);
+
+ function To_TCB_Ptr is new
+ Unchecked_Conversion (void_ptr, TCB_Ptr);
+
+ function pthread_mutexattr_setprotocol
+ (attr : access pthread_attr_t; priority : integer) return int;
+ pragma Import (C,
+ pthread_mutexattr_setprotocol,
+ "pthread_mutexattr_setprotocol",
+ "pthread_mutexattr_setprotocol");
+
+ function pthread_mutexattr_setprio_ceiling
+ (attr : access pthread_attr_t; priority : int) return int;
+ pragma Import (C,
+ pthread_mutexattr_setprio_ceiling,
+ "pthread_mutexattr_setprio_ceiling",
+ "pthread_mutexattr_setprio_ceiling");
+
+ pthread_mutexattr_default : pthread_mutexattr_t;
+ pragma Import (C, pthread_mutexattr_default,
+ "pthread_mutexattr_default",
+ "pthread_mutexattr_default");
+
+ -----------------------
+ -- Local Subprograms --
+ -----------------------
+
+ procedure Abort_Wrapper
+ (signo : Integer;
+ info : RTE.siginfo_ptr;
+ context : System.Address);
+ -- This is a signal handler procedure which calls the user-specified
+ -- abort handler procedure.
+
+ procedure LL_Wrapper (T : TCB_Ptr);
+ -- A wrapper procedure that is called from a new low-level task.
+ -- It performs initializations for the new task and calls the
+ -- user-specified startup procedure.
+
+ -------------------------
+ -- Initialize_LL_Tasks --
+ -------------------------
+
+ procedure Initialize_LL_Tasks (T : TCB_Ptr) is
+ Result : int;
+ begin
+ T.LL_Entry_Point := null;
+ T.Thread := pthread_self;
+
+ Result := pthread_key_create (ATCB_Key'Access, null);
+
+ if Result = FUNC_ERR then
+ raise Storage_Error; -- Insufficient resources.
+ end if;
+
+ T.Thread := pthread_self;
+
+ Result := pthread_setspecific (ATCB_Key, To_void_ptr (T));
+
+ if Result = FUNC_ERR then
+ GNAT.IO.Put_Line ("Get specific failed");
+ raise Storage_Error; -- Insufficient resources.
+ end if;
+ pragma Assert (Result /= FUNC_ERR,
+ "GNULLI failure---pthread_setspecific");
+
+ end Initialize_LL_Tasks;
+
+ ----------
+ -- Self --
+ ----------
+
+ function Self return TCB_Ptr is
+ Temp : aliased void_ptr;
+ Result : int;
+ begin
+ Result := pthread_getspecific (ATCB_Key, Temp'Access);
+ pragma Assert (Result /= FUNC_ERR,
+ "GNULLI failure---pthread_getspecific");
+ return To_TCB_Ptr (Temp);
+ end Self;
+
+ ---------------------
+ -- Initialize_Lock --
+ ---------------------
+
+ procedure Initialize_Lock
+ (Prio : System.Any_Priority;
+ L : in out Lock)
+ is
+
+ Attributes : aliased pthread_mutexattr_t;
+ Result : int;
+ MUTEX_NONRECURSIVE_NP : constant := 2;
+
+ begin
+ Result := pthread_mutexattr_init (Attributes'Access);
+ if Result = FUNC_ERR then
+ raise STORAGE_ERROR; -- should be ENOMEM
+ end if;
+
+ Result := pthread_mutexattr_setkind
+ (Attributes'Access, MUTEX_NONRECURSIVE_NP);
+ if Result = FUNC_ERR then
+ raise STORAGE_ERROR; -- should be ENOMEM
+ end if;
+
+ Result := pthread_mutex_init (L.mutex'Access, Attributes);
+
+ if Result = FUNC_ERR then
+ Result := pthread_mutexattr_destroy (Attributes'Access);
+ raise STORAGE_ERROR; -- should be ENOMEM ???
+ end if;
+
+ Result := pthread_mutexattr_destroy (Attributes'Access);
+
+ end Initialize_Lock;
+
+ -------------------
+ -- Finalize_Lock --
+ -------------------
+
+ procedure Finalize_Lock (L : in out Lock) is
+ Result : int;
+ begin
+ Result := pthread_mutex_destroy (L.mutex'Access);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_mutex_destroy");
+ end Finalize_Lock;
+
+ ----------------
+ -- Write_Lock --
+ ----------------
+
+ --
+ -- The current pthreads implementation does not check for Ceiling
+ -- violations.
+ --
+ procedure Write_Lock (L : in out Lock; Ceiling_Violation : out Boolean) is
+ Result : int;
+ begin
+ Ceiling_Violation := False;
+ Result := pthread_mutex_lock (L.mutex'Access);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI FUNC_ERR---pthread_mutex_lock");
+ end Write_Lock;
+
+ ---------------
+ -- Read_Lock --
+ ---------------
+
+ procedure Read_Lock (L : in out Lock; Ceiling_Violation : out Boolean)
+ renames Write_Lock;
+
+ ------------
+ -- Unlock --
+ ------------
+
+ procedure Unlock (L : in out Lock) is
+ Result : int;
+ begin
+ Result := pthread_mutex_unlock (L.mutex'Access);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI FUNC_ERR---pthread_mutex_unlock");
+ end Unlock;
+
+ ---------------------
+ -- Initialize_Cond --
+ ---------------------
+
+ procedure Initialize_Cond (Cond : in out Condition_Variable) is
+ Attributes : aliased Pthreads.pthread_condattr_t;
+ Result : int;
+ begin
+ Result := pthread_condattr_init (Attributes'Access);
+
+ if Result = FUNC_ERR then
+ raise STORAGE_ERROR; -- should be ENOMEM ???
+ end if;
+
+ -- Result := pthread_cond_init (Cond.CV'Access, Attributes'Access);
+ Result := pthread_cond_init (Cond.CV'Access, Attributes);
+
+
+ if Result = FUNC_ERR then
+ raise STORAGE_ERROR; -- should be ENOMEM ???
+ end if;
+
+ Result := pthread_condattr_destroy (Attributes'Access);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI FUNC_ERR---pthread_condattr_destroy");
+
+ end Initialize_Cond;
+
+ -------------------
+ -- Finalize_Cond --
+ -------------------
+
+ procedure Finalize_Cond (Cond : in out Condition_Variable) is
+ Result : int;
+
+ begin
+ Result := pthread_cond_destroy (Cond.CV'Access);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_cond_destroy");
+ end Finalize_Cond;
+
+
+ ---------------
+ -- Cond_Wait --
+ ---------------
+
+ procedure Cond_Wait (Cond : in out Condition_Variable; L : in out Lock) is
+ Result : int;
+ begin
+ Result := pthread_cond_wait (Cond.CV'Access, L.mutex'Access);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_cond_wait");
+ end Cond_Wait;
+
+ ---------------------
+ -- Cond_Timed_Wait --
+ ---------------------
+
+ procedure Cond_Timed_Wait
+ (Cond : in out Condition_Variable;
+ L : in out Lock;
+ Abs_Time : System.Task_Clock.Stimespec;
+ Timed_Out : out Boolean) is
+
+ Result : int;
+ TV : aliased timespec;
+
+ use POSIX_Error;
+
+ begin
+ Timed_Out := False; -- Assume success until we know otherwise
+
+ TV.tv_sec := int (Interfaces.C.POSIX_timers.time_t
+ (Task_Clock.Stimespec_Seconds (Abs_Time)));
+
+ TV.tv_nsec := long (Interfaces.C.POSIX_timers.Nanoseconds
+ (Task_Clock.Stimespec_NSeconds (Abs_Time)));
+
+ Result := pthread_cond_timedwait
+ (Cond.CV'Access, L.mutex'Access, TV'Access);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_cond_timedwait");
+
+ end Cond_Timed_Wait;
+
+ -----------------
+ -- Cond_Signal --
+ -----------------
+
+ procedure Cond_Signal (Cond : in out Condition_Variable) is
+ Result : int;
+ begin
+ Result := pthread_cond_signal (Cond.CV'Access);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_cond_signal");
+ end Cond_Signal;
+
+ ------------------
+ -- Set_Priority --
+ ------------------
+
+ procedure Set_Priority
+ (T : TCB_Ptr;
+ Prio : System.Any_Priority) is
+
+ Result : int;
+ Thread : Pthreads.pthread_t renames T.Thread;
+
+ begin
+ Result := pthread_setprio (Thread, int (Prio));
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_setprio");
+ end Set_Priority;
+
+ ----------------------
+ -- Set_Own_Priority --
+ ----------------------
+
+ procedure Set_Own_Priority (Prio : System.Any_Priority) is
+ begin
+ null;
+ -- ENOSYS Result :=
+ -- pthread_setprio (pthread_self, int (Prio));
+ -- pragma Assert
+ -- (Result /= FUNC_ERR, "GNULLI failure---pthread_setprio");
+ end Set_Own_Priority;
+
+ ------------------
+ -- Get_Priority --
+ ------------------
+
+ function Get_Priority (T : TCB_Ptr) return System.Any_Priority is
+ Priority : aliased int := 0;
+ begin
+ -- ENOSYS Result := pthread_getprio (T.Thread, Priority'Access);
+ -- pragma Assert
+ -- (Result /= FUNC_ERR, "GNULLI failure---pthread_getprio");
+ return System.Priority (Priority);
+ end Get_Priority;
+
+ -----------------------
+ -- Get_Own_Priority --
+ -----------------------
+
+ function Get_Own_Priority return System.Any_Priority is
+ Result : int;
+ Priority : aliased int := 0;
+ begin
+ Result := pthread_getprio (pthread_self, Priority'Access);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_getprio");
+ return System.Priority (Priority);
+ end Get_Own_Priority;
+
+ --------------------
+ -- Create_LL_Task --
+ --------------------
+
+ procedure Create_LL_Task
+ (Priority : System.Any_Priority;
+ Stack_Size : Task_Storage_Size;
+ Task_Info : System.Task_Info.Task_Info_Type;
+ LL_Entry_Point : LL_Task_Procedure_Access;
+ Arg : System.Address;
+ T : TCB_Ptr) is
+
+ use Pthreads;
+
+ Attributes : aliased pthread_attr_t;
+ Result : int;
+ L_Priority : System.Any_Priority := Priority;
+
+ function To_Start_Addr is new
+ Unchecked_Conversion (System.Address, start_addr);
+
+ begin
+ T.LL_Entry_Point := LL_Entry_Point;
+ T.LL_Arg := Arg;
+ T.Stack_Size := Stack_Size;
+
+ Result := pthread_attr_init (Attributes'Access);
+ pragma Assert (Result /= FUNC_ERR, "GNULLI failure---pthread_attr_init");
+
+-- Result := pthread_attr_setdetachstate (Attributes'Access, 1);
+-- pragma Assert
+-- (Result /= FUNC_ERR, "GNULLI failure---pthread_setdetachstate");
+
+ Result := pthread_attr_setstacksize
+ (Attributes'Access, size_t (Stack_Size));
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_setstacksize");
+
+ Result := pthread_attr_setinheritsched
+ (Attributes'Access, PTHREAD_DEFAULT_SCHED);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_setinheritsched");
+
+ Result := pthread_attr_setsched
+ (Attributes'Access, SCHED_FIFO);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_setinheritsched");
+
+ -- The following priority adjustment is a kludge to get around needing
+ -- root privileges to run at higher than 18 for FIFO or 19 for OTHER.
+
+ if (L_Priority > 18) then
+ L_Priority := 18;
+ elsif (L_Priority < 14) then
+ L_Priority := 14;
+ end if;
+
+ Result := pthread_attr_setprio
+ (Attributes'Access, int (L_Priority));
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_attr_setprio");
+
+ Result := pthread_create
+ (T.Thread'Access,
+ Attributes,
+ To_Start_Addr (LL_Wrapper'Address),
+ T.all'Address);
+ if Result = FUNC_ERR then
+ GNAT.IO.Put_Line ("pthread create failed");
+ raise Storage_Error;
+ end if;
+ pragma Assert (Result /= FUNC_ERR, "GNULLI failure---pthread_create");
+
+ Result := pthread_attr_destroy (Attributes'Access);
+ pragma Assert
+ (Result /= FUNC_ERR, "GNULLI failure---pthread_attr_destroy");
+
+ end Create_LL_Task;
+
+ -----------------
+ -- Exit_LL_Task --
+ ------------------
+
+ procedure Exit_LL_Task is
+ begin
+ pthread_exit (System.Null_Address);
+ end Exit_LL_Task;
+
+ ----------------
+ -- Abort_Task --
+ ----------------
+
+ procedure Abort_Task (T : TCB_Ptr) is
+ Result : int;
+ begin
+-- Result := pthread_kill (T.Thread);
+-- pragma Assert
+-- (Result /= FUNC_ERR, "GNULLI failure---pthread_kill");
+ null;
+ end Abort_Task;
+
+ ----------------
+ -- Test_Abort --
+ ----------------
+
+ -- This procedure does nothing. It is intended for systems without
+ -- asynchronous abortion, where the runtime system would have to
+ -- synchronously poll for pending abortions. This should be done
+ -- at least at every synchronization point.
+
+ procedure Test_Abort is
+ begin
+ null;
+ end Test_Abort;
+
+ ---------------------------
+ -- Install_Abort_Handler --
+ ---------------------------
+
+ procedure Install_Abort_Handler (Handler : Abort_Handler_Pointer) is
+ act : aliased RTE.struct_sigaction;
+ old_act : aliased RTE.struct_sigaction;
+ Result : POSIX_Error.Return_Code;
+ SA_SIGINFO : constant := 64;
+
+ use type POSIX_Error.Return_Code;
+
+ begin
+ Abort_Handler := Handler;
+
+ act.sa_flags := SA_SIGINFO;
+ act.sa_handler := Abort_Wrapper'Address;
+ RTE.sigemptyset (act.sa_mask'Access, Result);
+ pragma Assert (Result /= FUNC_ERR, "GNULLI failure---sigemptyset");
+
+ RTE.sigaction (Abort_Signal, act'Access, old_act'Access, Result);
+ pragma Assert (Result /= FUNC_ERR, "GNULLI failure---sigaction");
+ end Install_Abort_Handler;
+
+ -------------------
+ -- Abort_Wrapper --
+ -------------------
+
+ -- This is the handler called by the OS when an abort signal is
+ -- received; it in turn calls the handler installed by the client.
+ -- This procedure serves to isolate the client from the
+ -- implementation-specific calling conventions of asynchronous
+ -- handlers.
+
+ procedure Abort_Wrapper
+ (signo : Integer;
+ info : RTE.siginfo_ptr;
+ context : System.Address)
+ is
+ function Address_To_Call_State is new
+ Unchecked_Conversion (System.Address, Pre_Call_State);
+
+ begin
+ Abort_Handler (Address_To_Call_State (context));
+ end Abort_Wrapper;
+
+ ---------------------------
+ -- Install_Error_Handler --
+ ---------------------------
+
+ procedure Install_Error_Handler (Handler : System.Address) is
+
+ Temp : Address;
+
+ use Pthreads;
+
+ begin
+ -- Set up the soft links to tasking services used in the absence of
+ -- tasking. These replace tasking-free defaults.
+
+ Temp := TSL.Get_Jmpbuf_Address.all;
+ -- pthread_set_jumpbuf_address (Temp);
+
+ Temp := TSL.Get_Sec_Stack_Addr.all;
+ -- pthread_set_sec_stack_addr (Temp);
+
+ -- TSL.Get_Jmpbuf_Address := pthread_get_jumpbuf_address'Access;
+ -- TSL.Set_Jmpbuf_Address := pthread_set_jumpbuf_address'Access;
+ -- TSL.Get_Gnat_Exception := pthread_get_exception'Access;
+ -- TSL.Set_Gnat_Exception := pthread_set_exception'Access;
+ end Install_Error_Handler;
+
+ ---------------
+ -- LL_Assert --
+ ---------------
+
+ procedure LL_Assert (B : Boolean; M : String) is
+ begin
+ null;
+ end LL_Assert;
+
+ ----------------
+ -- LL_Wrapper --
+ ----------------
+
+ procedure LL_Wrapper (T : TCB_Ptr) is
+ Result : POSIX_Error.Return_Code;
+ Result1 : int;
+ Exc_Stack : String (1 .. 256);
+ Exc_Base : Address := Exc_Stack (Exc_Stack'Last)'Address + 1;
+ Old_Set : aliased RTE.Signal_Set;
+ begin
+ Result1 := pthread_setspecific (ATCB_Key, T.all'Address);
+
+ RTE.sigprocmask (
+ RTE.SIG_UNBLOCK, Unblocked_Signal_Mask'Access, Old_Set'Access, Result);
+ pragma Assert (
+ Result /= Failure, "GNULLI failure---sigprocmask");
+
+ -- Note that the following call may not return!
+ T.LL_Entry_Point (T.LL_Arg);
+ end LL_Wrapper;
+
+ --------------------------
+ -- Test and Set support --
+ --------------------------
+
+ procedure Initialize_TAS_Cell (Cell : out TAS_Cell) is
+ begin
+ Cell.Value := 0;
+ end Initialize_TAS_Cell;
+
+ procedure Finalize_TAS_Cell (Cell : in out TAS_Cell) is
+ begin
+ null;
+ end Finalize_TAS_Cell;
+
+ procedure Clear (Cell : in out TAS_Cell) is
+ begin
+ Cell.Value := 1;
+ end Clear;
+
+ procedure Test_And_Set (Cell : in out TAS_Cell; Result : out Boolean) is
+ Error : Boolean;
+ begin
+ Write_Lock (Test_And_Set_Mutex, Error);
+
+ if Cell.Value = 1 then
+ Result := False;
+ else
+ Result := True;
+ Cell.Value := 1;
+ end if;
+ Unlock (Test_And_Set_Mutex);
+ end Test_And_Set;
+
+ function Is_Set (Cell : in TAS_Cell) return Boolean is
+ begin
+ return Cell.Value = 1;
+ end Is_Set;
+begin
+ Initialize_Lock (System.Any_Priority'Last, Test_And_Set_Mutex);
+end System.Task_Primitives;
diff --git a/test/etags/ada-src/2ataspri.ads b/test/etags/ada-src/2ataspri.ads
new file mode 100644
index 0000000..01c7860
--- /dev/null
+++ b/test/etags/ada-src/2ataspri.ads
@@ -0,0 +1,298 @@
+------------------------------------------------------------------------------
+-- --
+-- GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . T A S K _ P R I M I T I V E S --
+-- --
+-- S p e c --
+-- --
+-- $Revision: 1.1 $ --
+-- --
+-- Copyright (C) 1991,1992,1993,1994,1995,1996 Florida State University --
+-- --
+-- GNARL is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 2, or (at your option) any later ver- --
+-- sion. GNARL is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
+-- for more details. You should have received a copy of the GNU General --
+-- Public License distributed with GNARL; see file COPYING. If not, write --
+-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
+-- MA 02111-1307, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- GNARL was developed by the GNARL team at Florida State University. It is --
+-- now maintained by Ada Core Technologies Inc. in cooperation with Florida --
+-- State University (http://www.gnat.com). --
+-- --
+------------------------------------------------------------------------------
+
+with Interfaces.C;
+-- Used for Size_t;
+
+with Interfaces.C.Pthreads;
+-- Used for, size_t,
+-- pthread_mutex_t,
+-- pthread_cond_t,
+-- pthread_t
+
+with Interfaces.C.POSIX_RTE;
+-- Used for, Signal,
+-- siginfo_ptr,
+
+with System.Task_Clock;
+-- Used for, Stimespec
+
+with Unchecked_Conversion;
+
+pragma Elaborate_All (Interfaces.C.Pthreads);
+
+with System.Task_Info;
+package System.Task_Primitives is
+
+ -- Low level Task size and state definition
+
+ type LL_Task_Procedure_Access is access procedure (Arg : System.Address);
+
+ type Pre_Call_State is new System.Address;
+
+ type Task_Storage_Size is new Interfaces.C.size_t;
+
+ type Machine_Exceptions is new Interfaces.C.POSIX_RTE.Signal;
+
+ type Error_Information is new Interfaces.C.POSIX_RTE.siginfo_ptr;
+
+ type Lock is private;
+ type Condition_Variable is private;
+
+ -- The above types should both be limited. They are not due to a hack in
+ -- ATCB allocation which allocates a block of the correct size and then
+ -- assigns an initialized ATCB to it. This won't work with limited types.
+ -- When allocation is done with new, these can become limited once again.
+ -- ???
+
+ type Task_Control_Block is record
+ LL_Entry_Point : LL_Task_Procedure_Access;
+ LL_Arg : System.Address;
+ Thread : aliased Interfaces.C.Pthreads.pthread_t;
+ Stack_Size : Task_Storage_Size;
+ Stack_Limit : System.Address;
+ end record;
+
+ type TCB_Ptr is access all Task_Control_Block;
+
+ -- Task ATCB related and variables.
+
+ function Address_To_TCB_Ptr is new
+ Unchecked_Conversion (System.Address, TCB_Ptr);
+
+ procedure Initialize_LL_Tasks (T : TCB_Ptr);
+ -- Initialize GNULLI. T points to the Task Control Block that should
+ -- be initialized for use by the environment task.
+
+ function Self return TCB_Ptr;
+ -- Return a pointer to the Task Control Block of the calling task.
+
+ procedure Initialize_Lock (Prio : System.Any_Priority; L : in out Lock);
+ -- Initialize a lock object. Prio is the ceiling priority associated
+ -- with the lock.
+
+ procedure Finalize_Lock (L : in out Lock);
+ -- Finalize a lock object, freeing any resources allocated by the
+ -- corresponding Initialize_Lock.
+
+ procedure Write_Lock (L : in out Lock; Ceiling_Violation : out Boolean);
+ pragma Inline (Write_Lock);
+ -- Lock a lock object for write access to a critical section. After
+ -- this operation returns, the calling task owns the lock, and
+ -- no other Write_Lock or Read_Lock operation on the same object will
+ -- return the owner executes an Unlock operation on the same object.
+
+ procedure Read_Lock (L : in out Lock; Ceiling_Violation : out Boolean);
+ pragma Inline (Read_Lock);
+ -- Lock a lock object for read access to a critical section. After
+ -- this operation returns, the calling task owns the lock, and
+ -- no other Write_Lock operation on the same object will return until
+ -- the owner(s) execute Unlock operation(s) on the same object.
+ -- A Read_Lock to an owned lock object may return while the lock is
+ -- still owned, though an implementation may also implement
+ -- Read_Lock to have the same semantics.
+
+ procedure Unlock (L : in out Lock);
+ pragma Inline (Unlock);
+ -- Unlock a locked lock object. The results are undefined if the
+ -- calling task does not own the lock. Lock/Unlock operations must
+ -- be nested, that is, the argument to Unlock must be the object
+ -- most recently locked.
+
+ procedure Initialize_Cond (Cond : in out Condition_Variable);
+ -- Initialize a condition variable object.
+
+ procedure Finalize_Cond (Cond : in out Condition_Variable);
+ -- Finalize a condition variable object, recovering any resources
+ -- allocated for it by Initialize_Cond.
+
+ procedure Cond_Wait (Cond : in out Condition_Variable; L : in out Lock);
+ pragma Inline (Cond_Wait);
+ -- Wait on a condition variable. The mutex object L is unlocked
+ -- atomically, such that another task that is able to lock the mutex
+ -- can be assured that the wait has actually commenced, and that
+ -- a Cond_Signal operation will cause the waiting task to become
+ -- eligible for execution once again. Before Cond_Wait returns,
+ -- the waiting task will again lock the mutex. The waiting task may become
+ -- eligible for execution at any time, but will become eligible for
+ -- execution when a Cond_Signal operation is performed on the
+ -- same condition variable object. The effect of more than one
+ -- task waiting on the same condition variable is unspecified.
+
+ procedure Cond_Timed_Wait
+ (Cond : in out Condition_Variable;
+ L : in out Lock; Abs_Time : System.Task_Clock.Stimespec;
+ Timed_Out : out Boolean);
+ pragma Inline (Cond_Timed_Wait);
+ -- Wait on a condition variable, as for Cond_Wait, above. In addition,
+ -- the waiting task will become eligible for execution again
+ -- when the absolute time specified by Timed_Out arrives.
+
+ procedure Cond_Signal (Cond : in out Condition_Variable);
+ pragma Inline (Cond_Signal);
+ -- Wake up a task waiting on the condition variable object specified
+ -- by Cond, making it eligible for execution once again.
+
+ procedure Set_Priority (T : TCB_Ptr; Prio : System.Any_Priority);
+ pragma Inline (Set_Priority);
+ -- Set the priority of the task specified by T to P.
+
+ procedure Set_Own_Priority (Prio : System.Any_Priority);
+ pragma Inline (Set_Own_Priority);
+ -- Set the priority of the calling task to P.
+
+ function Get_Priority (T : TCB_Ptr) return System.Any_Priority;
+ pragma Inline (Get_Priority);
+ -- Return the priority of the task specified by T.
+
+ function Get_Own_Priority return System.Any_Priority;
+ pragma Inline (Get_Own_Priority);
+ -- Return the priority of the calling task.
+
+ procedure Create_LL_Task
+ (Priority : System.Any_Priority;
+ Stack_Size : Task_Storage_Size;
+ Task_Info : System.Task_Info.Task_Info_Type;
+ LL_Entry_Point : LL_Task_Procedure_Access;
+ Arg : System.Address;
+ T : TCB_Ptr);
+ -- Create a new low-level task with priority Priority. A new thread
+ -- of control is created with a stack size of at least Stack_Size,
+ -- and the procedure LL_Entry_Point is called with the argument Arg
+ -- from this new thread of control. The Task Control Block pointed
+ -- to by T is initialized to refer to this new task.
+
+ procedure Exit_LL_Task;
+ -- Exit a low-level task. The resources allocated for the task
+ -- by Create_LL_Task are recovered. The task no longer executes, and
+ -- the effects of further operations on task are unspecified.
+
+ procedure Abort_Task (T : TCB_Ptr);
+ -- Abort the task specified by T (the target task). This causes
+ -- the target task to asynchronously execute the handler procedure
+ -- installed by the target task using Install_Abort_Handler. The
+ -- effect of this operation is unspecified if there is no abort
+ -- handler procedure for the target task.
+
+ procedure Test_Abort;
+ -- ??? Obsolete? This is intended to allow implementation of
+ -- abortion and ATC in the absence of an asynchronous Abort_Task,
+ -- but I think that we decided that GNARL can handle this on
+ -- its own by making sure that there is an Undefer_Abortion at
+ -- every abortion synchronization point.
+
+ type Abort_Handler_Pointer is access procedure (Context : Pre_Call_State);
+
+ procedure Install_Abort_Handler (Handler : Abort_Handler_Pointer);
+ -- Install an abort handler procedure. This procedure is called
+ -- asynchronously by the calling task whenever a call to Abort_Task
+ -- specifies the calling task as the target. If the abort handler
+ -- procedure is asynchronously executed during a GNULLI operation
+ -- and then calls some other GNULLI operation, the effect is unspecified.
+
+ procedure Install_Error_Handler (Handler : System.Address);
+ -- Install an error handler for the calling task. The handler will
+ -- be called synchronously if an error is encountered during the
+ -- execution of the calling task.
+
+ procedure LL_Assert (B : Boolean; M : String);
+ -- If B is False, print the string M to the console and halt the
+ -- program.
+
+ Task_Wrapper_Frame : constant Integer := 72;
+ -- This is the size of the frame for the Pthread_Wrapper procedure.
+
+ type Proc is access procedure (Addr : System.Address);
+
+
+ -- Test and Set support
+ type TAS_Cell is private;
+ -- On some systems we can not assume that an arbitrary memory location
+ -- can be used in an atomic test and set instruction (e.g. on some
+ -- multiprocessor machines, only memory regions are cache interlocked).
+ -- TAS_Cell is private to facilitate adaption to a variety of
+ -- implementations.
+
+ procedure Initialize_TAS_Cell (Cell : out TAS_Cell);
+ pragma Inline (Initialize_TAS_Cell);
+ -- Initialize a Test And Set Cell. On some targets this will allocate
+ -- a system-level lock object from a special pool. For most systems,
+ -- this is a nop.
+
+ procedure Finalize_TAS_Cell (Cell : in out TAS_Cell);
+ pragma Inline (Finalize_TAS_Cell);
+ -- Finalize a Test and Set cell, freeing any resources allocated by the
+ -- corresponding Initialize_TAS_Cell.
+
+ procedure Clear (Cell : in out TAS_Cell);
+ pragma Inline (Clear);
+ -- Set the state of the named TAS_Cell such that a subsequent call to
+ -- Is_Set will return False. This operation must be atomic with
+ -- respect to the Is_Set and Test_And_Set operations for the same
+ -- cell.
+
+ procedure Test_And_Set (Cell : in out TAS_Cell; Result : out Boolean);
+ pragma Inline (Test_And_Set);
+ -- Modify the state of the named TAS_Cell such that a subsequent call
+ -- to Is_Set will return True. Result is set to True if Is_Set
+ -- was False prior to the call, False otherwise. This operation must
+ -- be atomic with respect to the Clear and Is_Set operations for the
+ -- same cell.
+
+ function Is_Set (Cell : in TAS_Cell) return Boolean;
+ pragma Inline (Is_Set);
+ -- Returns the current value of the named TAS_Cell. This operation
+ -- must be atomic with respect to the Clear and Test_And_Set operations
+ -- for the same cell.
+
+private
+
+ type Lock is
+ record
+ mutex : aliased Interfaces.C.Pthreads.pthread_mutex_t;
+ end record;
+
+ type Condition_Variable is
+ record
+ CV : aliased Interfaces.C.Pthreads.pthread_cond_t;
+ end record;
+
+ type TAS_Cell is
+ record
+ Value : aliased Interfaces.C.unsigned := 0;
+ end record;
+
+end System.Task_Primitives;
diff --git a/test/etags/ada-src/etags-test-for.ada
b/test/etags/ada-src/etags-test-for.ada
new file mode 100644
index 0000000..09e5a1e
--- /dev/null
+++ b/test/etags/ada-src/etags-test-for.ada
@@ -0,0 +1,193 @@
+ type LL_Task_Procedure_Access is access procedure (Arg : System.Address);
+
+ function Body_Required
+ (N : Node_Id) return Boolean is
+ begin
+ pragma Assert (False
+ or else NT (N).Nkind = N_Compilation_Unit);
+ return Flag13 (N);
+ end Body_Required;
+
+ type Type_Specific_Data is record
+ Idepth : Natural;
+ Expanded_Name : Cstring_Ptr;
+ External_Tag : Cstring_Ptr;
+ HT_Link : Tag;
+ Ancestor_Tags : Tag_Table (Natural);
+ end record;
+
+ function "abs" (Right : Complex) return Real'Base renames Modulus;
+
+ type Barrier_Function_Pointer is access
+ function
+ (O : System.Address;
+ E : Protected_Entry_Index)
+ return Boolean;
+
+ function "=" (L, R : System.Address) return Boolean
+ renames System."=";
+
+ type usfreelock_ptr is access
+ procedure (lock : ulock_t; arena : usptr_t_ptr);
+
+ function p pragma Import (C,
+ "pthread_mutexattr_setprio_ceiling",
+ "pthread_mutexattr_setprio_ceiling");
+ pragma Import ()
+ procedure LL_Wrapper (T : TCB_Ptr);
+
+function p ("p");
+
+-- This file is an Ada file containing test data
+-- for etags (Ada83 and Ada95 support).
+
+package Pkg1 is
+
+ type Private_T is private;
+
+ package Inner1 is
+ procedure Private_T;
+ end Inner1;
+
+ package Inner2 is
+ task Private_T;
+ end Inner2;
+
+ type Public_T is
+ record
+ A : Integer;
+ B : Integer;
+ end record;
+
+ procedure Pkg1_Proc1;
+
+ procedure Pkg1_Proc2 (I : Integer);
+
+ function Pkg1_Func1 return Boolean;
+
+ function Pkg1_Func2 (Ijk : Integer; Z : Integer) return Natural;
+
+
+ package Pkg1_Pkg1 is
+ procedure Pkg1_Pkg1_Proc1;
+ end Pkg1_Pkg1;
+
+ task type Task_Type is
+ entry Entry1;
+ entry Entry2 (I : Integer);
+ end;
+
+private
+
+ type Private_T is
+ record
+ Z : Integer;
+ W : Boolean;
+ end record;
+end Pkg1;
+
+package body Pkg1 is
+
+ procedure Pkg1_Proc1 is
+ begin
+ null;
+ end;
+
+ package body Inner1 is
+ procedure Private_T is
+ begin
+ null;
+ end;
+ end Inner1;
+
+ package body Inner2 is
+ task body Private_T is
+ begin
+ loop
+ null;
+ end loop;
+ end;
+ end Inner2;
+
+ task body Task_Type is
+ begin
+ select
+ accept Entry1 do
+ null;
+ end;
+ or
+ accept Entry2 (I : Integer) do
+ null;
+ end;
+ end select;
+ end;
+
+
+ procedure Pkg1_Proc2 (I : Integer) is
+ begin
+ null;
+ end Pkg1_Proc2;
+
+
+ function Pkg1_Func1 return Boolean is separate;
+
+ function Pkg1_Func2 (Ijk : Integer; Z : Integer) return Natural is
+ begin
+ return 1;
+ end;
+
+
+ package body Pkg1_Pkg1 is separate;
+
+
+end Pkg1;
+
+separate (Pkg1)
+package body Pkg1_Pkg1 is
+ procedure Pkg1_Pkg1_Proc1 is
+ begin
+ null;
+ end;
+end Pkg1_Pkg1;
+
+
+separate (Pkg1)
+function Pkg1_Func1 return Boolean is
+begin
+ return False;
+end;
+
+
+-- from now on, this is Ada 95 specific.
+package Truc is
+ I : Integer;
+end Truc;
+
+package Truc.Bidule is
+
+ protected Bidule is
+ entry Basar;
+ end Bidule;
+
+ protected type Machin_T is
+ entry Truc;
+ end Machin_T;
+
+end Truc.Bidule;
+
+package body Truc.Bidule is
+ protected body Bidule is
+ entry Basar is
+ begin
+ null;
+ end;
+ end Bidule;
+
+ protected Machin_T is
+ entry Truc is
+ begin
+ null;
+ end;
+ end Machin_T;
+
+end Truc.Bidule;
diff --git a/test/etags/ada-src/waroquiers.ada
b/test/etags/ada-src/waroquiers.ada
new file mode 100644
index 0000000..3161209
--- /dev/null
+++ b/test/etags/ada-src/waroquiers.ada
@@ -0,0 +1,153 @@
+-- This file is an Ada file containing test data
+-- for etags (Ada83 and Ada95 support).
+package Pkg1 is
+
+ type Private_T is private;
+
+ package Inner1 is
+ procedure Private_T;
+ end Inner1;
+
+ package Inner2 is
+ task Private_T;
+ end Inner2;
+
+ type Public_T is
+ record
+ A : Integer;
+ B : Integer;
+ end record;
+
+ procedure Pkg1_Proc1;
+
+ procedure Pkg1_Proc2 (I : Integer);
+
+ function Pkg1_Func1 return Boolean;
+
+ function Pkg1_Func2 (Ijk : Integer; Z : Integer) return Natural;
+
+
+ package Pkg1_Pkg1 is
+ procedure Pkg1_Pkg1_Proc1;
+ end Pkg1_Pkg1;
+
+ task type Task_Type is
+ entry Entry1;
+ entry Entry2 (I : Integer);
+ end;
+private
+
+ type Private_T is
+ record
+ Z : Integer;
+ W : Boolean;
+ end record;
+end Pkg1;
+package body Pkg1 is
+
+ procedure Pkg1_Proc1 is
+ begin
+ null;
+ end;
+
+ package body Inner1 is
+ procedure Private_T is
+ begin
+ null;
+ end;
+ end Inner1;
+
+ package body Inner2 is
+ task body Private_T is
+ begin
+ loop
+ null;
+ end loop;
+ end;
+ end Inner2;
+ task body Task_Type is
+ begin
+ select
+ accept Entry1 do
+ null;
+ end;
+ or
+ accept Entry2 (I : Integer) do
+ null;
+ end;
+ end select;
+ end;
+
+
+ procedure Pkg1_Proc2 (I : Integer) is
+ begin
+ null;
+ end Pkg1_Proc2;
+
+
+ function Pkg1_Func1 return Boolean is separate;
+
+ function Pkg1_Func2 (Ijk : Integer; Z : Integer) return Natural is
+ begin
+ return 1;
+ end;
+
+
+ package body Pkg1_Pkg1 is separate;
+
+end Pkg1;
+separate (Pkg1)
+package body Pkg1_Pkg1 is
+ procedure Pkg1_Pkg1_Proc1 is
+ begin
+ null;
+ end;
+end Pkg1_Pkg1;
+separate (Pkg1)
+function Pkg1_Func1 return Boolean is
+begin
+ return False;
+end;
+-- from now on, this is Ada 95 specific.
+package Truc is
+ I : Integer;
+end Truc;
+with Pkg1;
+package Truc.Bidule is
+ use type Pkg1.Public_T;
+ use Pkg1;
+ use
+ type Pkg1.Public_T;
+ use -- comment
+ type -- comment
+ Pkg1.Public_T;
+
+ protected Bidule is
+ entry Basar;
+ private
+ Ok : Boolean;
+ end Bidule;
+
+ protected type Machin_T is
+ entry Truc;
+ private
+ Ok : Boolean;
+ end Machin_T;
+
+end Truc.Bidule;
+package body Truc.Bidule is
+ protected body Bidule is
+ entry Basar when Ok is
+ begin
+ null;
+ end;
+ end Bidule;
+
+ protected body Machin_T is
+ entry Truc when Ok is
+ begin
+ null;
+ end;
+ end Machin_T;
+
+end Truc.Bidule;
diff --git a/test/etags/c-src/a/b/b.c b/test/etags/c-src/a/b/b.c
new file mode 100644
index 0000000..ee3c97c
--- /dev/null
+++ b/test/etags/c-src/a/b/b.c
@@ -0,0 +1,5 @@
+#define this that
+
+#line 33 "../c/c.web"
+
+#define questo quello
diff --git a/test/etags/c-src/abbrev.c b/test/etags/c-src/abbrev.c
new file mode 100644
index 0000000..f30986d
--- /dev/null
+++ b/test/etags/c-src/abbrev.c
@@ -0,0 +1,616 @@
+/* Primitives for word-abbrev mode.
+ Copyright (C) 1985, 1986, 1993, 1996, 1998 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+
+#include <config.h>
+#include <stdio.h>
+#include "lisp.h"
+#include "commands.h"
+#include "buffer.h"
+#include "window.h"
+#include "charset.h"
+#include "syntax.h"
+
+/* An abbrev table is an obarray.
+ Each defined abbrev is represented by a symbol in that obarray
+ whose print name is the abbreviation.
+ The symbol's value is a string which is the expansion.
+ If its function definition is non-nil, it is called
+ after the expansion is done.
+ The plist slot of the abbrev symbol is its usage count. */
+
+/* List of all abbrev-table name symbols:
+ symbols whose values are abbrev tables. */
+
+Lisp_Object Vabbrev_table_name_list;
+
+/* The table of global abbrevs. These are in effect
+ in any buffer in which abbrev mode is turned on. */
+
+Lisp_Object Vglobal_abbrev_table;
+
+/* The local abbrev table used by default (in Fundamental Mode buffers) */
+
+Lisp_Object Vfundamental_mode_abbrev_table;
+
+/* Set nonzero when an abbrev definition is changed */
+
+int abbrevs_changed;
+
+int abbrev_all_caps;
+
+/* Non-nil => use this location as the start of abbrev to expand
+ (rather than taking the word before point as the abbrev) */
+
+Lisp_Object Vabbrev_start_location;
+
+/* Buffer that Vabbrev_start_location applies to */
+Lisp_Object Vabbrev_start_location_buffer;
+
+/* The symbol representing the abbrev most recently expanded */
+
+Lisp_Object Vlast_abbrev;
+
+/* A string for the actual text of the abbrev most recently expanded.
+ This has more info than Vlast_abbrev since case is significant. */
+
+Lisp_Object Vlast_abbrev_text;
+
+/* Character address of start of last abbrev expanded */
+
+int last_abbrev_point;
+
+/* Hook to run before expanding any abbrev. */
+
+Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;
+
+DEFUN ("make-abbrev-table", Fmake_abbrev_table, Smake_abbrev_table, 0, 0, 0,
+ "Create a new, empty abbrev table object.")
+ ()
+{
+ return Fmake_vector (make_number (59), make_number (0));
+}
+
+DEFUN ("clear-abbrev-table", Fclear_abbrev_table, Sclear_abbrev_table, 1, 1, 0,
+ "Undefine all abbrevs in abbrev table TABLE, leaving it empty.")
+ (table)
+ Lisp_Object table;
+{
+ int i, size;
+
+ CHECK_VECTOR (table, 0);
+ size = XVECTOR (table)->size;
+ abbrevs_changed = 1;
+ for (i = 0; i < size; i++)
+ XVECTOR (table)->contents[i] = make_number (0);
+ return Qnil;
+}
+
+DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_abbrev, 3, 5, 0,
+ "Define an abbrev in TABLE named NAME, to expand to EXPANSION and call
HOOK.\n\
+NAME must be a string.\n\
+EXPANSION should usually be a string.\n\
+To undefine an abbrev, define it with EXPANSION = nil.\n\
+If HOOK is non-nil, it should be a function of no arguments;\n\
+it is called after EXPANSION is inserted.\n\
+If EXPANSION is not a string, the abbrev is a special one,\n\
+ which does not expand in the usual way but only runs HOOK.\n\
+COUNT, if specified, initializes the abbrev's usage-count\n\
+which is incremented each time the abbrev is used.")
+ (table, name, expansion, hook, count)
+ Lisp_Object table, name, expansion, hook, count;
+{
+ Lisp_Object sym, oexp, ohook, tem;
+ CHECK_VECTOR (table, 0);
+ CHECK_STRING (name, 1);
+
+ if (NILP (count))
+ count = make_number (0);
+ else
+ CHECK_NUMBER (count, 0);
+
+ sym = Fintern (name, table);
+
+ oexp = XSYMBOL (sym)->value;
+ ohook = XSYMBOL (sym)->function;
+ if (!((EQ (oexp, expansion)
+ || (STRINGP (oexp) && STRINGP (expansion)
+ && (tem = Fstring_equal (oexp, expansion), !NILP (tem))))
+ &&
+ (EQ (ohook, hook)
+ || (tem = Fequal (ohook, hook), !NILP (tem)))))
+ abbrevs_changed = 1;
+
+ Fset (sym, expansion);
+ Ffset (sym, hook);
+ Fsetplist (sym, count);
+
+ return name;
+}
+
+DEFUN ("define-global-abbrev", Fdefine_global_abbrev, Sdefine_global_abbrev,
2, 2,
+ "sDefine global abbrev: \nsExpansion for %s: ",
+ "Define ABBREV as a global abbreviation for EXPANSION.")
+ (abbrev, expansion)
+ Lisp_Object abbrev, expansion;
+{
+ Fdefine_abbrev (Vglobal_abbrev_table, Fdowncase (abbrev),
+ expansion, Qnil, make_number (0));
+ return abbrev;
+}
+
+DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev, Sdefine_mode_abbrev, 2, 2,
+ "sDefine mode abbrev: \nsExpansion for %s: ",
+ "Define ABBREV as a mode-specific abbreviation for EXPANSION.")
+ (abbrev, expansion)
+ Lisp_Object abbrev, expansion;
+{
+ if (NILP (current_buffer->abbrev_table))
+ error ("Major mode has no abbrev table");
+
+ Fdefine_abbrev (current_buffer->abbrev_table, Fdowncase (abbrev),
+ expansion, Qnil, make_number (0));
+ return abbrev;
+}
+
+DEFUN ("abbrev-symbol", Fabbrev_symbol, Sabbrev_symbol, 1, 2, 0,
+ "Return the symbol representing abbrev named ABBREV.\n\
+This symbol's name is ABBREV, but it is not the canonical symbol of that
name;\n\
+it is interned in an abbrev-table rather than the normal obarray.\n\
+The value is nil if that abbrev is not defined.\n\
+Optional second arg TABLE is abbrev table to look it up in.\n\
+The default is to try buffer's mode-specific abbrev table, then global table.")
+ (abbrev, table)
+ Lisp_Object abbrev, table;
+{
+ Lisp_Object sym;
+ CHECK_STRING (abbrev, 0);
+ if (!NILP (table))
+ sym = Fintern_soft (abbrev, table);
+ else
+ {
+ sym = Qnil;
+ if (!NILP (current_buffer->abbrev_table))
+ sym = Fintern_soft (abbrev, current_buffer->abbrev_table);
+ if (NILP (XSYMBOL (sym)->value))
+ sym = Qnil;
+ if (NILP (sym))
+ sym = Fintern_soft (abbrev, Vglobal_abbrev_table);
+ }
+ if (NILP (XSYMBOL (sym)->value)) return Qnil;
+ return sym;
+}
+
+DEFUN ("abbrev-expansion", Fabbrev_expansion, Sabbrev_expansion, 1, 2, 0,
+ "Return the string that ABBREV expands into in the current buffer.\n\
+Optionally specify an abbrev table as second arg;\n\
+then ABBREV is looked up in that table only.")
+ (abbrev, table)
+ Lisp_Object abbrev, table;
+{
+ Lisp_Object sym;
+ sym = Fabbrev_symbol (abbrev, table);
+ if (NILP (sym)) return sym;
+ return Fsymbol_value (sym);
+}
+
+/* Expand the word before point, if it is an abbrev.
+ Returns 1 if an expansion is done. */
+
+DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_abbrev, 0, 0, "",
+ "Expand the abbrev before point, if there is an abbrev there.\n\
+Effective when explicitly called even when `abbrev-mode' is nil.\n\
+Returns the abbrev symbol, if expansion took place.")
+ ()
+{
+ register char *buffer, *p;
+ int wordstart, wordend;
+ register int wordstart_byte, wordend_byte, idx;
+ int whitecnt;
+ int uccount = 0, lccount = 0;
+ register Lisp_Object sym;
+ Lisp_Object expansion, hook, tem;
+ Lisp_Object value;
+
+ value = Qnil;
+
+ if (!NILP (Vrun_hooks))
+ call1 (Vrun_hooks, Qpre_abbrev_expand_hook);
+
+ wordstart = 0;
+ if (!(BUFFERP (Vabbrev_start_location_buffer)
+ && XBUFFER (Vabbrev_start_location_buffer) == current_buffer))
+ Vabbrev_start_location = Qnil;
+ if (!NILP (Vabbrev_start_location))
+ {
+ tem = Vabbrev_start_location;
+ CHECK_NUMBER_COERCE_MARKER (tem, 0);
+ wordstart = XINT (tem);
+ Vabbrev_start_location = Qnil;
+ if (wordstart < BEGV || wordstart > ZV)
+ wordstart = 0;
+ if (wordstart && wordstart != ZV)
+ {
+ wordstart_byte = CHAR_TO_BYTE (wordstart);
+ if (FETCH_BYTE (wordstart_byte) == '-')
+ del_range (wordstart, wordstart + 1);
+ }
+ }
+ if (!wordstart)
+ wordstart = scan_words (PT, -1);
+
+ if (!wordstart)
+ return value;
+
+ wordstart_byte = CHAR_TO_BYTE (wordstart);
+ wordend = scan_words (wordstart, 1);
+ if (!wordend)
+ return value;
+
+ if (wordend > PT)
+ wordend = PT;
+
+ wordend_byte = CHAR_TO_BYTE (wordend);
+ whitecnt = PT - wordend;
+ if (wordend <= wordstart)
+ return value;
+
+ p = buffer = (char *) alloca (wordend_byte - wordstart_byte);
+
+ for (idx = wordstart_byte; idx < wordend_byte; idx++)
+ {
+ /* ??? This loop needs to go by characters! */
+ register int c = FETCH_BYTE (idx);
+ if (UPPERCASEP (c))
+ c = DOWNCASE (c), uccount++;
+ else if (! NOCASEP (c))
+ lccount++;
+ *p++ = c;
+ }
+
+ if (VECTORP (current_buffer->abbrev_table))
+ sym = oblookup (current_buffer->abbrev_table, buffer,
+ wordend - wordstart, wordend_byte - wordstart_byte);
+ else
+ XSETFASTINT (sym, 0);
+ if (INTEGERP (sym) || NILP (XSYMBOL (sym)->value))
+ sym = oblookup (Vglobal_abbrev_table, buffer,
+ wordend - wordstart, wordend_byte - wordstart_byte);
+ if (INTEGERP (sym) || NILP (XSYMBOL (sym)->value))
+ return value;
+
+ if (INTERACTIVE && !EQ (minibuf_window, selected_window))
+ {
+ /* Add an undo boundary, in case we are doing this for
+ a self-inserting command which has avoided making one so far. */
+ SET_PT (wordend);
+ Fundo_boundary ();
+ }
+
+ Vlast_abbrev_text
+ = Fbuffer_substring (make_number (wordstart), make_number (wordend));
+
+ /* Now sym is the abbrev symbol. */
+ Vlast_abbrev = sym;
+ value = sym;
+ last_abbrev_point = wordstart;
+
+ if (INTEGERP (XSYMBOL (sym)->plist))
+ XSETINT (XSYMBOL (sym)->plist,
+ XINT (XSYMBOL (sym)->plist) + 1); /* Increment use count */
+
+ /* If this abbrev has an expansion, delete the abbrev
+ and insert the expansion. */
+ expansion = XSYMBOL (sym)->value;
+ if (STRINGP (expansion))
+ {
+ SET_PT (wordstart);
+
+ del_range_both (wordstart, wordstart_byte, wordend, wordend_byte, 1);
+
+ insert_from_string (expansion, 0, 0, XSTRING (expansion)->size,
+ STRING_BYTES (XSTRING (expansion)), 1);
+ SET_PT (PT + whitecnt);
+
+ if (uccount && !lccount)
+ {
+ /* Abbrev was all caps */
+ /* If expansion is multiple words, normally capitalize each word */
+ /* This used to be if (!... && ... >= ...) Fcapitalize; else Fupcase
+ but Megatest 68000 compiler can't handle that */
+ if (!abbrev_all_caps)
+ if (scan_words (PT, -1) > scan_words (wordstart, 1))
+ {
+ Fupcase_initials_region (make_number (wordstart),
+ make_number (PT));
+ goto caped;
+ }
+ /* If expansion is one word, or if user says so, upcase it all. */
+ Fupcase_region (make_number (wordstart), make_number (PT));
+ caped: ;
+ }
+ else if (uccount)
+ {
+ /* Abbrev included some caps. Cap first initial of expansion */
+ int pos = wordstart_byte;
+
+ /* Find the initial. */
+ while (pos < PT_BYTE
+ && SYNTAX (*BUF_BYTE_ADDRESS (current_buffer, pos)) != Sword)
+ pos++;
+
+ /* Change just that. */
+ pos = BYTE_TO_CHAR (pos);
+ Fupcase_initials_region (make_number (pos), make_number (pos + 1));
+ }
+ }
+
+ hook = XSYMBOL (sym)->function;
+ if (!NILP (hook))
+ {
+ Lisp_Object expanded, prop;
+
+ /* If the abbrev has a hook function, run it. */
+ expanded = call0 (hook);
+
+ /* In addition, if the hook function is a symbol with a a
+ non-nil `no-self-insert' property, let the value it returned
+ specify whether we consider that an expansion took place. If
+ it returns nil, no expansion has been done. */
+
+ if (SYMBOLP (hook)
+ && NILP (expanded)
+ && (prop = Fget (hook, intern ("no-self-insert")),
+ !NILP (prop)))
+ value = Qnil;
+ }
+
+ return value;
+}
+
+DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexpand_abbrev, 0, 0, "",
+ "Undo the expansion of the last abbrev that expanded.\n\
+This differs from ordinary undo in that other editing done since then\n\
+is not undone.")
+ ()
+{
+ int opoint = PT;
+ int adjust = 0;
+ if (last_abbrev_point < BEGV
+ || last_abbrev_point > ZV)
+ return Qnil;
+ SET_PT (last_abbrev_point);
+ if (STRINGP (Vlast_abbrev_text))
+ {
+ /* This isn't correct if Vlast_abbrev->function was used
+ to do the expansion */
+ Lisp_Object val;
+ int zv_before;
+
+ val = XSYMBOL (Vlast_abbrev)->value;
+ if (!STRINGP (val))
+ error ("value of abbrev-symbol must be a string");
+ zv_before = ZV;
+ del_range_byte (PT_BYTE, PT_BYTE + STRING_BYTES (XSTRING (val)), 1);
+ /* Don't inherit properties here; just copy from old contents. */
+ insert_from_string (Vlast_abbrev_text, 0, 0,
+ XSTRING (Vlast_abbrev_text)->size,
+ STRING_BYTES (XSTRING (Vlast_abbrev_text)), 0);
+ Vlast_abbrev_text = Qnil;
+ /* Total number of characters deleted. */
+ adjust = ZV - zv_before;
+ }
+ SET_PT (last_abbrev_point < opoint ? opoint + adjust : opoint);
+ return Qnil;
+}
+
+static void
+write_abbrev (sym, stream)
+ Lisp_Object sym, stream;
+{
+ Lisp_Object name;
+ if (NILP (XSYMBOL (sym)->value))
+ return;
+ insert (" (", 5);
+ XSETSTRING (name, XSYMBOL (sym)->name);
+ Fprin1 (name, stream);
+ insert (" ", 1);
+ Fprin1 (XSYMBOL (sym)->value, stream);
+ insert (" ", 1);
+ Fprin1 (XSYMBOL (sym)->function, stream);
+ insert (" ", 1);
+ Fprin1 (XSYMBOL (sym)->plist, stream);
+ insert (")\n", 2);
+}
+
+static void
+describe_abbrev (sym, stream)
+ Lisp_Object sym, stream;
+{
+ Lisp_Object one;
+
+ if (NILP (XSYMBOL (sym)->value))
+ return;
+ one = make_number (1);
+ Fprin1 (Fsymbol_name (sym), stream);
+ Findent_to (make_number (15), one);
+ Fprin1 (XSYMBOL (sym)->plist, stream);
+ Findent_to (make_number (20), one);
+ Fprin1 (XSYMBOL (sym)->value, stream);
+ if (!NILP (XSYMBOL (sym)->function))
+ {
+ Findent_to (make_number (45), one);
+ Fprin1 (XSYMBOL (sym)->function, stream);
+ }
+ Fterpri (stream);
+}
+
+DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,
+ Sinsert_abbrev_table_description, 1, 2, 0,
+ "Insert before point a full description of abbrev table named NAME.\n\
+NAME is a symbol whose value is an abbrev table.\n\
+If optional 2nd arg READABLE is non-nil, a human-readable description\n\
+is inserted. Otherwise the description is an expression,\n\
+a call to `define-abbrev-table', which would\n\
+define the abbrev table NAME exactly as it is currently defined.")
+ (name, readable)
+ Lisp_Object name, readable;
+{
+ Lisp_Object table;
+ Lisp_Object stream;
+
+ CHECK_SYMBOL (name, 0);
+ table = Fsymbol_value (name);
+ CHECK_VECTOR (table, 0);
+
+ XSETBUFFER (stream, current_buffer);
+
+ if (!NILP (readable))
+ {
+ insert_string ("(");
+ Fprin1 (name, stream);
+ insert_string (")\n\n");
+ map_obarray (table, describe_abbrev, stream);
+ insert_string ("\n\n");
+ }
+ else
+ {
+ insert_string ("(define-abbrev-table '");
+ Fprin1 (name, stream);
+ insert_string (" '(\n");
+ map_obarray (table, write_abbrev, stream);
+ insert_string (" ))\n\n");
+ }
+
+ return Qnil;
+}
+
+DEFUN ("define-abbrev-table", Fdefine_abbrev_table, Sdefine_abbrev_table,
+ 2, 2, 0,
+ "Define TABLENAME (a symbol) as an abbrev table name.\n\
+Define abbrevs in it according to DEFINITIONS, which is a list of elements\n\
+of the form (ABBREVNAME EXPANSION HOOK USECOUNT).")
+ (tablename, definitions)
+ Lisp_Object tablename, definitions;
+{
+ Lisp_Object name, exp, hook, count;
+ Lisp_Object table, elt;
+
+ CHECK_SYMBOL (tablename, 0);
+ table = Fboundp (tablename);
+ if (NILP (table) || (table = Fsymbol_value (tablename), NILP (table)))
+ {
+ table = Fmake_abbrev_table ();
+ Fset (tablename, table);
+ Vabbrev_table_name_list = Fcons (tablename, Vabbrev_table_name_list);
+ }
+ CHECK_VECTOR (table, 0);
+
+ for (; !NILP (definitions); definitions = Fcdr (definitions))
+ {
+ elt = Fcar (definitions);
+ name = Fcar (elt); elt = Fcdr (elt);
+ exp = Fcar (elt); elt = Fcdr (elt);
+ hook = Fcar (elt); elt = Fcdr (elt);
+ count = Fcar (elt);
+ Fdefine_abbrev (table, name, exp, hook, count);
+ }
+ return Qnil;
+}
+
+void
+syms_of_abbrev ()
+{
+ DEFVAR_LISP ("abbrev-table-name-list", &Vabbrev_table_name_list,
+ "List of symbols whose values are abbrev tables.");
+ Vabbrev_table_name_list = Fcons (intern ("fundamental-mode-abbrev-table"),
+ Fcons (intern ("global-abbrev-table"),
+ Qnil));
+
+ DEFVAR_LISP ("global-abbrev-table", &Vglobal_abbrev_table,
+ "The abbrev table whose abbrevs affect all buffers.\n\
+Each buffer may also have a local abbrev table.\n\
+If it does, the local table overrides the global one\n\
+for any particular abbrev defined in both.");
+ Vglobal_abbrev_table = Fmake_abbrev_table ();
+
+ DEFVAR_LISP ("fundamental-mode-abbrev-table",
&Vfundamental_mode_abbrev_table,
+ "The abbrev table of mode-specific abbrevs for Fundamental Mode.");
+ Vfundamental_mode_abbrev_table = Fmake_abbrev_table ();
+ current_buffer->abbrev_table = Vfundamental_mode_abbrev_table;
+ buffer_defaults.abbrev_table = Vfundamental_mode_abbrev_table;
+
+ DEFVAR_LISP ("last-abbrev", &Vlast_abbrev,
+ "The abbrev-symbol of the last abbrev expanded. See `abbrev-symbol'.");
+
+ DEFVAR_LISP ("last-abbrev-text", &Vlast_abbrev_text,
+ "The exact text of the last abbrev expanded.\n\
+nil if the abbrev has already been unexpanded.");
+
+ DEFVAR_INT ("last-abbrev-location", &last_abbrev_point,
+ "The location of the start of the last abbrev expanded.");
+
+ Vlast_abbrev = Qnil;
+ Vlast_abbrev_text = Qnil;
+ last_abbrev_point = 0;
+
+ DEFVAR_LISP ("abbrev-start-location", &Vabbrev_start_location,
+ "Buffer position for `expand-abbrev' to use as the start of the abbrev.\n\
+nil means use the word before point as the abbrev.\n\
+Calling `expand-abbrev' sets this to nil.");
+ Vabbrev_start_location = Qnil;
+
+ DEFVAR_LISP ("abbrev-start-location-buffer", &Vabbrev_start_location_buffer,
+ "Buffer that `abbrev-start-location' has been set for.\n\
+Trying to expand an abbrev in any other buffer clears
`abbrev-start-location'.");
+ Vabbrev_start_location_buffer = Qnil;
+
+ DEFVAR_PER_BUFFER ("local-abbrev-table", ¤t_buffer->abbrev_table, Qnil,
+ "Local (mode-specific) abbrev table of current buffer.");
+
+ DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed,
+ "Set non-nil by defining or altering any word abbrevs.\n\
+This causes `save-some-buffers' to offer to save the abbrevs.");
+ abbrevs_changed = 0;
+
+ DEFVAR_BOOL ("abbrev-all-caps", &abbrev_all_caps,
+ "*Set non-nil means expand multi-word abbrevs all caps if abbrev was so.");
+ abbrev_all_caps = 0;
+
+ DEFVAR_LISP ("pre-abbrev-expand-hook", &Vpre_abbrev_expand_hook,
+ "Function or functions to be called before abbrev expansion is done.\n\
+This is the first thing that `expand-abbrev' does, and so this may change\n\
+the current abbrev table before abbrev lookup happens.");
+ Vpre_abbrev_expand_hook = Qnil;
+ Qpre_abbrev_expand_hook = intern ("pre-abbrev-expand-hook");
+ staticpro (&Qpre_abbrev_expand_hook);
+
+ defsubr (&Smake_abbrev_table);
+ defsubr (&Sclear_abbrev_table);
+ defsubr (&Sdefine_abbrev);
+ defsubr (&Sdefine_global_abbrev);
+ defsubr (&Sdefine_mode_abbrev);
+ defsubr (&Sabbrev_expansion);
+ defsubr (&Sabbrev_symbol);
+ defsubr (&Sexpand_abbrev);
+ defsubr (&Sunexpand_abbrev);
+ defsubr (&Sinsert_abbrev_table_description);
+ defsubr (&Sdefine_abbrev_table);
+}
diff --git a/test/etags/c-src/c.c b/test/etags/c-src/c.c
new file mode 100644
index 0000000..77c8929
--- /dev/null
+++ b/test/etags/c-src/c.c
@@ -0,0 +1,169 @@
+T f(){if(x){}
+}T i;
+
+// The next two functions must be kept together
+void bar() {while(0) {}}
+int foobar() {;}
+
+struct interface *
+interface_locate(void)
+{ return 0; }
+
+#line 123 "c.c"
+// 7.4: string literal in #line directive shall be a character string
+// literal.
+//E t_6_062.cpp(21): warning: ill formed #line directive: 123 L"wide"
+#line 123 L"wide.c"
+#line 123 L"wide.c"
+#line 123L"wide.c"
+
+
+void (*fa) (void);
+void (__attribute__((noreturn)) *fb) (void);
+
+extern int
+my_printf (void *my_object, const char *my_format, ...)
+ __attribute__ ((format (printf, 2, 3)));
+
+void fatala () __attribute__ ((noreturn));
+void fatalb ();
+
+max (int a, int b)
+{ if (a > b) return a; else return b; }
+struct bar {
+ char z;
+ struct foo f;
+};
+__attribute__ ((always_inline)) max (int a, int b)
+{ if (a > b) return a; else return b }
+extern int old_var __attribute__ ((deprecated));
+struct foo
+{
+ char a;
+ int x[2] __attribute__ ((packed));
+};
+char stack[10000] __attribute__ ((section ("STACK"))) = { 0 };
+struct S { short f[3]; } __attribute__ ((aligned (8)));
+typedef union
+{
+ int *__ip;
+ union wait *__up;
+} wait_status_ptr_t __attribute__ ((__transparent_union__));
+Some_Class A __attribute__ ((init_priority (2000)));
+typedef T1 T3 __attribute__ ((deprecated));
+T3 z __attribute__ ((deprecated));
+typedef int more_aligned_int __attribute__ ((aligned (8)));
+struct S __attribute__ ((vector_size (16))) foo;
+int foo __attribute__ ((vector_size (16)));
+char *__attribute__((aligned(8))) *f;
+int i __attribute__ ((visibility ("hidden")));
+extern void foobar (void) __attribute__ ((section ("bar")));
+
+typedef struct cacheLRUEntry_s
+{
+ U16 next;
+ U16 prev;
+}
+__attribute__ ((packed)) cacheLRUEntry_t;
+struct foo {
+ int x;
+ char a, b, c, d;
+} __attribute__((packed));
+void __attribute__ ((visibility ("protected")))
+ f1 () { /* Do something. */; }
+void f2 () { /* Do something. */; }
+__attribute__((noreturn)) void d0 (void),
+ __attribute__((format(printf, 1, 2))) d1 (const char *, ...),
+ d2 (void);
+int x __attribute__ ((aligned (16))) = 0;
+struct foo { int x[2] __attribute__ ((aligned (8))); };
+short array[3] __attribute__ ((aligned));
+
+asm(" section 10");
+int f
+ () {}
+
+DEAFUN ("expand-file-name", Fexpand_file_name, Sexpand_file_name, 1, 2, 0,
+ "name.")
+ (name, defalt)
+ Lisp_Object name, defalt;
+{
+ unsigned char *nm;
+}
+XDEFUN ("x-get-selection-internal", Fx_get_selection_internal,
+ Sx_get_selection_internal, 2, 2, 0, "")
+{}
+DEFUN ("x-get-selection-internal", Fx_get_selection_internal,
+ Sx_get_selection_internal, 2, 2, 0, "")
+{}
+/* The next two are not tagged correctly. To prevent this, the code in
+ Emacs should contain the two first args of DEFUN on the same line. */
+DEFUN ("x-get-selection-internal",
+ Fx_get_selection_internal, Sx_get_selection_internal, 2, 2, 0, "")
+{}
+DEFUN
+ ("y-get-selection-internal",
+ Fy_get_selection_internal, Sy_get_selection_internal, 2, 2, 0, "")
+{}
+defun_func1()
+{}
+DEFUN_func2()
+{}
+typedef int bool;
+bool funcboo ()
+{}
+static void (*lang_func) () = NULL;
+struct my_struct {
+};
+typedef struct my_struct my_typedef;
+int bla ()
+{
+ PrkList ExistingOperations =
+ ProcedureOperationSelections(PrkNull, CalledFromDomain);
+}
+a()
+ b c;
+{}
+int func1
+ (a,b,c,d) {};
+static struct cca_control init_control = { 0 };
+static tpcmd rbtp [RB_TPSZ];
+static byte ring1 [(RBUFNO + 1) + 8];
+static byte ring2 [(RBUFNO + 1) * sizeof (struct le_md) + 8];
+request request (a, b)
+{
+}
+int func2 (a,b
+ c,d) {};
+int wrongfunc
+ aaa;
+struct wrongstruct
+ bbb;
+struct sss1 {};
+struct sss2
+{
+ struct ss3
+ {
+ };
+};
+struct a b;
+struct aa *b;
+struct aaa
+ **b;
+caccacacca (a,b,c,d,e,f,g)
+ struct aa *b;
+{
+}
+a ()
+{
+ typedef struct aa {} aaa;
+}
+static void inita () {}
+node *lasta = NULL;
+b ()
+{
+ typedef int bb;
+}
+static void initb () {}
+node *lastb = NULL;
+typedef enum { REG_ENOSYS = -1, aa } reg_errcode_t;
diff --git a/test/etags/c-src/dostorture.c b/test/etags/c-src/dostorture.c
new file mode 100644
index 0000000..5190734
--- /dev/null
+++ b/test/etags/c-src/dostorture.c
@@ -0,0 +1,107 @@
+/* Date: Thu, 05 Aug 1993 20:28:03 +0200
+ From: "Tom R.Hageman" <address@hidden>
+ Subject: more etags torture;-) [etags 7.3 patch#3]
+ To: address@hidden
+
+ Hi,
+
+ This test file illustrates some more problems with etags (7.3):
+
+
+ 1. parentheses are confusing,
+ 2. preprocessor directives can disrupt other state machines. */
+
+/* A small torture test for etags. */
+
+/* The classic parenthesis nightmare, based on signal(). */
+void
+(*tag1 (sig, handler)) ()
+ int sig;
+ void (*handler) ();
+{
+ (*handler)(sig);
+ return handler;
+}
+
+#define notag2 void
+/* The classic, with user-defined return type. */
+notag2
+(*tag2 (sig, handler)) ()
+ int sig;
+ void (*handler) ();
+{
+ (*handler)(sig);
+ return handler;
+}
+
+/* The classic, in ANSI C style. */
+void
+(*tag3 (int sig, void (*handler) (int))) (int)
+{
+ (*handler)(sig);
+ return handler;
+}
+
+#define notag4 void
+/* The classic, with user-defined return type, in ANSI C style. */
+notag4
+(*tag4 (int sig, void (*handler) (int))) (int)
+{
+ (*handler)(sig);
+ return handler;
+}
+
+
+/* A less tortuous example. */
+void
+tag5 (handler, arg)
+void (*handler)();
+void *arg;
+{
+ (*handler)(arg);
+}
+
+/* A less tortuous example, in ANSI C style. */
+void
+tag6 (void (*handler) (void *), void *arg)
+{
+ (*handler)(arg);
+}
+
+
+/* Interfering preprocessing torture */
+
+int pp1(
+#if (__STDC__)
+ int
+#endif
+ bar)
+#if (!__STDC__)
+ int bar;
+#endif
+{
+ return bar;
+}
+
+int
+pp2
+#if __STDC__
+ (int bar)
+#else
+ (bar)
+ int bar;
+#endif
+{
+ return bar;
+}
+
+int
+#if __STDC__
+pp3(int bar)
+#else
+pp3(bar)
+ int bar;
+#endif
+{
+ return bar;
+}
diff --git a/test/etags/c-src/emacs/src/gmalloc.c
b/test/etags/c-src/emacs/src/gmalloc.c
new file mode 100644
index 0000000..a88f4ab
--- /dev/null
+++ b/test/etags/c-src/emacs/src/gmalloc.c
@@ -0,0 +1,2040 @@
+/* Declarations for `malloc' and friends.
+ Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2015 Free
+ Software Foundation, Inc.
+ Written May 1989 by Mike Haertel.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+ The author may be reached (Email) at the address address@hidden,
+ or (US mail) as Mike Haertel c/o Free Software Foundation. */
+
+#include <config.h>
+
+#if defined HAVE_PTHREAD && !defined HYBRID_MALLOC
+#define USE_PTHREAD
+#endif
+
+#include <string.h>
+#include <limits.h>
+#include <stdint.h>
+
+#ifdef HYBRID_GET_CURRENT_DIR_NAME
+#undef get_current_dir_name
+#endif
+
+#include <unistd.h>
+
+#ifdef USE_PTHREAD
+#include <pthread.h>
+#endif
+
+#ifdef WINDOWSNT
+#include <w32heap.h> /* for sbrk */
+#endif
+
+#ifdef emacs
+extern void emacs_abort (void);
+#endif
+
+/* If HYBRID_MALLOC is defined, then temacs will use malloc,
+ realloc... as defined in this file (and renamed gmalloc,
+ grealloc... via the macros that follow). The dumped emacs,
+ however, will use the system malloc, realloc.... In other source
+ files, malloc, realloc... are renamed hybrid_malloc,
+ hybrid_realloc... via macros in conf_post.h. hybrid_malloc and
+ friends are wrapper functions defined later in this file.
+ aligned_alloc is defined as a macro only in alloc.c.
+
+ As of this writing (August 2014), Cygwin is the only platform on
+ which HYBRID_MACRO is defined. Any other platform that wants to
+ define it will have to define the macros DUMPED and
+ ALLOCATED_BEFORE_DUMPING, defined below for Cygwin. */
+#ifdef HYBRID_MALLOC
+#undef malloc
+#undef realloc
+#undef calloc
+#undef free
+#define malloc gmalloc
+#define realloc grealloc
+#define calloc gcalloc
+#define aligned_alloc galigned_alloc
+#define free gfree
+#endif /* HYBRID_MALLOC */
+
+#ifdef CYGWIN
+extern void *bss_sbrk (ptrdiff_t size);
+extern int bss_sbrk_did_unexec;
+extern char bss_sbrk_buffer[];
+extern void *bss_sbrk_buffer_end;
+#define DUMPED bss_sbrk_did_unexec
+#define ALLOCATED_BEFORE_DUMPING(P) \
+ ((P) < bss_sbrk_buffer_end && (P) >= (void *) bss_sbrk_buffer)
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include <stddef.h>
+
+
+/* Allocate SIZE bytes of memory. */
+extern void *malloc (size_t size) ATTRIBUTE_MALLOC_SIZE ((1));
+/* Re-allocate the previously allocated block
+ in ptr, making the new block SIZE bytes long. */
+extern void *realloc (void *ptr, size_t size) ATTRIBUTE_ALLOC_SIZE ((2));
+/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
+extern void *calloc (size_t nmemb, size_t size) ATTRIBUTE_MALLOC_SIZE ((1,2));
+/* Free a block allocated by `malloc', `realloc' or `calloc'. */
+extern void free (void *ptr);
+
+/* Allocate SIZE bytes allocated to ALIGNMENT bytes. */
+#ifdef MSDOS
+extern void *aligned_alloc (size_t, size_t);
+extern void *memalign (size_t, size_t);
+extern int posix_memalign (void **, size_t, size_t);
+#endif
+
+#ifdef USE_PTHREAD
+/* Set up mutexes and make malloc etc. thread-safe. */
+extern void malloc_enable_thread (void);
+#endif
+
+#ifdef emacs
+extern void emacs_abort (void);
+#endif
+
+/* The allocator divides the heap into blocks of fixed size; large
+ requests receive one or more whole blocks, and small requests
+ receive a fragment of a block. Fragment sizes are powers of two,
+ and all fragments of a block are the same size. When all the
+ fragments in a block have been freed, the block itself is freed. */
+#define INT_BIT (CHAR_BIT * sizeof (int))
+#define BLOCKLOG (INT_BIT > 16 ? 12 : 9)
+#define BLOCKSIZE (1 << BLOCKLOG)
+#define BLOCKIFY(SIZE) (((SIZE) + BLOCKSIZE - 1) / BLOCKSIZE)
+
+/* Determine the amount of memory spanned by the initial heap table
+ (not an absolute limit). */
+#define HEAP (INT_BIT > 16 ? 4194304 : 65536)
+
+/* Number of contiguous free blocks allowed to build up at the end of
+ memory before they will be returned to the system. */
+#define FINAL_FREE_BLOCKS 8
+
+/* Data structure giving per-block information. */
+typedef union
+ {
+ /* Heap information for a busy block. */
+ struct
+ {
+ /* Zero for a large (multiblock) object, or positive giving the
+ logarithm to the base two of the fragment size. */
+ int type;
+ union
+ {
+ struct
+ {
+ size_t nfree; /* Free frags in a fragmented block. */
+ size_t first; /* First free fragment of the block. */
+ } frag;
+ /* For a large object, in its first block, this has the number
+ of blocks in the object. In the other blocks, this has a
+ negative number which says how far back the first block is. */
+ ptrdiff_t size;
+ } info;
+ } busy;
+ /* Heap information for a free block
+ (that may be the first of a free cluster). */
+ struct
+ {
+ size_t size; /* Size (in blocks) of a free cluster. */
+ size_t next; /* Index of next free cluster. */
+ size_t prev; /* Index of previous free cluster. */
+ } free;
+ } malloc_info;
+
+/* Pointer to first block of the heap. */
+extern char *_heapbase;
+
+/* Table indexed by block number giving per-block information. */
+extern malloc_info *_heapinfo;
+
+/* Address to block number and vice versa. */
+#define BLOCK(A) (((char *) (A) - _heapbase) / BLOCKSIZE + 1)
+#define ADDRESS(B) ((void *) (((B) - 1) * BLOCKSIZE + _heapbase))
+
+/* Current search index for the heap table. */
+extern size_t _heapindex;
+
+/* Limit of valid info table indices. */
+extern size_t _heaplimit;
+
+/* Doubly linked lists of free fragments. */
+struct list
+ {
+ struct list *next;
+ struct list *prev;
+ };
+
+/* Free list headers for each fragment size. */
+extern struct list _fraghead[];
+
+/* List of blocks allocated with aligned_alloc and friends. */
+struct alignlist
+ {
+ struct alignlist *next;
+ void *aligned; /* The address that aligned_alloc returned. */
+ void *exact; /* The address that malloc returned. */
+ };
+extern struct alignlist *_aligned_blocks;
+
+/* Instrumentation. */
+extern size_t _chunks_used;
+extern size_t _bytes_used;
+extern size_t _chunks_free;
+extern size_t _bytes_free;
+
+/* Internal versions of `malloc', `realloc', and `free'
+ used when these functions need to call each other.
+ They are the same but don't call the hooks. */
+extern void *_malloc_internal (size_t);
+extern void *_realloc_internal (void *, size_t);
+extern void _free_internal (void *);
+extern void *_malloc_internal_nolock (size_t);
+extern void *_realloc_internal_nolock (void *, size_t);
+extern void _free_internal_nolock (void *);
+
+#ifdef USE_PTHREAD
+extern pthread_mutex_t _malloc_mutex, _aligned_blocks_mutex;
+extern int _malloc_thread_enabled_p;
+#define LOCK() \
+ do { \
+ if (_malloc_thread_enabled_p) \
+ pthread_mutex_lock (&_malloc_mutex); \
+ } while (0)
+#define UNLOCK() \
+ do { \
+ if (_malloc_thread_enabled_p) \
+ pthread_mutex_unlock (&_malloc_mutex); \
+ } while (0)
+#define LOCK_ALIGNED_BLOCKS() \
+ do { \
+ if (_malloc_thread_enabled_p) \
+ pthread_mutex_lock (&_aligned_blocks_mutex); \
+ } while (0)
+#define UNLOCK_ALIGNED_BLOCKS() \
+ do { \
+ if (_malloc_thread_enabled_p) \
+ pthread_mutex_unlock (&_aligned_blocks_mutex); \
+ } while (0)
+#else
+#define LOCK()
+#define UNLOCK()
+#define LOCK_ALIGNED_BLOCKS()
+#define UNLOCK_ALIGNED_BLOCKS()
+#endif
+
+/* Given an address in the middle of a malloc'd object,
+ return the address of the beginning of the object. */
+extern void *malloc_find_object_address (void *ptr);
+
+/* Underlying allocation function; successive calls should
+ return contiguous pieces of memory. */
+extern void *(*__morecore) (ptrdiff_t size);
+
+/* Default value of `__morecore'. */
+extern void *__default_morecore (ptrdiff_t size);
+
+/* If not NULL, this function is called after each time
+ `__morecore' is called to increase the data size. */
+extern void (*__after_morecore_hook) (void);
+
+/* Number of extra blocks to get each time we ask for more core.
+ This reduces the frequency of calling `(*__morecore)'. */
+extern size_t __malloc_extra_blocks;
+
+/* Nonzero if `malloc' has been called and done its initialization. */
+extern int __malloc_initialized;
+/* Function called to initialize malloc data structures. */
+extern int __malloc_initialize (void);
+
+/* Hooks for debugging versions. */
+extern void (*__malloc_initialize_hook) (void);
+extern void (*__free_hook) (void *ptr);
+extern void *(*__malloc_hook) (size_t size);
+extern void *(*__realloc_hook) (void *ptr, size_t size);
+extern void *(*__memalign_hook) (size_t size, size_t alignment);
+
+/* Return values for `mprobe': these are the kinds of inconsistencies that
+ `mcheck' enables detection of. */
+enum mcheck_status
+ {
+ MCHECK_DISABLED = -1, /* Consistency checking is not turned on. */
+ MCHECK_OK, /* Block is fine. */
+ MCHECK_FREE, /* Block freed twice. */
+ MCHECK_HEAD, /* Memory before the block was clobbered. */
+ MCHECK_TAIL /* Memory after the block was
clobbered. */
+ };
+
+/* Activate a standard collection of debugging hooks. This must be called
+ before `malloc' is ever called. ABORTFUNC is called with an error code
+ (see enum above) when an inconsistency is detected. If ABORTFUNC is
+ null, the standard function prints on stderr and then calls `abort'. */
+extern int mcheck (void (*abortfunc) (enum mcheck_status));
+
+/* Check for aberrations in a particular malloc'd block. You must have
+ called `mcheck' already. These are the same checks that `mcheck' does
+ when you free or reallocate a block. */
+extern enum mcheck_status mprobe (void *ptr);
+
+/* Activate a standard collection of tracing hooks. */
+extern void mtrace (void);
+extern void muntrace (void);
+
+/* Statistics available to the user. */
+struct mstats
+ {
+ size_t bytes_total; /* Total size of the heap. */
+ size_t chunks_used; /* Chunks allocated by the user. */
+ size_t bytes_used; /* Byte total of user-allocated chunks. */
+ size_t chunks_free; /* Chunks in the free list. */
+ size_t bytes_free; /* Byte total of chunks in the free list. */
+ };
+
+/* Pick up the current statistics. */
+extern struct mstats mstats (void);
+
+/* Call WARNFUN with a warning message when memory usage is high. */
+extern void memory_warnings (void *start, void (*warnfun) (const char *));
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Memory allocator `malloc'.
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+ Written May 1989 by Mike Haertel.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+ The author may be reached (Email) at the address address@hidden,
+ or (US mail) as Mike Haertel c/o Free Software Foundation. */
+
+#include <errno.h>
+
+void *(*__morecore) (ptrdiff_t size) = __default_morecore;
+
+/* Debugging hook for `malloc'. */
+void *(*__malloc_hook) (size_t size);
+
+/* Pointer to the base of the first block. */
+char *_heapbase;
+
+/* Block information table. Allocated with align/__free (not malloc/free). */
+malloc_info *_heapinfo;
+
+/* Number of info entries. */
+static size_t heapsize;
+
+/* Search index in the info table. */
+size_t _heapindex;
+
+/* Limit of valid info table indices. */
+size_t _heaplimit;
+
+/* Free lists for each fragment size. */
+struct list _fraghead[BLOCKLOG];
+
+/* Instrumentation. */
+size_t _chunks_used;
+size_t _bytes_used;
+size_t _chunks_free;
+size_t _bytes_free;
+
+/* Are you experienced? */
+int __malloc_initialized;
+
+size_t __malloc_extra_blocks;
+
+void (*__malloc_initialize_hook) (void);
+void (*__after_morecore_hook) (void);
+
+#if defined GC_MALLOC_CHECK && defined GC_PROTECT_MALLOC_STATE
+
+/* Some code for hunting a bug writing into _heapinfo.
+
+ Call this macro with argument PROT non-zero to protect internal
+ malloc state against writing to it, call it with a zero argument to
+ make it readable and writable.
+
+ Note that this only works if BLOCKSIZE == page size, which is
+ the case on the i386. */
+
+#include <sys/types.h>
+#include <sys/mman.h>
+
+static int state_protected_p;
+static size_t last_state_size;
+static malloc_info *last_heapinfo;
+
+void
+protect_malloc_state (int protect_p)
+{
+ /* If _heapinfo has been relocated, make sure its old location
+ isn't left read-only; it will be reused by malloc. */
+ if (_heapinfo != last_heapinfo
+ && last_heapinfo
+ && state_protected_p)
+ mprotect (last_heapinfo, last_state_size, PROT_READ | PROT_WRITE);
+
+ last_state_size = _heaplimit * sizeof *_heapinfo;
+ last_heapinfo = _heapinfo;
+
+ if (protect_p != state_protected_p)
+ {
+ state_protected_p = protect_p;
+ if (mprotect (_heapinfo, last_state_size,
+ protect_p ? PROT_READ : PROT_READ | PROT_WRITE) != 0)
+ abort ();
+ }
+}
+
+#define PROTECT_MALLOC_STATE(PROT) protect_malloc_state (PROT)
+
+#else
+#define PROTECT_MALLOC_STATE(PROT) /* empty */
+#endif
+
+
+/* Aligned allocation. */
+static void *
+align (size_t size)
+{
+ void *result;
+ ptrdiff_t adj;
+
+ /* align accepts an unsigned argument, but __morecore accepts a
+ signed one. This could lead to trouble if SIZE overflows the
+ ptrdiff_t type accepted by __morecore. We just punt in that
+ case, since they are requesting a ludicrous amount anyway. */
+ if (PTRDIFF_MAX < size)
+ result = 0;
+ else
+ result = (*__morecore) (size);
+ adj = (uintptr_t) result % BLOCKSIZE;
+ if (adj != 0)
+ {
+ adj = BLOCKSIZE - adj;
+ (*__morecore) (adj);
+ result = (char *) result + adj;
+ }
+
+ if (__after_morecore_hook)
+ (*__after_morecore_hook) ();
+
+ return result;
+}
+
+/* Get SIZE bytes, if we can get them starting at END.
+ Return the address of the space we got.
+ If we cannot get space at END, fail and return 0. */
+static void *
+get_contiguous_space (ptrdiff_t size, void *position)
+{
+ void *before;
+ void *after;
+
+ before = (*__morecore) (0);
+ /* If we can tell in advance that the break is at the wrong place,
+ fail now. */
+ if (before != position)
+ return 0;
+
+ /* Allocate SIZE bytes and get the address of them. */
+ after = (*__morecore) (size);
+ if (!after)
+ return 0;
+
+ /* It was not contiguous--reject it. */
+ if (after != position)
+ {
+ (*__morecore) (- size);
+ return 0;
+ }
+
+ return after;
+}
+
+
+/* This is called when `_heapinfo' and `heapsize' have just
+ been set to describe a new info table. Set up the table
+ to describe itself and account for it in the statistics. */
+static void
+register_heapinfo (void)
+{
+ size_t block, blocks;
+
+ block = BLOCK (_heapinfo);
+ blocks = BLOCKIFY (heapsize * sizeof (malloc_info));
+
+ /* Account for the _heapinfo block itself in the statistics. */
+ _bytes_used += blocks * BLOCKSIZE;
+ ++_chunks_used;
+
+ /* Describe the heapinfo block itself in the heapinfo. */
+ _heapinfo[block].busy.type = 0;
+ _heapinfo[block].busy.info.size = blocks;
+ /* Leave back-pointers for malloc_find_address. */
+ while (--blocks > 0)
+ _heapinfo[block + blocks].busy.info.size = -blocks;
+}
+
+#ifdef USE_PTHREAD
+pthread_mutex_t _malloc_mutex = PTHREAD_MUTEX_INITIALIZER;
+pthread_mutex_t _aligned_blocks_mutex = PTHREAD_MUTEX_INITIALIZER;
+int _malloc_thread_enabled_p;
+
+static void
+malloc_atfork_handler_prepare (void)
+{
+ LOCK ();
+ LOCK_ALIGNED_BLOCKS ();
+}
+
+static void
+malloc_atfork_handler_parent (void)
+{
+ UNLOCK_ALIGNED_BLOCKS ();
+ UNLOCK ();
+}
+
+static void
+malloc_atfork_handler_child (void)
+{
+ UNLOCK_ALIGNED_BLOCKS ();
+ UNLOCK ();
+}
+
+/* Set up mutexes and make malloc etc. thread-safe. */
+void
+malloc_enable_thread (void)
+{
+ if (_malloc_thread_enabled_p)
+ return;
+
+ /* Some pthread implementations call malloc for statically
+ initialized mutexes when they are used first. To avoid such a
+ situation, we initialize mutexes here while their use is
+ disabled in malloc etc. */
+ pthread_mutex_init (&_malloc_mutex, NULL);
+ pthread_mutex_init (&_aligned_blocks_mutex, NULL);
+ pthread_atfork (malloc_atfork_handler_prepare,
+ malloc_atfork_handler_parent,
+ malloc_atfork_handler_child);
+ _malloc_thread_enabled_p = 1;
+}
+#endif /* USE_PTHREAD */
+
+static void
+malloc_initialize_1 (void)
+{
+#ifdef GC_MCHECK
+ mcheck (NULL);
+#endif
+
+ if (__malloc_initialize_hook)
+ (*__malloc_initialize_hook) ();
+
+ heapsize = HEAP / BLOCKSIZE;
+ _heapinfo = align (heapsize * sizeof (malloc_info));
+ if (_heapinfo == NULL)
+ return;
+ memset (_heapinfo, 0, heapsize * sizeof (malloc_info));
+ _heapinfo[0].free.size = 0;
+ _heapinfo[0].free.next = _heapinfo[0].free.prev = 0;
+ _heapindex = 0;
+ _heapbase = (char *) _heapinfo;
+ _heaplimit = BLOCK (_heapbase + heapsize * sizeof (malloc_info));
+
+ register_heapinfo ();
+
+ __malloc_initialized = 1;
+ PROTECT_MALLOC_STATE (1);
+ return;
+}
+
+/* Set everything up and remember that we have.
+ main will call malloc which calls this function. That is before any threads
+ or signal handlers has been set up, so we don't need thread protection. */
+int
+__malloc_initialize (void)
+{
+ if (__malloc_initialized)
+ return 0;
+
+ malloc_initialize_1 ();
+
+ return __malloc_initialized;
+}
+
+static int morecore_recursing;
+
+/* Get neatly aligned memory, initializing or
+ growing the heap info table as necessary. */
+static void *
+morecore_nolock (size_t size)
+{
+ void *result;
+ malloc_info *newinfo, *oldinfo;
+ size_t newsize;
+
+ if (morecore_recursing)
+ /* Avoid recursion. The caller will know how to handle a null return. */
+ return NULL;
+
+ result = align (size);
+ if (result == NULL)
+ return NULL;
+
+ PROTECT_MALLOC_STATE (0);
+
+ /* Check if we need to grow the info table. */
+ if ((size_t) BLOCK ((char *) result + size) > heapsize)
+ {
+ /* Calculate the new _heapinfo table size. We do not account for the
+ added blocks in the table itself, as we hope to place them in
+ existing free space, which is already covered by part of the
+ existing table. */
+ newsize = heapsize;
+ do
+ newsize *= 2;
+ while ((size_t) BLOCK ((char *) result + size) > newsize);
+
+ /* We must not reuse existing core for the new info table when called
+ from realloc in the case of growing a large block, because the
+ block being grown is momentarily marked as free. In this case
+ _heaplimit is zero so we know not to reuse space for internal
+ allocation. */
+ if (_heaplimit != 0)
+ {
+ /* First try to allocate the new info table in core we already
+ have, in the usual way using realloc. If realloc cannot
+ extend it in place or relocate it to existing sufficient core,
+ we will get called again, and the code above will notice the
+ `morecore_recursing' flag and return null. */
+ int save = errno; /* Don't want to clobber errno with ENOMEM. */
+ morecore_recursing = 1;
+ newinfo = _realloc_internal_nolock (_heapinfo,
+ newsize * sizeof (malloc_info));
+ morecore_recursing = 0;
+ if (newinfo == NULL)
+ errno = save;
+ else
+ {
+ /* We found some space in core, and realloc has put the old
+ table's blocks on the free list. Now zero the new part
+ of the table and install the new table location. */
+ memset (&newinfo[heapsize], 0,
+ (newsize - heapsize) * sizeof (malloc_info));
+ _heapinfo = newinfo;
+ heapsize = newsize;
+ goto got_heap;
+ }
+ }
+
+ /* Allocate new space for the malloc info table. */
+ while (1)
+ {
+ newinfo = align (newsize * sizeof (malloc_info));
+
+ /* Did it fail? */
+ if (newinfo == NULL)
+ {
+ (*__morecore) (-size);
+ return NULL;
+ }
+
+ /* Is it big enough to record status for its own space?
+ If so, we win. */
+ if ((size_t) BLOCK ((char *) newinfo
+ + newsize * sizeof (malloc_info))
+ < newsize)
+ break;
+
+ /* Must try again. First give back most of what we just got. */
+ (*__morecore) (- newsize * sizeof (malloc_info));
+ newsize *= 2;
+ }
+
+ /* Copy the old table to the beginning of the new,
+ and zero the rest of the new table. */
+ memcpy (newinfo, _heapinfo, heapsize * sizeof (malloc_info));
+ memset (&newinfo[heapsize], 0,
+ (newsize - heapsize) * sizeof (malloc_info));
+ oldinfo = _heapinfo;
+ _heapinfo = newinfo;
+ heapsize = newsize;
+
+ register_heapinfo ();
+
+ /* Reset _heaplimit so _free_internal never decides
+ it can relocate or resize the info table. */
+ _heaplimit = 0;
+ _free_internal_nolock (oldinfo);
+ PROTECT_MALLOC_STATE (0);
+
+ /* The new heap limit includes the new table just allocated. */
+ _heaplimit = BLOCK ((char *) newinfo + heapsize * sizeof (malloc_info));
+ return result;
+ }
+
+ got_heap:
+ _heaplimit = BLOCK ((char *) result + size);
+ return result;
+}
+
+/* Allocate memory from the heap. */
+void *
+_malloc_internal_nolock (size_t size)
+{
+ void *result;
+ size_t block, blocks, lastblocks, start;
+ register size_t i;
+ struct list *next;
+
+ /* ANSI C allows `malloc (0)' to either return NULL, or to return a
+ valid address you can realloc and free (though not dereference).
+
+ It turns out that some extant code (sunrpc, at least Ultrix's version)
+ expects `malloc (0)' to return non-NULL and breaks otherwise.
+ Be compatible. */
+
+#if 0
+ if (size == 0)
+ return NULL;
+#endif
+
+ PROTECT_MALLOC_STATE (0);
+
+ if (size < sizeof (struct list))
+ size = sizeof (struct list);
+
+ /* Determine the allocation policy based on the request size. */
+ if (size <= BLOCKSIZE / 2)
+ {
+ /* Small allocation to receive a fragment of a block.
+ Determine the logarithm to base two of the fragment size. */
+ register size_t log = 1;
+ --size;
+ while ((size /= 2) != 0)
+ ++log;
+
+ /* Look in the fragment lists for a
+ free fragment of the desired size. */
+ next = _fraghead[log].next;
+ if (next != NULL)
+ {
+ /* There are free fragments of this size.
+ Pop a fragment out of the fragment list and return it.
+ Update the block's nfree and first counters. */
+ result = next;
+ next->prev->next = next->next;
+ if (next->next != NULL)
+ next->next->prev = next->prev;
+ block = BLOCK (result);
+ if (--_heapinfo[block].busy.info.frag.nfree != 0)
+ _heapinfo[block].busy.info.frag.first =
+ (uintptr_t) next->next % BLOCKSIZE >> log;
+
+ /* Update the statistics. */
+ ++_chunks_used;
+ _bytes_used += 1 << log;
+ --_chunks_free;
+ _bytes_free -= 1 << log;
+ }
+ else
+ {
+ /* No free fragments of the desired size, so get a new block
+ and break it into fragments, returning the first. */
+#ifdef GC_MALLOC_CHECK
+ result = _malloc_internal_nolock (BLOCKSIZE);
+ PROTECT_MALLOC_STATE (0);
+#elif defined (USE_PTHREAD)
+ result = _malloc_internal_nolock (BLOCKSIZE);
+#else
+ result = malloc (BLOCKSIZE);
+#endif
+ if (result == NULL)
+ {
+ PROTECT_MALLOC_STATE (1);
+ goto out;
+ }
+
+ /* Link all fragments but the first into the free list. */
+ next = (struct list *) ((char *) result + (1 << log));
+ next->next = NULL;
+ next->prev = &_fraghead[log];
+ _fraghead[log].next = next;
+
+ for (i = 2; i < (size_t) (BLOCKSIZE >> log); ++i)
+ {
+ next = (struct list *) ((char *) result + (i << log));
+ next->next = _fraghead[log].next;
+ next->prev = &_fraghead[log];
+ next->prev->next = next;
+ next->next->prev = next;
+ }
+
+ /* Initialize the nfree and first counters for this block. */
+ block = BLOCK (result);
+ _heapinfo[block].busy.type = log;
+ _heapinfo[block].busy.info.frag.nfree = i - 1;
+ _heapinfo[block].busy.info.frag.first = i - 1;
+
+ _chunks_free += (BLOCKSIZE >> log) - 1;
+ _bytes_free += BLOCKSIZE - (1 << log);
+ _bytes_used -= BLOCKSIZE - (1 << log);
+ }
+ }
+ else
+ {
+ /* Large allocation to receive one or more blocks.
+ Search the free list in a circle starting at the last place visited.
+ If we loop completely around without finding a large enough
+ space we will have to get more memory from the system. */
+ blocks = BLOCKIFY (size);
+ start = block = _heapindex;
+ while (_heapinfo[block].free.size < blocks)
+ {
+ block = _heapinfo[block].free.next;
+ if (block == start)
+ {
+ /* Need to get more from the system. Get a little extra. */
+ size_t wantblocks = blocks + __malloc_extra_blocks;
+ block = _heapinfo[0].free.prev;
+ lastblocks = _heapinfo[block].free.size;
+ /* Check to see if the new core will be contiguous with the
+ final free block; if so we don't need to get as much. */
+ if (_heaplimit != 0 && block + lastblocks == _heaplimit &&
+ /* We can't do this if we will have to make the heap info
+ table bigger to accommodate the new space. */
+ block + wantblocks <= heapsize &&
+ get_contiguous_space ((wantblocks - lastblocks) * BLOCKSIZE,
+ ADDRESS (block + lastblocks)))
+ {
+ /* We got it contiguously. Which block we are extending
+ (the `final free block' referred to above) might have
+ changed, if it got combined with a freed info table. */
+ block = _heapinfo[0].free.prev;
+ _heapinfo[block].free.size += (wantblocks - lastblocks);
+ _bytes_free += (wantblocks - lastblocks) * BLOCKSIZE;
+ _heaplimit += wantblocks - lastblocks;
+ continue;
+ }
+ result = morecore_nolock (wantblocks * BLOCKSIZE);
+ if (result == NULL)
+ goto out;
+ block = BLOCK (result);
+ /* Put the new block at the end of the free list. */
+ _heapinfo[block].free.size = wantblocks;
+ _heapinfo[block].free.prev = _heapinfo[0].free.prev;
+ _heapinfo[block].free.next = 0;
+ _heapinfo[0].free.prev = block;
+ _heapinfo[_heapinfo[block].free.prev].free.next = block;
+ ++_chunks_free;
+ /* Now loop to use some of that block for this allocation. */
+ }
+ }
+
+ /* At this point we have found a suitable free list entry.
+ Figure out how to remove what we need from the list. */
+ result = ADDRESS (block);
+ if (_heapinfo[block].free.size > blocks)
+ {
+ /* The block we found has a bit left over,
+ so relink the tail end back into the free list. */
+ _heapinfo[block + blocks].free.size
+ = _heapinfo[block].free.size - blocks;
+ _heapinfo[block + blocks].free.next
+ = _heapinfo[block].free.next;
+ _heapinfo[block + blocks].free.prev
+ = _heapinfo[block].free.prev;
+ _heapinfo[_heapinfo[block].free.prev].free.next
+ = _heapinfo[_heapinfo[block].free.next].free.prev
+ = _heapindex = block + blocks;
+ }
+ else
+ {
+ /* The block exactly matches our requirements,
+ so just remove it from the list. */
+ _heapinfo[_heapinfo[block].free.next].free.prev
+ = _heapinfo[block].free.prev;
+ _heapinfo[_heapinfo[block].free.prev].free.next
+ = _heapindex = _heapinfo[block].free.next;
+ --_chunks_free;
+ }
+
+ _heapinfo[block].busy.type = 0;
+ _heapinfo[block].busy.info.size = blocks;
+ ++_chunks_used;
+ _bytes_used += blocks * BLOCKSIZE;
+ _bytes_free -= blocks * BLOCKSIZE;
+
+ /* Mark all the blocks of the object just allocated except for the
+ first with a negative number so you can find the first block by
+ adding that adjustment. */
+ while (--blocks > 0)
+ _heapinfo[block + blocks].busy.info.size = -blocks;
+ }
+
+ PROTECT_MALLOC_STATE (1);
+ out:
+ return result;
+}
+
+void *
+_malloc_internal (size_t size)
+{
+ void *result;
+
+ LOCK ();
+ result = _malloc_internal_nolock (size);
+ UNLOCK ();
+
+ return result;
+}
+
+void *
+malloc (size_t size)
+{
+ void *(*hook) (size_t);
+
+ if (!__malloc_initialized && !__malloc_initialize ())
+ return NULL;
+
+ /* Copy the value of __malloc_hook to an automatic variable in case
+ __malloc_hook is modified in another thread between its
+ NULL-check and the use.
+
+ Note: Strictly speaking, this is not a right solution. We should
+ use mutexes to access non-read-only variables that are shared
+ among multiple threads. We just leave it for compatibility with
+ glibc malloc (i.e., assignments to __malloc_hook) for now. */
+ hook = __malloc_hook;
+ return (hook != NULL ? *hook : _malloc_internal) (size);
+}
+
+#ifndef _LIBC
+
+/* On some ANSI C systems, some libc functions call _malloc, _free
+ and _realloc. Make them use the GNU functions. */
+
+extern void *_malloc (size_t);
+extern void _free (void *);
+extern void *_realloc (void *, size_t);
+
+void *
+_malloc (size_t size)
+{
+ return malloc (size);
+}
+
+void
+_free (void *ptr)
+{
+ free (ptr);
+}
+
+void *
+_realloc (void *ptr, size_t size)
+{
+ return realloc (ptr, size);
+}
+
+#endif
+/* Free a block of memory allocated by `malloc'.
+ Copyright 1990, 1991, 1992, 1994, 1995 Free Software Foundation, Inc.
+ Written May 1989 by Mike Haertel.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+ The author may be reached (Email) at the address address@hidden,
+ or (US mail) as Mike Haertel c/o Free Software Foundation. */
+
+
+/* Debugging hook for free. */
+void (*__free_hook) (void *__ptr);
+
+/* List of blocks allocated by aligned_alloc. */
+struct alignlist *_aligned_blocks = NULL;
+
+/* Return memory to the heap.
+ Like `_free_internal' but don't lock mutex. */
+void
+_free_internal_nolock (void *ptr)
+{
+ int type;
+ size_t block, blocks;
+ register size_t i;
+ struct list *prev, *next;
+ void *curbrk;
+ const size_t lesscore_threshold
+ /* Threshold of free space at which we will return some to the system. */
+ = FINAL_FREE_BLOCKS + 2 * __malloc_extra_blocks;
+
+ register struct alignlist *l;
+
+ if (ptr == NULL)
+ return;
+
+ PROTECT_MALLOC_STATE (0);
+
+ LOCK_ALIGNED_BLOCKS ();
+ for (l = _aligned_blocks; l != NULL; l = l->next)
+ if (l->aligned == ptr)
+ {
+ l->aligned = NULL; /* Mark the slot in the list as free. */
+ ptr = l->exact;
+ break;
+ }
+ UNLOCK_ALIGNED_BLOCKS ();
+
+ block = BLOCK (ptr);
+
+ type = _heapinfo[block].busy.type;
+ switch (type)
+ {
+ case 0:
+ /* Get as many statistics as early as we can. */
+ --_chunks_used;
+ _bytes_used -= _heapinfo[block].busy.info.size * BLOCKSIZE;
+ _bytes_free += _heapinfo[block].busy.info.size * BLOCKSIZE;
+
+ /* Find the free cluster previous to this one in the free list.
+ Start searching at the last block referenced; this may benefit
+ programs with locality of allocation. */
+ i = _heapindex;
+ if (i > block)
+ while (i > block)
+ i = _heapinfo[i].free.prev;
+ else
+ {
+ do
+ i = _heapinfo[i].free.next;
+ while (i > 0 && i < block);
+ i = _heapinfo[i].free.prev;
+ }
+
+ /* Determine how to link this block into the free list. */
+ if (block == i + _heapinfo[i].free.size)
+ {
+ /* Coalesce this block with its predecessor. */
+ _heapinfo[i].free.size += _heapinfo[block].busy.info.size;
+ block = i;
+ }
+ else
+ {
+ /* Really link this block back into the free list. */
+ _heapinfo[block].free.size = _heapinfo[block].busy.info.size;
+ _heapinfo[block].free.next = _heapinfo[i].free.next;
+ _heapinfo[block].free.prev = i;
+ _heapinfo[i].free.next = block;
+ _heapinfo[_heapinfo[block].free.next].free.prev = block;
+ ++_chunks_free;
+ }
+
+ /* Now that the block is linked in, see if we can coalesce it
+ with its successor (by deleting its successor from the list
+ and adding in its size). */
+ if (block + _heapinfo[block].free.size == _heapinfo[block].free.next)
+ {
+ _heapinfo[block].free.size
+ += _heapinfo[_heapinfo[block].free.next].free.size;
+ _heapinfo[block].free.next
+ = _heapinfo[_heapinfo[block].free.next].free.next;
+ _heapinfo[_heapinfo[block].free.next].free.prev = block;
+ --_chunks_free;
+ }
+
+ /* How many trailing free blocks are there now? */
+ blocks = _heapinfo[block].free.size;
+
+ /* Where is the current end of accessible core? */
+ curbrk = (*__morecore) (0);
+
+ if (_heaplimit != 0 && curbrk == ADDRESS (_heaplimit))
+ {
+ /* The end of the malloc heap is at the end of accessible core.
+ It's possible that moving _heapinfo will allow us to
+ return some space to the system. */
+
+ size_t info_block = BLOCK (_heapinfo);
+ size_t info_blocks = _heapinfo[info_block].busy.info.size;
+ size_t prev_block = _heapinfo[block].free.prev;
+ size_t prev_blocks = _heapinfo[prev_block].free.size;
+ size_t next_block = _heapinfo[block].free.next;
+ size_t next_blocks = _heapinfo[next_block].free.size;
+
+ if (/* Win if this block being freed is last in core, the info table
+ is just before it, the previous free block is just before the
+ info table, and the two free blocks together form a useful
+ amount to return to the system. */
+ (block + blocks == _heaplimit &&
+ info_block + info_blocks == block &&
+ prev_block != 0 && prev_block + prev_blocks == info_block &&
+ blocks + prev_blocks >= lesscore_threshold) ||
+ /* Nope, not the case. We can also win if this block being
+ freed is just before the info table, and the table extends
+ to the end of core or is followed only by a free block,
+ and the total free space is worth returning to the system. */
+ (block + blocks == info_block &&
+ ((info_block + info_blocks == _heaplimit &&
+ blocks >= lesscore_threshold) ||
+ (info_block + info_blocks == next_block &&
+ next_block + next_blocks == _heaplimit &&
+ blocks + next_blocks >= lesscore_threshold)))
+ )
+ {
+ malloc_info *newinfo;
+ size_t oldlimit = _heaplimit;
+
+ /* Free the old info table, clearing _heaplimit to avoid
+ recursion into this code. We don't want to return the
+ table's blocks to the system before we have copied them to
+ the new location. */
+ _heaplimit = 0;
+ _free_internal_nolock (_heapinfo);
+ _heaplimit = oldlimit;
+
+ /* Tell malloc to search from the beginning of the heap for
+ free blocks, so it doesn't reuse the ones just freed. */
+ _heapindex = 0;
+
+ /* Allocate new space for the info table and move its data. */
+ newinfo = _malloc_internal_nolock (info_blocks * BLOCKSIZE);
+ PROTECT_MALLOC_STATE (0);
+ memmove (newinfo, _heapinfo, info_blocks * BLOCKSIZE);
+ _heapinfo = newinfo;
+
+ /* We should now have coalesced the free block with the
+ blocks freed from the old info table. Examine the entire
+ trailing free block to decide below whether to return some
+ to the system. */
+ block = _heapinfo[0].free.prev;
+ blocks = _heapinfo[block].free.size;
+ }
+
+ /* Now see if we can return stuff to the system. */
+ if (block + blocks == _heaplimit && blocks >= lesscore_threshold)
+ {
+ register size_t bytes = blocks * BLOCKSIZE;
+ _heaplimit -= blocks;
+ (*__morecore) (-bytes);
+ _heapinfo[_heapinfo[block].free.prev].free.next
+ = _heapinfo[block].free.next;
+ _heapinfo[_heapinfo[block].free.next].free.prev
+ = _heapinfo[block].free.prev;
+ block = _heapinfo[block].free.prev;
+ --_chunks_free;
+ _bytes_free -= bytes;
+ }
+ }
+
+ /* Set the next search to begin at this block. */
+ _heapindex = block;
+ break;
+
+ default:
+ /* Do some of the statistics. */
+ --_chunks_used;
+ _bytes_used -= 1 << type;
+ ++_chunks_free;
+ _bytes_free += 1 << type;
+
+ /* Get the address of the first free fragment in this block. */
+ prev = (struct list *) ((char *) ADDRESS (block) +
+ (_heapinfo[block].busy.info.frag.first << type));
+
+ if (_heapinfo[block].busy.info.frag.nfree == (BLOCKSIZE >> type) - 1)
+ {
+ /* If all fragments of this block are free, remove them
+ from the fragment list and free the whole block. */
+ next = prev;
+ for (i = 1; i < (size_t) (BLOCKSIZE >> type); ++i)
+ next = next->next;
+ prev->prev->next = next;
+ if (next != NULL)
+ next->prev = prev->prev;
+ _heapinfo[block].busy.type = 0;
+ _heapinfo[block].busy.info.size = 1;
+
+ /* Keep the statistics accurate. */
+ ++_chunks_used;
+ _bytes_used += BLOCKSIZE;
+ _chunks_free -= BLOCKSIZE >> type;
+ _bytes_free -= BLOCKSIZE;
+
+#if defined (GC_MALLOC_CHECK) || defined (USE_PTHREAD)
+ _free_internal_nolock (ADDRESS (block));
+#else
+ free (ADDRESS (block));
+#endif
+ }
+ else if (_heapinfo[block].busy.info.frag.nfree != 0)
+ {
+ /* If some fragments of this block are free, link this
+ fragment into the fragment list after the first free
+ fragment of this block. */
+ next = ptr;
+ next->next = prev->next;
+ next->prev = prev;
+ prev->next = next;
+ if (next->next != NULL)
+ next->next->prev = next;
+ ++_heapinfo[block].busy.info.frag.nfree;
+ }
+ else
+ {
+ /* No fragments of this block are free, so link this
+ fragment into the fragment list and announce that
+ it is the first free fragment of this block. */
+ prev = ptr;
+ _heapinfo[block].busy.info.frag.nfree = 1;
+ _heapinfo[block].busy.info.frag.first =
+ (uintptr_t) ptr % BLOCKSIZE >> type;
+ prev->next = _fraghead[type].next;
+ prev->prev = &_fraghead[type];
+ prev->prev->next = prev;
+ if (prev->next != NULL)
+ prev->next->prev = prev;
+ }
+ break;
+ }
+
+ PROTECT_MALLOC_STATE (1);
+}
+
+/* Return memory to the heap.
+ Like `free' but don't call a __free_hook if there is one. */
+void
+_free_internal (void *ptr)
+{
+ LOCK ();
+ _free_internal_nolock (ptr);
+ UNLOCK ();
+}
+
+/* Return memory to the heap. */
+
+void
+free (void *ptr)
+{
+ void (*hook) (void *) = __free_hook;
+
+ if (hook != NULL)
+ (*hook) (ptr);
+ else
+ _free_internal (ptr);
+}
+
+/* Define the `cfree' alias for `free'. */
+#ifdef weak_alias
+weak_alias (free, cfree)
+#else
+void
+cfree (void *ptr)
+{
+ free (ptr);
+}
+#endif
+/* Change the size of a block allocated by `malloc'.
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+ Written May 1989 by Mike Haertel.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+ The author may be reached (Email) at the address address@hidden,
+ or (US mail) as Mike Haertel c/o Free Software Foundation. */
+
+#ifndef min
+#define min(a, b) ((a) < (b) ? (a) : (b))
+#endif
+
+/* Debugging hook for realloc. */
+void *(*__realloc_hook) (void *ptr, size_t size);
+
+/* Resize the given region to the new size, returning a pointer
+ to the (possibly moved) region. This is optimized for speed;
+ some benchmarks seem to indicate that greater compactness is
+ achieved by unconditionally allocating and copying to a
+ new region. This module has incestuous knowledge of the
+ internals of both free and malloc. */
+void *
+_realloc_internal_nolock (void *ptr, size_t size)
+{
+ void *result;
+ int type;
+ size_t block, blocks, oldlimit;
+
+ if (size == 0)
+ {
+ _free_internal_nolock (ptr);
+ return _malloc_internal_nolock (0);
+ }
+ else if (ptr == NULL)
+ return _malloc_internal_nolock (size);
+
+ block = BLOCK (ptr);
+
+ PROTECT_MALLOC_STATE (0);
+
+ type = _heapinfo[block].busy.type;
+ switch (type)
+ {
+ case 0:
+ /* Maybe reallocate a large block to a small fragment. */
+ if (size <= BLOCKSIZE / 2)
+ {
+ result = _malloc_internal_nolock (size);
+ if (result != NULL)
+ {
+ memcpy (result, ptr, size);
+ _free_internal_nolock (ptr);
+ goto out;
+ }
+ }
+
+ /* The new size is a large allocation as well;
+ see if we can hold it in place. */
+ blocks = BLOCKIFY (size);
+ if (blocks < _heapinfo[block].busy.info.size)
+ {
+ /* The new size is smaller; return
+ excess memory to the free list. */
+ _heapinfo[block + blocks].busy.type = 0;
+ _heapinfo[block + blocks].busy.info.size
+ = _heapinfo[block].busy.info.size - blocks;
+ _heapinfo[block].busy.info.size = blocks;
+ /* We have just created a new chunk by splitting a chunk in two.
+ Now we will free this chunk; increment the statistics counter
+ so it doesn't become wrong when _free_internal decrements it. */
+ ++_chunks_used;
+ _free_internal_nolock (ADDRESS (block + blocks));
+ result = ptr;
+ }
+ else if (blocks == _heapinfo[block].busy.info.size)
+ /* No size change necessary. */
+ result = ptr;
+ else
+ {
+ /* Won't fit, so allocate a new region that will.
+ Free the old region first in case there is sufficient
+ adjacent free space to grow without moving. */
+ blocks = _heapinfo[block].busy.info.size;
+ /* Prevent free from actually returning memory to the system. */
+ oldlimit = _heaplimit;
+ _heaplimit = 0;
+ _free_internal_nolock (ptr);
+ result = _malloc_internal_nolock (size);
+ PROTECT_MALLOC_STATE (0);
+ if (_heaplimit == 0)
+ _heaplimit = oldlimit;
+ if (result == NULL)
+ {
+ /* Now we're really in trouble. We have to unfree
+ the thing we just freed. Unfortunately it might
+ have been coalesced with its neighbors. */
+ if (_heapindex == block)
+ (void) _malloc_internal_nolock (blocks * BLOCKSIZE);
+ else
+ {
+ void *previous
+ = _malloc_internal_nolock ((block - _heapindex) *
BLOCKSIZE);
+ (void) _malloc_internal_nolock (blocks * BLOCKSIZE);
+ _free_internal_nolock (previous);
+ }
+ goto out;
+ }
+ if (ptr != result)
+ memmove (result, ptr, blocks * BLOCKSIZE);
+ }
+ break;
+
+ default:
+ /* Old size is a fragment; type is logarithm
+ to base two of the fragment size. */
+ if (size > (size_t) (1 << (type - 1)) &&
+ size <= (size_t) (1 << type))
+ /* The new size is the same kind of fragment. */
+ result = ptr;
+ else
+ {
+ /* The new size is different; allocate a new space,
+ and copy the lesser of the new size and the old. */
+ result = _malloc_internal_nolock (size);
+ if (result == NULL)
+ goto out;
+ memcpy (result, ptr, min (size, (size_t) 1 << type));
+ _free_internal_nolock (ptr);
+ }
+ break;
+ }
+
+ PROTECT_MALLOC_STATE (1);
+ out:
+ return result;
+}
+
+void *
+_realloc_internal (void *ptr, size_t size)
+{
+ void *result;
+
+ LOCK ();
+ result = _realloc_internal_nolock (ptr, size);
+ UNLOCK ();
+
+ return result;
+}
+
+void *
+realloc (void *ptr, size_t size)
+{
+ void *(*hook) (void *, size_t);
+
+ if (!__malloc_initialized && !__malloc_initialize ())
+ return NULL;
+
+ hook = __realloc_hook;
+ return (hook != NULL ? *hook : _realloc_internal) (ptr, size);
+}
+/* Copyright (C) 1991, 1992, 1994 Free Software Foundation, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+ The author may be reached (Email) at the address address@hidden,
+ or (US mail) as Mike Haertel c/o Free Software Foundation. */
+
+/* Allocate an array of NMEMB elements each SIZE bytes long.
+ The entire array is initialized to zeros. */
+void *
+calloc (size_t nmemb, size_t size)
+{
+ void *result;
+ size_t bytes = nmemb * size;
+
+ if (size != 0 && bytes / size != nmemb)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+
+ result = malloc (bytes);
+ if (result)
+ return memset (result, 0, bytes);
+ return result;
+}
+/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with the GNU C Library. If not, see <http://www.gnu.org/licenses/>. */
+
+/* uClibc defines __GNU_LIBRARY__, but it is not completely
+ compatible. */
+#if !defined (__GNU_LIBRARY__) || defined (__UCLIBC__)
+#define __sbrk sbrk
+#else /* __GNU_LIBRARY__ && ! defined (__UCLIBC__) */
+/* It is best not to declare this and cast its result on foreign operating
+ systems with potentially hostile include files. */
+
+extern void *__sbrk (ptrdiff_t increment);
+#endif /* __GNU_LIBRARY__ && ! defined (__UCLIBC__) */
+
+/* Allocate INCREMENT more bytes of data space,
+ and return the start of data space, or NULL on errors.
+ If INCREMENT is negative, shrink data space. */
+void *
+__default_morecore (ptrdiff_t increment)
+{
+ void *result;
+#if defined (CYGWIN)
+ if (!DUMPED)
+ {
+ return bss_sbrk (increment);
+ }
+#endif
+ result = (void *) __sbrk (increment);
+ if (result == (void *) -1)
+ return NULL;
+ return result;
+}
+/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
+
+void *(*__memalign_hook) (size_t size, size_t alignment);
+
+void *
+aligned_alloc (size_t alignment, size_t size)
+{
+ void *result;
+ size_t adj, lastadj;
+ void *(*hook) (size_t, size_t) = __memalign_hook;
+
+ if (hook)
+ return (*hook) (alignment, size);
+
+ /* Allocate a block with enough extra space to pad the block with up to
+ (ALIGNMENT - 1) bytes if necessary. */
+ if (- size < alignment)
+ {
+ errno = ENOMEM;
+ return NULL;
+ }
+ result = malloc (size + alignment - 1);
+ if (result == NULL)
+ return NULL;
+
+ /* Figure out how much we will need to pad this particular block
+ to achieve the required alignment. */
+ adj = alignment - (uintptr_t) result % alignment;
+ if (adj == alignment)
+ adj = 0;
+
+ if (adj != alignment - 1)
+ {
+ do
+ {
+ /* Reallocate the block with only as much excess as it
+ needs. */
+ free (result);
+ result = malloc (size + adj);
+ if (result == NULL) /* Impossible unless interrupted. */
+ return NULL;
+
+ lastadj = adj;
+ adj = alignment - (uintptr_t) result % alignment;
+ if (adj == alignment)
+ adj = 0;
+ /* It's conceivable we might have been so unlucky as to get
+ a different block with weaker alignment. If so, this
+ block is too short to contain SIZE after alignment
+ correction. So we must try again and get another block,
+ slightly larger. */
+ } while (adj > lastadj);
+ }
+
+ if (adj != 0)
+ {
+ /* Record this block in the list of aligned blocks, so that `free'
+ can identify the pointer it is passed, which will be in the middle
+ of an allocated block. */
+
+ struct alignlist *l;
+ LOCK_ALIGNED_BLOCKS ();
+ for (l = _aligned_blocks; l != NULL; l = l->next)
+ if (l->aligned == NULL)
+ /* This slot is free. Use it. */
+ break;
+ if (l == NULL)
+ {
+ l = malloc (sizeof *l);
+ if (l != NULL)
+ {
+ l->next = _aligned_blocks;
+ _aligned_blocks = l;
+ }
+ }
+ if (l != NULL)
+ {
+ l->exact = result;
+ result = l->aligned = (char *) result + adj;
+ }
+ UNLOCK_ALIGNED_BLOCKS ();
+ if (l == NULL)
+ {
+ free (result);
+ result = NULL;
+ }
+ }
+
+ return result;
+}
+
+/* An obsolete alias for aligned_alloc, for any old libraries that use
+ this alias. */
+
+void *
+memalign (size_t alignment, size_t size)
+{
+ return aligned_alloc (alignment, size);
+}
+
+/* If HYBRID_MALLOC is defined, we may want to use the system
+ posix_memalign below. */
+#ifndef HYBRID_MALLOC
+int
+posix_memalign (void **memptr, size_t alignment, size_t size)
+{
+ void *mem;
+
+ if (alignment == 0
+ || alignment % sizeof (void *) != 0
+ || (alignment & (alignment - 1)) != 0)
+ return EINVAL;
+
+ mem = aligned_alloc (alignment, size);
+ if (mem == NULL)
+ return ENOMEM;
+
+ *memptr = mem;
+
+ return 0;
+}
+#endif
+
+/* Allocate memory on a page boundary.
+ Copyright (C) 1991, 92, 93, 94, 96 Free Software Foundation, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+ The author may be reached (Email) at the address address@hidden,
+ or (US mail) as Mike Haertel c/o Free Software Foundation. */
+
+/* Allocate SIZE bytes on a page boundary. */
+extern void *valloc (size_t);
+
+#if defined _SC_PAGESIZE || !defined HAVE_GETPAGESIZE
+# include "getpagesize.h"
+#elif !defined getpagesize
+extern int getpagesize (void);
+#endif
+
+static size_t pagesize;
+
+void *
+valloc (size_t size)
+{
+ if (pagesize == 0)
+ pagesize = getpagesize ();
+
+ return aligned_alloc (pagesize, size);
+}
+
+#ifdef HYBRID_MALLOC
+#undef malloc
+#undef realloc
+#undef calloc
+#undef aligned_alloc
+#undef free
+
+/* Declare system malloc and friends. */
+extern void *malloc (size_t size);
+extern void *realloc (void *ptr, size_t size);
+extern void *calloc (size_t nmemb, size_t size);
+extern void free (void *ptr);
+#ifdef HAVE_ALIGNED_ALLOC
+extern void *aligned_alloc (size_t alignment, size_t size);
+#elif defined HAVE_POSIX_MEMALIGN
+extern int posix_memalign (void **memptr, size_t alignment, size_t size);
+#endif
+
+/* See the comments near the beginning of this file for explanations
+ of the following functions. */
+
+void *
+hybrid_malloc (size_t size)
+{
+ if (DUMPED)
+ return malloc (size);
+ return gmalloc (size);
+}
+
+void *
+hybrid_calloc (size_t nmemb, size_t size)
+{
+ if (DUMPED)
+ return calloc (nmemb, size);
+ return gcalloc (nmemb, size);
+}
+
+void
+hybrid_free (void *ptr)
+{
+ if (!DUMPED)
+ gfree (ptr);
+ else if (!ALLOCATED_BEFORE_DUMPING (ptr))
+ free (ptr);
+ /* Otherwise the dumped emacs is trying to free something allocated
+ before dumping; do nothing. */
+ return;
+}
+
+#if defined HAVE_ALIGNED_ALLOC || defined HAVE_POSIX_MEMALIGN
+void *
+hybrid_aligned_alloc (size_t alignment, size_t size)
+{
+ if (!DUMPED)
+ return galigned_alloc (alignment, size);
+ /* The following is copied from alloc.c */
+#ifdef HAVE_ALIGNED_ALLOC
+ return aligned_alloc (alignment, size);
+#else /* HAVE_POSIX_MEMALIGN */
+ void *p;
+ return posix_memalign (&p, alignment, size) == 0 ? p : 0;
+#endif
+}
+#endif
+
+void *
+hybrid_realloc (void *ptr, size_t size)
+{
+ void *result;
+ int type;
+ size_t block, oldsize;
+
+ if (!DUMPED)
+ return grealloc (ptr, size);
+ if (!ALLOCATED_BEFORE_DUMPING (ptr))
+ return realloc (ptr, size);
+
+ /* The dumped emacs is trying to realloc storage allocated before
+ dumping. We just malloc new space and copy the data. */
+ if (size == 0 || ptr == NULL)
+ return malloc (size);
+ block = ((char *) ptr - _heapbase) / BLOCKSIZE + 1;
+ type = _heapinfo[block].busy.type;
+ oldsize =
+ type == 0 ? _heapinfo[block].busy.info.size * BLOCKSIZE
+ : (size_t) 1 << type;
+ result = malloc (size);
+ if (result)
+ return memcpy (result, ptr, min (oldsize, size));
+ return result;
+}
+
+#ifdef HYBRID_GET_CURRENT_DIR_NAME
+/* Defined in sysdep.c. */
+char *gget_current_dir_name (void);
+
+char *
+hybrid_get_current_dir_name (void)
+{
+ if (DUMPED)
+ return get_current_dir_name ();
+ return gget_current_dir_name ();
+}
+#endif
+
+#endif /* HYBRID_MALLOC */
+
+#ifdef GC_MCHECK
+
+/* Standard debugging hooks for `malloc'.
+ Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
+ Written May 1989 by Mike Haertel.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public
+License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+ The author may be reached (Email) at the address address@hidden,
+ or (US mail) as Mike Haertel c/o Free Software Foundation. */
+
+#include <stdio.h>
+
+/* Old hook values. */
+static void (*old_free_hook) (void *ptr);
+static void *(*old_malloc_hook) (size_t size);
+static void *(*old_realloc_hook) (void *ptr, size_t size);
+
+/* Function to call when something awful happens. */
+static void (*abortfunc) (enum mcheck_status);
+
+/* Arbitrary magical numbers. */
+#define MAGICWORD (SIZE_MAX / 11 ^ SIZE_MAX / 13 << 3)
+#define MAGICFREE (SIZE_MAX / 17 ^ SIZE_MAX / 19 << 4)
+#define MAGICBYTE ((char) 0xd7)
+#define MALLOCFLOOD ((char) 0x93)
+#define FREEFLOOD ((char) 0x95)
+
+struct hdr
+ {
+ size_t size; /* Exact size requested by user. */
+ size_t magic; /* Magic number to check header integrity. */
+ };
+
+static enum mcheck_status
+checkhdr (const struct hdr *hdr)
+{
+ enum mcheck_status status;
+ switch (hdr->magic)
+ {
+ default:
+ status = MCHECK_HEAD;
+ break;
+ case MAGICFREE:
+ status = MCHECK_FREE;
+ break;
+ case MAGICWORD:
+ if (((char *) &hdr[1])[hdr->size] != MAGICBYTE)
+ status = MCHECK_TAIL;
+ else
+ status = MCHECK_OK;
+ break;
+ }
+ if (status != MCHECK_OK)
+ (*abortfunc) (status);
+ return status;
+}
+
+static void
+freehook (void *ptr)
+{
+ struct hdr *hdr;
+
+ if (ptr)
+ {
+ struct alignlist *l;
+
+ /* If the block was allocated by aligned_alloc, its real pointer
+ to free is recorded in _aligned_blocks; find that. */
+ PROTECT_MALLOC_STATE (0);
+ LOCK_ALIGNED_BLOCKS ();
+ for (l = _aligned_blocks; l != NULL; l = l->next)
+ if (l->aligned == ptr)
+ {
+ l->aligned = NULL; /* Mark the slot in the list as free. */
+ ptr = l->exact;
+ break;
+ }
+ UNLOCK_ALIGNED_BLOCKS ();
+ PROTECT_MALLOC_STATE (1);
+
+ hdr = ((struct hdr *) ptr) - 1;
+ checkhdr (hdr);
+ hdr->magic = MAGICFREE;
+ memset (ptr, FREEFLOOD, hdr->size);
+ }
+ else
+ hdr = NULL;
+
+ __free_hook = old_free_hook;
+ free (hdr);
+ __free_hook = freehook;
+}
+
+static void *
+mallochook (size_t size)
+{
+ struct hdr *hdr;
+
+ __malloc_hook = old_malloc_hook;
+ hdr = malloc (sizeof *hdr + size + 1);
+ __malloc_hook = mallochook;
+ if (hdr == NULL)
+ return NULL;
+
+ hdr->size = size;
+ hdr->magic = MAGICWORD;
+ ((char *) &hdr[1])[size] = MAGICBYTE;
+ return memset (hdr + 1, MALLOCFLOOD, size);
+}
+
+static void *
+reallochook (void *ptr, size_t size)
+{
+ struct hdr *hdr = NULL;
+ size_t osize = 0;
+
+ if (ptr)
+ {
+ hdr = ((struct hdr *) ptr) - 1;
+ osize = hdr->size;
+
+ checkhdr (hdr);
+ if (size < osize)
+ memset ((char *) ptr + size, FREEFLOOD, osize - size);
+ }
+
+ __free_hook = old_free_hook;
+ __malloc_hook = old_malloc_hook;
+ __realloc_hook = old_realloc_hook;
+ hdr = realloc (hdr, sizeof *hdr + size + 1);
+ __free_hook = freehook;
+ __malloc_hook = mallochook;
+ __realloc_hook = reallochook;
+ if (hdr == NULL)
+ return NULL;
+
+ hdr->size = size;
+ hdr->magic = MAGICWORD;
+ ((char *) &hdr[1])[size] = MAGICBYTE;
+ if (size > osize)
+ memset ((char *) (hdr + 1) + osize, MALLOCFLOOD, size - osize);
+ return hdr + 1;
+}
+
+static void
+mabort (enum mcheck_status status)
+{
+ const char *msg;
+ switch (status)
+ {
+ case MCHECK_OK:
+ msg = "memory is consistent, library is buggy";
+ break;
+ case MCHECK_HEAD:
+ msg = "memory clobbered before allocated block";
+ break;
+ case MCHECK_TAIL:
+ msg = "memory clobbered past end of allocated block";
+ break;
+ case MCHECK_FREE:
+ msg = "block freed twice";
+ break;
+ default:
+ msg = "bogus mcheck_status, library is buggy";
+ break;
+ }
+#ifdef __GNU_LIBRARY__
+ __libc_fatal (msg);
+#else
+ fprintf (stderr, "mcheck: %s\n", msg);
+ fflush (stderr);
+# ifdef emacs
+ emacs_abort ();
+# else
+ abort ();
+# endif
+#endif
+}
+
+static int mcheck_used = 0;
+
+int
+mcheck (void (*func) (enum mcheck_status))
+{
+ abortfunc = (func != NULL) ? func : &mabort;
+
+ /* These hooks may not be safely inserted if malloc is already in use. */
+ if (!__malloc_initialized && !mcheck_used)
+ {
+ old_free_hook = __free_hook;
+ __free_hook = freehook;
+ old_malloc_hook = __malloc_hook;
+ __malloc_hook = mallochook;
+ old_realloc_hook = __realloc_hook;
+ __realloc_hook = reallochook;
+ mcheck_used = 1;
+ }
+
+ return mcheck_used ? 0 : -1;
+}
+
+enum mcheck_status
+mprobe (void *ptr)
+{
+ return mcheck_used ? checkhdr (ptr) : MCHECK_DISABLED;
+}
+
+#endif /* GC_MCHECK */
diff --git a/src/keyboard.c b/test/etags/c-src/emacs/src/keyboard.c
similarity index 99%
copy from src/keyboard.c
copy to test/etags/c-src/emacs/src/keyboard.c
index 392cea1..77f7fb9 100644
--- a/src/keyboard.c
+++ b/test/etags/c-src/emacs/src/keyboard.c
@@ -4135,13 +4135,6 @@ kbd_buffer_get_event (KBOARD **kbp,
kbd_fetch_ptr = event + 1;
}
#endif
-#ifdef HAVE_XWIDGETS
- else if (event->kind == XWIDGET_EVENT)
- {
- obj = make_lispy_event (event);
- kbd_fetch_ptr = event + 1;
- }
-#endif
else if (event->kind == CONFIG_CHANGED_EVENT)
{
obj = make_lispy_event (event);
@@ -6090,14 +6083,6 @@ make_lispy_event (struct input_event *event)
}
#endif /* HAVE_DBUS */
-#ifdef HAVE_XWIDGETS
- case XWIDGET_EVENT:
- {
- return Fcons (Qxwidget_event,event->arg);
- }
-#endif
-
-
#if defined HAVE_GFILENOTIFY || defined HAVE_INOTIFY
case FILE_NOTIFY_EVENT:
{
@@ -8722,12 +8707,10 @@ read_char_minibuf_menu_prompt (int commandflag,
while (BUFFERP (obj));
kset_defining_kbd_macro (current_kboard, orig_defn_macro);
- if (!INTEGERP (obj) || XINT (obj) == -2)
- return obj;
-
- if (! EQ (obj, menu_prompt_more_char)
- && (!INTEGERP (menu_prompt_more_char)
- || ! EQ (obj, make_number (Ctl (XINT (menu_prompt_more_char))))))
+ if (!INTEGERP (obj) || XINT (obj) == -2
+ || (! EQ (obj, menu_prompt_more_char)
+ && (!INTEGERP (menu_prompt_more_char)
+ || ! EQ (obj, make_number (Ctl (XINT
(menu_prompt_more_char)))))))
{
if (!NILP (KVAR (current_kboard, defining_kbd_macro)))
store_kbd_macro_char (obj);
@@ -11127,10 +11110,6 @@ syms_of_keyboard (void)
DEFSYM (Qdbus_event, "dbus-event");
#endif
-#ifdef HAVE_XWIDGETS
- DEFSYM (Qxwidget_event,"xwidget-event");
-#endif
-
#ifdef USE_FILE_NOTIFY
DEFSYM (Qfile_notify, "file-notify");
#endif /* USE_FILE_NOTIFY */
diff --git a/test/etags/c-src/emacs/src/lisp.h
b/test/etags/c-src/emacs/src/lisp.h
new file mode 100644
index 0000000..6d34ce3
--- /dev/null
+++ b/test/etags/c-src/emacs/src/lisp.h
@@ -0,0 +1,4817 @@
+/* Fundamental definitions for GNU Emacs Lisp interpreter.
+
+Copyright (C) 1985-1987, 1993-1995, 1997-2015 Free Software Foundation,
+Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef EMACS_LISP_H
+#define EMACS_LISP_H
+
+#include <setjmp.h>
+#include <stdalign.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <float.h>
+#include <inttypes.h>
+#include <limits.h>
+
+#include <intprops.h>
+#include <verify.h>
+
+INLINE_HEADER_BEGIN
+
+/* Define a TYPE constant ID as an externally visible name. Use like this:
+
+ DEFINE_GDB_SYMBOL_BEGIN (TYPE, ID)
+ # define ID (some integer preprocessor expression of type TYPE)
+ DEFINE_GDB_SYMBOL_END (ID)
+
+ This hack is for the benefit of compilers that do not make macro
+ definitions or enums visible to the debugger. It's used for symbols
+ that .gdbinit needs. */
+
+#define DECLARE_GDB_SYM(type, id) type const id EXTERNALLY_VISIBLE
+#ifdef MAIN_PROGRAM
+# define DEFINE_GDB_SYMBOL_BEGIN(type, id) DECLARE_GDB_SYM (type, id)
+# define DEFINE_GDB_SYMBOL_END(id) = id;
+#else
+# define DEFINE_GDB_SYMBOL_BEGIN(type, id) extern DECLARE_GDB_SYM (type, id)
+# define DEFINE_GDB_SYMBOL_END(val) ;
+#endif
+
+/* The ubiquitous max and min macros. */
+#undef min
+#undef max
+#define max(a, b) ((a) > (b) ? (a) : (b))
+#define min(a, b) ((a) < (b) ? (a) : (b))
+
+/* Number of elements in an array. */
+#define ARRAYELTS(arr) (sizeof (arr) / sizeof (arr)[0])
+
+/* Number of bits in a Lisp_Object tag. */
+DEFINE_GDB_SYMBOL_BEGIN (int, GCTYPEBITS)
+#define GCTYPEBITS 3
+DEFINE_GDB_SYMBOL_END (GCTYPEBITS)
+
+/* The number of bits needed in an EMACS_INT over and above the number
+ of bits in a pointer. This is 0 on systems where:
+ 1. We can specify multiple-of-8 alignment on static variables.
+ 2. We know malloc returns a multiple of 8. */
+#if (defined alignas \
+ && (defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ \
+ || defined DARWIN_OS || defined __sun || defined __MINGW32__ \
+ || defined CYGWIN))
+# define NONPOINTER_BITS 0
+#else
+# define NONPOINTER_BITS GCTYPEBITS
+#endif
+
+/* EMACS_INT - signed integer wide enough to hold an Emacs value
+ EMACS_INT_MAX - maximum value of EMACS_INT; can be used in #if
+ pI - printf length modifier for EMACS_INT
+ EMACS_UINT - unsigned variant of EMACS_INT */
+#ifndef EMACS_INT_MAX
+# if INTPTR_MAX <= 0
+# error "INTPTR_MAX misconfigured"
+# elif INTPTR_MAX <= INT_MAX >> NONPOINTER_BITS && !defined WIDE_EMACS_INT
+typedef int EMACS_INT;
+typedef unsigned int EMACS_UINT;
+# define EMACS_INT_MAX INT_MAX
+# define pI ""
+# elif INTPTR_MAX <= LONG_MAX >> NONPOINTER_BITS && !defined WIDE_EMACS_INT
+typedef long int EMACS_INT;
+typedef unsigned long EMACS_UINT;
+# define EMACS_INT_MAX LONG_MAX
+# define pI "l"
+/* Check versus LLONG_MAX, not LLONG_MAX >> NONPOINTER_BITS.
+ In theory this is not safe, but in practice it seems to be OK. */
+# elif INTPTR_MAX <= LLONG_MAX
+typedef long long int EMACS_INT;
+typedef unsigned long long int EMACS_UINT;
+# define EMACS_INT_MAX LLONG_MAX
+# define pI "ll"
+# else
+# error "INTPTR_MAX too large"
+# endif
+#endif
+
+/* Number of bits to put in each character in the internal representation
+ of bool vectors. This should not vary across implementations. */
+enum { BOOL_VECTOR_BITS_PER_CHAR =
+#define BOOL_VECTOR_BITS_PER_CHAR 8
+ BOOL_VECTOR_BITS_PER_CHAR
+};
+
+/* An unsigned integer type representing a fixed-length bit sequence,
+ suitable for bool vector words, GC mark bits, etc. Normally it is size_t
+ for speed, but it is unsigned char on weird platforms. */
+#if BOOL_VECTOR_BITS_PER_CHAR == CHAR_BIT
+typedef size_t bits_word;
+# define BITS_WORD_MAX SIZE_MAX
+enum { BITS_PER_BITS_WORD = CHAR_BIT * sizeof (bits_word) };
+#else
+typedef unsigned char bits_word;
+# define BITS_WORD_MAX ((1u << BOOL_VECTOR_BITS_PER_CHAR) - 1)
+enum { BITS_PER_BITS_WORD = BOOL_VECTOR_BITS_PER_CHAR };
+#endif
+verify (BITS_WORD_MAX >> (BITS_PER_BITS_WORD - 1) == 1);
+
+/* Number of bits in some machine integer types. */
+enum
+ {
+ BITS_PER_CHAR = CHAR_BIT,
+ BITS_PER_SHORT = CHAR_BIT * sizeof (short),
+ BITS_PER_LONG = CHAR_BIT * sizeof (long int),
+ BITS_PER_EMACS_INT = CHAR_BIT * sizeof (EMACS_INT)
+ };
+
+/* printmax_t and uprintmax_t are types for printing large integers.
+ These are the widest integers that are supported for printing.
+ pMd etc. are conversions for printing them.
+ On C99 hosts, there's no problem, as even the widest integers work.
+ Fall back on EMACS_INT on pre-C99 hosts. */
+#ifdef PRIdMAX
+typedef intmax_t printmax_t;
+typedef uintmax_t uprintmax_t;
+# define pMd PRIdMAX
+# define pMu PRIuMAX
+#else
+typedef EMACS_INT printmax_t;
+typedef EMACS_UINT uprintmax_t;
+# define pMd pI"d"
+# define pMu pI"u"
+#endif
+
+/* Use pD to format ptrdiff_t values, which suffice for indexes into
+ buffers and strings. Emacs never allocates objects larger than
+ PTRDIFF_MAX bytes, as they cause problems with pointer subtraction.
+ In C99, pD can always be "t"; configure it here for the sake of
+ pre-C99 libraries such as glibc 2.0 and Solaris 8. */
+#if PTRDIFF_MAX == INT_MAX
+# define pD ""
+#elif PTRDIFF_MAX == LONG_MAX
+# define pD "l"
+#elif PTRDIFF_MAX == LLONG_MAX
+# define pD "ll"
+#else
+# define pD "t"
+#endif
+
+/* Extra internal type checking? */
+
+/* Define Emacs versions of <assert.h>'s 'assert (COND)' and <verify.h>'s
+ 'assume (COND)'. COND should be free of side effects, as it may or
+ may not be evaluated.
+
+ 'eassert (COND)' checks COND at runtime if ENABLE_CHECKING is
+ defined and suppress_checking is false, and does nothing otherwise.
+ Emacs dies if COND is checked and is false. The suppress_checking
+ variable is initialized to 0 in alloc.c. Set it to 1 using a
+ debugger to temporarily disable aborting on detected internal
+ inconsistencies or error conditions.
+
+ In some cases, a good compiler may be able to optimize away the
+ eassert macro even if ENABLE_CHECKING is true, e.g., if XSTRING (x)
+ uses eassert to test STRINGP (x), but a particular use of XSTRING
+ is invoked only after testing that STRINGP (x) is true, making the
+ test redundant.
+
+ eassume is like eassert except that it also causes the compiler to
+ assume that COND is true afterwards, regardless of whether runtime
+ checking is enabled. This can improve performance in some cases,
+ though it can degrade performance in others. It's often suboptimal
+ for COND to call external functions or access volatile storage. */
+
+#ifndef ENABLE_CHECKING
+# define eassert(cond) ((void) (false && (cond))) /* Check COND compiles. */
+# define eassume(cond) assume (cond)
+#else /* ENABLE_CHECKING */
+
+extern _Noreturn void die (const char *, const char *, int);
+
+extern bool suppress_checking EXTERNALLY_VISIBLE;
+
+# define eassert(cond) \
+ (suppress_checking || (cond) \
+ ? (void) 0 \
+ : die (# cond, __FILE__, __LINE__))
+# define eassume(cond) \
+ (suppress_checking \
+ ? assume (cond) \
+ : (cond) \
+ ? (void) 0 \
+ : die (# cond, __FILE__, __LINE__))
+#endif /* ENABLE_CHECKING */
+
+
+/* Use the configure flag --enable-check-lisp-object-type to make
+ Lisp_Object use a struct type instead of the default int. The flag
+ causes CHECK_LISP_OBJECT_TYPE to be defined. */
+
+/***** Select the tagging scheme. *****/
+/* The following option controls the tagging scheme:
+ - USE_LSB_TAG means that we can assume the least 3 bits of pointers are
+ always 0, and we can thus use them to hold tag bits, without
+ restricting our addressing space.
+
+ If ! USE_LSB_TAG, then use the top 3 bits for tagging, thus
+ restricting our possible address range.
+
+ USE_LSB_TAG not only requires the least 3 bits of pointers returned by
+ malloc to be 0 but also needs to be able to impose a mult-of-8 alignment
+ on the few static Lisp_Objects used: lispsym, all the defsubr, and
+ the two special buffers buffer_defaults and buffer_local_symbols. */
+
+enum Lisp_Bits
+ {
+ /* 2**GCTYPEBITS. This must be a macro that expands to a literal
+ integer constant, for MSVC. */
+#define GCALIGNMENT 8
+
+ /* Number of bits in a Lisp_Object value, not counting the tag. */
+ VALBITS = BITS_PER_EMACS_INT - GCTYPEBITS,
+
+ /* Number of bits in a Lisp fixnum tag. */
+ INTTYPEBITS = GCTYPEBITS - 1,
+
+ /* Number of bits in a Lisp fixnum value, not counting the tag. */
+ FIXNUM_BITS = VALBITS + 1
+ };
+
+#if GCALIGNMENT != 1 << GCTYPEBITS
+# error "GCALIGNMENT and GCTYPEBITS are inconsistent"
+#endif
+
+/* The maximum value that can be stored in a EMACS_INT, assuming all
+ bits other than the type bits contribute to a nonnegative signed value.
+ This can be used in #if, e.g., '#if USB_TAG' below expands to an
+ expression involving VAL_MAX. */
+#define VAL_MAX (EMACS_INT_MAX >> (GCTYPEBITS - 1))
+
+/* Whether the least-significant bits of an EMACS_INT contain the tag.
+ On hosts where pointers-as-ints do not exceed VAL_MAX / 2, USE_LSB_TAG is:
+ a. unnecessary, because the top bits of an EMACS_INT are unused, and
+ b. slower, because it typically requires extra masking.
+ So, USE_LSB_TAG is true only on hosts where it might be useful. */
+DEFINE_GDB_SYMBOL_BEGIN (bool, USE_LSB_TAG)
+#define USE_LSB_TAG (VAL_MAX / 2 < INTPTR_MAX)
+DEFINE_GDB_SYMBOL_END (USE_LSB_TAG)
+
+#if !USE_LSB_TAG && !defined WIDE_EMACS_INT
+# error "USE_LSB_TAG not supported on this platform; please report this." \
+ "Try 'configure --with-wide-int' to work around the problem."
+error !;
+#endif
+
+#ifndef alignas
+# define alignas(alignment) /* empty */
+# if USE_LSB_TAG
+# error "USE_LSB_TAG requires alignas"
+# endif
+#endif
+
+#ifdef HAVE_STRUCT_ATTRIBUTE_ALIGNED
+# define GCALIGNED __attribute__ ((aligned (GCALIGNMENT)))
+#else
+# define GCALIGNED /* empty */
+#endif
+
+/* Some operations are so commonly executed that they are implemented
+ as macros, not functions, because otherwise runtime performance would
+ suffer too much when compiling with GCC without optimization.
+ There's no need to inline everything, just the operations that
+ would otherwise cause a serious performance problem.
+
+ For each such operation OP, define a macro lisp_h_OP that contains
+ the operation's implementation. That way, OP can be implemented
+ via a macro definition like this:
+
+ #define OP(x) lisp_h_OP (x)
+
+ and/or via a function definition like this:
+
+ LISP_MACRO_DEFUN (OP, Lisp_Object, (Lisp_Object x), (x))
+
+ which macro-expands to this:
+
+ Lisp_Object (OP) (Lisp_Object x) { return lisp_h_OP (x); }
+
+ without worrying about the implementations diverging, since
+ lisp_h_OP defines the actual implementation. The lisp_h_OP macros
+ are intended to be private to this include file, and should not be
+ used elsewhere.
+
+ FIXME: Remove the lisp_h_OP macros, and define just the inline OP
+ functions, once most developers have access to GCC 4.8 or later and
+ can use "gcc -Og" to debug. Maybe in the year 2016. See
+ Bug#11935.
+
+ Commentary for these macros can be found near their corresponding
+ functions, below. */
+
+#if CHECK_LISP_OBJECT_TYPE
+# define lisp_h_XLI(o) ((o).i)
+# define lisp_h_XIL(i) ((Lisp_Object) { i })
+#else
+# define lisp_h_XLI(o) (o)
+# define lisp_h_XIL(i) (i)
+#endif
+#define lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (CONSP (x), Qlistp, y)
+#define lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGERP (x), Qintegerp, x)
+#define lisp_h_CHECK_SYMBOL(x) CHECK_TYPE (SYMBOLP (x), Qsymbolp, x)
+#define lisp_h_CHECK_TYPE(ok, predicate, x) \
+ ((ok) ? (void) 0 : (void) wrong_type_argument (predicate, x))
+#define lisp_h_CONSP(x) (XTYPE (x) == Lisp_Cons)
+#define lisp_h_EQ(x, y) (XLI (x) == XLI (y))
+#define lisp_h_FLOATP(x) (XTYPE (x) == Lisp_Float)
+#define lisp_h_INTEGERP(x) ((XTYPE (x) & (Lisp_Int0 | ~Lisp_Int1)) ==
Lisp_Int0)
+#define lisp_h_MARKERP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Marker)
+#define lisp_h_MISCP(x) (XTYPE (x) == Lisp_Misc)
+#define lisp_h_NILP(x) EQ (x, Qnil)
+#define lisp_h_SET_SYMBOL_VAL(sym, v) \
+ (eassert ((sym)->redirect == SYMBOL_PLAINVAL), (sym)->val.value = (v))
+#define lisp_h_SYMBOL_CONSTANT_P(sym) (XSYMBOL (sym)->constant)
+#define lisp_h_SYMBOL_VAL(sym) \
+ (eassert ((sym)->redirect == SYMBOL_PLAINVAL), (sym)->val.value)
+#define lisp_h_SYMBOLP(x) (XTYPE (x) == Lisp_Symbol)
+#define lisp_h_VECTORLIKEP(x) (XTYPE (x) == Lisp_Vectorlike)
+#define lisp_h_XCAR(c) XCONS (c)->car
+#define lisp_h_XCDR(c) XCONS (c)->u.cdr
+#define lisp_h_XCONS(a) \
+ (eassert (CONSP (a)), (struct Lisp_Cons *) XUNTAG (a, Lisp_Cons))
+#define lisp_h_XHASH(a) XUINT (a)
+#define lisp_h_XPNTR(a) \
+ (SYMBOLP (a) ? XSYMBOL (a) : (void *) ((intptr_t) (XLI (a) & VALMASK)))
+#ifndef GC_CHECK_CONS_LIST
+# define lisp_h_check_cons_list() ((void) 0)
+#endif
+#if USE_LSB_TAG
+# define lisp_h_make_number(n) \
+ XIL ((EMACS_INT) (((EMACS_UINT) (n) << INTTYPEBITS) + Lisp_Int0))
+# define lisp_h_XFASTINT(a) XINT (a)
+# define lisp_h_XINT(a) (XLI (a) >> INTTYPEBITS)
+# define lisp_h_XSYMBOL(a) \
+ (eassert (SYMBOLP (a)), \
+ (struct Lisp_Symbol *) ((uintptr_t) XLI (a) - Lisp_Symbol \
+ + (char *) lispsym))
+# define lisp_h_XTYPE(a) ((enum Lisp_Type) (XLI (a) & ~VALMASK))
+# define lisp_h_XUNTAG(a, type) ((void *) (intptr_t) (XLI (a) - (type)))
+#endif
+
+/* When compiling via gcc -O0, define the key operations as macros, as
+ Emacs is too slow otherwise. To disable this optimization, compile
+ with -DINLINING=false. */
+#if (defined __NO_INLINE__ \
+ && ! defined __OPTIMIZE__ && ! defined __OPTIMIZE_SIZE__ \
+ && ! (defined INLINING && ! INLINING))
+# define XLI(o) lisp_h_XLI (o)
+# define XIL(i) lisp_h_XIL (i)
+# define CHECK_LIST_CONS(x, y) lisp_h_CHECK_LIST_CONS (x, y)
+# define CHECK_NUMBER(x) lisp_h_CHECK_NUMBER (x)
+# define CHECK_SYMBOL(x) lisp_h_CHECK_SYMBOL (x)
+# define CHECK_TYPE(ok, predicate, x) lisp_h_CHECK_TYPE (ok, predicate, x)
+# define CONSP(x) lisp_h_CONSP (x)
+# define EQ(x, y) lisp_h_EQ (x, y)
+# define FLOATP(x) lisp_h_FLOATP (x)
+# define INTEGERP(x) lisp_h_INTEGERP (x)
+# define MARKERP(x) lisp_h_MARKERP (x)
+# define MISCP(x) lisp_h_MISCP (x)
+# define NILP(x) lisp_h_NILP (x)
+# define SET_SYMBOL_VAL(sym, v) lisp_h_SET_SYMBOL_VAL (sym, v)
+# define SYMBOL_CONSTANT_P(sym) lisp_h_SYMBOL_CONSTANT_P (sym)
+# define SYMBOL_VAL(sym) lisp_h_SYMBOL_VAL (sym)
+# define SYMBOLP(x) lisp_h_SYMBOLP (x)
+# define VECTORLIKEP(x) lisp_h_VECTORLIKEP (x)
+# define XCAR(c) lisp_h_XCAR (c)
+# define XCDR(c) lisp_h_XCDR (c)
+# define XCONS(a) lisp_h_XCONS (a)
+# define XHASH(a) lisp_h_XHASH (a)
+# define XPNTR(a) lisp_h_XPNTR (a)
+# ifndef GC_CHECK_CONS_LIST
+# define check_cons_list() lisp_h_check_cons_list ()
+# endif
+# if USE_LSB_TAG
+# define make_number(n) lisp_h_make_number (n)
+# define XFASTINT(a) lisp_h_XFASTINT (a)
+# define XINT(a) lisp_h_XINT (a)
+# define XSYMBOL(a) lisp_h_XSYMBOL (a)
+# define XTYPE(a) lisp_h_XTYPE (a)
+# define XUNTAG(a, type) lisp_h_XUNTAG (a, type)
+# endif
+#endif
+
+/* Define NAME as a lisp.h inline function that returns TYPE and has
+ arguments declared as ARGDECLS and passed as ARGS. ARGDECLS and
+ ARGS should be parenthesized. Implement the function by calling
+ lisp_h_NAME ARGS. */
+#define LISP_MACRO_DEFUN(name, type, argdecls, args) \
+ INLINE type (name) argdecls { return lisp_h_##name args; }
+
+/* like LISP_MACRO_DEFUN, except NAME returns void. */
+#define LISP_MACRO_DEFUN_VOID(name, argdecls, args) \
+ INLINE void (name) argdecls { lisp_h_##name args; }
+
+
+/* Define the fundamental Lisp data structures. */
+
+/* This is the set of Lisp data types. If you want to define a new
+ data type, read the comments after Lisp_Fwd_Type definition
+ below. */
+
+/* Lisp integers use 2 tags, to give them one extra bit, thus
+ extending their range from, e.g., -2^28..2^28-1 to -2^29..2^29-1. */
+#define INTMASK (EMACS_INT_MAX >> (INTTYPEBITS - 1))
+#define case_Lisp_Int case Lisp_Int0: case Lisp_Int1
+
+/* Idea stolen from GDB. Pedantic GCC complains about enum bitfields,
+ MSVC doesn't support them, and xlc and Oracle Studio c99 complain
+ vociferously about them. */
+#if (defined __STRICT_ANSI__ || defined _MSC_VER || defined __IBMC__ \
+ || (defined __SUNPRO_C && __STDC__))
+#define ENUM_BF(TYPE) unsigned int
+#else
+#define ENUM_BF(TYPE) enum TYPE
+#endif
+
+
+enum Lisp_Type
+ {
+ /* Symbol. XSYMBOL (object) points to a struct Lisp_Symbol. */
+ Lisp_Symbol = 0,
+
+ /* Miscellaneous. XMISC (object) points to a union Lisp_Misc,
+ whose first member indicates the subtype. */
+ Lisp_Misc = 1,
+
+ /* Integer. XINT (obj) is the integer value. */
+ Lisp_Int0 = 2,
+ Lisp_Int1 = USE_LSB_TAG ? 6 : 3,
+
+ /* String. XSTRING (object) points to a struct Lisp_String.
+ The length of the string, and its contents, are stored therein. */
+ Lisp_String = 4,
+
+ /* Vector of Lisp objects, or something resembling it.
+ XVECTOR (object) points to a struct Lisp_Vector, which contains
+ the size and contents. The size field also contains the type
+ information, if it's not a real vector object. */
+ Lisp_Vectorlike = 5,
+
+ /* Cons. XCONS (object) points to a struct Lisp_Cons. */
+ Lisp_Cons = USE_LSB_TAG ? 3 : 6,
+
+ Lisp_Float = 7
+ };
+
+/* This is the set of data types that share a common structure.
+ The first member of the structure is a type code from this set.
+ The enum values are arbitrary, but we'll use large numbers to make it
+ more likely that we'll spot the error if a random word in memory is
+ mistakenly interpreted as a Lisp_Misc. */
+enum Lisp_Misc_Type
+ {
+ Lisp_Misc_Free = 0x5eab,
+ Lisp_Misc_Marker,
+ Lisp_Misc_Overlay,
+ Lisp_Misc_Save_Value,
+ Lisp_Misc_Finalizer,
+ /* Currently floats are not a misc type,
+ but let's define this in case we want to change that. */
+ Lisp_Misc_Float,
+ /* This is not a type code. It is for range checking. */
+ Lisp_Misc_Limit
+ };
+
+/* These are the types of forwarding objects used in the value slot
+ of symbols for special built-in variables whose value is stored in
+ C variables. */
+enum Lisp_Fwd_Type
+ {
+ Lisp_Fwd_Int, /* Fwd to a C `int' variable. */
+ Lisp_Fwd_Bool, /* Fwd to a C boolean var. */
+ Lisp_Fwd_Obj, /* Fwd to a C Lisp_Object variable. */
+ Lisp_Fwd_Buffer_Obj, /* Fwd to a Lisp_Object field of buffers. */
+ Lisp_Fwd_Kboard_Obj /* Fwd to a Lisp_Object field of
kboards. */
+ };
+
+/* If you want to define a new Lisp data type, here are some
+ instructions. See the thread at
+ http://lists.gnu.org/archive/html/emacs-devel/2012-10/msg00561.html
+ for more info.
+
+ First, there are already a couple of Lisp types that can be used if
+ your new type does not need to be exposed to Lisp programs nor
+ displayed to users. These are Lisp_Save_Value, a Lisp_Misc
+ subtype; and PVEC_OTHER, a kind of vectorlike object. The former
+ is suitable for temporarily stashing away pointers and integers in
+ a Lisp object. The latter is useful for vector-like Lisp objects
+ that need to be used as part of other objects, but which are never
+ shown to users or Lisp code (search for PVEC_OTHER in xterm.c for
+ an example).
+
+ These two types don't look pretty when printed, so they are
+ unsuitable for Lisp objects that can be exposed to users.
+
+ To define a new data type, add one more Lisp_Misc subtype or one
+ more pseudovector subtype. Pseudovectors are more suitable for
+ objects with several slots that need to support fast random access,
+ while Lisp_Misc types are for everything else. A pseudovector object
+ provides one or more slots for Lisp objects, followed by struct
+ members that are accessible only from C. A Lisp_Misc object is a
+ wrapper for a C struct that can contain anything you like.
+
+ Explicit freeing is discouraged for Lisp objects in general. But if
+ you really need to exploit this, use Lisp_Misc (check free_misc in
+ alloc.c to see why). There is no way to free a vectorlike object.
+
+ To add a new pseudovector type, extend the pvec_type enumeration;
+ to add a new Lisp_Misc, extend the Lisp_Misc_Type enumeration.
+
+ For a Lisp_Misc, you will also need to add your entry to union
+ Lisp_Misc (but make sure the first word has the same structure as
+ the others, starting with a 16-bit member of the Lisp_Misc_Type
+ enumeration and a 1-bit GC markbit) and make sure the overall size
+ of the union is not increased by your addition.
+
+ For a new pseudovector, it's highly desirable to limit the size
+ of your data type by VBLOCK_BYTES_MAX bytes (defined in alloc.c).
+ Otherwise you will need to change sweep_vectors (also in alloc.c).
+
+ Then you will need to add switch branches in print.c (in
+ print_object, to print your object, and possibly also in
+ print_preprocess) and to alloc.c, to mark your object (in
+ mark_object) and to free it (in gc_sweep). The latter is also the
+ right place to call any code specific to your data type that needs
+ to run when the object is recycled -- e.g., free any additional
+ resources allocated for it that are not Lisp objects. You can even
+ make a pointer to the function that frees the resources a slot in
+ your object -- this way, the same object could be used to represent
+ several disparate C structures. */
+
+#ifdef CHECK_LISP_OBJECT_TYPE
+
+typedef struct { EMACS_INT i; } Lisp_Object;
+
+#define LISP_INITIALLY(i) {i}
+
+#undef CHECK_LISP_OBJECT_TYPE
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = true };
+#else /* CHECK_LISP_OBJECT_TYPE */
+
+/* If a struct type is not wanted, define Lisp_Object as just a number. */
+
+typedef EMACS_INT Lisp_Object;
+#define LISP_INITIALLY(i) (i)
+enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = false };
+#endif /* CHECK_LISP_OBJECT_TYPE */
+
+#define LISP_INITIALLY_ZERO LISP_INITIALLY (0)
+
+/* Forward declarations. */
+
+/* Defined in this file. */
+union Lisp_Fwd;
+INLINE bool BOOL_VECTOR_P (Lisp_Object);
+INLINE bool BUFFER_OBJFWDP (union Lisp_Fwd *);
+INLINE bool BUFFERP (Lisp_Object);
+INLINE bool CHAR_TABLE_P (Lisp_Object);
+INLINE Lisp_Object CHAR_TABLE_REF_ASCII (Lisp_Object, ptrdiff_t);
+INLINE bool (CONSP) (Lisp_Object);
+INLINE bool (FLOATP) (Lisp_Object);
+INLINE bool functionp (Lisp_Object);
+INLINE bool (INTEGERP) (Lisp_Object);
+INLINE bool (MARKERP) (Lisp_Object);
+INLINE bool (MISCP) (Lisp_Object);
+INLINE bool (NILP) (Lisp_Object);
+INLINE bool OVERLAYP (Lisp_Object);
+INLINE bool PROCESSP (Lisp_Object);
+INLINE bool PSEUDOVECTORP (Lisp_Object, int);
+INLINE bool SAVE_VALUEP (Lisp_Object);
+INLINE bool FINALIZERP (Lisp_Object);
+INLINE void set_sub_char_table_contents (Lisp_Object, ptrdiff_t,
+ Lisp_Object);
+INLINE bool STRINGP (Lisp_Object);
+INLINE bool SUB_CHAR_TABLE_P (Lisp_Object);
+INLINE bool SUBRP (Lisp_Object);
+INLINE bool (SYMBOLP) (Lisp_Object);
+INLINE bool (VECTORLIKEP) (Lisp_Object);
+INLINE bool WINDOWP (Lisp_Object);
+INLINE bool TERMINALP (Lisp_Object);
+INLINE struct Lisp_Save_Value *XSAVE_VALUE (Lisp_Object);
+INLINE struct Lisp_Finalizer *XFINALIZER (Lisp_Object);
+INLINE struct Lisp_Symbol *(XSYMBOL) (Lisp_Object);
+INLINE void *(XUNTAG) (Lisp_Object, int);
+
+/* Defined in chartab.c. */
+extern Lisp_Object char_table_ref (Lisp_Object, int);
+extern void char_table_set (Lisp_Object, int, Lisp_Object);
+
+/* Defined in data.c. */
+extern _Noreturn Lisp_Object wrong_type_argument (Lisp_Object, Lisp_Object);
+extern _Noreturn void wrong_choice (Lisp_Object, Lisp_Object);
+
+/* Defined in emacs.c. */
+extern bool might_dump;
+/* True means Emacs has already been initialized.
+ Used during startup to detect startup of dumped Emacs. */
+extern bool initialized;
+
+/* Defined in floatfns.c. */
+extern double extract_float (Lisp_Object);
+
+
+/* Interned state of a symbol. */
+
+enum symbol_interned
+{
+ SYMBOL_UNINTERNED = 0,
+ SYMBOL_INTERNED = 1,
+ SYMBOL_INTERNED_IN_INITIAL_OBARRAY = 2
+};
+
+enum symbol_redirect
+{
+ SYMBOL_PLAINVAL = 4,
+ SYMBOL_VARALIAS = 1,
+ SYMBOL_LOCALIZED = 2,
+ SYMBOL_FORWARDED = 3
+};
+
+struct Lisp_Symbol
+{
+ bool_bf gcmarkbit : 1;
+
+ /* Indicates where the value can be found:
+ 0 : it's a plain var, the value is in the `value' field.
+ 1 : it's a varalias, the value is really in the `alias' symbol.
+ 2 : it's a localized var, the value is in the `blv' object.
+ 3 : it's a forwarding variable, the value is in `forward'. */
+ ENUM_BF (symbol_redirect) redirect : 3;
+
+ /* Non-zero means symbol is constant, i.e. changing its value
+ should signal an error. If the value is 3, then the var
+ can be changed, but only by `defconst'. */
+ unsigned constant : 2;
+
+ /* Interned state of the symbol. This is an enumerator from
+ enum symbol_interned. */
+ unsigned interned : 2;
+
+ /* True means that this variable has been explicitly declared
+ special (with `defvar' etc), and shouldn't be lexically bound. */
+ bool_bf declared_special : 1;
+
+ /* True if pointed to from purespace and hence can't be GC'd. */
+ bool_bf pinned : 1;
+
+ /* The symbol's name, as a Lisp string. */
+ Lisp_Object name;
+
+ /* Value of the symbol or Qunbound if unbound. Which alternative of the
+ union is used depends on the `redirect' field above. */
+ union {
+ Lisp_Object value;
+ struct Lisp_Symbol *alias;
+ struct Lisp_Buffer_Local_Value *blv;
+ union Lisp_Fwd *fwd;
+ } val;
+
+ /* Function value of the symbol or Qnil if not fboundp. */
+ Lisp_Object function;
+
+ /* The symbol's property list. */
+ Lisp_Object plist;
+
+ /* Next symbol in obarray bucket, if the symbol is interned. */
+ struct Lisp_Symbol *next;
+};
+
+/* Declare a Lisp-callable function. The MAXARGS parameter has the same
+ meaning as in the DEFUN macro, and is used to construct a prototype. */
+/* We can use the same trick as in the DEFUN macro to generate the
+ appropriate prototype. */
+#define EXFUN(fnname, maxargs) \
+ extern Lisp_Object fnname DEFUN_ARGS_ ## maxargs
+
+/* Note that the weird token-substitution semantics of ANSI C makes
+ this work for MANY and UNEVALLED. */
+#define DEFUN_ARGS_MANY (ptrdiff_t, Lisp_Object *)
+#define DEFUN_ARGS_UNEVALLED (Lisp_Object)
+#define DEFUN_ARGS_0 (void)
+#define DEFUN_ARGS_1 (Lisp_Object)
+#define DEFUN_ARGS_2 (Lisp_Object, Lisp_Object)
+#define DEFUN_ARGS_3 (Lisp_Object, Lisp_Object, Lisp_Object)
+#define DEFUN_ARGS_4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)
+#define DEFUN_ARGS_5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
+ Lisp_Object)
+#define DEFUN_ARGS_6 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
+ Lisp_Object, Lisp_Object)
+#define DEFUN_ARGS_7 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
+ Lisp_Object, Lisp_Object, Lisp_Object)
+#define DEFUN_ARGS_8 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
+ Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)
+
+/* Yield an integer that contains TAG along with PTR. */
+#define TAG_PTR(tag, ptr) \
+ ((USE_LSB_TAG ? (tag) : (EMACS_UINT) (tag) << VALBITS) + (uintptr_t) (ptr))
+
+/* Yield an integer that contains a symbol tag along with OFFSET.
+ OFFSET should be the offset in bytes from 'lispsym' to the symbol. */
+#define TAG_SYMOFFSET(offset) \
+ TAG_PTR (Lisp_Symbol, \
+ ((uintptr_t) (offset) >> (USE_LSB_TAG ? 0 : GCTYPEBITS)))
+
+/* XLI_BUILTIN_LISPSYM (iQwhatever) is equivalent to
+ XLI (builtin_lisp_symbol (Qwhatever)),
+ except the former expands to an integer constant expression. */
+#define XLI_BUILTIN_LISPSYM(iname) TAG_SYMOFFSET ((iname) * sizeof *lispsym)
+
+/* Declare extern constants for Lisp symbols. These can be helpful
+ when using a debugger like GDB, on older platforms where the debug
+ format does not represent C macros. */
+#define DEFINE_LISP_SYMBOL(name) \
+ DEFINE_GDB_SYMBOL_BEGIN (Lisp_Object, name) \
+ DEFINE_GDB_SYMBOL_END (LISP_INITIALLY (XLI_BUILTIN_LISPSYM (i##name)))
+
+/* By default, define macros for Qt, etc., as this leads to a bit
+ better performance in the core Emacs interpreter. A plugin can
+ define DEFINE_NON_NIL_Q_SYMBOL_MACROS to be false, to be portable to
+ other Emacs instances that assign different values to Qt, etc. */
+#ifndef DEFINE_NON_NIL_Q_SYMBOL_MACROS
+# define DEFINE_NON_NIL_Q_SYMBOL_MACROS true
+#endif
+
+#include "globals.h"
+
+/* Convert a Lisp_Object to the corresponding EMACS_INT and vice versa.
+ At the machine level, these operations are no-ops. */
+LISP_MACRO_DEFUN (XLI, EMACS_INT, (Lisp_Object o), (o))
+LISP_MACRO_DEFUN (XIL, Lisp_Object, (EMACS_INT i), (i))
+
+/* In the size word of a vector, this bit means the vector has been marked. */
+
+DEFINE_GDB_SYMBOL_BEGIN (ptrdiff_t, ARRAY_MARK_FLAG)
+# define ARRAY_MARK_FLAG PTRDIFF_MIN
+DEFINE_GDB_SYMBOL_END (ARRAY_MARK_FLAG)
+
+/* In the size word of a struct Lisp_Vector, this bit means it's really
+ some other vector-like object. */
+DEFINE_GDB_SYMBOL_BEGIN (ptrdiff_t, PSEUDOVECTOR_FLAG)
+# define PSEUDOVECTOR_FLAG (PTRDIFF_MAX - PTRDIFF_MAX / 2)
+DEFINE_GDB_SYMBOL_END (PSEUDOVECTOR_FLAG)
+
+/* In a pseudovector, the size field actually contains a word with one
+ PSEUDOVECTOR_FLAG bit set, and one of the following values extracted
+ with PVEC_TYPE_MASK to indicate the actual type. */
+enum pvec_type
+{
+ PVEC_NORMAL_VECTOR,
+ PVEC_FREE,
+ PVEC_PROCESS,
+ PVEC_FRAME,
+ PVEC_WINDOW,
+ PVEC_BOOL_VECTOR,
+ PVEC_BUFFER,
+ PVEC_HASH_TABLE,
+ PVEC_TERMINAL,
+ PVEC_WINDOW_CONFIGURATION,
+ PVEC_SUBR,
+ PVEC_OTHER,
+ /* These should be last, check internal_equal to see why. */
+ PVEC_COMPILED,
+ PVEC_CHAR_TABLE,
+ PVEC_SUB_CHAR_TABLE,
+ PVEC_FONT /* Should be last because it's used for range checking. */
+};
+
+enum More_Lisp_Bits
+ {
+ /* For convenience, we also store the number of elements in these bits.
+ Note that this size is not necessarily the memory-footprint size, but
+ only the number of Lisp_Object fields (that need to be traced by GC).
+ The distinction is used, e.g., by Lisp_Process, which places extra
+ non-Lisp_Object fields at the end of the structure. */
+ PSEUDOVECTOR_SIZE_BITS = 12,
+ PSEUDOVECTOR_SIZE_MASK = (1 << PSEUDOVECTOR_SIZE_BITS) - 1,
+
+ /* To calculate the memory footprint of the pseudovector, it's useful
+ to store the size of non-Lisp area in word_size units here. */
+ PSEUDOVECTOR_REST_BITS = 12,
+ PSEUDOVECTOR_REST_MASK = (((1 << PSEUDOVECTOR_REST_BITS) - 1)
+ << PSEUDOVECTOR_SIZE_BITS),
+
+ /* Used to extract pseudovector subtype information. */
+ PSEUDOVECTOR_AREA_BITS = PSEUDOVECTOR_SIZE_BITS + PSEUDOVECTOR_REST_BITS,
+ PVEC_TYPE_MASK = 0x3f << PSEUDOVECTOR_AREA_BITS
+ };
+
+/* These functions extract various sorts of values from a Lisp_Object.
+ For example, if tem is a Lisp_Object whose type is Lisp_Cons,
+ XCONS (tem) is the struct Lisp_Cons * pointing to the memory for
+ that cons. */
+
+/* Mask for the value (as opposed to the type bits) of a Lisp object. */
+DEFINE_GDB_SYMBOL_BEGIN (EMACS_INT, VALMASK)
+# define VALMASK (USE_LSB_TAG ? - (1 << GCTYPEBITS) : VAL_MAX)
+DEFINE_GDB_SYMBOL_END (VALMASK)
+
+/* Largest and smallest representable fixnum values. These are the C
+ values. They are macros for use in static initializers. */
+#define MOST_POSITIVE_FIXNUM (EMACS_INT_MAX >> INTTYPEBITS)
+#define MOST_NEGATIVE_FIXNUM (-1 - MOST_POSITIVE_FIXNUM)
+
+#if USE_LSB_TAG
+
+LISP_MACRO_DEFUN (make_number, Lisp_Object, (EMACS_INT n), (n))
+LISP_MACRO_DEFUN (XINT, EMACS_INT, (Lisp_Object a), (a))
+LISP_MACRO_DEFUN (XFASTINT, EMACS_INT, (Lisp_Object a), (a))
+LISP_MACRO_DEFUN (XSYMBOL, struct Lisp_Symbol *, (Lisp_Object a), (a))
+LISP_MACRO_DEFUN (XTYPE, enum Lisp_Type, (Lisp_Object a), (a))
+LISP_MACRO_DEFUN (XUNTAG, void *, (Lisp_Object a, int type), (a, type))
+
+#else /* ! USE_LSB_TAG */
+
+/* Although compiled only if ! USE_LSB_TAG, the following functions
+ also work when USE_LSB_TAG; this is to aid future maintenance when
+ the lisp_h_* macros are eventually removed. */
+
+/* Make a Lisp integer representing the value of the low order
+ bits of N. */
+INLINE Lisp_Object
+make_number (EMACS_INT n)
+{
+ EMACS_INT int0 = Lisp_Int0;
+ if (USE_LSB_TAG)
+ {
+ EMACS_UINT u = n;
+ n = u << INTTYPEBITS;
+ n += int0;
+ }
+ else
+ {
+ n &= INTMASK;
+ n += (int0 << VALBITS);
+ }
+ return XIL (n);
+}
+
+/* Extract A's value as a signed integer. */
+INLINE EMACS_INT
+XINT (Lisp_Object a)
+{
+ EMACS_INT i = XLI (a);
+ if (! USE_LSB_TAG)
+ {
+ EMACS_UINT u = i;
+ i = u << INTTYPEBITS;
+ }
+ return i >> INTTYPEBITS;
+}
+
+/* Like XINT (A), but may be faster. A must be nonnegative.
+ If ! USE_LSB_TAG, this takes advantage of the fact that Lisp
+ integers have zero-bits in their tags. */
+INLINE EMACS_INT
+XFASTINT (Lisp_Object a)
+{
+ EMACS_INT int0 = Lisp_Int0;
+ EMACS_INT n = USE_LSB_TAG ? XINT (a) : XLI (a) - (int0 << VALBITS);
+ eassert (0 <= n);
+ return n;
+}
+
+/* Extract A's value as a symbol. */
+INLINE struct Lisp_Symbol *
+XSYMBOL (Lisp_Object a)
+{
+ uintptr_t i = (uintptr_t) XUNTAG (a, Lisp_Symbol);
+ if (! USE_LSB_TAG)
+ i <<= GCTYPEBITS;
+ void *p = (char *) lispsym + i;
+ return p;
+}
+
+/* Extract A's type. */
+INLINE enum Lisp_Type
+XTYPE (Lisp_Object a)
+{
+ EMACS_UINT i = XLI (a);
+ return USE_LSB_TAG ? i & ~VALMASK : i >> VALBITS;
+}
+
+/* Extract A's pointer value, assuming A's type is TYPE. */
+INLINE void *
+XUNTAG (Lisp_Object a, int type)
+{
+ intptr_t i = USE_LSB_TAG ? XLI (a) - type : XLI (a) & VALMASK;
+ return (void *) i;
+}
+
+#endif /* ! USE_LSB_TAG */
+
+/* Extract the pointer hidden within A. */
+LISP_MACRO_DEFUN (XPNTR, void *, (Lisp_Object a), (a))
+
+/* Extract A's value as an unsigned integer. */
+INLINE EMACS_UINT
+XUINT (Lisp_Object a)
+{
+ EMACS_UINT i = XLI (a);
+ return USE_LSB_TAG ? i >> INTTYPEBITS : i & INTMASK;
+}
+
+/* Return A's (Lisp-integer sized) hash. Happens to be like XUINT
+ right now, but XUINT should only be applied to objects we know are
+ integers. */
+LISP_MACRO_DEFUN (XHASH, EMACS_INT, (Lisp_Object a), (a))
+
+/* Like make_number (N), but may be faster. N must be in nonnegative range.
*/
+INLINE Lisp_Object
+make_natnum (EMACS_INT n)
+{
+ eassert (0 <= n && n <= MOST_POSITIVE_FIXNUM);
+ EMACS_INT int0 = Lisp_Int0;
+ return USE_LSB_TAG ? make_number (n) : XIL (n + (int0 << VALBITS));
+}
+
+/* Return true if X and Y are the same object. */
+LISP_MACRO_DEFUN (EQ, bool, (Lisp_Object x, Lisp_Object y), (x, y))
+
+/* Value is true if I doesn't fit into a Lisp fixnum. It is
+ written this way so that it also works if I is of unsigned
+ type or if I is a NaN. */
+
+#define FIXNUM_OVERFLOW_P(i) \
+ (! ((0 <= (i) || MOST_NEGATIVE_FIXNUM <= (i)) && (i) <=
MOST_POSITIVE_FIXNUM))
+
+INLINE ptrdiff_t
+clip_to_bounds (ptrdiff_t lower, EMACS_INT num, ptrdiff_t upper)
+{
+ return num < lower ? lower : num <= upper ? num : upper;
+}
+
+
+/* Extract a value or address from a Lisp_Object. */
+
+LISP_MACRO_DEFUN (XCONS, struct Lisp_Cons *, (Lisp_Object a), (a))
+
+INLINE struct Lisp_Vector *
+XVECTOR (Lisp_Object a)
+{
+ eassert (VECTORLIKEP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct Lisp_String *
+XSTRING (Lisp_Object a)
+{
+ eassert (STRINGP (a));
+ return XUNTAG (a, Lisp_String);
+}
+
+/* The index of the C-defined Lisp symbol SYM.
+ This can be used in a static initializer. */
+#define SYMBOL_INDEX(sym) i##sym
+
+INLINE struct Lisp_Float *
+XFLOAT (Lisp_Object a)
+{
+ eassert (FLOATP (a));
+ return XUNTAG (a, Lisp_Float);
+}
+
+/* Pseudovector types. */
+
+INLINE struct Lisp_Process *
+XPROCESS (Lisp_Object a)
+{
+ eassert (PROCESSP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct window *
+XWINDOW (Lisp_Object a)
+{
+ eassert (WINDOWP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct terminal *
+XTERMINAL (Lisp_Object a)
+{
+ eassert (TERMINALP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct Lisp_Subr *
+XSUBR (Lisp_Object a)
+{
+ eassert (SUBRP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct buffer *
+XBUFFER (Lisp_Object a)
+{
+ eassert (BUFFERP (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct Lisp_Char_Table *
+XCHAR_TABLE (Lisp_Object a)
+{
+ eassert (CHAR_TABLE_P (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct Lisp_Sub_Char_Table *
+XSUB_CHAR_TABLE (Lisp_Object a)
+{
+ eassert (SUB_CHAR_TABLE_P (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+INLINE struct Lisp_Bool_Vector *
+XBOOL_VECTOR (Lisp_Object a)
+{
+ eassert (BOOL_VECTOR_P (a));
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+/* Construct a Lisp_Object from a value or address. */
+
+INLINE Lisp_Object
+make_lisp_ptr (void *ptr, enum Lisp_Type type)
+{
+ Lisp_Object a = XIL (TAG_PTR (type, ptr));
+ eassert (XTYPE (a) == type && XUNTAG (a, type) == ptr);
+ return a;
+}
+
+INLINE Lisp_Object
+make_lisp_symbol (struct Lisp_Symbol *sym)
+{
+ Lisp_Object a = XIL (TAG_SYMOFFSET ((char *) sym - (char *) lispsym));
+ eassert (XSYMBOL (a) == sym);
+ return a;
+}
+
+INLINE Lisp_Object
+builtin_lisp_symbol (int index)
+{
+ return make_lisp_symbol (lispsym + index);
+}
+
+#define XSETINT(a, b) ((a) = make_number (b))
+#define XSETFASTINT(a, b) ((a) = make_natnum (b))
+#define XSETCONS(a, b) ((a) = make_lisp_ptr (b, Lisp_Cons))
+#define XSETVECTOR(a, b) ((a) = make_lisp_ptr (b, Lisp_Vectorlike))
+#define XSETSTRING(a, b) ((a) = make_lisp_ptr (b, Lisp_String))
+#define XSETSYMBOL(a, b) ((a) = make_lisp_symbol (b))
+#define XSETFLOAT(a, b) ((a) = make_lisp_ptr (b, Lisp_Float))
+#define XSETMISC(a, b) ((a) = make_lisp_ptr (b, Lisp_Misc))
+
+/* Pseudovector types. */
+
+#define XSETPVECTYPE(v, code) \
+ ((v)->header.size |= PSEUDOVECTOR_FLAG | ((code) << PSEUDOVECTOR_AREA_BITS))
+#define XSETPVECTYPESIZE(v, code, lispsize, restsize) \
+ ((v)->header.size = (PSEUDOVECTOR_FLAG \
+ | ((code) << PSEUDOVECTOR_AREA_BITS) \
+ | ((restsize) << PSEUDOVECTOR_SIZE_BITS) \
+ | (lispsize)))
+
+/* The cast to struct vectorlike_header * avoids aliasing issues. */
+#define XSETPSEUDOVECTOR(a, b, code) \
+ XSETTYPED_PSEUDOVECTOR (a, b, \
+ (((struct vectorlike_header *) \
+ XUNTAG (a, Lisp_Vectorlike)) \
+ ->size), \
+ code)
+#define XSETTYPED_PSEUDOVECTOR(a, b, size, code) \
+ (XSETVECTOR (a, b), \
+ eassert ((size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK)) \
+ == (PSEUDOVECTOR_FLAG | (code << PSEUDOVECTOR_AREA_BITS))))
+
+#define XSETWINDOW_CONFIGURATION(a, b) \
+ (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW_CONFIGURATION))
+#define XSETPROCESS(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_PROCESS))
+#define XSETWINDOW(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_WINDOW))
+#define XSETTERMINAL(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_TERMINAL))
+#define XSETSUBR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUBR))
+#define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_COMPILED))
+#define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER))
+#define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_CHAR_TABLE))
+#define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BOOL_VECTOR))
+#define XSETSUB_CHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_SUB_CHAR_TABLE))
+
+/* Efficiently convert a pointer to a Lisp object and back. The
+ pointer is represented as a Lisp integer, so the garbage collector
+ does not know about it. The pointer should not have both Lisp_Int1
+ bits set, which makes this conversion inherently unportable. */
+
+INLINE void *
+XINTPTR (Lisp_Object a)
+{
+ return XUNTAG (a, Lisp_Int0);
+}
+
+INLINE Lisp_Object
+make_pointer_integer (void *p)
+{
+ Lisp_Object a = XIL (TAG_PTR (Lisp_Int0, p));
+ eassert (INTEGERP (a) && XINTPTR (a) == p);
+ return a;
+}
+
+/* Type checking. */
+
+LISP_MACRO_DEFUN_VOID (CHECK_TYPE,
+ (int ok, Lisp_Object predicate, Lisp_Object x),
+ (ok, predicate, x))
+
+/* See the macros in intervals.h. */
+
+typedef struct interval *INTERVAL;
+
+struct GCALIGNED Lisp_Cons
+ {
+ /* Car of this cons cell. */
+ Lisp_Object car;
+
+ union
+ {
+ /* Cdr of this cons cell. */
+ Lisp_Object cdr;
+
+ /* Used to chain conses on a free list. */
+ struct Lisp_Cons *chain;
+ } u;
+ };
+
+/* Take the car or cdr of something known to be a cons cell. */
+/* The _addr functions shouldn't be used outside of the minimal set
+ of code that has to know what a cons cell looks like. Other code not
+ part of the basic lisp implementation should assume that the car and cdr
+ fields are not accessible. (What if we want to switch to
+ a copying collector someday? Cached cons cell field addresses may be
+ invalidated at arbitrary points.) */
+INLINE Lisp_Object *
+xcar_addr (Lisp_Object c)
+{
+ return &XCONS (c)->car;
+}
+INLINE Lisp_Object *
+xcdr_addr (Lisp_Object c)
+{
+ return &XCONS (c)->u.cdr;
+}
+
+/* Use these from normal code. */
+LISP_MACRO_DEFUN (XCAR, Lisp_Object, (Lisp_Object c), (c))
+LISP_MACRO_DEFUN (XCDR, Lisp_Object, (Lisp_Object c), (c))
+
+/* Use these to set the fields of a cons cell.
+
+ Note that both arguments may refer to the same object, so 'n'
+ should not be read after 'c' is first modified. */
+INLINE void
+XSETCAR (Lisp_Object c, Lisp_Object n)
+{
+ *xcar_addr (c) = n;
+}
+INLINE void
+XSETCDR (Lisp_Object c, Lisp_Object n)
+{
+ *xcdr_addr (c) = n;
+}
+
+/* Take the car or cdr of something whose type is not known. */
+INLINE Lisp_Object
+CAR (Lisp_Object c)
+{
+ return (CONSP (c) ? XCAR (c)
+ : NILP (c) ? Qnil
+ : wrong_type_argument (Qlistp, c));
+}
+INLINE Lisp_Object
+CDR (Lisp_Object c)
+{
+ return (CONSP (c) ? XCDR (c)
+ : NILP (c) ? Qnil
+ : wrong_type_argument (Qlistp, c));
+}
+
+/* Take the car or cdr of something whose type is not known. */
+INLINE Lisp_Object
+CAR_SAFE (Lisp_Object c)
+{
+ return CONSP (c) ? XCAR (c) : Qnil;
+}
+INLINE Lisp_Object
+CDR_SAFE (Lisp_Object c)
+{
+ return CONSP (c) ? XCDR (c) : Qnil;
+}
+
+/* In a string or vector, the sign bit of the `size' is the gc mark bit. */
+
+struct GCALIGNED Lisp_String
+ {
+ ptrdiff_t size;
+ ptrdiff_t size_byte;
+ INTERVAL intervals; /* Text properties in this string. */
+ unsigned char *data;
+ };
+
+/* True if STR is a multibyte string. */
+INLINE bool
+STRING_MULTIBYTE (Lisp_Object str)
+{
+ return 0 <= XSTRING (str)->size_byte;
+}
+
+/* An upper bound on the number of bytes in a Lisp string, not
+ counting the terminating null. This a tight enough bound to
+ prevent integer overflow errors that would otherwise occur during
+ string size calculations. A string cannot contain more bytes than
+ a fixnum can represent, nor can it be so long that C pointer
+ arithmetic stops working on the string plus its terminating null.
+ Although the actual size limit (see STRING_BYTES_MAX in alloc.c)
+ may be a bit smaller than STRING_BYTES_BOUND, calculating it here
+ would expose alloc.c internal details that we'd rather keep
+ private.
+
+ This is a macro for use in static initializers. The cast to
+ ptrdiff_t ensures that the macro is signed. */
+#define STRING_BYTES_BOUND \
+ ((ptrdiff_t) min (MOST_POSITIVE_FIXNUM, min (SIZE_MAX, PTRDIFF_MAX) - 1))
+
+/* Mark STR as a unibyte string. */
+#define STRING_SET_UNIBYTE(STR) \
+ do { \
+ if (EQ (STR, empty_multibyte_string)) \
+ (STR) = empty_unibyte_string; \
+ else \
+ XSTRING (STR)->size_byte = -1; \
+ } while (false)
+
+/* Mark STR as a multibyte string. Assure that STR contains only
+ ASCII characters in advance. */
+#define STRING_SET_MULTIBYTE(STR) \
+ do { \
+ if (EQ (STR, empty_unibyte_string)) \
+ (STR) = empty_multibyte_string; \
+ else \
+ XSTRING (STR)->size_byte = XSTRING (STR)->size; \
+ } while (false)
+
+/* Convenience functions for dealing with Lisp strings. */
+
+INLINE unsigned char *
+SDATA (Lisp_Object string)
+{
+ return XSTRING (string)->data;
+}
+INLINE char *
+SSDATA (Lisp_Object string)
+{
+ /* Avoid "differ in sign" warnings. */
+ return (char *) SDATA (string);
+}
+INLINE unsigned char
+SREF (Lisp_Object string, ptrdiff_t index)
+{
+ return SDATA (string)[index];
+}
+INLINE void
+SSET (Lisp_Object string, ptrdiff_t index, unsigned char new)
+{
+ SDATA (string)[index] = new;
+}
+INLINE ptrdiff_t
+SCHARS (Lisp_Object string)
+{
+ return XSTRING (string)->size;
+}
+
+#ifdef GC_CHECK_STRING_BYTES
+extern ptrdiff_t string_bytes (struct Lisp_String *);
+#endif
+INLINE ptrdiff_t
+STRING_BYTES (struct Lisp_String *s)
+{
+#ifdef GC_CHECK_STRING_BYTES
+ return string_bytes (s);
+#else
+ return s->size_byte < 0 ? s->size : s->size_byte;
+#endif
+}
+
+INLINE ptrdiff_t
+SBYTES (Lisp_Object string)
+{
+ return STRING_BYTES (XSTRING (string));
+}
+INLINE void
+STRING_SET_CHARS (Lisp_Object string, ptrdiff_t newsize)
+{
+ XSTRING (string)->size = newsize;
+}
+
+/* Header of vector-like objects. This documents the layout constraints on
+ vectors and pseudovectors (objects of PVEC_xxx subtype). It also prevents
+ compilers from being fooled by Emacs's type punning: XSETPSEUDOVECTOR
+ and PSEUDOVECTORP cast their pointers to struct vectorlike_header *,
+ because when two such pointers potentially alias, a compiler won't
+ incorrectly reorder loads and stores to their size fields. See
+ Bug#8546. */
+struct vectorlike_header
+ {
+ /* The only field contains various pieces of information:
+ - The MSB (ARRAY_MARK_FLAG) holds the gcmarkbit.
+ - The next bit (PSEUDOVECTOR_FLAG) indicates whether this is a plain
+ vector (0) or a pseudovector (1).
+ - If PSEUDOVECTOR_FLAG is 0, the rest holds the size (number
+ of slots) of the vector.
+ - If PSEUDOVECTOR_FLAG is 1, the rest is subdivided into three fields:
+ - a) pseudovector subtype held in PVEC_TYPE_MASK field;
+ - b) number of Lisp_Objects slots at the beginning of the object
+ held in PSEUDOVECTOR_SIZE_MASK field. These objects are always
+ traced by the GC;
+ - c) size of the rest fields held in PSEUDOVECTOR_REST_MASK and
+ measured in word_size units. Rest fields may also include
+ Lisp_Objects, but these objects usually needs some special treatment
+ during GC.
+ There are some exceptions. For PVEC_FREE, b) is always zero. For
+ PVEC_BOOL_VECTOR and PVEC_SUBR, both b) and c) are always zero.
+ Current layout limits the pseudovectors to 63 PVEC_xxx subtypes,
+ 4095 Lisp_Objects in GC-ed area and 4095 word-sized other slots. */
+ ptrdiff_t size;
+ };
+
+/* A regular vector is just a header plus an array of Lisp_Objects. */
+
+struct Lisp_Vector
+ {
+ struct vectorlike_header header;
+ Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER];
+ };
+
+/* C11 prohibits alignof (struct Lisp_Vector), so compute it manually. */
+enum
+ {
+ ALIGNOF_STRUCT_LISP_VECTOR
+ = alignof (union { struct vectorlike_header a; Lisp_Object b; })
+ };
+
+/* A boolvector is a kind of vectorlike, with contents like a string. */
+
+struct Lisp_Bool_Vector
+ {
+ /* HEADER.SIZE is the vector's size field. It doesn't have the real size,
+ just the subtype information. */
+ struct vectorlike_header header;
+ /* This is the size in bits. */
+ EMACS_INT size;
+ /* The actual bits, packed into bytes.
+ Zeros fill out the last word if needed.
+ The bits are in little-endian order in the bytes, and
+ the bytes are in little-endian order in the words. */
+ bits_word data[FLEXIBLE_ARRAY_MEMBER];
+ };
+
+INLINE EMACS_INT
+bool_vector_size (Lisp_Object a)
+{
+ EMACS_INT size = XBOOL_VECTOR (a)->size;
+ eassume (0 <= size);
+ return size;
+}
+
+INLINE bits_word *
+bool_vector_data (Lisp_Object a)
+{
+ return XBOOL_VECTOR (a)->data;
+}
+
+INLINE unsigned char *
+bool_vector_uchar_data (Lisp_Object a)
+{
+ return (unsigned char *) bool_vector_data (a);
+}
+
+/* The number of data words and bytes in a bool vector with SIZE bits. */
+
+INLINE EMACS_INT
+bool_vector_words (EMACS_INT size)
+{
+ eassume (0 <= size && size <= EMACS_INT_MAX - (BITS_PER_BITS_WORD - 1));
+ return (size + BITS_PER_BITS_WORD - 1) / BITS_PER_BITS_WORD;
+}
+
+INLINE EMACS_INT
+bool_vector_bytes (EMACS_INT size)
+{
+ eassume (0 <= size && size <= EMACS_INT_MAX - (BITS_PER_BITS_WORD - 1));
+ return (size + BOOL_VECTOR_BITS_PER_CHAR - 1) / BOOL_VECTOR_BITS_PER_CHAR;
+}
+
+/* True if A's Ith bit is set. */
+
+INLINE bool
+bool_vector_bitref (Lisp_Object a, EMACS_INT i)
+{
+ eassume (0 <= i && i < bool_vector_size (a));
+ return !! (bool_vector_uchar_data (a)[i / BOOL_VECTOR_BITS_PER_CHAR]
+ & (1 << (i % BOOL_VECTOR_BITS_PER_CHAR)));
+}
+
+INLINE Lisp_Object
+bool_vector_ref (Lisp_Object a, EMACS_INT i)
+{
+ return bool_vector_bitref (a, i) ? Qt : Qnil;
+}
+
+/* Set A's Ith bit to B. */
+
+INLINE void
+bool_vector_set (Lisp_Object a, EMACS_INT i, bool b)
+{
+ unsigned char *addr;
+
+ eassume (0 <= i && i < bool_vector_size (a));
+ addr = &bool_vector_uchar_data (a)[i / BOOL_VECTOR_BITS_PER_CHAR];
+
+ if (b)
+ *addr |= 1 << (i % BOOL_VECTOR_BITS_PER_CHAR);
+ else
+ *addr &= ~ (1 << (i % BOOL_VECTOR_BITS_PER_CHAR));
+}
+
+/* Some handy constants for calculating sizes
+ and offsets, mostly of vectorlike objects. */
+
+enum
+ {
+ header_size = offsetof (struct Lisp_Vector, contents),
+ bool_header_size = offsetof (struct Lisp_Bool_Vector, data),
+ word_size = sizeof (Lisp_Object)
+ };
+
+/* Conveniences for dealing with Lisp arrays. */
+
+INLINE Lisp_Object
+AREF (Lisp_Object array, ptrdiff_t idx)
+{
+ return XVECTOR (array)->contents[idx];
+}
+
+INLINE Lisp_Object *
+aref_addr (Lisp_Object array, ptrdiff_t idx)
+{
+ return & XVECTOR (array)->contents[idx];
+}
+
+INLINE ptrdiff_t
+ASIZE (Lisp_Object array)
+{
+ return XVECTOR (array)->header.size;
+}
+
+INLINE void
+ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Object val)
+{
+ eassert (0 <= idx && idx < ASIZE (array));
+ XVECTOR (array)->contents[idx] = val;
+}
+
+INLINE void
+gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Object val)
+{
+ /* Like ASET, but also can be used in the garbage collector:
+ sweep_weak_table calls set_hash_key etc. while the table is marked. */
+ eassert (0 <= idx && idx < (ASIZE (array) & ~ARRAY_MARK_FLAG));
+ XVECTOR (array)->contents[idx] = val;
+}
+
+/* True, since Qnil's representation is zero. Every place in the code
+ that assumes Qnil is zero should verify (NIL_IS_ZERO), to make it easy
+ to find such assumptions later if we change Qnil to be nonzero. */
+enum { NIL_IS_ZERO = XLI_BUILTIN_LISPSYM (iQnil) == 0 };
+
+/* Clear the object addressed by P, with size NBYTES, so that all its
+ bytes are zero and all its Lisp values are nil. */
+INLINE void
+memclear (void *p, ptrdiff_t nbytes)
+{
+ eassert (0 <= nbytes);
+ verify (NIL_IS_ZERO);
+ /* Since Qnil is zero, memset suffices. */
+ memset (p, 0, nbytes);
+}
+
+/* If a struct is made to look like a vector, this macro returns the length
+ of the shortest vector that would hold that struct. */
+
+#define VECSIZE(type) \
+ ((sizeof (type) - header_size + word_size - 1) / word_size)
+
+/* Like VECSIZE, but used when the pseudo-vector has non-Lisp_Object fields
+ at the end and we need to compute the number of Lisp_Object fields (the
+ ones that the GC needs to trace). */
+
+#define PSEUDOVECSIZE(type, nonlispfield) \
+ ((offsetof (type, nonlispfield) - header_size) / word_size)
+
+/* Compute A OP B, using the unsigned comparison operator OP. A and B
+ should be integer expressions. This is not the same as
+ mathematical comparison; for example, UNSIGNED_CMP (0, <, -1)
+ returns true. For efficiency, prefer plain unsigned comparison if A
+ and B's sizes both fit (after integer promotion). */
+#define UNSIGNED_CMP(a, op, b) \
+ (max (sizeof ((a) + 0), sizeof ((b) + 0)) <= sizeof (unsigned) \
+ ? ((a) + (unsigned) 0) op ((b) + (unsigned) 0) \
+ : ((a) + (uintmax_t) 0) op ((b) + (uintmax_t) 0))
+
+/* True iff C is an ASCII character. */
+#define ASCII_CHAR_P(c) UNSIGNED_CMP (c, <, 0x80)
+
+/* A char-table is a kind of vectorlike, with contents are like a
+ vector but with a few other slots. For some purposes, it makes
+ sense to handle a char-table with type struct Lisp_Vector. An
+ element of a char table can be any Lisp objects, but if it is a sub
+ char-table, we treat it a table that contains information of a
+ specific range of characters. A sub char-table is like a vector but
+ with two integer fields between the header and Lisp data, which means
+ that it has to be marked with some precautions (see mark_char_table
+ in alloc.c). A sub char-table appears only in an element of a char-table,
+ and there's no way to access it directly from Emacs Lisp program. */
+
+enum CHARTAB_SIZE_BITS
+ {
+ CHARTAB_SIZE_BITS_0 = 6,
+ CHARTAB_SIZE_BITS_1 = 4,
+ CHARTAB_SIZE_BITS_2 = 5,
+ CHARTAB_SIZE_BITS_3 = 7
+ };
+
+extern const int chartab_size[4];
+
+struct Lisp_Char_Table
+ {
+ /* HEADER.SIZE is the vector's size field, which also holds the
+ pseudovector type information. It holds the size, too.
+ The size counts the defalt, parent, purpose, ascii,
+ contents, and extras slots. */
+ struct vectorlike_header header;
+
+ /* This holds a default value,
+ which is used whenever the value for a specific character is nil. */
+ Lisp_Object defalt;
+
+ /* This points to another char table, which we inherit from when the
+ value for a specific character is nil. The `defalt' slot takes
+ precedence over this. */
+ Lisp_Object parent;
+
+ /* This is a symbol which says what kind of use this char-table is
+ meant for. */
+ Lisp_Object purpose;
+
+ /* The bottom sub char-table for characters of the range 0..127. It
+ is nil if none of ASCII character has a specific value. */
+ Lisp_Object ascii;
+
+ Lisp_Object contents[(1 << CHARTAB_SIZE_BITS_0)];
+
+ /* These hold additional data. It is a vector. */
+ Lisp_Object extras[FLEXIBLE_ARRAY_MEMBER];
+ };
+
+struct Lisp_Sub_Char_Table
+ {
+ /* HEADER.SIZE is the vector's size field, which also holds the
+ pseudovector type information. It holds the size, too. */
+ struct vectorlike_header header;
+
+ /* Depth of this sub char-table. It should be 1, 2, or 3. A sub
+ char-table of depth 1 contains 16 elements, and each element
+ covers 4096 (128*32) characters. A sub char-table of depth 2
+ contains 32 elements, and each element covers 128 characters. A
+ sub char-table of depth 3 contains 128 elements, and each element
+ is for one character. */
+ int depth;
+
+ /* Minimum character covered by the sub char-table. */
+ int min_char;
+
+ /* Use set_sub_char_table_contents to set this. */
+ Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER];
+ };
+
+INLINE Lisp_Object
+CHAR_TABLE_REF_ASCII (Lisp_Object ct, ptrdiff_t idx)
+{
+ struct Lisp_Char_Table *tbl = NULL;
+ Lisp_Object val;
+ do
+ {
+ tbl = tbl ? XCHAR_TABLE (tbl->parent) : XCHAR_TABLE (ct);
+ val = (! SUB_CHAR_TABLE_P (tbl->ascii) ? tbl->ascii
+ : XSUB_CHAR_TABLE (tbl->ascii)->contents[idx]);
+ if (NILP (val))
+ val = tbl->defalt;
+ }
+ while (NILP (val) && ! NILP (tbl->parent));
+
+ return val;
+}
+
+/* Almost equivalent to Faref (CT, IDX) with optimization for ASCII
+ characters. Do not check validity of CT. */
+INLINE Lisp_Object
+CHAR_TABLE_REF (Lisp_Object ct, int idx)
+{
+ return (ASCII_CHAR_P (idx)
+ ? CHAR_TABLE_REF_ASCII (ct, idx)
+ : char_table_ref (ct, idx));
+}
+
+/* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and
+ 8-bit European characters. Do not check validity of CT. */
+INLINE void
+CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Object val)
+{
+ if (ASCII_CHAR_P (idx) && SUB_CHAR_TABLE_P (XCHAR_TABLE (ct)->ascii))
+ set_sub_char_table_contents (XCHAR_TABLE (ct)->ascii, idx, val);
+ else
+ char_table_set (ct, idx, val);
+}
+
+/* This structure describes a built-in function.
+ It is generated by the DEFUN macro only.
+ defsubr makes it into a Lisp object. */
+
+struct Lisp_Subr
+ {
+ struct vectorlike_header header;
+ union {
+ Lisp_Object (*a0) (void);
+ Lisp_Object (*a1) (Lisp_Object);
+ Lisp_Object (*a2) (Lisp_Object, Lisp_Object);
+ Lisp_Object (*a3) (Lisp_Object, Lisp_Object, Lisp_Object);
+ Lisp_Object (*a4) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+ Lisp_Object (*a5) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object);
+ Lisp_Object (*a6) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object);
+ Lisp_Object (*a7) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object, Lisp_Object);
+ Lisp_Object (*a8) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+ Lisp_Object (*aUNEVALLED) (Lisp_Object args);
+ Lisp_Object (*aMANY) (ptrdiff_t, Lisp_Object *);
+ } function;
+ short min_args, max_args;
+ const char *symbol_name;
+ const char *intspec;
+ const char *doc;
+ };
+
+enum char_table_specials
+ {
+ /* This is the number of slots that every char table must have. This
+ counts the ordinary slots and the top, defalt, parent, and purpose
+ slots. */
+ CHAR_TABLE_STANDARD_SLOTS = PSEUDOVECSIZE (struct Lisp_Char_Table, extras),
+
+ /* This is an index of first Lisp_Object field in Lisp_Sub_Char_Table
+ when the latter is treated as an ordinary Lisp_Vector. */
+ SUB_CHAR_TABLE_OFFSET = PSEUDOVECSIZE (struct Lisp_Sub_Char_Table,
contents)
+ };
+
+/* Return the number of "extra" slots in the char table CT. */
+
+INLINE int
+CHAR_TABLE_EXTRA_SLOTS (struct Lisp_Char_Table *ct)
+{
+ return ((ct->header.size & PSEUDOVECTOR_SIZE_MASK)
+ - CHAR_TABLE_STANDARD_SLOTS);
+}
+
+/* Make sure that sub char-table contents slot is where we think it is. */
+verify (offsetof (struct Lisp_Sub_Char_Table, contents)
+ == offsetof (struct Lisp_Vector, contents[SUB_CHAR_TABLE_OFFSET]));
+
+/***********************************************************************
+ Symbols
+ ***********************************************************************/
+
+/* Value is name of symbol. */
+
+LISP_MACRO_DEFUN (SYMBOL_VAL, Lisp_Object, (struct Lisp_Symbol *sym), (sym))
+
+INLINE struct Lisp_Symbol *
+SYMBOL_ALIAS (struct Lisp_Symbol *sym)
+{
+ eassert (sym->redirect == SYMBOL_VARALIAS);
+ return sym->val.alias;
+}
+INLINE struct Lisp_Buffer_Local_Value *
+SYMBOL_BLV (struct Lisp_Symbol *sym)
+{
+ eassert (sym->redirect == SYMBOL_LOCALIZED);
+ return sym->val.blv;
+}
+INLINE union Lisp_Fwd *
+SYMBOL_FWD (struct Lisp_Symbol *sym)
+{
+ eassert (sym->redirect == SYMBOL_FORWARDED);
+ return sym->val.fwd;
+}
+
+LISP_MACRO_DEFUN_VOID (SET_SYMBOL_VAL,
+ (struct Lisp_Symbol *sym, Lisp_Object v), (sym, v))
+
+INLINE void
+SET_SYMBOL_ALIAS (struct Lisp_Symbol *sym, struct Lisp_Symbol *v)
+{
+ eassert (sym->redirect == SYMBOL_VARALIAS);
+ sym->val.alias = v;
+}
+INLINE void
+SET_SYMBOL_BLV (struct Lisp_Symbol *sym, struct Lisp_Buffer_Local_Value *v)
+{
+ eassert (sym->redirect == SYMBOL_LOCALIZED);
+ sym->val.blv = v;
+}
+INLINE void
+SET_SYMBOL_FWD (struct Lisp_Symbol *sym, union Lisp_Fwd *v)
+{
+ eassert (sym->redirect == SYMBOL_FORWARDED);
+ sym->val.fwd = v;
+}
+
+INLINE Lisp_Object
+SYMBOL_NAME (Lisp_Object sym)
+{
+ return XSYMBOL (sym)->name;
+}
+
+/* Value is true if SYM is an interned symbol. */
+
+INLINE bool
+SYMBOL_INTERNED_P (Lisp_Object sym)
+{
+ return XSYMBOL (sym)->interned != SYMBOL_UNINTERNED;
+}
+
+/* Value is true if SYM is interned in initial_obarray. */
+
+INLINE bool
+SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object sym)
+{
+ return XSYMBOL (sym)->interned == SYMBOL_INTERNED_IN_INITIAL_OBARRAY;
+}
+
+/* Value is non-zero if symbol is considered a constant, i.e. its
+ value cannot be changed (there is an exception for keyword symbols,
+ whose value can be set to the keyword symbol itself). */
+
+LISP_MACRO_DEFUN (SYMBOL_CONSTANT_P, int, (Lisp_Object sym), (sym))
+
+/* Placeholder for make-docfile to process. The actual symbol
+ definition is done by lread.c's defsym. */
+#define DEFSYM(sym, name) /* empty */
+
+
+/***********************************************************************
+ Hash Tables
+ ***********************************************************************/
+
+/* The structure of a Lisp hash table. */
+
+struct hash_table_test
+{
+ /* Name of the function used to compare keys. */
+ Lisp_Object name;
+
+ /* User-supplied hash function, or nil. */
+ Lisp_Object user_hash_function;
+
+ /* User-supplied key comparison function, or nil. */
+ Lisp_Object user_cmp_function;
+
+ /* C function to compare two keys. */
+ bool (*cmpfn) (struct hash_table_test *t, Lisp_Object, Lisp_Object);
+
+ /* C function to compute hash code. */
+ EMACS_UINT (*hashfn) (struct hash_table_test *t, Lisp_Object);
+};
+
+struct Lisp_Hash_Table
+{
+ /* This is for Lisp; the hash table code does not refer to it. */
+ struct vectorlike_header header;
+
+ /* Nil if table is non-weak. Otherwise a symbol describing the
+ weakness of the table. */
+ Lisp_Object weak;
+
+ /* When the table is resized, and this is an integer, compute the
+ new size by adding this to the old size. If a float, compute the
+ new size by multiplying the old size with this factor. */
+ Lisp_Object rehash_size;
+
+ /* Resize hash table when number of entries/ table size is >= this
+ ratio, a float. */
+ Lisp_Object rehash_threshold;
+
+ /* Vector of hash codes. If hash[I] is nil, this means that the
+ I-th entry is unused. */
+ Lisp_Object hash;
+
+ /* Vector used to chain entries. If entry I is free, next[I] is the
+ entry number of the next free item. If entry I is non-free,
+ next[I] is the index of the next entry in the collision chain. */
+ Lisp_Object next;
+
+ /* Index of first free entry in free list. */
+ Lisp_Object next_free;
+
+ /* Bucket vector. A non-nil entry is the index of the first item in
+ a collision chain. This vector's size can be larger than the
+ hash table size to reduce collisions. */
+ Lisp_Object index;
+
+ /* Only the fields above are traced normally by the GC. The ones below
+ `count' are special and are either ignored by the GC or traced in
+ a special way (e.g. because of weakness). */
+
+ /* Number of key/value entries in the table. */
+ ptrdiff_t count;
+
+ /* Vector of keys and values. The key of item I is found at index
+ 2 * I, the value is found at index 2 * I + 1.
+ This is gc_marked specially if the table is weak. */
+ Lisp_Object key_and_value;
+
+ /* The comparison and hash functions. */
+ struct hash_table_test test;
+
+ /* Next weak hash table if this is a weak hash table. The head
+ of the list is in weak_hash_tables. */
+ struct Lisp_Hash_Table *next_weak;
+};
+
+
+INLINE struct Lisp_Hash_Table *
+XHASH_TABLE (Lisp_Object a)
+{
+ return XUNTAG (a, Lisp_Vectorlike);
+}
+
+#define XSET_HASH_TABLE(VAR, PTR) \
+ (XSETPSEUDOVECTOR (VAR, PTR, PVEC_HASH_TABLE))
+
+INLINE bool
+HASH_TABLE_P (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_HASH_TABLE);
+}
+
+/* Value is the key part of entry IDX in hash table H. */
+INLINE Lisp_Object
+HASH_KEY (struct Lisp_Hash_Table *h, ptrdiff_t idx)
+{
+ return AREF (h->key_and_value, 2 * idx);
+}
+
+/* Value is the value part of entry IDX in hash table H. */
+INLINE Lisp_Object
+HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t idx)
+{
+ return AREF (h->key_and_value, 2 * idx + 1);
+}
+
+/* Value is the index of the next entry following the one at IDX
+ in hash table H. */
+INLINE Lisp_Object
+HASH_NEXT (struct Lisp_Hash_Table *h, ptrdiff_t idx)
+{
+ return AREF (h->next, idx);
+}
+
+/* Value is the hash code computed for entry IDX in hash table H. */
+INLINE Lisp_Object
+HASH_HASH (struct Lisp_Hash_Table *h, ptrdiff_t idx)
+{
+ return AREF (h->hash, idx);
+}
+
+/* Value is the index of the element in hash table H that is the
+ start of the collision list at index IDX in the index vector of H. */
+INLINE Lisp_Object
+HASH_INDEX (struct Lisp_Hash_Table *h, ptrdiff_t idx)
+{
+ return AREF (h->index, idx);
+}
+
+/* Value is the size of hash table H. */
+INLINE ptrdiff_t
+HASH_TABLE_SIZE (struct Lisp_Hash_Table *h)
+{
+ return ASIZE (h->next);
+}
+
+/* Default size for hash tables if not specified. */
+
+enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE = 65 };
+
+/* Default threshold specifying when to resize a hash table. The
+ value gives the ratio of current entries in the hash table and the
+ size of the hash table. */
+
+static double const DEFAULT_REHASH_THRESHOLD = 0.8;
+
+/* Default factor by which to increase the size of a hash table. */
+
+static double const DEFAULT_REHASH_SIZE = 1.5;
+
+/* Combine two integers X and Y for hashing. The result might not fit
+ into a Lisp integer. */
+
+INLINE EMACS_UINT
+sxhash_combine (EMACS_UINT x, EMACS_UINT y)
+{
+ return (x << 4) + (x >> (BITS_PER_EMACS_INT - 4)) + y;
+}
+
+/* Hash X, returning a value that fits into a fixnum. */
+
+INLINE EMACS_UINT
+SXHASH_REDUCE (EMACS_UINT x)
+{
+ return (x ^ x >> (BITS_PER_EMACS_INT - FIXNUM_BITS)) & INTMASK;
+}
+
+/* These structures are used for various misc types. */
+
+struct Lisp_Misc_Any /* Supertype of all Misc types. */
+{
+ ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_??? */
+ bool_bf gcmarkbit : 1;
+ unsigned spacer : 15;
+};
+
+struct Lisp_Marker
+{
+ ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Marker */
+ bool_bf gcmarkbit : 1;
+ unsigned spacer : 13;
+ /* This flag is temporarily used in the functions
+ decode/encode_coding_object to record that the marker position
+ must be adjusted after the conversion. */
+ bool_bf need_adjustment : 1;
+ /* True means normal insertion at the marker's position
+ leaves the marker after the inserted text. */
+ bool_bf insertion_type : 1;
+ /* This is the buffer that the marker points into, or 0 if it points nowhere.
+ Note: a chain of markers can contain markers pointing into different
+ buffers (the chain is per buffer_text rather than per buffer, so it's
+ shared between indirect buffers). */
+ /* This is used for (other than NULL-checking):
+ - Fmarker_buffer
+ - Fset_marker: check eq(oldbuf, newbuf) to avoid unchain+rechain.
+ - unchain_marker: to find the list from which to unchain.
+ - Fkill_buffer: to only unchain the markers of current indirect buffer.
+ */
+ struct buffer *buffer;
+
+ /* The remaining fields are meaningless in a marker that
+ does not point anywhere. */
+
+ /* For markers that point somewhere,
+ this is used to chain of all the markers in a given buffer. */
+ /* We could remove it and use an array in buffer_text instead.
+ That would also allow to preserve it ordered. */
+ struct Lisp_Marker *next;
+ /* This is the char position where the marker points. */
+ ptrdiff_t charpos;
+ /* This is the byte position.
+ It's mostly used as a charpos<->bytepos cache (i.e. it's not directly
+ used to implement the functionality of markers, but rather to (ab)use
+ markers as a cache for char<->byte mappings). */
+ ptrdiff_t bytepos;
+};
+
+/* START and END are markers in the overlay's buffer, and
+ PLIST is the overlay's property list. */
+struct Lisp_Overlay
+/* An overlay's real data content is:
+ - plist
+ - buffer (really there are two buffer pointers, one per marker,
+ and both points to the same buffer)
+ - insertion type of both ends (per-marker fields)
+ - start & start byte (of start marker)
+ - end & end byte (of end marker)
+ - next (singly linked list of overlays)
+ - next fields of start and end markers (singly linked list of markers).
+ I.e. 9words plus 2 bits, 3words of which are for external linked lists.
+*/
+ {
+ ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Overlay */
+ bool_bf gcmarkbit : 1;
+ unsigned spacer : 15;
+ struct Lisp_Overlay *next;
+ Lisp_Object start;
+ Lisp_Object end;
+ Lisp_Object plist;
+ };
+
+/* Types of data which may be saved in a Lisp_Save_Value. */
+
+enum
+ {
+ SAVE_UNUSED,
+ SAVE_INTEGER,
+ SAVE_FUNCPOINTER,
+ SAVE_POINTER,
+ SAVE_OBJECT
+ };
+
+/* Number of bits needed to store one of the above values. */
+enum { SAVE_SLOT_BITS = 3 };
+
+/* Number of slots in a save value where save_type is nonzero. */
+enum { SAVE_VALUE_SLOTS = 4 };
+
+/* Bit-width and values for struct Lisp_Save_Value's save_type member. */
+
+enum { SAVE_TYPE_BITS = SAVE_VALUE_SLOTS * SAVE_SLOT_BITS + 1 };
+
+enum Lisp_Save_Type
+ {
+ SAVE_TYPE_INT_INT = SAVE_INTEGER + (SAVE_INTEGER << SAVE_SLOT_BITS),
+ SAVE_TYPE_INT_INT_INT
+ = (SAVE_INTEGER + (SAVE_TYPE_INT_INT << SAVE_SLOT_BITS)),
+ SAVE_TYPE_OBJ_OBJ = SAVE_OBJECT + (SAVE_OBJECT << SAVE_SLOT_BITS),
+ SAVE_TYPE_OBJ_OBJ_OBJ = SAVE_OBJECT + (SAVE_TYPE_OBJ_OBJ <<
SAVE_SLOT_BITS),
+ SAVE_TYPE_OBJ_OBJ_OBJ_OBJ
+ = SAVE_OBJECT + (SAVE_TYPE_OBJ_OBJ_OBJ << SAVE_SLOT_BITS),
+ SAVE_TYPE_PTR_INT = SAVE_POINTER + (SAVE_INTEGER << SAVE_SLOT_BITS),
+ SAVE_TYPE_PTR_OBJ = SAVE_POINTER + (SAVE_OBJECT << SAVE_SLOT_BITS),
+ SAVE_TYPE_PTR_PTR = SAVE_POINTER + (SAVE_POINTER << SAVE_SLOT_BITS),
+ SAVE_TYPE_FUNCPTR_PTR_OBJ
+ = SAVE_FUNCPOINTER + (SAVE_TYPE_PTR_OBJ << SAVE_SLOT_BITS),
+
+ /* This has an extra bit indicating it's raw memory. */
+ SAVE_TYPE_MEMORY = SAVE_TYPE_PTR_INT + (1 << (SAVE_TYPE_BITS - 1))
+ };
+
+/* Special object used to hold a different values for later use.
+
+ This is mostly used to package C integers and pointers to call
+ record_unwind_protect when two or more values need to be saved.
+ For example:
+
+ ...
+ struct my_data *md = get_my_data ();
+ ptrdiff_t mi = get_my_integer ();
+ record_unwind_protect (my_unwind, make_save_ptr_int (md, mi));
+ ...
+
+ Lisp_Object my_unwind (Lisp_Object arg)
+ {
+ struct my_data *md = XSAVE_POINTER (arg, 0);
+ ptrdiff_t mi = XSAVE_INTEGER (arg, 1);
+ ...
+ }
+
+ If ENABLE_CHECKING is in effect, XSAVE_xxx macros do type checking of the
+ saved objects and raise eassert if type of the saved object doesn't match
+ the type which is extracted. In the example above, XSAVE_INTEGER (arg, 2)
+ and XSAVE_OBJECT (arg, 0) are wrong because nothing was saved in slot 2 and
+ slot 0 is a pointer. */
+
+typedef void (*voidfuncptr) (void);
+
+struct Lisp_Save_Value
+ {
+ ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Save_Value */
+ bool_bf gcmarkbit : 1;
+ unsigned spacer : 32 - (16 + 1 + SAVE_TYPE_BITS);
+
+ /* V->data may hold up to SAVE_VALUE_SLOTS entries. The type of
+ V's data entries are determined by V->save_type. E.g., if
+ V->save_type == SAVE_TYPE_PTR_OBJ, V->data[0] is a pointer,
+ V->data[1] is an integer, and V's other data entries are unused.
+
+ If V->save_type == SAVE_TYPE_MEMORY, V->data[0].pointer is the address
of
+ a memory area containing V->data[1].integer potential Lisp_Objects. */
+ ENUM_BF (Lisp_Save_Type) save_type : SAVE_TYPE_BITS;
+ union {
+ void *pointer;
+ voidfuncptr funcpointer;
+ ptrdiff_t integer;
+ Lisp_Object object;
+ } data[SAVE_VALUE_SLOTS];
+ };
+
+/* Return the type of V's Nth saved value. */
+INLINE int
+save_type (struct Lisp_Save_Value *v, int n)
+{
+ eassert (0 <= n && n < SAVE_VALUE_SLOTS);
+ return (v->save_type >> (SAVE_SLOT_BITS * n) & ((1 << SAVE_SLOT_BITS) - 1));
+}
+
+/* Get and set the Nth saved pointer. */
+
+INLINE void *
+XSAVE_POINTER (Lisp_Object obj, int n)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_POINTER);
+ return XSAVE_VALUE (obj)->data[n].pointer;
+}
+INLINE void
+set_save_pointer (Lisp_Object obj, int n, void *val)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_POINTER);
+ XSAVE_VALUE (obj)->data[n].pointer = val;
+}
+INLINE voidfuncptr
+XSAVE_FUNCPOINTER (Lisp_Object obj, int n)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_FUNCPOINTER);
+ return XSAVE_VALUE (obj)->data[n].funcpointer;
+}
+
+/* Likewise for the saved integer. */
+
+INLINE ptrdiff_t
+XSAVE_INTEGER (Lisp_Object obj, int n)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_INTEGER);
+ return XSAVE_VALUE (obj)->data[n].integer;
+}
+INLINE void
+set_save_integer (Lisp_Object obj, int n, ptrdiff_t val)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_INTEGER);
+ XSAVE_VALUE (obj)->data[n].integer = val;
+}
+
+/* Extract Nth saved object. */
+
+INLINE Lisp_Object
+XSAVE_OBJECT (Lisp_Object obj, int n)
+{
+ eassert (save_type (XSAVE_VALUE (obj), n) == SAVE_OBJECT);
+ return XSAVE_VALUE (obj)->data[n].object;
+}
+
+/* A finalizer sentinel. */
+struct Lisp_Finalizer
+ {
+ struct Lisp_Misc_Any base;
+
+ /* Circular list of all active weak references. */
+ struct Lisp_Finalizer *prev;
+ struct Lisp_Finalizer *next;
+
+ /* Call FUNCTION when the finalizer becomes unreachable, even if
+ FUNCTION contains a reference to the finalizer; i.e., call
+ FUNCTION when it is reachable _only_ through finalizers. */
+ Lisp_Object function;
+ };
+
+/* A miscellaneous object, when it's on the free list. */
+struct Lisp_Free
+ {
+ ENUM_BF (Lisp_Misc_Type) type : 16; /* = Lisp_Misc_Free */
+ bool_bf gcmarkbit : 1;
+ unsigned spacer : 15;
+ union Lisp_Misc *chain;
+ };
+
+/* To get the type field of a union Lisp_Misc, use XMISCTYPE.
+ It uses one of these struct subtypes to get the type field. */
+
+union Lisp_Misc
+ {
+ struct Lisp_Misc_Any u_any; /* Supertype of all Misc types. */
+ struct Lisp_Free u_free;
+ struct Lisp_Marker u_marker;
+ struct Lisp_Overlay u_overlay;
+ struct Lisp_Save_Value u_save_value;
+ struct Lisp_Finalizer u_finalizer;
+ };
+
+INLINE union Lisp_Misc *
+XMISC (Lisp_Object a)
+{
+ return XUNTAG (a, Lisp_Misc);
+}
+
+INLINE struct Lisp_Misc_Any *
+XMISCANY (Lisp_Object a)
+{
+ eassert (MISCP (a));
+ return & XMISC (a)->u_any;
+}
+
+INLINE enum Lisp_Misc_Type
+XMISCTYPE (Lisp_Object a)
+{
+ return XMISCANY (a)->type;
+}
+
+INLINE struct Lisp_Marker *
+XMARKER (Lisp_Object a)
+{
+ eassert (MARKERP (a));
+ return & XMISC (a)->u_marker;
+}
+
+INLINE struct Lisp_Overlay *
+XOVERLAY (Lisp_Object a)
+{
+ eassert (OVERLAYP (a));
+ return & XMISC (a)->u_overlay;
+}
+
+INLINE struct Lisp_Save_Value *
+XSAVE_VALUE (Lisp_Object a)
+{
+ eassert (SAVE_VALUEP (a));
+ return & XMISC (a)->u_save_value;
+}
+
+INLINE struct Lisp_Finalizer *
+XFINALIZER (Lisp_Object a)
+{
+ eassert (FINALIZERP (a));
+ return & XMISC (a)->u_finalizer;
+}
+
+
+/* Forwarding pointer to an int variable.
+ This is allowed only in the value cell of a symbol,
+ and it means that the symbol's value really lives in the
+ specified int variable. */
+struct Lisp_Intfwd
+ {
+ enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Int */
+ EMACS_INT *intvar;
+ };
+
+/* Boolean forwarding pointer to an int variable.
+ This is like Lisp_Intfwd except that the ostensible
+ "value" of the symbol is t if the bool variable is true,
+ nil if it is false. */
+struct Lisp_Boolfwd
+ {
+ enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Bool */
+ bool *boolvar;
+ };
+
+/* Forwarding pointer to a Lisp_Object variable.
+ This is allowed only in the value cell of a symbol,
+ and it means that the symbol's value really lives in the
+ specified variable. */
+struct Lisp_Objfwd
+ {
+ enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Obj */
+ Lisp_Object *objvar;
+ };
+
+/* Like Lisp_Objfwd except that value lives in a slot in the
+ current buffer. Value is byte index of slot within buffer. */
+struct Lisp_Buffer_Objfwd
+ {
+ enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Buffer_Obj */
+ int offset;
+ /* One of Qnil, Qintegerp, Qsymbolp, Qstringp, Qfloatp or Qnumberp. */
+ Lisp_Object predicate;
+ };
+
+/* struct Lisp_Buffer_Local_Value is used in a symbol value cell when
+ the symbol has buffer-local or frame-local bindings. (Exception:
+ some buffer-local variables are built-in, with their values stored
+ in the buffer structure itself. They are handled differently,
+ using struct Lisp_Buffer_Objfwd.)
+
+ The `realvalue' slot holds the variable's current value, or a
+ forwarding pointer to where that value is kept. This value is the
+ one that corresponds to the loaded binding. To read or set the
+ variable, you must first make sure the right binding is loaded;
+ then you can access the value in (or through) `realvalue'.
+
+ `buffer' and `frame' are the buffer and frame for which the loaded
+ binding was found. If those have changed, to make sure the right
+ binding is loaded it is necessary to find which binding goes with
+ the current buffer and selected frame, then load it. To load it,
+ first unload the previous binding, then copy the value of the new
+ binding into `realvalue' (or through it). Also update
+ LOADED-BINDING to point to the newly loaded binding.
+
+ `local_if_set' indicates that merely setting the variable creates a
+ local binding for the current buffer. Otherwise the latter, setting
+ the variable does not do that; only make-local-variable does that. */
+
+struct Lisp_Buffer_Local_Value
+ {
+ /* True means that merely setting the variable creates a local
+ binding for the current buffer. */
+ bool_bf local_if_set : 1;
+ /* True means this variable can have frame-local bindings, otherwise, it is
+ can have buffer-local bindings. The two cannot be combined. */
+ bool_bf frame_local : 1;
+ /* True means that the binding now loaded was found.
+ Presumably equivalent to (defcell!=valcell). */
+ bool_bf found : 1;
+ /* If non-NULL, a forwarding to the C var where it should also be set. */
+ union Lisp_Fwd *fwd; /* Should never be (Buffer|Kboard)_Objfwd. */
+ /* The buffer or frame for which the loaded binding was found. */
+ Lisp_Object where;
+ /* A cons cell that holds the default value. It has the form
+ (SYMBOL . DEFAULT-VALUE). */
+ Lisp_Object defcell;
+ /* The cons cell from `where's parameter alist.
+ It always has the form (SYMBOL . VALUE)
+ Note that if `forward' is non-nil, VALUE may be out of date.
+ Also if the currently loaded binding is the default binding, then
+ this is `eq'ual to defcell. */
+ Lisp_Object valcell;
+ };
+
+/* Like Lisp_Objfwd except that value lives in a slot in the
+ current kboard. */
+struct Lisp_Kboard_Objfwd
+ {
+ enum Lisp_Fwd_Type type; /* = Lisp_Fwd_Kboard_Obj */
+ int offset;
+ };
+
+union Lisp_Fwd
+ {
+ struct Lisp_Intfwd u_intfwd;
+ struct Lisp_Boolfwd u_boolfwd;
+ struct Lisp_Objfwd u_objfwd;
+ struct Lisp_Buffer_Objfwd u_buffer_objfwd;
+ struct Lisp_Kboard_Objfwd u_kboard_objfwd;
+ };
+
+INLINE enum Lisp_Fwd_Type
+XFWDTYPE (union Lisp_Fwd *a)
+{
+ return a->u_intfwd.type;
+}
+
+INLINE struct Lisp_Buffer_Objfwd *
+XBUFFER_OBJFWD (union Lisp_Fwd *a)
+{
+ eassert (BUFFER_OBJFWDP (a));
+ return &a->u_buffer_objfwd;
+}
+
+/* Lisp floating point type. */
+struct Lisp_Float
+ {
+ union
+ {
+ double data;
+ struct Lisp_Float *chain;
+ } u;
+ };
+
+INLINE double
+XFLOAT_DATA (Lisp_Object f)
+{
+ return XFLOAT (f)->u.data;
+}
+
+/* Most hosts nowadays use IEEE floating point, so they use IEC 60559
+ representations, have infinities and NaNs, and do not trap on
+ exceptions. Define IEEE_FLOATING_POINT if this host is one of the
+ typical ones. The C11 macro __STDC_IEC_559__ is close to what is
+ wanted here, but is not quite right because Emacs does not require
+ all the features of C11 Annex F (and does not require C11 at all,
+ for that matter). */
+enum
+ {
+ IEEE_FLOATING_POINT
+ = (FLT_RADIX == 2 && FLT_MANT_DIG == 24
+ && FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128)
+ };
+
+/* A character, declared with the following typedef, is a member
+ of some character set associated with the current buffer. */
+#ifndef _UCHAR_T /* Protect against something in ctab.h on AIX. */
+#define _UCHAR_T
+typedef unsigned char UCHAR;
+#endif
+
+/* Meanings of slots in a Lisp_Compiled: */
+
+enum Lisp_Compiled
+ {
+ COMPILED_ARGLIST = 0,
+ COMPILED_BYTECODE = 1,
+ COMPILED_CONSTANTS = 2,
+ COMPILED_STACK_DEPTH = 3,
+ COMPILED_DOC_STRING = 4,
+ COMPILED_INTERACTIVE = 5
+ };
+
+/* Flag bits in a character. These also get used in termhooks.h.
+ Richard Stallman <address@hidden> thinks that MULE
+ (MUlti-Lingual Emacs) might need 22 bits for the character value
+ itself, so we probably shouldn't use any bits lower than 0x0400000. */
+enum char_bits
+ {
+ CHAR_ALT = 0x0400000,
+ CHAR_SUPER = 0x0800000,
+ CHAR_HYPER = 0x1000000,
+ CHAR_SHIFT = 0x2000000,
+ CHAR_CTL = 0x4000000,
+ CHAR_META = 0x8000000,
+
+ CHAR_MODIFIER_MASK =
+ CHAR_ALT | CHAR_SUPER | CHAR_HYPER | CHAR_SHIFT | CHAR_CTL | CHAR_META,
+
+ /* Actually, the current Emacs uses 22 bits for the character value
+ itself. */
+ CHARACTERBITS = 22
+ };
+
+/* Data type checking. */
+
+LISP_MACRO_DEFUN (NILP, bool, (Lisp_Object x), (x))
+
+INLINE bool
+NUMBERP (Lisp_Object x)
+{
+ return INTEGERP (x) || FLOATP (x);
+}
+INLINE bool
+NATNUMP (Lisp_Object x)
+{
+ return INTEGERP (x) && 0 <= XINT (x);
+}
+
+INLINE bool
+RANGED_INTEGERP (intmax_t lo, Lisp_Object x, intmax_t hi)
+{
+ return INTEGERP (x) && lo <= XINT (x) && XINT (x) <= hi;
+}
+
+#define TYPE_RANGED_INTEGERP(type, x) \
+ (INTEGERP (x) \
+ && (TYPE_SIGNED (type) ? TYPE_MINIMUM (type) <= XINT (x) : 0 <= XINT (x)) \
+ && XINT (x) <= TYPE_MAXIMUM (type))
+
+LISP_MACRO_DEFUN (CONSP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (FLOATP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (MISCP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (SYMBOLP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (INTEGERP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (VECTORLIKEP, bool, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN (MARKERP, bool, (Lisp_Object x), (x))
+
+INLINE bool
+STRINGP (Lisp_Object x)
+{
+ return XTYPE (x) == Lisp_String;
+}
+INLINE bool
+VECTORP (Lisp_Object x)
+{
+ return VECTORLIKEP (x) && ! (ASIZE (x) & PSEUDOVECTOR_FLAG);
+}
+INLINE bool
+OVERLAYP (Lisp_Object x)
+{
+ return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Overlay;
+}
+INLINE bool
+SAVE_VALUEP (Lisp_Object x)
+{
+ return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Save_Value;
+}
+
+INLINE bool
+FINALIZERP (Lisp_Object x)
+{
+ return MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Finalizer;
+}
+
+INLINE bool
+AUTOLOADP (Lisp_Object x)
+{
+ return CONSP (x) && EQ (Qautoload, XCAR (x));
+}
+
+INLINE bool
+BUFFER_OBJFWDP (union Lisp_Fwd *a)
+{
+ return XFWDTYPE (a) == Lisp_Fwd_Buffer_Obj;
+}
+
+INLINE bool
+PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, int code)
+{
+ return ((a->size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK))
+ == (PSEUDOVECTOR_FLAG | (code << PSEUDOVECTOR_AREA_BITS)));
+}
+
+/* True if A is a pseudovector whose code is CODE. */
+INLINE bool
+PSEUDOVECTORP (Lisp_Object a, int code)
+{
+ if (! VECTORLIKEP (a))
+ return false;
+ else
+ {
+ /* Converting to struct vectorlike_header * avoids aliasing issues. */
+ struct vectorlike_header *h = XUNTAG (a, Lisp_Vectorlike);
+ return PSEUDOVECTOR_TYPEP (h, code);
+ }
+}
+
+
+/* Test for specific pseudovector types. */
+
+INLINE bool
+WINDOW_CONFIGURATIONP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_WINDOW_CONFIGURATION);
+}
+
+INLINE bool
+PROCESSP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_PROCESS);
+}
+
+INLINE bool
+WINDOWP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_WINDOW);
+}
+
+INLINE bool
+TERMINALP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_TERMINAL);
+}
+
+INLINE bool
+SUBRP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_SUBR);
+}
+
+INLINE bool
+COMPILEDP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_COMPILED);
+}
+
+INLINE bool
+BUFFERP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_BUFFER);
+}
+
+INLINE bool
+CHAR_TABLE_P (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_CHAR_TABLE);
+}
+
+INLINE bool
+SUB_CHAR_TABLE_P (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_SUB_CHAR_TABLE);
+}
+
+INLINE bool
+BOOL_VECTOR_P (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_BOOL_VECTOR);
+}
+
+INLINE bool
+FRAMEP (Lisp_Object a)
+{
+ return PSEUDOVECTORP (a, PVEC_FRAME);
+}
+
+/* Test for image (image . spec) */
+INLINE bool
+IMAGEP (Lisp_Object x)
+{
+ return CONSP (x) && EQ (XCAR (x), Qimage);
+}
+
+/* Array types. */
+INLINE bool
+ARRAYP (Lisp_Object x)
+{
+ return VECTORP (x) || STRINGP (x) || CHAR_TABLE_P (x) || BOOL_VECTOR_P (x);
+}
+
+INLINE void
+CHECK_LIST (Lisp_Object x)
+{
+ CHECK_TYPE (CONSP (x) || NILP (x), Qlistp, x);
+}
+
+LISP_MACRO_DEFUN_VOID (CHECK_LIST_CONS, (Lisp_Object x, Lisp_Object y), (x, y))
+LISP_MACRO_DEFUN_VOID (CHECK_SYMBOL, (Lisp_Object x), (x))
+LISP_MACRO_DEFUN_VOID (CHECK_NUMBER, (Lisp_Object x), (x))
+
+INLINE void
+CHECK_STRING (Lisp_Object x)
+{
+ CHECK_TYPE (STRINGP (x), Qstringp, x);
+}
+INLINE void
+CHECK_STRING_CAR (Lisp_Object x)
+{
+ CHECK_TYPE (STRINGP (XCAR (x)), Qstringp, XCAR (x));
+}
+INLINE void
+CHECK_CONS (Lisp_Object x)
+{
+ CHECK_TYPE (CONSP (x), Qconsp, x);
+}
+INLINE void
+CHECK_VECTOR (Lisp_Object x)
+{
+ CHECK_TYPE (VECTORP (x), Qvectorp, x);
+}
+INLINE void
+CHECK_BOOL_VECTOR (Lisp_Object x)
+{
+ CHECK_TYPE (BOOL_VECTOR_P (x), Qbool_vector_p, x);
+}
+/* This is a bit special because we always need size afterwards. */
+INLINE ptrdiff_t
+CHECK_VECTOR_OR_STRING (Lisp_Object x)
+{
+ if (VECTORP (x))
+ return ASIZE (x);
+ if (STRINGP (x))
+ return SCHARS (x);
+ wrong_type_argument (Qarrayp, x);
+}
+INLINE void
+CHECK_ARRAY (Lisp_Object x, Lisp_Object predicate)
+{
+ CHECK_TYPE (ARRAYP (x), predicate, x);
+}
+INLINE void
+CHECK_BUFFER (Lisp_Object x)
+{
+ CHECK_TYPE (BUFFERP (x), Qbufferp, x);
+}
+INLINE void
+CHECK_WINDOW (Lisp_Object x)
+{
+ CHECK_TYPE (WINDOWP (x), Qwindowp, x);
+}
+#ifdef subprocesses
+INLINE void
+CHECK_PROCESS (Lisp_Object x)
+{
+ CHECK_TYPE (PROCESSP (x), Qprocessp, x);
+}
+#endif
+INLINE void
+CHECK_NATNUM (Lisp_Object x)
+{
+ CHECK_TYPE (NATNUMP (x), Qwholenump, x);
+}
+
+#define CHECK_RANGED_INTEGER(x, lo, hi)
\
+ do { \
+ CHECK_NUMBER (x); \
+ if (! ((lo) <= XINT (x) && XINT (x) <= (hi))) \
+ args_out_of_range_3 \
+ (x, \
+ make_number ((lo) < 0 && (lo) < MOST_NEGATIVE_FIXNUM \
+ ? MOST_NEGATIVE_FIXNUM \
+ : (lo)), \
+ make_number (min (hi, MOST_POSITIVE_FIXNUM))); \
+ } while (false)
+#define CHECK_TYPE_RANGED_INTEGER(type, x) \
+ do { \
+ if (TYPE_SIGNED (type)) \
+ CHECK_RANGED_INTEGER (x, TYPE_MINIMUM (type), TYPE_MAXIMUM (type)); \
+ else \
+ CHECK_RANGED_INTEGER (x, 0, TYPE_MAXIMUM (type));
\
+ } while (false)
+
+#define CHECK_NUMBER_COERCE_MARKER(x) \
+ do { \
+ if (MARKERP ((x))) \
+ XSETFASTINT (x, marker_position (x)); \
+ else \
+ CHECK_TYPE (INTEGERP (x), Qinteger_or_marker_p, x); \
+ } while (false)
+
+INLINE double
+XFLOATINT (Lisp_Object n)
+{
+ return extract_float (n);
+}
+
+INLINE void
+CHECK_NUMBER_OR_FLOAT (Lisp_Object x)
+{
+ CHECK_TYPE (FLOATP (x) || INTEGERP (x), Qnumberp, x);
+}
+
+#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x) \
+ do { \
+ if (MARKERP (x)) \
+ XSETFASTINT (x, marker_position (x)); \
+ else \
+ CHECK_TYPE (INTEGERP (x) || FLOATP (x), Qnumber_or_marker_p, x); \
+ } while (false)
+
+/* Since we can't assign directly to the CAR or CDR fields of a cons
+ cell, use these when checking that those fields contain numbers. */
+INLINE void
+CHECK_NUMBER_CAR (Lisp_Object x)
+{
+ Lisp_Object tmp = XCAR (x);
+ CHECK_NUMBER (tmp);
+ XSETCAR (x, tmp);
+}
+
+INLINE void
+CHECK_NUMBER_CDR (Lisp_Object x)
+{
+ Lisp_Object tmp = XCDR (x);
+ CHECK_NUMBER (tmp);
+ XSETCDR (x, tmp);
+}
+
+/* Define a built-in function for calling from Lisp.
+ `lname' should be the name to give the function in Lisp,
+ as a null-terminated C string.
+ `fnname' should be the name of the function in C.
+ By convention, it starts with F.
+ `sname' should be the name for the C constant structure
+ that records information on this function for internal use.
+ By convention, it should be the same as `fnname' but with S instead of F.
+ It's too bad that C macros can't compute this from `fnname'.
+ `minargs' should be a number, the minimum number of arguments allowed.
+ `maxargs' should be a number, the maximum number of arguments allowed,
+ or else MANY or UNEVALLED.
+ MANY means pass a vector of evaluated arguments,
+ in the form of an integer number-of-arguments
+ followed by the address of a vector of Lisp_Objects
+ which contains the argument values.
+ UNEVALLED means pass the list of unevaluated arguments
+ `intspec' says how interactive arguments are to be fetched.
+ If the string starts with a `(', `intspec' is evaluated and the resulting
+ list is the list of arguments.
+ If it's a string that doesn't start with `(', the value should follow
+ the one of the doc string for `interactive'.
+ A null string means call interactively with no arguments.
+ `doc' is documentation for the user. */
+
+/* This version of DEFUN declares a function prototype with the right
+ arguments, so we can catch errors with maxargs at compile-time. */
+#ifdef _MSC_VER
+#define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc) \
+ Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \
+ static struct Lisp_Subr alignas (GCALIGNMENT) sname = \
+ { { (PVEC_SUBR << PSEUDOVECTOR_AREA_BITS) \
+ | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)) }, \
+ { (Lisp_Object (__cdecl *)(void))fnname }, \
+ minargs, maxargs, lname, intspec, 0}; \
+ Lisp_Object fnname
+#else /* not _MSC_VER */
+#define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc) \
+ static struct Lisp_Subr alignas (GCALIGNMENT) sname = \
+ { { PVEC_SUBR << PSEUDOVECTOR_AREA_BITS },
\
+ { .a ## maxargs = fnname }, \
+ minargs, maxargs, lname, intspec, 0}; \
+ Lisp_Object fnname
+#endif
+
+/* True if OBJ is a Lisp function. */
+INLINE bool
+FUNCTIONP (Lisp_Object obj)
+{
+ return functionp (obj);
+}
+
+/* defsubr (Sname);
+ is how we define the symbol for function `name' at start-up time. */
+extern void defsubr (struct Lisp_Subr *);
+
+enum maxargs
+ {
+ MANY = -2,
+ UNEVALLED = -1
+ };
+
+/* Call a function F that accepts many args, passing it ARRAY's elements. */
+#define CALLMANY(f, array) (f) (ARRAYELTS (array), array)
+
+/* Call a function F that accepts many args, passing it the remaining args,
+ E.g., 'return CALLN (Fformat, fmt, text);' is less error-prone than
+ '{ Lisp_Object a[2]; a[0] = fmt; a[1] = text; return Fformat (2, a); }'.
+ CALLN is overkill for simple usages like 'Finsert (1, &text);'. */
+#define CALLN(f, ...) CALLMANY (f, ((Lisp_Object []) {__VA_ARGS__}))
+
+extern void defvar_lisp (struct Lisp_Objfwd *, const char *, Lisp_Object *);
+extern void defvar_lisp_nopro (struct Lisp_Objfwd *, const char *, Lisp_Object
*);
+extern void defvar_bool (struct Lisp_Boolfwd *, const char *, bool *);
+extern void defvar_int (struct Lisp_Intfwd *, const char *, EMACS_INT *);
+extern void defvar_kboard (struct Lisp_Kboard_Objfwd *, const char *, int);
+
+/* Macros we use to define forwarded Lisp variables.
+ These are used in the syms_of_FILENAME functions.
+
+ An ordinary (not in buffer_defaults, per-buffer, or per-keyboard)
+ lisp variable is actually a field in `struct emacs_globals'. The
+ field's name begins with "f_", which is a convention enforced by
+ these macros. Each such global has a corresponding #define in
+ globals.h; the plain name should be used in the code.
+
+ E.g., the global "cons_cells_consed" is declared as "int
+ f_cons_cells_consed" in globals.h, but there is a define:
+
+ #define cons_cells_consed globals.f_cons_cells_consed
+
+ All C code uses the `cons_cells_consed' name. This is all done
+ this way to support indirection for multi-threaded Emacs. */
+
+#define DEFVAR_LISP(lname, vname, doc) \
+ do { \
+ static struct Lisp_Objfwd o_fwd; \
+ defvar_lisp (&o_fwd, lname, &globals.f_ ## vname); \
+ } while (false)
+#define DEFVAR_LISP_NOPRO(lname, vname, doc) \
+ do { \
+ static struct Lisp_Objfwd o_fwd; \
+ defvar_lisp_nopro (&o_fwd, lname, &globals.f_ ## vname); \
+ } while (false)
+#define DEFVAR_BOOL(lname, vname, doc) \
+ do { \
+ static struct Lisp_Boolfwd b_fwd; \
+ defvar_bool (&b_fwd, lname, &globals.f_ ## vname); \
+ } while (false)
+#define DEFVAR_INT(lname, vname, doc) \
+ do { \
+ static struct Lisp_Intfwd i_fwd; \
+ defvar_int (&i_fwd, lname, &globals.f_ ## vname); \
+ } while (false)
+
+#define DEFVAR_BUFFER_DEFAULTS(lname, vname, doc) \
+ do { \
+ static struct Lisp_Objfwd o_fwd; \
+ defvar_lisp_nopro (&o_fwd, lname, &BVAR (&buffer_defaults, vname));
\
+ } while (false)
+
+#define DEFVAR_KBOARD(lname, vname, doc) \
+ do { \
+ static struct Lisp_Kboard_Objfwd ko_fwd; \
+ defvar_kboard (&ko_fwd, lname, offsetof (KBOARD, vname ## _)); \
+ } while (false)
+
+/* Save and restore the instruction and environment pointers,
+ without affecting the signal mask. */
+
+#ifdef HAVE__SETJMP
+typedef jmp_buf sys_jmp_buf;
+# define sys_setjmp(j) _setjmp (j)
+# define sys_longjmp(j, v) _longjmp (j, v)
+#elif defined HAVE_SIGSETJMP
+typedef sigjmp_buf sys_jmp_buf;
+# define sys_setjmp(j) sigsetjmp (j, 0)
+# define sys_longjmp(j, v) siglongjmp (j, v)
+#else
+/* A platform that uses neither _longjmp nor siglongjmp; assume
+ longjmp does not affect the sigmask. */
+typedef jmp_buf sys_jmp_buf;
+# define sys_setjmp(j) setjmp (j)
+# define sys_longjmp(j, v) longjmp (j, v)
+#endif
+
+
+/* Elisp uses several stacks:
+ - the C stack.
+ - the bytecode stack: used internally by the bytecode interpreter.
+ Allocated from the C stack.
+ - The specpdl stack: keeps track of active unwind-protect and
+ dynamic-let-bindings. Allocated from the `specpdl' array, a manually
+ managed stack.
+ - The handler stack: keeps track of active catch tags and condition-case
+ handlers. Allocated in a manually managed stack implemented by a
+ doubly-linked list allocated via xmalloc and never freed. */
+
+/* Structure for recording Lisp call stack for backtrace purposes. */
+
+/* The special binding stack holds the outer values of variables while
+ they are bound by a function application or a let form, stores the
+ code to be executed for unwind-protect forms.
+
+ NOTE: The specbinding union is defined here, because SPECPDL_INDEX is
+ used all over the place, needs to be fast, and needs to know the size of
+ union specbinding. But only eval.c should access it. */
+
+enum specbind_tag {
+ SPECPDL_UNWIND, /* An unwind_protect function on Lisp_Object.
*/
+ SPECPDL_UNWIND_PTR, /* Likewise, on void *. */
+ SPECPDL_UNWIND_INT, /* Likewise, on int. */
+ SPECPDL_UNWIND_VOID, /* Likewise, with no arg. */
+ SPECPDL_BACKTRACE, /* An element of the backtrace. */
+ SPECPDL_LET, /* A plain and simple dynamic let-binding. */
+ /* Tags greater than SPECPDL_LET must be "subkinds" of LET. */
+ SPECPDL_LET_LOCAL, /* A buffer-local let-binding. */
+ SPECPDL_LET_DEFAULT /* A global binding for a localized var. */
+};
+
+union specbinding
+ {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ void (*func) (Lisp_Object);
+ Lisp_Object arg;
+ } unwind;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ void (*func) (void *);
+ void *arg;
+ } unwind_ptr;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ void (*func) (int);
+ int arg;
+ } unwind_int;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ void (*func) (void);
+ } unwind_void;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ /* `where' is not used in the case of SPECPDL_LET. */
+ Lisp_Object symbol, old_value, where;
+ } let;
+ struct {
+ ENUM_BF (specbind_tag) kind : CHAR_BIT;
+ bool_bf debug_on_exit : 1;
+ Lisp_Object function;
+ Lisp_Object *args;
+ ptrdiff_t nargs;
+ } bt;
+ };
+
+extern union specbinding *specpdl;
+extern union specbinding *specpdl_ptr;
+extern ptrdiff_t specpdl_size;
+
+INLINE ptrdiff_t
+SPECPDL_INDEX (void)
+{
+ return specpdl_ptr - specpdl;
+}
+
+/* This structure helps implement the `catch/throw' and `condition-case/signal'
+ control structures. A struct handler contains all the information needed to
+ restore the state of the interpreter after a non-local jump.
+
+ handler structures are chained together in a doubly linked list; the `next'
+ member points to the next outer catchtag and the `nextfree' member points in
+ the other direction to the next inner element (which is typically the next
+ free element since we mostly use it on the deepest handler).
+
+ A call like (throw TAG VAL) searches for a catchtag whose `tag_or_ch'
+ member is TAG, and then unbinds to it. The `val' member is used to
+ hold VAL while the stack is unwound; `val' is returned as the value
+ of the catch form.
+
+ All the other members are concerned with restoring the interpreter
+ state.
+
+ Members are volatile if their values need to survive _longjmp when
+ a 'struct handler' is a local variable. */
+
+enum handlertype { CATCHER, CONDITION_CASE };
+
+struct handler
+{
+ enum handlertype type;
+ Lisp_Object tag_or_ch;
+ Lisp_Object val;
+ struct handler *next;
+ struct handler *nextfree;
+
+ /* The bytecode interpreter can have several handlers active at the same
+ time, so when we longjmp to one of them, it needs to know which handler
+ this was and what was the corresponding internal state. This is stored
+ here, and when we longjmp we make sure that handlerlist points to the
+ proper handler. */
+ Lisp_Object *bytecode_top;
+ int bytecode_dest;
+
+ /* Most global vars are reset to their value via the specpdl mechanism,
+ but a few others are handled by storing their value here. */
+#if true /* GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS, but defined later. */
+ struct gcpro *gcpro;
+#endif
+ sys_jmp_buf jmp;
+ EMACS_INT lisp_eval_depth;
+ ptrdiff_t pdlcount;
+ int poll_suppress_count;
+ int interrupt_input_blocked;
+ struct byte_stack *byte_stack;
+};
+
+/* Fill in the components of c, and put it on the list. */
+#define PUSH_HANDLER(c, tag_ch_val, handlertype) \
+ if (handlerlist->nextfree) \
+ (c) = handlerlist->nextfree; \
+ else \
+ { \
+ (c) = xmalloc (sizeof (struct handler)); \
+ (c)->nextfree = NULL; \
+ handlerlist->nextfree = (c); \
+ } \
+ (c)->type = (handlertype); \
+ (c)->tag_or_ch = (tag_ch_val); \
+ (c)->val = Qnil; \
+ (c)->next = handlerlist; \
+ (c)->lisp_eval_depth = lisp_eval_depth; \
+ (c)->pdlcount = SPECPDL_INDEX (); \
+ (c)->poll_suppress_count = poll_suppress_count; \
+ (c)->interrupt_input_blocked = interrupt_input_blocked;\
+ (c)->gcpro = gcprolist; \
+ (c)->byte_stack = byte_stack_list; \
+ handlerlist = (c);
+
+
+extern Lisp_Object memory_signal_data;
+
+/* An address near the bottom of the stack.
+ Tells GC how to save a copy of the stack. */
+extern char *stack_bottom;
+
+/* Check quit-flag and quit if it is non-nil.
+ Typing C-g does not directly cause a quit; it only sets Vquit_flag.
+ So the program needs to do QUIT at times when it is safe to quit.
+ Every loop that might run for a long time or might not exit
+ ought to do QUIT at least once, at a safe place.
+ Unless that is impossible, of course.
+ But it is very desirable to avoid creating loops where QUIT is impossible.
+
+ Exception: if you set immediate_quit to true,
+ then the handler that responds to the C-g does the quit itself.
+ This is a good thing to do around a loop that has no side effects
+ and (in particular) cannot call arbitrary Lisp code.
+
+ If quit-flag is set to `kill-emacs' the SIGINT handler has received
+ a request to exit Emacs when it is safe to do. */
+
+extern void process_pending_signals (void);
+extern bool volatile pending_signals;
+
+extern void process_quit_flag (void);
+#define QUIT \
+ do { \
+ if (!NILP (Vquit_flag) && NILP (Vinhibit_quit)) \
+ process_quit_flag (); \
+ else if (pending_signals) \
+ process_pending_signals (); \
+ } while (false)
+
+
+/* True if ought to quit now. */
+
+#define QUITP (!NILP (Vquit_flag) && NILP (Vinhibit_quit))
+
+extern Lisp_Object Vascii_downcase_table;
+extern Lisp_Object Vascii_canon_table;
+
+/* Structure for recording stack slots that need marking. */
+
+/* This is a chain of structures, each of which points at a Lisp_Object
+ variable whose value should be marked in garbage collection.
+ Normally every link of the chain is an automatic variable of a function,
+ and its `val' points to some argument or local variable of the function.
+ On exit to the function, the chain is set back to the value it had on entry.
+ This way, no link remains in the chain when the stack frame containing the
+ link disappears.
+
+ Every function that can call Feval must protect in this fashion all
+ Lisp_Object variables whose contents will be used again. */
+
+extern struct gcpro *gcprolist;
+
+struct gcpro
+{
+ struct gcpro *next;
+
+ /* Address of first protected variable. */
+ volatile Lisp_Object *var;
+
+ /* Number of consecutive protected variables. */
+ ptrdiff_t nvars;
+
+#ifdef DEBUG_GCPRO
+ /* File name where this record is used. */
+ const char *name;
+
+ /* Line number in this file. */
+ int lineno;
+
+ /* Index in the local chain of records. */
+ int idx;
+
+ /* Nesting level. */
+ int level;
+#endif
+};
+
+/* Values of GC_MARK_STACK during compilation:
+
+ 0 Use GCPRO as before
+ 1 Do the real thing, make GCPROs and UNGCPRO no-ops.
+ 2 Mark the stack, and check that everything GCPRO'd is
+ marked.
+ 3 Mark using GCPRO's, mark stack last, and count how many
+ dead objects are kept alive.
+
+ Formerly, method 0 was used. Currently, method 1 is used unless
+ otherwise specified by hand when building, e.g.,
+ "make CPPFLAGS='-DGC_MARK_STACK=GC_USE_GCPROS_AS_BEFORE'".
+ Methods 2 and 3 are present mainly to debug the transition from 0 to 1. */
+
+#define GC_USE_GCPROS_AS_BEFORE 0
+#define GC_MAKE_GCPROS_NOOPS 1
+#define GC_MARK_STACK_CHECK_GCPROS 2
+#define GC_USE_GCPROS_CHECK_ZOMBIES 3
+
+#ifndef GC_MARK_STACK
+#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
+#endif
+
+/* Whether we do the stack marking manually. */
+#define BYTE_MARK_STACK !(GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS
\
+ || GC_MARK_STACK == GC_MARK_STACK_CHECK_GCPROS)
+
+
+#if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS
+
+/* Do something silly with gcproN vars just so gcc shuts up. */
+/* You get warnings from MIPSPro... */
+
+#define GCPRO1(varname) ((void) gcpro1)
+#define GCPRO2(varname1, varname2) ((void) gcpro2, (void) gcpro1)
+#define GCPRO3(varname1, varname2, varname3) \
+ ((void) gcpro3, (void) gcpro2, (void) gcpro1)
+#define GCPRO4(varname1, varname2, varname3, varname4) \
+ ((void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1)
+#define GCPRO5(varname1, varname2, varname3, varname4, varname5) \
+ ((void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1)
+#define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \
+ ((void) gcpro6, (void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, \
+ (void) gcpro1)
+#define GCPRO7(a, b, c, d, e, f, g) (GCPRO6 (a, b, c, d, e, f), (void) gcpro7)
+#define UNGCPRO ((void) 0)
+
+#else /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */
+
+#ifndef DEBUG_GCPRO
+
+#define GCPRO1(a) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcprolist = &gcpro1; }
+
+#define GCPRO2(a, b) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcprolist = &gcpro2; }
+
+#define GCPRO3(a, b, c)
\
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1;
\
+ gcprolist = &gcpro3; }
+
+#define GCPRO4(a, b, c, d) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1;
\
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1;
\
+ gcprolist = &gcpro4; }
+
+#define GCPRO5(a, b, c, d, e) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1;
\
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1;
\
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1;
\
+ gcprolist = &gcpro5; }
+
+#define GCPRO6(a, b, c, d, e, f) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1;
\
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1;
\
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1;
\
+ gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1;
\
+ gcprolist = &gcpro6; }
+
+#define GCPRO7(a, b, c, d, e, f, g) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1;
\
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1;
\
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1;
\
+ gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1;
\
+ gcpro7.next = &gcpro6; gcpro7.var = &(g); gcpro7.nvars = 1;
\
+ gcprolist = &gcpro7; }
+
+#define UNGCPRO (gcprolist = gcpro1.next)
+
+#else /* !DEBUG_GCPRO */
+
+extern int gcpro_level;
+
+#define GCPRO1(a) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level++; \
+ gcprolist = &gcpro1; }
+
+#define GCPRO2(a, b) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level;
\
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro2.level = gcpro_level++; \
+ gcprolist = &gcpro2; }
+
+#define GCPRO3(a, b, c)
\
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level;
\
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1;
\
+ gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \
+ gcpro3.level = gcpro_level++; \
+ gcprolist = &gcpro3; }
+
+#define GCPRO4(a, b, c, d) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level;
\
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1;
\
+ gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1;
\
+ gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \
+ gcpro4.level = gcpro_level++; \
+ gcprolist = &gcpro4; }
+
+#define GCPRO5(a, b, c, d, e) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level;
\
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1;
\
+ gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1;
\
+ gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1;
\
+ gcpro5.name = __FILE__; gcpro5.lineno = __LINE__; gcpro5.idx = 5; \
+ gcpro5.level = gcpro_level++; \
+ gcprolist = &gcpro5; }
+
+#define GCPRO6(a, b, c, d, e, f) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level;
\
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1;
\
+ gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1;
\
+ gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1;
\
+ gcpro5.name = __FILE__; gcpro5.lineno = __LINE__; gcpro5.idx = 5; \
+ gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1;
\
+ gcpro6.name = __FILE__; gcpro6.lineno = __LINE__; gcpro6.idx = 6; \
+ gcpro6.level = gcpro_level++; \
+ gcprolist = &gcpro6; }
+
+#define GCPRO7(a, b, c, d, e, f, g) \
+ { gcpro1.next = gcprolist; gcpro1.var = &(a); gcpro1.nvars = 1; \
+ gcpro1.name = __FILE__; gcpro1.lineno = __LINE__; gcpro1.idx = 1; \
+ gcpro1.level = gcpro_level;
\
+ gcpro2.next = &gcpro1; gcpro2.var = &(b); gcpro2.nvars = 1;
\
+ gcpro2.name = __FILE__; gcpro2.lineno = __LINE__; gcpro2.idx = 2; \
+ gcpro3.next = &gcpro2; gcpro3.var = &(c); gcpro3.nvars = 1;
\
+ gcpro3.name = __FILE__; gcpro3.lineno = __LINE__; gcpro3.idx = 3; \
+ gcpro4.next = &gcpro3; gcpro4.var = &(d); gcpro4.nvars = 1;
\
+ gcpro4.name = __FILE__; gcpro4.lineno = __LINE__; gcpro4.idx = 4; \
+ gcpro5.next = &gcpro4; gcpro5.var = &(e); gcpro5.nvars = 1;
\
+ gcpro5.name = __FILE__; gcpro5.lineno = __LINE__; gcpro5.idx = 5; \
+ gcpro6.next = &gcpro5; gcpro6.var = &(f); gcpro6.nvars = 1;
\
+ gcpro6.name = __FILE__; gcpro6.lineno = __LINE__; gcpro6.idx = 6; \
+ gcpro7.next = &gcpro6; gcpro7.var = &(g); gcpro7.nvars = 1;
\
+ gcpro7.name = __FILE__; gcpro7.lineno = __LINE__; gcpro7.idx = 7; \
+ gcpro7.level = gcpro_level++; \
+ gcprolist = &gcpro7; }
+
+#define UNGCPRO \
+ (--gcpro_level != gcpro1.level \
+ ? emacs_abort () \
+ : (void) (gcprolist = gcpro1.next))
+
+#endif /* DEBUG_GCPRO */
+#endif /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */
+
+
+/* Evaluate expr, UNGCPRO, and then return the value of expr. */
+#define RETURN_UNGCPRO(expr) \
+ do \
+ { \
+ Lisp_Object ret_ungc_val; \
+ ret_ungc_val = (expr); \
+ UNGCPRO; \
+ return ret_ungc_val; \
+ } \
+ while (false)
+
+/* Call staticpro (&var) to protect static variable `var'. */
+
+void staticpro (Lisp_Object *);
+
+/* Forward declarations for prototypes. */
+struct window;
+struct frame;
+
+/* Copy COUNT Lisp_Objects from ARGS to contents of V starting from OFFSET. */
+
+INLINE void
+vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Object *args, ptrdiff_t count)
+{
+ eassert (0 <= offset && 0 <= count && offset + count <= ASIZE (v));
+ memcpy (XVECTOR (v)->contents + offset, args, count * sizeof *args);
+}
+
+/* Functions to modify hash tables. */
+
+INLINE void
+set_hash_key_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val)
+{
+ gc_aset (h->key_and_value, 2 * idx, val);
+}
+
+INLINE void
+set_hash_value_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val)
+{
+ gc_aset (h->key_and_value, 2 * idx + 1, val);
+}
+
+/* Use these functions to set Lisp_Object
+ or pointer slots of struct Lisp_Symbol. */
+
+INLINE void
+set_symbol_function (Lisp_Object sym, Lisp_Object function)
+{
+ XSYMBOL (sym)->function = function;
+}
+
+INLINE void
+set_symbol_plist (Lisp_Object sym, Lisp_Object plist)
+{
+ XSYMBOL (sym)->plist = plist;
+}
+
+INLINE void
+set_symbol_next (Lisp_Object sym, struct Lisp_Symbol *next)
+{
+ XSYMBOL (sym)->next = next;
+}
+
+/* Buffer-local (also frame-local) variable access functions. */
+
+INLINE int
+blv_found (struct Lisp_Buffer_Local_Value *blv)
+{
+ eassert (blv->found == !EQ (blv->defcell, blv->valcell));
+ return blv->found;
+}
+
+/* Set overlay's property list. */
+
+INLINE void
+set_overlay_plist (Lisp_Object overlay, Lisp_Object plist)
+{
+ XOVERLAY (overlay)->plist = plist;
+}
+
+/* Get text properties of S. */
+
+INLINE INTERVAL
+string_intervals (Lisp_Object s)
+{
+ return XSTRING (s)->intervals;
+}
+
+/* Set text properties of S to I. */
+
+INLINE void
+set_string_intervals (Lisp_Object s, INTERVAL i)
+{
+ XSTRING (s)->intervals = i;
+}
+
+/* Set a Lisp slot in TABLE to VAL. Most code should use this instead
+ of setting slots directly. */
+
+INLINE void
+set_char_table_defalt (Lisp_Object table, Lisp_Object val)
+{
+ XCHAR_TABLE (table)->defalt = val;
+}
+INLINE void
+set_char_table_purpose (Lisp_Object table, Lisp_Object val)
+{
+ XCHAR_TABLE (table)->purpose = val;
+}
+
+/* Set different slots in (sub)character tables. */
+
+INLINE void
+set_char_table_extras (Lisp_Object table, ptrdiff_t idx, Lisp_Object val)
+{
+ eassert (0 <= idx && idx < CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (table)));
+ XCHAR_TABLE (table)->extras[idx] = val;
+}
+
+INLINE void
+set_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val)
+{
+ eassert (0 <= idx && idx < (1 << CHARTAB_SIZE_BITS_0));
+ XCHAR_TABLE (table)->contents[idx] = val;
+}
+
+INLINE void
+set_sub_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val)
+{
+ XSUB_CHAR_TABLE (table)->contents[idx] = val;
+}
+
+/* Defined in data.c. */
+extern Lisp_Object indirect_function (Lisp_Object);
+extern Lisp_Object find_symbol_value (Lisp_Object);
+enum Arith_Comparison {
+ ARITH_EQUAL,
+ ARITH_NOTEQUAL,
+ ARITH_LESS,
+ ARITH_GRTR,
+ ARITH_LESS_OR_EQUAL,
+ ARITH_GRTR_OR_EQUAL
+};
+extern Lisp_Object arithcompare (Lisp_Object num1, Lisp_Object num2,
+ enum Arith_Comparison comparison);
+
+/* Convert the integer I to an Emacs representation, either the integer
+ itself, or a cons of two or three integers, or if all else fails a float.
+ I should not have side effects. */
+#define INTEGER_TO_CONS(i) \
+ (! FIXNUM_OVERFLOW_P (i) \
+ ? make_number (i) \
+ : ! ((FIXNUM_OVERFLOW_P (INTMAX_MIN >> 16) \
+ || FIXNUM_OVERFLOW_P (UINTMAX_MAX >> 16)) \
+ && FIXNUM_OVERFLOW_P ((i) >> 16)) \
+ ? Fcons (make_number ((i) >> 16), make_number ((i) & 0xffff)) \
+ : ! ((FIXNUM_OVERFLOW_P (INTMAX_MIN >> 16 >> 24) \
+ || FIXNUM_OVERFLOW_P (UINTMAX_MAX >> 16 >> 24)) \
+ && FIXNUM_OVERFLOW_P ((i) >> 16 >> 24)) \
+ ? Fcons (make_number ((i) >> 16 >> 24), \
+ Fcons (make_number ((i) >> 16 & 0xffffff), \
+ make_number ((i) & 0xffff))) \
+ : make_float (i))
+
+/* Convert the Emacs representation CONS back to an integer of type
+ TYPE, storing the result the variable VAR. Signal an error if CONS
+ is not a valid representation or is out of range for TYPE. */
+#define CONS_TO_INTEGER(cons, type, var) \
+ (TYPE_SIGNED (type) \
+ ? ((var) = cons_to_signed (cons, TYPE_MINIMUM (type), TYPE_MAXIMUM (type))) \
+ : ((var) = cons_to_unsigned (cons, TYPE_MAXIMUM (type))))
+extern intmax_t cons_to_signed (Lisp_Object, intmax_t, intmax_t);
+extern uintmax_t cons_to_unsigned (Lisp_Object, uintmax_t);
+
+extern struct Lisp_Symbol *indirect_variable (struct Lisp_Symbol *);
+extern _Noreturn void args_out_of_range (Lisp_Object, Lisp_Object);
+extern _Noreturn void args_out_of_range_3 (Lisp_Object, Lisp_Object,
+ Lisp_Object);
+extern Lisp_Object do_symval_forwarding (union Lisp_Fwd *);
+extern void set_internal (Lisp_Object, Lisp_Object, Lisp_Object, bool);
+extern void syms_of_data (void);
+extern void swap_in_global_binding (struct Lisp_Symbol *);
+
+/* Defined in cmds.c */
+extern void syms_of_cmds (void);
+extern void keys_of_cmds (void);
+
+/* Defined in coding.c. */
+extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t,
+ ptrdiff_t, bool, bool, Lisp_Object);
+extern void init_coding (void);
+extern void init_coding_once (void);
+extern void syms_of_coding (void);
+
+/* Defined in character.c. */
+extern ptrdiff_t chars_in_text (const unsigned char *, ptrdiff_t);
+extern ptrdiff_t multibyte_chars_in_text (const unsigned char *, ptrdiff_t);
+extern void syms_of_character (void);
+
+/* Defined in charset.c. */
+extern void init_charset (void);
+extern void init_charset_once (void);
+extern void syms_of_charset (void);
+/* Structure forward declarations. */
+struct charset;
+
+/* Defined in syntax.c. */
+extern void init_syntax_once (void);
+extern void syms_of_syntax (void);
+
+/* Defined in fns.c. */
+enum { NEXT_ALMOST_PRIME_LIMIT = 11 };
+extern EMACS_INT next_almost_prime (EMACS_INT) ATTRIBUTE_CONST;
+extern Lisp_Object larger_vector (Lisp_Object, ptrdiff_t, ptrdiff_t);
+extern void sweep_weak_hash_tables (void);
+EMACS_UINT hash_string (char const *, ptrdiff_t);
+EMACS_UINT sxhash (Lisp_Object, int);
+Lisp_Object make_hash_table (struct hash_table_test, Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object);
+ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, EMACS_UINT *);
+ptrdiff_t hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object,
+ EMACS_UINT);
+extern struct hash_table_test hashtest_eql, hashtest_equal;
+extern void validate_subarray (Lisp_Object, Lisp_Object, Lisp_Object,
+ ptrdiff_t, ptrdiff_t *, ptrdiff_t *);
+extern Lisp_Object substring_both (Lisp_Object, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t);
+extern Lisp_Object merge (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object do_yes_or_no_p (Lisp_Object);
+extern Lisp_Object concat2 (Lisp_Object, Lisp_Object);
+extern Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object nconc2 (Lisp_Object, Lisp_Object);
+extern Lisp_Object assq_no_quit (Lisp_Object, Lisp_Object);
+extern Lisp_Object assoc_no_quit (Lisp_Object, Lisp_Object);
+extern void clear_string_char_byte_cache (void);
+extern ptrdiff_t string_char_to_byte (Lisp_Object, ptrdiff_t);
+extern ptrdiff_t string_byte_to_char (Lisp_Object, ptrdiff_t);
+extern Lisp_Object string_to_multibyte (Lisp_Object);
+extern Lisp_Object string_make_unibyte (Lisp_Object);
+extern void syms_of_fns (void);
+
+/* Defined in floatfns.c. */
+extern void syms_of_floatfns (void);
+extern Lisp_Object fmod_float (Lisp_Object x, Lisp_Object y);
+
+/* Defined in fringe.c. */
+extern void syms_of_fringe (void);
+extern void init_fringe (void);
+#ifdef HAVE_WINDOW_SYSTEM
+extern void mark_fringe_data (void);
+extern void init_fringe_once (void);
+#endif /* HAVE_WINDOW_SYSTEM */
+
+/* Defined in image.c. */
+extern int x_bitmap_mask (struct frame *, ptrdiff_t);
+extern void reset_image_types (void);
+extern void syms_of_image (void);
+
+/* Defined in insdel.c. */
+extern void move_gap_both (ptrdiff_t, ptrdiff_t);
+extern _Noreturn void buffer_overflow (void);
+extern void make_gap (ptrdiff_t);
+extern void make_gap_1 (struct buffer *, ptrdiff_t);
+extern ptrdiff_t copy_text (const unsigned char *, unsigned char *,
+ ptrdiff_t, bool, bool);
+extern int count_combining_before (const unsigned char *,
+ ptrdiff_t, ptrdiff_t, ptrdiff_t);
+extern int count_combining_after (const unsigned char *,
+ ptrdiff_t, ptrdiff_t, ptrdiff_t);
+extern void insert (const char *, ptrdiff_t);
+extern void insert_and_inherit (const char *, ptrdiff_t);
+extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t,
+ bool, bool, bool);
+extern void insert_from_gap (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail);
+extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t, bool);
+extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, bool);
+extern void insert_char (int);
+extern void insert_string (const char *);
+extern void insert_before_markers (const char *, ptrdiff_t);
+extern void insert_before_markers_and_inherit (const char *, ptrdiff_t);
+extern void insert_from_string_before_markers (Lisp_Object, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, bool);
+extern void del_range (ptrdiff_t, ptrdiff_t);
+extern Lisp_Object del_range_1 (ptrdiff_t, ptrdiff_t, bool, bool);
+extern void del_range_byte (ptrdiff_t, ptrdiff_t, bool);
+extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, bool);
+extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t, bool);
+extern void modify_text (ptrdiff_t, ptrdiff_t);
+extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *);
+extern void prepare_to_modify_buffer_1 (ptrdiff_t, ptrdiff_t, ptrdiff_t *);
+extern void invalidate_buffer_caches (struct buffer *, ptrdiff_t, ptrdiff_t);
+extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t);
+extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t);
+extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t);
+extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, bool, bool,
bool);
+extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t,
+ const char *, ptrdiff_t, ptrdiff_t, bool);
+extern void syms_of_insdel (void);
+
+/* Defined in dispnew.c. */
+#if (defined PROFILING \
+ && (defined __FreeBSD__ || defined GNU_LINUX || defined __MINGW32__))
+_Noreturn void __executable_start (void);
+#endif
+extern Lisp_Object Vwindow_system;
+extern Lisp_Object sit_for (Lisp_Object, bool, int);
+
+/* Defined in xdisp.c. */
+extern bool noninteractive_need_newline;
+extern Lisp_Object echo_area_buffer[2];
+extern void add_to_log (const char *, Lisp_Object, Lisp_Object);
+extern void check_message_stack (void);
+extern void setup_echo_area_for_printing (bool);
+extern bool push_message (void);
+extern void pop_message_unwind (void);
+extern Lisp_Object restore_message_unwind (Lisp_Object);
+extern void restore_message (void);
+extern Lisp_Object current_message (void);
+extern void clear_message (bool, bool);
+extern void message (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2);
+extern void message1 (const char *);
+extern void message1_nolog (const char *);
+extern void message3 (Lisp_Object);
+extern void message3_nolog (Lisp_Object);
+extern void message_dolog (const char *, ptrdiff_t, bool, bool);
+extern void message_with_string (const char *, Lisp_Object, bool);
+extern void message_log_maybe_newline (void);
+extern void update_echo_area (void);
+extern void truncate_echo_area (ptrdiff_t);
+extern void redisplay (void);
+
+void set_frame_cursor_types (struct frame *, Lisp_Object);
+extern void syms_of_xdisp (void);
+extern void init_xdisp (void);
+extern Lisp_Object safe_eval (Lisp_Object);
+extern bool pos_visible_p (struct window *, ptrdiff_t, int *,
+ int *, int *, int *, int *, int *);
+
+/* Defined in xsettings.c. */
+extern void syms_of_xsettings (void);
+
+/* Defined in vm-limit.c. */
+extern void memory_warnings (void *, void (*warnfun) (const char *));
+
+/* Defined in character.c. */
+extern void parse_str_as_multibyte (const unsigned char *, ptrdiff_t,
+ ptrdiff_t *, ptrdiff_t *);
+
+/* Defined in alloc.c. */
+extern void check_pure_size (void);
+extern void free_misc (Lisp_Object);
+extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT);
+extern void malloc_warning (const char *);
+extern _Noreturn void memory_full (size_t);
+extern _Noreturn void buffer_memory_full (ptrdiff_t);
+extern bool survives_gc_p (Lisp_Object);
+extern void mark_object (Lisp_Object);
+#if defined REL_ALLOC && !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
+extern void refill_memory_reserve (void);
+#endif
+extern const char *pending_malloc_warning;
+extern Lisp_Object zero_vector;
+extern Lisp_Object *stack_base;
+extern EMACS_INT consing_since_gc;
+extern EMACS_INT gc_relative_threshold;
+extern EMACS_INT memory_full_cons_threshold;
+extern Lisp_Object list1 (Lisp_Object);
+extern Lisp_Object list2 (Lisp_Object, Lisp_Object);
+extern Lisp_Object list3 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object list4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object list5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object);
+enum constype {CONSTYPE_HEAP, CONSTYPE_PURE};
+extern Lisp_Object listn (enum constype, ptrdiff_t, Lisp_Object, ...);
+
+/* Build a frequently used 2/3/4-integer lists. */
+
+INLINE Lisp_Object
+list2i (EMACS_INT x, EMACS_INT y)
+{
+ return list2 (make_number (x), make_number (y));
+}
+
+INLINE Lisp_Object
+list3i (EMACS_INT x, EMACS_INT y, EMACS_INT w)
+{
+ return list3 (make_number (x), make_number (y), make_number (w));
+}
+
+INLINE Lisp_Object
+list4i (EMACS_INT x, EMACS_INT y, EMACS_INT w, EMACS_INT h)
+{
+ return list4 (make_number (x), make_number (y),
+ make_number (w), make_number (h));
+}
+
+extern Lisp_Object make_uninit_bool_vector (EMACS_INT);
+extern Lisp_Object bool_vector_fill (Lisp_Object, Lisp_Object);
+extern _Noreturn void string_overflow (void);
+extern Lisp_Object make_string (const char *, ptrdiff_t);
+extern Lisp_Object make_formatted_string (char *, const char *, ...)
+ ATTRIBUTE_FORMAT_PRINTF (2, 3);
+extern Lisp_Object make_unibyte_string (const char *, ptrdiff_t);
+
+/* Make unibyte string from C string when the length isn't known. */
+
+INLINE Lisp_Object
+build_unibyte_string (const char *str)
+{
+ return make_unibyte_string (str, strlen (str));
+}
+
+extern Lisp_Object make_multibyte_string (const char *, ptrdiff_t, ptrdiff_t);
+extern Lisp_Object make_event_array (ptrdiff_t, Lisp_Object *);
+extern Lisp_Object make_uninit_string (EMACS_INT);
+extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT);
+extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t);
+extern Lisp_Object make_specified_string (const char *,
+ ptrdiff_t, ptrdiff_t, bool);
+extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, bool);
+extern Lisp_Object make_pure_c_string (const char *, ptrdiff_t);
+
+/* Make a string allocated in pure space, use STR as string data. */
+
+INLINE Lisp_Object
+build_pure_c_string (const char *str)
+{
+ return make_pure_c_string (str, strlen (str));
+}
+
+/* Make a string from the data at STR, treating it as multibyte if the
+ data warrants. */
+
+INLINE Lisp_Object
+build_string (const char *str)
+{
+ return make_string (str, strlen (str));
+}
+
+extern Lisp_Object pure_cons (Lisp_Object, Lisp_Object);
+extern void make_byte_code (struct Lisp_Vector *);
+extern struct Lisp_Vector *allocate_vector (EMACS_INT);
+
+/* Make an uninitialized vector for SIZE objects. NOTE: you must
+ be sure that GC cannot happen until the vector is completely
+ initialized. E.g. the following code is likely to crash:
+
+ v = make_uninit_vector (3);
+ ASET (v, 0, obj0);
+ ASET (v, 1, Ffunction_can_gc ());
+ ASET (v, 2, obj1); */
+
+INLINE Lisp_Object
+make_uninit_vector (ptrdiff_t size)
+{
+ Lisp_Object v;
+ struct Lisp_Vector *p;
+
+ p = allocate_vector (size);
+ XSETVECTOR (v, p);
+ return v;
+}
+
+/* Like above, but special for sub char-tables. */
+
+INLINE Lisp_Object
+make_uninit_sub_char_table (int depth, int min_char)
+{
+ int slots = SUB_CHAR_TABLE_OFFSET + chartab_size[depth];
+ Lisp_Object v = make_uninit_vector (slots);
+
+ XSETPVECTYPE (XVECTOR (v), PVEC_SUB_CHAR_TABLE);
+ XSUB_CHAR_TABLE (v)->depth = depth;
+ XSUB_CHAR_TABLE (v)->min_char = min_char;
+ return v;
+}
+
+extern struct Lisp_Vector *allocate_pseudovector (int, int, int,
+ enum pvec_type);
+
+/* Allocate partially initialized pseudovector where all Lisp_Object
+ slots are set to Qnil but the rest (if any) is left uninitialized. */
+
+#define ALLOCATE_PSEUDOVECTOR(type, field, tag) \
+ ((type *) allocate_pseudovector (VECSIZE (type), \
+ PSEUDOVECSIZE (type, field), \
+ PSEUDOVECSIZE (type, field), tag))
+
+/* Allocate fully initialized pseudovector where all Lisp_Object
+ slots are set to Qnil and the rest (if any) is zeroed. */
+
+#define ALLOCATE_ZEROED_PSEUDOVECTOR(type, field, tag) \
+ ((type *) allocate_pseudovector (VECSIZE (type), \
+ PSEUDOVECSIZE (type, field), \
+ VECSIZE (type), tag))
+
+extern bool gc_in_progress;
+extern bool abort_on_gc;
+extern Lisp_Object make_float (double);
+extern void display_malloc_warning (void);
+extern ptrdiff_t inhibit_garbage_collection (void);
+extern Lisp_Object make_save_int_int_int (ptrdiff_t, ptrdiff_t, ptrdiff_t);
+extern Lisp_Object make_save_obj_obj_obj_obj (Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object);
+extern Lisp_Object make_save_ptr (void *);
+extern Lisp_Object make_save_ptr_int (void *, ptrdiff_t);
+extern Lisp_Object make_save_ptr_ptr (void *, void *);
+extern Lisp_Object make_save_funcptr_ptr_obj (void (*) (void), void *,
+ Lisp_Object);
+extern Lisp_Object make_save_memory (Lisp_Object *, ptrdiff_t);
+extern void free_save_value (Lisp_Object);
+extern Lisp_Object build_overlay (Lisp_Object, Lisp_Object, Lisp_Object);
+extern void free_marker (Lisp_Object);
+extern void free_cons (struct Lisp_Cons *);
+extern void init_alloc_once (void);
+extern void init_alloc (void);
+extern void syms_of_alloc (void);
+extern struct buffer * allocate_buffer (void);
+extern int valid_lisp_object_p (Lisp_Object);
+extern int relocatable_string_data_p (const char *);
+#ifdef GC_CHECK_CONS_LIST
+extern void check_cons_list (void);
+#else
+INLINE void (check_cons_list) (void) { lisp_h_check_cons_list (); }
+#endif
+
+#ifdef REL_ALLOC
+/* Defined in ralloc.c. */
+extern void *r_alloc (void **, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
+extern void r_alloc_free (void **);
+extern void *r_re_alloc (void **, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
+extern void r_alloc_reset_variable (void **, void **);
+extern void r_alloc_inhibit_buffer_relocation (int);
+#endif
+
+/* Defined in chartab.c. */
+extern Lisp_Object copy_char_table (Lisp_Object);
+extern Lisp_Object char_table_ref_and_range (Lisp_Object, int,
+ int *, int *);
+extern void char_table_set_range (Lisp_Object, int, int, Lisp_Object);
+extern void map_char_table (void (*) (Lisp_Object, Lisp_Object,
+ Lisp_Object),
+ Lisp_Object, Lisp_Object, Lisp_Object);
+extern void map_char_table_for_charset (void (*c_function) (Lisp_Object,
Lisp_Object),
+ Lisp_Object, Lisp_Object,
+ Lisp_Object, struct charset *,
+ unsigned, unsigned);
+extern Lisp_Object uniprop_table (Lisp_Object);
+extern void syms_of_chartab (void);
+
+/* Defined in print.c. */
+extern Lisp_Object Vprin1_to_string_buffer;
+extern void debug_print (Lisp_Object) EXTERNALLY_VISIBLE;
+extern void temp_output_buffer_setup (const char *);
+extern int print_level;
+extern void write_string (const char *);
+extern void print_error_message (Lisp_Object, Lisp_Object, const char *,
+ Lisp_Object);
+extern Lisp_Object internal_with_output_to_temp_buffer
+ (const char *, Lisp_Object (*) (Lisp_Object), Lisp_Object);
+#define FLOAT_TO_STRING_BUFSIZE 350
+extern int float_to_string (char *, double);
+extern void init_print_once (void);
+extern void syms_of_print (void);
+
+/* Defined in doprnt.c. */
+extern ptrdiff_t doprnt (char *, ptrdiff_t, const char *, const char *,
+ va_list);
+extern ptrdiff_t esprintf (char *, char const *, ...)
+ ATTRIBUTE_FORMAT_PRINTF (2, 3);
+extern ptrdiff_t exprintf (char **, ptrdiff_t *, char const *, ptrdiff_t,
+ char const *, ...)
+ ATTRIBUTE_FORMAT_PRINTF (5, 6);
+extern ptrdiff_t evxprintf (char **, ptrdiff_t *, char const *, ptrdiff_t,
+ char const *, va_list)
+ ATTRIBUTE_FORMAT_PRINTF (5, 0);
+
+/* Defined in lread.c. */
+extern Lisp_Object check_obarray (Lisp_Object);
+extern Lisp_Object intern_1 (const char *, ptrdiff_t);
+extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t);
+extern Lisp_Object intern_driver (Lisp_Object, Lisp_Object, Lisp_Object);
+extern void init_symbol (Lisp_Object, Lisp_Object);
+extern Lisp_Object oblookup (Lisp_Object, const char *, ptrdiff_t, ptrdiff_t);
+INLINE void
+LOADHIST_ATTACH (Lisp_Object x)
+{
+ if (initialized)
+ Vcurrent_load_list = Fcons (x, Vcurrent_load_list);
+}
+extern int openp (Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object *, Lisp_Object, bool);
+extern Lisp_Object string_to_number (char const *, int, bool);
+extern void map_obarray (Lisp_Object, void (*) (Lisp_Object, Lisp_Object),
+ Lisp_Object);
+extern void dir_warning (const char *, Lisp_Object);
+extern void init_obarray (void);
+extern void init_lread (void);
+extern void syms_of_lread (void);
+
+INLINE Lisp_Object
+intern (const char *str)
+{
+ return intern_1 (str, strlen (str));
+}
+
+INLINE Lisp_Object
+intern_c_string (const char *str)
+{
+ return intern_c_string_1 (str, strlen (str));
+}
+
+/* Defined in eval.c. */
+extern EMACS_INT lisp_eval_depth;
+extern Lisp_Object Vautoload_queue;
+extern Lisp_Object Vrun_hooks;
+extern Lisp_Object Vsignaling_function;
+extern Lisp_Object inhibit_lisp_code;
+extern struct handler *handlerlist;
+
+/* To run a normal hook, use the appropriate function from the list below.
+ The calling convention:
+
+ if (!NILP (Vrun_hooks))
+ call1 (Vrun_hooks, Qmy_funny_hook);
+
+ should no longer be used. */
+extern void run_hook (Lisp_Object);
+extern void run_hook_with_args_2 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object run_hook_with_args (ptrdiff_t nargs, Lisp_Object *args,
+ Lisp_Object (*funcall)
+ (ptrdiff_t nargs, Lisp_Object *args));
+extern _Noreturn void xsignal (Lisp_Object, Lisp_Object);
+extern _Noreturn void xsignal0 (Lisp_Object);
+extern _Noreturn void xsignal1 (Lisp_Object, Lisp_Object);
+extern _Noreturn void xsignal2 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern _Noreturn void xsignal3 (Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object);
+extern _Noreturn void signal_error (const char *, Lisp_Object);
+extern Lisp_Object eval_sub (Lisp_Object form);
+extern Lisp_Object apply1 (Lisp_Object, Lisp_Object);
+extern Lisp_Object call0 (Lisp_Object);
+extern Lisp_Object call1 (Lisp_Object, Lisp_Object);
+extern Lisp_Object call2 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object call3 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object call4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object);
+extern Lisp_Object call5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object);
+extern Lisp_Object call6 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object call7 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+extern Lisp_Object internal_catch (Lisp_Object, Lisp_Object (*) (Lisp_Object),
Lisp_Object);
+extern Lisp_Object internal_lisp_condition_case (Lisp_Object, Lisp_Object,
Lisp_Object);
+extern Lisp_Object internal_condition_case (Lisp_Object (*) (void),
Lisp_Object, Lisp_Object (*) (Lisp_Object));
+extern Lisp_Object internal_condition_case_1 (Lisp_Object (*) (Lisp_Object),
Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object));
+extern Lisp_Object internal_condition_case_2 (Lisp_Object (*) (Lisp_Object,
Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*)
(Lisp_Object));
+extern Lisp_Object internal_condition_case_n
+ (Lisp_Object (*) (ptrdiff_t, Lisp_Object *), ptrdiff_t, Lisp_Object *,
+ Lisp_Object, Lisp_Object (*) (Lisp_Object, ptrdiff_t, Lisp_Object *));
+extern void specbind (Lisp_Object, Lisp_Object);
+extern void record_unwind_protect (void (*) (Lisp_Object), Lisp_Object);
+extern void record_unwind_protect_ptr (void (*) (void *), void *);
+extern void record_unwind_protect_int (void (*) (int), int);
+extern void record_unwind_protect_void (void (*) (void));
+extern void record_unwind_protect_nothing (void);
+extern void clear_unwind_protect (ptrdiff_t);
+extern void set_unwind_protect (ptrdiff_t, void (*) (Lisp_Object),
Lisp_Object);
+extern void set_unwind_protect_ptr (ptrdiff_t, void (*) (void *), void *);
+extern Lisp_Object unbind_to (ptrdiff_t, Lisp_Object);
+extern _Noreturn void error (const char *, ...) ATTRIBUTE_FORMAT_PRINTF (1, 2);
+extern _Noreturn void verror (const char *, va_list)
+ ATTRIBUTE_FORMAT_PRINTF (1, 0);
+extern void un_autoload (Lisp_Object);
+extern Lisp_Object call_debugger (Lisp_Object arg);
+extern void init_eval_once (void);
+extern Lisp_Object safe_call (ptrdiff_t, Lisp_Object, ...);
+extern Lisp_Object safe_call1 (Lisp_Object, Lisp_Object);
+extern Lisp_Object safe_call2 (Lisp_Object, Lisp_Object, Lisp_Object);
+extern void init_eval (void);
+extern void syms_of_eval (void);
+extern void unwind_body (Lisp_Object);
+extern ptrdiff_t record_in_backtrace (Lisp_Object, Lisp_Object *, ptrdiff_t);
+extern void mark_specpdl (void);
+extern void get_backtrace (Lisp_Object array);
+Lisp_Object backtrace_top_function (void);
+extern bool let_shadows_buffer_binding_p (struct Lisp_Symbol *symbol);
+extern bool let_shadows_global_binding_p (Lisp_Object symbol);
+
+
+/* Defined in editfns.c. */
+extern void insert1 (Lisp_Object);
+extern Lisp_Object format2 (const char *, Lisp_Object, Lisp_Object);
+extern Lisp_Object save_excursion_save (void);
+extern Lisp_Object save_restriction_save (void);
+extern void save_excursion_restore (Lisp_Object);
+extern void save_restriction_restore (Lisp_Object);
+extern _Noreturn void time_overflow (void);
+extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, bool);
+extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, bool);
+extern void init_editfns (void);
+extern void syms_of_editfns (void);
+
+/* Defined in buffer.c. */
+extern bool mouse_face_overlay_overlaps (Lisp_Object);
+extern _Noreturn void nsberror (Lisp_Object);
+extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t);
+extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t);
+extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t);
+extern void report_overlay_modification (Lisp_Object, Lisp_Object, bool,
+ Lisp_Object, Lisp_Object,
Lisp_Object);
+extern bool overlay_touches_p (ptrdiff_t);
+extern Lisp_Object other_buffer_safely (Lisp_Object);
+extern Lisp_Object get_truename_buffer (Lisp_Object);
+extern void init_buffer_once (void);
+extern void init_buffer (int);
+extern void syms_of_buffer (void);
+extern void keys_of_buffer (void);
+
+/* Defined in marker.c. */
+
+extern ptrdiff_t marker_position (Lisp_Object);
+extern ptrdiff_t marker_byte_position (Lisp_Object);
+extern void clear_charpos_cache (struct buffer *);
+extern ptrdiff_t buf_charpos_to_bytepos (struct buffer *, ptrdiff_t);
+extern ptrdiff_t buf_bytepos_to_charpos (struct buffer *, ptrdiff_t);
+extern void unchain_marker (struct Lisp_Marker *marker);
+extern Lisp_Object set_marker_restricted (Lisp_Object, Lisp_Object,
Lisp_Object);
+extern Lisp_Object set_marker_both (Lisp_Object, Lisp_Object, ptrdiff_t,
ptrdiff_t);
+extern Lisp_Object set_marker_restricted_both (Lisp_Object, Lisp_Object,
+ ptrdiff_t, ptrdiff_t);
+extern Lisp_Object build_marker (struct buffer *, ptrdiff_t, ptrdiff_t);
+extern void syms_of_marker (void);
+
+/* Defined in fileio.c. */
+
+extern Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object);
+extern Lisp_Object write_region (Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object, int);
+extern void close_file_unwind (int);
+extern void fclose_unwind (void *);
+extern void restore_point_unwind (Lisp_Object);
+extern _Noreturn void report_file_errno (const char *, Lisp_Object, int);
+extern _Noreturn void report_file_error (const char *, Lisp_Object);
+extern bool internal_delete_file (Lisp_Object);
+extern Lisp_Object emacs_readlinkat (int, const char *);
+extern bool file_directory_p (const char *);
+extern bool file_accessible_directory_p (Lisp_Object);
+extern void init_fileio (void);
+extern void syms_of_fileio (void);
+extern Lisp_Object make_temp_name (Lisp_Object, bool);
+
+/* Defined in search.c. */
+extern void shrink_regexp_cache (void);
+extern void restore_search_regs (void);
+extern void record_unwind_save_match_data (void);
+struct re_registers;
+extern struct re_pattern_buffer *compile_pattern (Lisp_Object,
+ struct re_registers *,
+ Lisp_Object, bool, bool);
+extern ptrdiff_t fast_string_match_internal (Lisp_Object, Lisp_Object,
+ Lisp_Object);
+
+INLINE ptrdiff_t
+fast_string_match (Lisp_Object regexp, Lisp_Object string)
+{
+ return fast_string_match_internal (regexp, string, Qnil);
+}
+
+INLINE ptrdiff_t
+fast_string_match_ignore_case (Lisp_Object regexp, Lisp_Object string)
+{
+ return fast_string_match_internal (regexp, string, Vascii_canon_table);
+}
+
+extern ptrdiff_t fast_c_string_match_ignore_case (Lisp_Object, const char *,
+ ptrdiff_t);
+extern ptrdiff_t fast_looking_at (Lisp_Object, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t, Lisp_Object);
+extern ptrdiff_t find_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t *, ptrdiff_t *, bool);
+extern ptrdiff_t scan_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, bool);
+extern ptrdiff_t scan_newline_from_point (ptrdiff_t, ptrdiff_t *, ptrdiff_t *);
+extern ptrdiff_t find_newline_no_quit (ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t *);
+extern ptrdiff_t find_before_next_newline (ptrdiff_t, ptrdiff_t,
+ ptrdiff_t, ptrdiff_t *);
+extern void syms_of_search (void);
+extern void clear_regexp_cache (void);
+
+/* Defined in minibuf.c. */
+
+extern Lisp_Object Vminibuffer_list;
+extern Lisp_Object last_minibuf_string;
+extern Lisp_Object get_minibuffer (EMACS_INT);
+extern void init_minibuf_once (void);
+extern void syms_of_minibuf (void);
+
+/* Defined in callint.c. */
+
+extern void syms_of_callint (void);
+
+/* Defined in casefiddle.c. */
+
+extern void syms_of_casefiddle (void);
+extern void keys_of_casefiddle (void);
+
+/* Defined in casetab.c. */
+
+extern void init_casetab_once (void);
+extern void syms_of_casetab (void);
+
+/* Defined in keyboard.c. */
+
+extern Lisp_Object echo_message_buffer;
+extern struct kboard *echo_kboard;
+extern void cancel_echoing (void);
+extern Lisp_Object last_undo_boundary;
+extern bool input_pending;
+#ifdef HAVE_STACK_OVERFLOW_HANDLING
+extern sigjmp_buf return_to_command_loop;
+#endif
+extern Lisp_Object menu_bar_items (Lisp_Object);
+extern Lisp_Object tool_bar_items (Lisp_Object, int *);
+extern void discard_mouse_events (void);
+#ifdef USABLE_SIGIO
+void handle_input_available_signal (int);
+#endif
+extern Lisp_Object pending_funcalls;
+extern bool detect_input_pending (void);
+extern bool detect_input_pending_ignore_squeezables (void);
+extern bool detect_input_pending_run_timers (bool);
+extern void safe_run_hooks (Lisp_Object);
+extern void cmd_error_internal (Lisp_Object, const char *);
+extern Lisp_Object command_loop_1 (void);
+extern Lisp_Object read_menu_command (void);
+extern Lisp_Object recursive_edit_1 (void);
+extern void record_auto_save (void);
+extern void force_auto_save_soon (void);
+extern void init_keyboard (void);
+extern void syms_of_keyboard (void);
+extern void keys_of_keyboard (void);
+
+/* Defined in indent.c. */
+extern ptrdiff_t current_column (void);
+extern void invalidate_current_column (void);
+extern bool indented_beyond_p (ptrdiff_t, ptrdiff_t, EMACS_INT);
+extern void syms_of_indent (void);
+
+/* Defined in frame.c. */
+extern void store_frame_param (struct frame *, Lisp_Object, Lisp_Object);
+extern void store_in_alist (Lisp_Object *, Lisp_Object, Lisp_Object);
+extern Lisp_Object do_switch_frame (Lisp_Object, int, int, Lisp_Object);
+extern Lisp_Object get_frame_param (struct frame *, Lisp_Object);
+extern void frames_discard_buffer (Lisp_Object);
+extern void syms_of_frame (void);
+
+/* Defined in emacs.c. */
+extern char **initial_argv;
+extern int initial_argc;
+#if defined (HAVE_X_WINDOWS) || defined (HAVE_NS)
+extern bool display_arg;
+#endif
+extern Lisp_Object decode_env_path (const char *, const char *, bool);
+extern Lisp_Object empty_unibyte_string, empty_multibyte_string;
+extern _Noreturn void terminate_due_to_signal (int, int);
+#ifdef WINDOWSNT
+extern Lisp_Object Vlibrary_cache;
+#endif
+#if HAVE_SETLOCALE
+void fixup_locale (void);
+void synchronize_system_messages_locale (void);
+void synchronize_system_time_locale (void);
+#else
+INLINE void fixup_locale (void) {}
+INLINE void synchronize_system_messages_locale (void) {}
+INLINE void synchronize_system_time_locale (void) {}
+#endif
+extern void shut_down_emacs (int, Lisp_Object);
+
+/* True means don't do interactive redisplay and don't change tty modes. */
+extern bool noninteractive;
+
+/* True means remove site-lisp directories from load-path. */
+extern bool no_site_lisp;
+
+/* Pipe used to send exit notification to the daemon parent at
+ startup. On Windows, we use a kernel event instead. */
+#ifndef WINDOWSNT
+extern int daemon_pipe[2];
+#define IS_DAEMON (daemon_pipe[1] != 0)
+#define DAEMON_RUNNING (daemon_pipe[1] >= 0)
+#else /* WINDOWSNT */
+extern void *w32_daemon_event;
+#define IS_DAEMON (w32_daemon_event != NULL)
+#define DAEMON_RUNNING (w32_daemon_event != INVALID_HANDLE_VALUE)
+#endif
+
+/* True if handling a fatal error already. */
+extern bool fatal_error_in_progress;
+
+/* True means don't do use window-system-specific display code. */
+extern bool inhibit_window_system;
+/* True means that a filter or a sentinel is running. */
+extern bool running_asynch_code;
+
+/* Defined in process.c. */
+extern void kill_buffer_processes (Lisp_Object);
+extern int wait_reading_process_output (intmax_t, int, int, bool, Lisp_Object,
+ struct Lisp_Process *, int);
+/* Max value for the first argument of wait_reading_process_output. */
+#if __GNUC__ == 3 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 5)
+/* Work around a bug in GCC 3.4.2, known to be fixed in GCC 4.6.3.
+ The bug merely causes a bogus warning, but the warning is annoying. */
+# define WAIT_READING_MAX min (TYPE_MAXIMUM (time_t), INTMAX_MAX)
+#else
+# define WAIT_READING_MAX INTMAX_MAX
+#endif
+#ifdef HAVE_TIMERFD
+extern void add_timer_wait_descriptor (int);
+#endif
+extern void add_keyboard_wait_descriptor (int);
+extern void delete_keyboard_wait_descriptor (int);
+#ifdef HAVE_GPM
+extern void add_gpm_wait_descriptor (int);
+extern void delete_gpm_wait_descriptor (int);
+#endif
+extern void init_process_emacs (void);
+extern void syms_of_process (void);
+extern void setup_process_coding_systems (Lisp_Object);
+
+/* Defined in callproc.c. */
+#ifndef DOS_NT
+ _Noreturn
+#endif
+extern int child_setup (int, int, int, char **, bool, Lisp_Object);
+extern void init_callproc_1 (void);
+extern void init_callproc (void);
+extern void set_initial_environment (void);
+extern void syms_of_callproc (void);
+
+/* Defined in doc.c. */
+extern Lisp_Object read_doc_string (Lisp_Object);
+extern Lisp_Object get_doc_string (Lisp_Object, bool, bool);
+extern void syms_of_doc (void);
+extern int read_bytecode_char (bool);
+
+/* Defined in bytecode.c. */
+extern void syms_of_bytecode (void);
+extern struct byte_stack *byte_stack_list;
+#if BYTE_MARK_STACK
+extern void mark_byte_stack (void);
+#endif
+extern void unmark_byte_stack (void);
+extern Lisp_Object exec_byte_code (Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object, ptrdiff_t, Lisp_Object *);
+
+/* Defined in macros.c. */
+extern void init_macros (void);
+extern void syms_of_macros (void);
+
+/* Defined in undo.c. */
+extern void truncate_undo_list (struct buffer *);
+extern void record_insert (ptrdiff_t, ptrdiff_t);
+extern void record_delete (ptrdiff_t, Lisp_Object, bool);
+extern void record_first_change (void);
+extern void record_change (ptrdiff_t, ptrdiff_t);
+extern void record_property_change (ptrdiff_t, ptrdiff_t,
+ Lisp_Object, Lisp_Object,
+ Lisp_Object);
+extern void syms_of_undo (void);
+
+/* Defined in textprop.c. */
+extern void report_interval_modification (Lisp_Object, Lisp_Object);
+
+/* Defined in menu.c. */
+extern void syms_of_menu (void);
+
+/* Defined in xmenu.c. */
+extern void syms_of_xmenu (void);
+
+/* Defined in termchar.h. */
+struct tty_display_info;
+
+/* Defined in termhooks.h. */
+struct terminal;
+
+/* Defined in sysdep.c. */
+#ifndef HAVE_GET_CURRENT_DIR_NAME
+extern char *get_current_dir_name (void);
+#endif
+extern void stuff_char (char c);
+extern void init_foreground_group (void);
+extern void sys_subshell (void);
+extern void sys_suspend (void);
+extern void discard_tty_input (void);
+extern void init_sys_modes (struct tty_display_info *);
+extern void reset_sys_modes (struct tty_display_info *);
+extern void init_all_sys_modes (void);
+extern void reset_all_sys_modes (void);
+extern void child_setup_tty (int);
+extern void setup_pty (int);
+extern int set_window_size (int, int, int);
+extern EMACS_INT get_random (void);
+extern void seed_random (void *, ptrdiff_t);
+extern void init_random (void);
+extern void emacs_backtrace (int);
+extern _Noreturn void emacs_abort (void) NO_INLINE;
+extern int emacs_open (const char *, int, int);
+extern int emacs_pipe (int[2]);
+extern int emacs_close (int);
+extern ptrdiff_t emacs_read (int, void *, ptrdiff_t);
+extern ptrdiff_t emacs_write (int, void const *, ptrdiff_t);
+extern ptrdiff_t emacs_write_sig (int, void const *, ptrdiff_t);
+extern void emacs_perror (char const *);
+
+extern void unlock_all_files (void);
+extern void lock_file (Lisp_Object);
+extern void unlock_file (Lisp_Object);
+extern void unlock_buffer (struct buffer *);
+extern void syms_of_filelock (void);
+extern int str_collate (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
+
+/* Defined in sound.c. */
+extern void syms_of_sound (void);
+
+/* Defined in category.c. */
+extern void init_category_once (void);
+extern Lisp_Object char_category_set (int);
+extern void syms_of_category (void);
+
+/* Defined in ccl.c. */
+extern void syms_of_ccl (void);
+
+/* Defined in dired.c. */
+extern void syms_of_dired (void);
+extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object,
+ Lisp_Object, Lisp_Object,
+ bool, Lisp_Object);
+
+/* Defined in term.c. */
+extern int *char_ins_del_vector;
+extern void syms_of_term (void);
+extern _Noreturn void fatal (const char *msgid, ...)
+ ATTRIBUTE_FORMAT_PRINTF (1, 2);
+
+/* Defined in terminal.c. */
+extern void syms_of_terminal (void);
+
+/* Defined in font.c. */
+extern void syms_of_font (void);
+extern void init_font (void);
+
+#ifdef HAVE_WINDOW_SYSTEM
+/* Defined in fontset.c. */
+extern void syms_of_fontset (void);
+#endif
+
+/* Defined in gfilenotify.c */
+#ifdef HAVE_GFILENOTIFY
+extern void globals_of_gfilenotify (void);
+extern void syms_of_gfilenotify (void);
+#endif
+
+/* Defined in inotify.c */
+#ifdef HAVE_INOTIFY
+extern void syms_of_inotify (void);
+#endif
+
+#ifdef HAVE_W32NOTIFY
+/* Defined on w32notify.c. */
+extern void syms_of_w32notify (void);
+#endif
+
+/* Defined in xfaces.c. */
+extern Lisp_Object Vface_alternative_font_family_alist;
+extern Lisp_Object Vface_alternative_font_registry_alist;
+extern void syms_of_xfaces (void);
+
+#ifdef HAVE_X_WINDOWS
+/* Defined in xfns.c. */
+extern void syms_of_xfns (void);
+
+/* Defined in xsmfns.c. */
+extern void syms_of_xsmfns (void);
+
+/* Defined in xselect.c. */
+extern void syms_of_xselect (void);
+
+/* Defined in xterm.c. */
+extern void init_xterm (void);
+extern void syms_of_xterm (void);
+#endif /* HAVE_X_WINDOWS */
+
+#ifdef HAVE_WINDOW_SYSTEM
+/* Defined in xterm.c, nsterm.m, w32term.c. */
+extern char *x_get_keysym_name (int);
+#endif /* HAVE_WINDOW_SYSTEM */
+
+#ifdef HAVE_LIBXML2
+/* Defined in xml.c. */
+extern void syms_of_xml (void);
+extern void xml_cleanup_parser (void);
+#endif
+
+#ifdef HAVE_ZLIB
+/* Defined in decompress.c. */
+extern void syms_of_decompress (void);
+#endif
+
+#ifdef HAVE_DBUS
+/* Defined in dbusbind.c. */
+void init_dbusbind (void);
+void syms_of_dbusbind (void);
+#endif
+
+
+/* Defined in profiler.c. */
+extern bool profiler_memory_running;
+extern void malloc_probe (size_t);
+extern void syms_of_profiler (void);
+
+
+#ifdef DOS_NT
+/* Defined in msdos.c, w32.c. */
+extern char *emacs_root_dir (void);
+#endif /* DOS_NT */
+
+/* Defined in lastfile.c. */
+extern char my_edata[];
+extern char my_endbss[];
+extern char *my_endbss_static;
+
+/* True means ^G can quit instantly. */
+extern bool immediate_quit;
+
+extern void *xmalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1));
+extern void *xzalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1));
+extern void *xrealloc (void *, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
+extern void xfree (void *);
+extern void *xnmalloc (ptrdiff_t, ptrdiff_t) ATTRIBUTE_MALLOC_SIZE ((1,2));
+extern void *xnrealloc (void *, ptrdiff_t, ptrdiff_t)
+ ATTRIBUTE_ALLOC_SIZE ((2,3));
+extern void *xpalloc (void *, ptrdiff_t *, ptrdiff_t, ptrdiff_t, ptrdiff_t);
+
+extern char *xstrdup (const char *) ATTRIBUTE_MALLOC;
+extern char *xlispstrdup (Lisp_Object) ATTRIBUTE_MALLOC;
+extern void dupstring (char **, char const *);
+
+/* Make DEST a copy of STRING's data. Return a pointer to DEST's terminating
+ null byte. This is like stpcpy, except the source is a Lisp string. */
+
+INLINE char *
+lispstpcpy (char *dest, Lisp_Object string)
+{
+ ptrdiff_t len = SBYTES (string);
+ memcpy (dest, SDATA (string), len + 1);
+ return dest + len;
+}
+
+extern void xputenv (const char *);
+
+extern char *egetenv_internal (const char *, ptrdiff_t);
+
+INLINE char *
+egetenv (const char *var)
+{
+ /* When VAR is a string literal, strlen can be optimized away. */
+ return egetenv_internal (var, strlen (var));
+}
+
+/* Set up the name of the machine we're running on. */
+extern void init_system_name (void);
+
+/* Return the absolute value of X. X should be a signed integer
+ expression without side effects, and X's absolute value should not
+ exceed the maximum for its promoted type. This is called 'eabs'
+ because 'abs' is reserved by the C standard. */
+#define eabs(x) ((x) < 0 ? -(x) : (x))
+
+/* Return a fixnum or float, depending on whether VAL fits in a Lisp
+ fixnum. */
+
+#define make_fixnum_or_float(val) \
+ (FIXNUM_OVERFLOW_P (val) ? make_float (val) : make_number (val))
+
+/* SAFE_ALLOCA normally allocates memory on the stack, but if size is
+ larger than MAX_ALLOCA, use xmalloc to avoid overflowing the stack. */
+
+enum MAX_ALLOCA { MAX_ALLOCA = 16 * 1024 };
+
+extern void *record_xmalloc (size_t) ATTRIBUTE_ALLOC_SIZE ((1));
+
+#define USE_SAFE_ALLOCA \
+ ptrdiff_t sa_avail = MAX_ALLOCA; \
+ ptrdiff_t sa_count = SPECPDL_INDEX (); bool sa_must_free = false
+
+#define AVAIL_ALLOCA(size) (sa_avail -= (size), alloca (size))
+
+/* SAFE_ALLOCA allocates a simple buffer. */
+
+#define SAFE_ALLOCA(size) ((size) <= sa_avail \
+ ? AVAIL_ALLOCA (size) \
+ : (sa_must_free = true, record_xmalloc (size)))
+
+/* SAFE_NALLOCA sets BUF to a newly allocated array of MULTIPLIER *
+ NITEMS items, each of the same type as *BUF. MULTIPLIER must
+ positive. The code is tuned for MULTIPLIER being a constant. */
+
+#define SAFE_NALLOCA(buf, multiplier, nitems) \
+ do { \
+ if ((nitems) <= sa_avail / sizeof *(buf) / (multiplier)) \
+ (buf) = AVAIL_ALLOCA (sizeof *(buf) * (multiplier) * (nitems)); \
+ else \
+ { \
+ (buf) = xnmalloc (nitems, sizeof *(buf) * (multiplier)); \
+ sa_must_free = true; \
+ record_unwind_protect_ptr (xfree, buf); \
+ } \
+ } while (false)
+
+/* SAFE_ALLOCA_STRING allocates a C copy of a Lisp string. */
+
+#define SAFE_ALLOCA_STRING(ptr, string) \
+ do { \
+ (ptr) = SAFE_ALLOCA (SBYTES (string) + 1); \
+ memcpy (ptr, SDATA (string), SBYTES (string) + 1); \
+ } while (false)
+
+/* SAFE_FREE frees xmalloced memory and enables GC as needed. */
+
+#define SAFE_FREE() \
+ do { \
+ if (sa_must_free) { \
+ sa_must_free = false; \
+ unbind_to (sa_count, Qnil); \
+ } \
+ } while (false)
+
+
+/* Return floor (NBYTES / WORD_SIZE). */
+
+INLINE ptrdiff_t
+lisp_word_count (ptrdiff_t nbytes)
+{
+ if (-1 >> 1 == -1)
+ switch (word_size)
+ {
+ case 2: return nbytes >> 1;
+ case 4: return nbytes >> 2;
+ case 8: return nbytes >> 3;
+ case 16: return nbytes >> 4;
+ }
+ return nbytes / word_size - (nbytes % word_size < 0);
+}
+
+/* SAFE_ALLOCA_LISP allocates an array of Lisp_Objects. */
+
+#define SAFE_ALLOCA_LISP(buf, nelt) \
+ do { \
+ if ((nelt) <= lisp_word_count (sa_avail)) \
+ (buf) = AVAIL_ALLOCA ((nelt) * word_size); \
+ else if ((nelt) <= min (PTRDIFF_MAX, SIZE_MAX) / word_size) \
+ { \
+ Lisp_Object arg_; \
+ (buf) = xmalloc ((nelt) * word_size); \
+ arg_ = make_save_memory (buf, nelt); \
+ sa_must_free = true; \
+ record_unwind_protect (free_save_value, arg_); \
+ } \
+ else \
+ memory_full (SIZE_MAX); \
+ } while (false)
+
+
+/* If USE_STACK_LISP_OBJECTS, define macros that and functions that allocate
+ block-scoped conses and strings. These objects are not
+ managed by the garbage collector, so they are dangerous: passing them
+ out of their scope (e.g., to user code) results in undefined behavior.
+ Conversely, they have better performance because GC is not involved.
+
+ This feature is experimental and requires careful debugging.
+ Build with CPPFLAGS='-DUSE_STACK_LISP_OBJECTS=0' to disable it. */
+
+#ifndef USE_STACK_LISP_OBJECTS
+# define USE_STACK_LISP_OBJECTS true
+#endif
+
+/* USE_STACK_LISP_OBJECTS requires GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS. */
+
+#if GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS
+# undef USE_STACK_LISP_OBJECTS
+# define USE_STACK_LISP_OBJECTS false
+#endif
+
+#ifdef GC_CHECK_STRING_BYTES
+enum { defined_GC_CHECK_STRING_BYTES = true };
+#else
+enum { defined_GC_CHECK_STRING_BYTES = false };
+#endif
+
+/* Struct inside unions that are typically no larger and aligned enough. */
+
+union Aligned_Cons
+{
+ struct Lisp_Cons s;
+ double d; intmax_t i; void *p;
+};
+
+union Aligned_String
+{
+ struct Lisp_String s;
+ double d; intmax_t i; void *p;
+};
+
+/* True for stack-based cons and string implementations, respectively.
+ Use stack-based strings only if stack-based cons also works.
+ Otherwise, STACK_CONS would create heap-based cons cells that
+ could point to stack-based strings, which is a no-no. */
+
+enum
+ {
+ USE_STACK_CONS = (USE_STACK_LISP_OBJECTS
+ && alignof (union Aligned_Cons) % GCALIGNMENT == 0),
+ USE_STACK_STRING = (USE_STACK_CONS
+ && !defined_GC_CHECK_STRING_BYTES
+ && alignof (union Aligned_String) % GCALIGNMENT == 0)
+ };
+
+/* Auxiliary macros used for auto allocation of Lisp objects. Please
+ use these only in macros like AUTO_CONS that declare a local
+ variable whose lifetime will be clear to the programmer. */
+#define STACK_CONS(a, b) \
+ make_lisp_ptr (&(union Aligned_Cons) { { a, { b } } }.s, Lisp_Cons)
+#define AUTO_CONS_EXPR(a, b) \
+ (USE_STACK_CONS ? STACK_CONS (a, b) : Fcons (a, b))
+
+/* Declare NAME as an auto Lisp cons or short list if possible, a
+ GC-based one otherwise. This is in the sense of the C keyword
+ 'auto'; i.e., the object has the lifetime of the containing block.
+ The resulting object should not be made visible to user Lisp code. */
+
+#define AUTO_CONS(name, a, b) Lisp_Object name = AUTO_CONS_EXPR (a, b)
+#define AUTO_LIST1(name, a) \
+ Lisp_Object name = (USE_STACK_CONS ? STACK_CONS (a, Qnil) : list1 (a))
+#define AUTO_LIST2(name, a, b) \
+ Lisp_Object name = (USE_STACK_CONS \
+ ? STACK_CONS (a, STACK_CONS (b, Qnil)) \
+ : list2 (a, b))
+#define AUTO_LIST3(name, a, b, c) \
+ Lisp_Object name = (USE_STACK_CONS \
+ ? STACK_CONS (a, STACK_CONS (b, STACK_CONS (c, Qnil))) \
+ : list3 (a, b, c))
+#define AUTO_LIST4(name, a, b, c, d) \
+ Lisp_Object name \
+ = (USE_STACK_CONS
\
+ ? STACK_CONS (a, STACK_CONS (b, STACK_CONS (c, \
+ STACK_CONS (d, Qnil)))) \
+ : list4 (a, b, c, d))
+
+/* Check whether stack-allocated strings are ASCII-only. */
+
+#if defined (ENABLE_CHECKING) && USE_STACK_LISP_OBJECTS
+extern const char *verify_ascii (const char *);
+#else
+# define verify_ascii(str) (str)
+#endif
+
+/* Declare NAME as an auto Lisp string if possible, a GC-based one if not.
+ Take its value from STR. STR is not necessarily copied and should
+ contain only ASCII characters. The resulting Lisp string should
+ not be modified or made visible to user code. */
+
+#define AUTO_STRING(name, str) \
+ Lisp_Object name = \
+ (USE_STACK_STRING \
+ ? (make_lisp_ptr \
+ ((&(union Aligned_String) \
+ {{strlen (str), -1, 0, (unsigned char *) verify_ascii (str)}}.s), \
+ Lisp_String)) \
+ : build_string (verify_ascii (str)))
+
+/* Loop over all tails of a list, checking for cycles.
+ FIXME: Make tortoise and n internal declarations.
+ FIXME: Unroll the loop body so we don't need `n'. */
+#define FOR_EACH_TAIL(hare, list, tortoise, n) \
+ for ((tortoise) = (hare) = (list), (n) = true; \
+ CONSP (hare); \
+ (hare = XCDR (hare), (n) = !(n), \
+ ((n) \
+ ? (EQ (hare, tortoise) \
+ ? xsignal1 (Qcircular_list, list) \
+ : (void) 0) \
+ /* Move tortoise before the next iteration, in case */ \
+ /* the next iteration does an Fsetcdr. */ \
+ : (void) ((tortoise) = XCDR (tortoise)))))
+
+/* Do a `for' loop over alist values. */
+
+#define FOR_EACH_ALIST_VALUE(head_var, list_var, value_var) \
+ for ((list_var) = (head_var);
\
+ (CONSP (list_var) && ((value_var) = XCDR (XCAR (list_var)), true)); \
+ (list_var) = XCDR (list_var))
+
+/* Check whether it's time for GC, and run it if so. */
+
+INLINE void
+maybe_gc (void)
+{
+ if ((consing_since_gc > gc_cons_threshold
+ && consing_since_gc > gc_relative_threshold)
+ || (!NILP (Vmemory_full)
+ && consing_since_gc > memory_full_cons_threshold))
+ Fgarbage_collect ();
+}
+
+INLINE bool
+functionp (Lisp_Object object)
+{
+ if (SYMBOLP (object) && !NILP (Ffboundp (object)))
+ {
+ object = Findirect_function (object, Qt);
+
+ if (CONSP (object) && EQ (XCAR (object), Qautoload))
+ {
+ /* Autoloaded symbols are functions, except if they load
+ macros or keymaps. */
+ int i;
+ for (i = 0; i < 4 && CONSP (object); i++)
+ object = XCDR (object);
+
+ return ! (CONSP (object) && !NILP (XCAR (object)));
+ }
+ }
+
+ if (SUBRP (object))
+ return XSUBR (object)->max_args != UNEVALLED;
+ else if (COMPILEDP (object))
+ return true;
+ else if (CONSP (object))
+ {
+ Lisp_Object car = XCAR (object);
+ return EQ (car, Qlambda) || EQ (car, Qclosure);
+ }
+ else
+ return false;
+}
+
+INLINE_HEADER_END
+
+#endif /* EMACS_LISP_H */
diff --git a/test/etags/c-src/emacs/src/regex.h
b/test/etags/c-src/emacs/src/regex.h
new file mode 100644
index 0000000..3dfecf0
--- /dev/null
+++ b/test/etags/c-src/emacs/src/regex.h
@@ -0,0 +1,630 @@
+/* Definitions for data structures and routines for the regular
+ expression library, version 0.12.
+
+ Copyright (C) 1985, 1989-1993, 1995, 2000-2015 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef _REGEX_H
+#define _REGEX_H 1
+
+/* Allow the use in C++ code. */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* POSIX says that <sys/types.h> must be included (by the caller) before
+ <regex.h>. */
+
+#if !defined _POSIX_C_SOURCE && !defined _POSIX_SOURCE && defined VMS
+/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
+ should be there. */
+# include <stddef.h>
+#endif
+
+/* The following bits are used to determine the regexp syntax we
+ recognize. The set/not-set meanings where historically chosen so
+ that Emacs syntax had the value 0.
+ The bits are given in alphabetical order, and
+ the definitions shifted by one from the previous bit; thus, when we
+ add or remove a bit, only one other definition need change. */
+typedef unsigned long reg_syntax_t;
+
+/* If this bit is not set, then \ inside a bracket expression is literal.
+ If set, then such a \ quotes the following character. */
+#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
+
+/* If this bit is not set, then + and ? are operators, and \+ and \? are
+ literals.
+ If set, then \+ and \? are operators and + and ? are literals. */
+#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
+
+/* If this bit is set, then character classes are supported. They are:
+ [:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
+ [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
+ If not set, then character classes are not supported. */
+#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
+
+/* If this bit is set, then ^ and $ are always anchors (outside bracket
+ expressions, of course).
+ If this bit is not set, then it depends:
+ ^ is an anchor if it is at the beginning of a regular
+ expression or after an open-group or an alternation operator;
+ $ is an anchor if it is at the end of a regular expression, or
+ before a close-group or an alternation operator.
+
+ This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
+ POSIX draft 11.2 says that * etc. in leading positions is undefined.
+ We already implemented a previous draft which made those constructs
+ invalid, though, so we haven't changed the code back. */
+#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
+
+/* If this bit is set, then special characters are always special
+ regardless of where they are in the pattern.
+ If this bit is not set, then special characters are special only in
+ some contexts; otherwise they are ordinary. Specifically,
+ * + ? and intervals are only special when not after the beginning,
+ open-group, or alternation operator. */
+#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
+
+/* If this bit is set, then *, +, ?, and { cannot be first in an re or
+ immediately after an alternation or begin-group operator. */
+#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
+
+/* If this bit is set, then . matches newline.
+ If not set, then it doesn't. */
+#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
+
+/* If this bit is set, then . doesn't match NUL.
+ If not set, then it does. */
+#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
+
+/* If this bit is set, nonmatching lists [^...] do not match newline.
+ If not set, they do. */
+#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
+
+/* If this bit is set, either \{...\} or {...} defines an
+ interval, depending on RE_NO_BK_BRACES.
+ If not set, \{, \}, {, and } are literals. */
+#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
+
+/* If this bit is set, +, ? and | aren't recognized as operators.
+ If not set, they are. */
+#define RE_LIMITED_OPS (RE_INTERVALS << 1)
+
+/* If this bit is set, newline is an alternation operator.
+ If not set, newline is literal. */
+#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
+
+/* If this bit is set, then `{...}' defines an interval, and \{ and \}
+ are literals.
+ If not set, then `\{...\}' defines an interval. */
+#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
+
+/* If this bit is set, (...) defines a group, and \( and \) are literals.
+ If not set, \(...\) defines a group, and ( and ) are literals. */
+#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
+
+/* If this bit is set, then \<digit> matches <digit>.
+ If not set, then \<digit> is a back-reference. */
+#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
+
+/* If this bit is set, then | is an alternation operator, and \| is literal.
+ If not set, then \| is an alternation operator, and | is literal. */
+#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
+
+/* If this bit is set, then an ending range point collating higher
+ than the starting range point, as in [z-a], is invalid.
+ If not set, then when ending range point collates higher than the
+ starting range point, the range is ignored. */
+#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
+
+/* If this bit is set, then an unmatched ) is ordinary.
+ If not set, then an unmatched ) is invalid. */
+#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
+
+/* If this bit is set, succeed as soon as we match the whole pattern,
+ without further backtracking. */
+#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
+
+/* If this bit is set, do not process the GNU regex operators.
+ If not set, then the GNU regex operators are recognized. */
+#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
+
+/* If this bit is set, then *?, +? and ?? match non greedily. */
+#define RE_FRUGAL (RE_NO_GNU_OPS << 1)
+
+/* If this bit is set, then (?:...) is treated as a shy group. */
+#define RE_SHY_GROUPS (RE_FRUGAL << 1)
+
+/* If this bit is set, ^ and $ only match at beg/end of buffer. */
+#define RE_NO_NEWLINE_ANCHOR (RE_SHY_GROUPS << 1)
+
+/* If this bit is set, turn on internal regex debugging.
+ If not set, and debugging was on, turn it off.
+ This only works if regex.c is compiled -DDEBUG.
+ We define this bit always, so that all that's needed to turn on
+ debugging is to recompile regex.c; the calling code can always have
+ this bit set, and it won't affect anything in the normal case. */
+#define RE_DEBUG (RE_NO_NEWLINE_ANCHOR << 1)
+
+/* This global variable defines the particular regexp syntax to use (for
+ some interfaces). When a regexp is compiled, the syntax used is
+ stored in the pattern buffer, so changing this does not affect
+ already-compiled regexps. */
+extern reg_syntax_t re_syntax_options;
+
+#ifdef emacs
+/* In Emacs, this is the string or buffer in which we
+ are matching. It is used for looking up syntax properties. */
+extern Lisp_Object re_match_object;
+#endif
+
+/* Roughly the maximum number of failure points on the stack. */
+extern size_t re_max_failures;
+
+
+/* Define combinations of the above bits for the standard possibilities.
+ (The [[[ comments delimit what gets put into the Texinfo file, so
+ don't delete them!) */
+/* [[[begin syntaxes]]] */
+#define RE_SYNTAX_EMACS
\
+ (RE_CHAR_CLASSES | RE_INTERVALS | RE_SHY_GROUPS | RE_FRUGAL)
+
+#define RE_SYNTAX_AWK \
+ (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \
+ | RE_NO_BK_PARENS | RE_NO_BK_REFS \
+ | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
+ | RE_DOT_NEWLINE | RE_CONTEXT_INDEP_ANCHORS \
+ | RE_UNMATCHED_RIGHT_PAREN_ORD | RE_NO_GNU_OPS)
+
+#define RE_SYNTAX_GNU_AWK \
+ ((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DEBUG)
\
+ & ~(RE_DOT_NOT_NULL | RE_INTERVALS | RE_CONTEXT_INDEP_OPS))
+
+#define RE_SYNTAX_POSIX_AWK \
+ (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS \
+ | RE_INTERVALS | RE_NO_GNU_OPS)
+
+#define RE_SYNTAX_GREP \
+ (RE_BK_PLUS_QM | RE_CHAR_CLASSES
\
+ | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \
+ | RE_NEWLINE_ALT)
+
+#define RE_SYNTAX_EGREP
\
+ (RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \
+ | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \
+ | RE_NEWLINE_ALT | RE_NO_BK_PARENS \
+ | RE_NO_BK_VBAR)
+
+#define RE_SYNTAX_POSIX_EGREP \
+ (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)
+
+/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */
+#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
+
+#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
+
+/* Syntax bits common to both basic and extended POSIX regex syntax. */
+#define _RE_SYNTAX_POSIX_COMMON
\
+ (RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \
+ | RE_INTERVALS | RE_NO_EMPTY_RANGES)
+
+#define RE_SYNTAX_POSIX_BASIC \
+ (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
+
+/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
+ RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this
+ isn't minimal, since other operators, such as \`, aren't disabled. */
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC \
+ (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
+
+#define RE_SYNTAX_POSIX_EXTENDED \
+ (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
+ | RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
+ | RE_NO_BK_PARENS | RE_NO_BK_VBAR \
+ | RE_CONTEXT_INVALID_OPS | RE_UNMATCHED_RIGHT_PAREN_ORD)
+
+/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INDEP_OPS is
+ removed and RE_NO_BK_REFS is added. */
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \
+ (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
+ | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \
+ | RE_NO_BK_PARENS | RE_NO_BK_REFS \
+ | RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
+/* [[[end syntaxes]]] */
+
+/* Maximum number of duplicates an interval can allow. Some systems
+ (erroneously) define this in other header files, but we want our
+ value, so remove any previous define. */
+#ifdef RE_DUP_MAX
+# undef RE_DUP_MAX
+#endif
+/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */
+#define RE_DUP_MAX (0x7fff)
+
+
+/* POSIX `cflags' bits (i.e., information for `regcomp'). */
+
+/* If this bit is set, then use extended regular expression syntax.
+ If not set, then use basic regular expression syntax. */
+#define REG_EXTENDED 1
+
+/* If this bit is set, then ignore case when matching.
+ If not set, then case is significant. */
+#define REG_ICASE (REG_EXTENDED << 1)
+
+/* If this bit is set, then anchors do not match at newline
+ characters in the string.
+ If not set, then anchors do match at newlines. */
+#define REG_NEWLINE (REG_ICASE << 1)
+
+/* If this bit is set, then report only success or fail in regexec.
+ If not set, then returns differ between not matching and errors. */
+#define REG_NOSUB (REG_NEWLINE << 1)
+
+
+/* POSIX `eflags' bits (i.e., information for regexec). */
+
+/* If this bit is set, then the beginning-of-line operator doesn't match
+ the beginning of the string (presumably because it's not the
+ beginning of a line).
+ If not set, then the beginning-of-line operator does match the
+ beginning of the string. */
+#define REG_NOTBOL 1
+
+/* Like REG_NOTBOL, except for the end-of-line. */
+#define REG_NOTEOL (1 << 1)
+
+
+/* If any error codes are removed, changed, or added, update the
+ `re_error_msg' table in regex.c. */
+typedef enum
+{
+#ifdef _XOPEN_SOURCE
+ REG_ENOSYS = -1, /* This will never happen for this implementation. */
+#endif
+
+ REG_NOERROR = 0, /* Success. */
+ REG_NOMATCH, /* Didn't find a match (for regexec). */
+
+ /* POSIX regcomp return error codes. (In the order listed in the
+ standard.) */
+ REG_BADPAT, /* Invalid pattern. */
+ REG_ECOLLATE, /* Not implemented. */
+ REG_ECTYPE, /* Invalid character class name. */
+ REG_EESCAPE, /* Trailing backslash. */
+ REG_ESUBREG, /* Invalid back reference. */
+ REG_EBRACK, /* Unmatched left bracket. */
+ REG_EPAREN, /* Parenthesis imbalance. */
+ REG_EBRACE, /* Unmatched \{. */
+ REG_BADBR, /* Invalid contents of \{\}. */
+ REG_ERANGE, /* Invalid range end. */
+ REG_ESPACE, /* Ran out of memory. */
+ REG_BADRPT, /* No preceding re for repetition op. */
+
+ /* Error codes we've added. */
+ REG_EEND, /* Premature end. */
+ REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */
+ REG_ERPAREN, /* Unmatched ) or \); not returned from regcomp. */
+ REG_ERANGEX /* Range striding over charsets. */
+} reg_errcode_t;
+
+/* This data structure represents a compiled pattern. Before calling
+ the pattern compiler, the fields `buffer', `allocated', `fastmap',
+ `translate', and `no_sub' can be set. After the pattern has been
+ compiled, the `re_nsub' field is available. All other fields are
+ private to the regex routines. */
+
+#ifndef RE_TRANSLATE_TYPE
+# define RE_TRANSLATE_TYPE char *
+#endif
+
+struct re_pattern_buffer
+{
+/* [[[begin pattern_buffer]]] */
+ /* Space that holds the compiled pattern. It is declared as
+ `unsigned char *' because its elements are
+ sometimes used as array indexes. */
+ unsigned char *buffer;
+
+ /* Number of bytes to which `buffer' points. */
+ size_t allocated;
+
+ /* Number of bytes actually used in `buffer'. */
+ size_t used;
+
+ /* Syntax setting with which the pattern was compiled. */
+ reg_syntax_t syntax;
+
+ /* Pointer to a fastmap, if any, otherwise zero. re_search uses
+ the fastmap, if there is one, to skip over impossible
+ starting points for matches. */
+ char *fastmap;
+
+ /* Either a translate table to apply to all characters before
+ comparing them, or zero for no translation. The translation
+ is applied to a pattern when it is compiled and to a string
+ when it is matched. */
+ RE_TRANSLATE_TYPE translate;
+
+ /* Number of subexpressions found by the compiler. */
+ size_t re_nsub;
+
+ /* Zero if this pattern cannot match the empty string, one else.
+ Well, in truth it's used only in `re_search_2', to see
+ whether or not we should use the fastmap, so we don't set
+ this absolutely perfectly; see `re_compile_fastmap'. */
+ unsigned can_be_null : 1;
+
+ /* If REGS_UNALLOCATED, allocate space in the `regs' structure
+ for `max (RE_NREGS, re_nsub + 1)' groups.
+ If REGS_REALLOCATE, reallocate space if necessary.
+ If REGS_FIXED, use what's there. */
+#define REGS_UNALLOCATED 0
+#define REGS_REALLOCATE 1
+#define REGS_FIXED 2
+ unsigned regs_allocated : 2;
+
+ /* Set to zero when `regex_compile' compiles a pattern; set to one
+ by `re_compile_fastmap' if it updates the fastmap. */
+ unsigned fastmap_accurate : 1;
+
+ /* If set, `re_match_2' does not return information about
+ subexpressions. */
+ unsigned no_sub : 1;
+
+ /* If set, a beginning-of-line anchor doesn't match at the
+ beginning of the string. */
+ unsigned not_bol : 1;
+
+ /* Similarly for an end-of-line anchor. */
+ unsigned not_eol : 1;
+
+ /* If true, the compilation of the pattern had to look up the syntax table,
+ so the compiled pattern is only valid for the current syntax table. */
+ unsigned used_syntax : 1;
+
+#ifdef emacs
+ /* If true, multi-byte form in the regexp pattern should be
+ recognized as a multibyte character. */
+ unsigned multibyte : 1;
+
+ /* If true, multi-byte form in the target of match should be
+ recognized as a multibyte character. */
+ unsigned target_multibyte : 1;
+
+ /* Charset of unibyte characters at compiling time. */
+ int charset_unibyte;
+#endif
+
+/* [[[end pattern_buffer]]] */
+};
+
+typedef struct re_pattern_buffer regex_t;
+
+/* Type for byte offsets within the string. POSIX mandates this to be an int,
+ but the Open Group has signaled its intention to change the requirement to
+ be that regoff_t be at least as wide as ptrdiff_t and ssize_t. Current
+ gnulib sources also use ssize_t, and we need this for supporting buffers and
+ strings > 2GB on 64-bit hosts. */
+typedef ssize_t regoff_t;
+
+
+/* This is the structure we store register match data in. See
+ regex.texinfo for a full description of what registers match. */
+struct re_registers
+{
+ unsigned num_regs;
+ regoff_t *start;
+ regoff_t *end;
+};
+
+
+/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
+ `re_match_2' returns information about at least this many registers
+ the first time a `regs' structure is passed. */
+#ifndef RE_NREGS
+# define RE_NREGS 30
+#endif
+
+
+/* POSIX specification for registers. Aside from the different names than
+ `re_registers', POSIX uses an array of structures, instead of a
+ structure of arrays. */
+typedef struct
+{
+ regoff_t rm_so; /* Byte offset from string's start to substring's start. */
+ regoff_t rm_eo; /* Byte offset from string's start to substring's end. */
+} regmatch_t;
+
+/* Declarations for routines. */
+
+/* Sets the current default syntax to SYNTAX, and return the old syntax.
+ You can also simply assign to the `re_syntax_options' variable. */
+extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);
+
+/* Compile the regular expression PATTERN, with length LENGTH
+ and syntax given by the global `re_syntax_options', into the buffer
+ BUFFER. Return NULL if successful, and an error string if not. */
+extern const char *re_compile_pattern (const char *__pattern, size_t __length,
+ struct re_pattern_buffer *__buffer);
+
+
+/* Compile a fastmap for the compiled pattern in BUFFER; used to
+ accelerate searches. Return 0 if successful and -2 if was an
+ internal error. */
+extern int re_compile_fastmap (struct re_pattern_buffer *__buffer);
+
+
+/* Search in the string STRING (with length LENGTH) for the pattern
+ compiled into BUFFER. Start searching at position START, for RANGE
+ characters. Return the starting position of the match, -1 for no
+ match, or -2 for an internal error. Also return register
+ information in REGS (if REGS and BUFFER->no_sub are nonzero). */
+extern regoff_t re_search (struct re_pattern_buffer *__buffer,
+ const char *__string, size_t __length,
+ ssize_t __start, ssize_t __range,
+ struct re_registers *__regs);
+
+
+/* Like `re_search', but search in the concatenation of STRING1 and
+ STRING2. Also, stop searching at index START + STOP. */
+extern regoff_t re_search_2 (struct re_pattern_buffer *__buffer,
+ const char *__string1, size_t __length1,
+ const char *__string2, size_t __length2,
+ ssize_t __start, ssize_t __range,
+ struct re_registers *__regs,
+ ssize_t __stop);
+
+
+/* Like `re_search', but return how many characters in STRING the regexp
+ in BUFFER matched, starting at position START. */
+extern regoff_t re_match (struct re_pattern_buffer *__buffer,
+ const char *__string, size_t __length,
+ ssize_t __start, struct re_registers *__regs);
+
+
+/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
+extern regoff_t re_match_2 (struct re_pattern_buffer *__buffer,
+ const char *__string1, size_t __length1,
+ const char *__string2, size_t __length2,
+ ssize_t __start, struct re_registers *__regs,
+ ssize_t __stop);
+
+
+/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
+ ENDS. Subsequent matches using BUFFER and REGS will use this memory
+ for recording register information. STARTS and ENDS must be
+ allocated with malloc, and must each be at least `NUM_REGS * sizeof
+ (regoff_t)' bytes long.
+
+ If NUM_REGS == 0, then subsequent matches should allocate their own
+ register data.
+
+ Unless this function is called, the first search or match using
+ PATTERN_BUFFER will allocate its own register data, without
+ freeing the old data. */
+extern void re_set_registers (struct re_pattern_buffer *__buffer,
+ struct re_registers *__regs,
+ unsigned __num_regs,
+ regoff_t *__starts, regoff_t *__ends);
+
+#if defined _REGEX_RE_COMP || defined _LIBC
+# ifndef _CRAY
+/* 4.2 bsd compatibility. */
+extern char *re_comp (const char *);
+extern int re_exec (const char *);
+# endif
+#endif
+
+/* GCC 2.95 and later have "__restrict"; C99 compilers have
+ "restrict", and "configure" may have defined "restrict".
+ Other compilers use __restrict, __restrict__, and _Restrict, and
+ 'configure' might #define 'restrict' to those words, so pick a
+ different name. */
+#ifndef _Restrict_
+# if 199901L <= __STDC_VERSION__
+# define _Restrict_ restrict
+# elif 2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)
+# define _Restrict_ __restrict
+# else
+# define _Restrict_
+# endif
+#endif
+/* gcc 3.1 and up support the [restrict] syntax. Don't trust
+ sys/cdefs.h's definition of __restrict_arr, though, as it
+ mishandles gcc -ansi -pedantic. */
+#ifndef _Restrict_arr_
+# if ((199901L <= __STDC_VERSION__ \
+ || ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__)) \
+ && !defined __STRICT_ANSI__))
\
+ && !defined __GNUG__)
+# define _Restrict_arr_ _Restrict_
+# else
+# define _Restrict_arr_
+# endif
+#endif
+
+/* POSIX compatibility. */
+extern reg_errcode_t regcomp (regex_t *_Restrict_ __preg,
+ const char *_Restrict_ __pattern,
+ int __cflags);
+
+extern reg_errcode_t regexec (const regex_t *_Restrict_ __preg,
+ const char *_Restrict_ __string, size_t __nmatch,
+ regmatch_t __pmatch[_Restrict_arr_],
+ int __eflags);
+
+extern size_t regerror (int __errcode, const regex_t * __preg,
+ char *__errbuf, size_t __errbuf_size);
+
+extern void regfree (regex_t *__preg);
+
+
+#ifdef __cplusplus
+}
+#endif /* C++ */
+
+/* For platform which support the ISO C amendment 1 functionality we
+ support user defined character classes. */
+#if WIDE_CHAR_SUPPORT
+/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
+# include <wchar.h>
+# include <wctype.h>
+#endif
+
+#if WIDE_CHAR_SUPPORT
+/* The GNU C library provides support for user-defined character classes
+ and the functions from ISO C amendment 1. */
+# ifdef CHARCLASS_NAME_MAX
+# define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX
+# else
+/* This shouldn't happen but some implementation might still have this
+ problem. Use a reasonable default value. */
+# define CHAR_CLASS_MAX_LENGTH 256
+# endif
+typedef wctype_t re_wctype_t;
+typedef wchar_t re_wchar_t;
+# define re_wctype wctype
+# define re_iswctype iswctype
+# define re_wctype_to_bit(cc) 0
+#else
+# define CHAR_CLASS_MAX_LENGTH 9 /* Namely, `multibyte'. */
+# define btowc(c) c
+
+/* Character classes. */
+typedef enum { RECC_ERROR = 0,
+ RECC_ALNUM, RECC_ALPHA, RECC_WORD,
+ RECC_GRAPH, RECC_PRINT,
+ RECC_LOWER, RECC_UPPER,
+ RECC_PUNCT, RECC_CNTRL,
+ RECC_DIGIT, RECC_XDIGIT,
+ RECC_BLANK, RECC_SPACE,
+ RECC_MULTIBYTE, RECC_NONASCII,
+ RECC_ASCII, RECC_UNIBYTE
+} re_wctype_t;
+
+extern char re_iswctype (int ch, re_wctype_t cc);
+extern re_wctype_t re_wctype (const unsigned char* str);
+
+typedef int re_wchar_t;
+
+extern void re_set_whitespace_regexp (const char *regexp);
+
+#endif /* not WIDE_CHAR_SUPPORT */
+
+#endif /* regex.h */
+
diff --git a/lib-src/etags.c b/test/etags/c-src/etags.c
similarity index 99%
copy from lib-src/etags.c
copy to test/etags/c-src/etags.c
index b1361db..f243821 100644
--- a/lib-src/etags.c
+++ b/test/etags/c-src/etags.c
@@ -2862,7 +2862,10 @@ consider_token (char *str, int len, int c, int *c_extp,
case st_none:
if (constantypedefs
&& structdef == snone
- && structtype == st_C_enum && bracelev > structbracelev)
+ && structtype == st_C_enum && bracelev > structbracelev
+ /* Don't tag tokens in expressions that assign values to enum
+ constants. */
+ && fvdef != vignore)
return true; /* enum constant */
switch (fvdef)
{
@@ -3176,7 +3179,19 @@ C_entries (int c_ext, FILE *inf)
cpptoken = false;
}
if (cpptoken)
- definedef = dsharpseen;
+ {
+ definedef = dsharpseen;
+ /* This is needed for tagging enum values: when there are
+ preprocessor conditionals inside the enum, we need to
+ reset the value of fvdef so that the next enum value is
+ tagged even though the one before it did not end in a
+ comma. */
+ if (fvdef == vignore && instruct && parlev == 0)
+ {
+ if (strneq (cp, "#if", 3) || strneq (cp, "#el", 3))
+ fvdef = fvnone;
+ }
+ }
} /* if (definedef == dnone) */
continue;
case '[':
@@ -3507,7 +3522,10 @@ C_entries (int c_ext, FILE *inf)
case fstartlist:
case finlist:
case fignore:
+ break;
case vignore:
+ if (instruct && parlev == 0)
+ fvdef = fvnone;
break;
case fdefunname:
fvdef = fignore;
diff --git a/test/etags/c-src/exit.c b/test/etags/c-src/exit.c
new file mode 100644
index 0000000..b8cd22b
--- /dev/null
+++ b/test/etags/c-src/exit.c
@@ -0,0 +1,77 @@
+/* Copyright (C) 1991 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA. */
+
+#include <ansidecl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "exit.h"
+
+#ifdef HAVE_GNU_LD
+CONST struct
+ {
+ size_t n;
+ void EXFUN((*fn[1]), (NOARGS));
+ } __libc_atexit;
+#endif
+
+/* Call all functions registered with `atexit' and `on_exit',
+ in the reverse of the order in which they were registered
+ perform stdio cleanup, and terminate program execution with STATUS. */
+__NORETURN
+void
+DEFUN(exit, (status), int status)
+{
+ register CONST struct exit_function_list *l;
+
+ for (l = __exit_funcs; l != NULL; l = l->next)
+ {
+ register size_t i = l->idx;
+ while (i-- > 0)
+ {
+ CONST struct exit_function *CONST f = &l->fns[i];
+ switch (f->flavor)
+ {
+ case ef_free:
+ break;
+ case ef_on:
+ (*f->func.on.fn)(status, f->func.on.arg);
+ break;
+ case ef_at:
+ (*f->func.at)();
+ break;
+ }
+ }
+ }
+
+#ifdef HAVE_GNU_LD
+ {
+ void EXFUN((*CONST *fn), (NOARGS));
+ for (fn = __libc_atexit.fn; *fn != NULL; ++fn)
+ (**fn) ();
+ }
+#else
+ {
+ extern void EXFUN(_cleanup, (NOARGS));
+ _cleanup();
+ }
+#endif
+
+ _exit(status);
+}
+
diff --git a/test/etags/c-src/exit.strange_suffix
b/test/etags/c-src/exit.strange_suffix
new file mode 100644
index 0000000..b8cd22b
--- /dev/null
+++ b/test/etags/c-src/exit.strange_suffix
@@ -0,0 +1,77 @@
+/* Copyright (C) 1991 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA. */
+
+#include <ansidecl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "exit.h"
+
+#ifdef HAVE_GNU_LD
+CONST struct
+ {
+ size_t n;
+ void EXFUN((*fn[1]), (NOARGS));
+ } __libc_atexit;
+#endif
+
+/* Call all functions registered with `atexit' and `on_exit',
+ in the reverse of the order in which they were registered
+ perform stdio cleanup, and terminate program execution with STATUS. */
+__NORETURN
+void
+DEFUN(exit, (status), int status)
+{
+ register CONST struct exit_function_list *l;
+
+ for (l = __exit_funcs; l != NULL; l = l->next)
+ {
+ register size_t i = l->idx;
+ while (i-- > 0)
+ {
+ CONST struct exit_function *CONST f = &l->fns[i];
+ switch (f->flavor)
+ {
+ case ef_free:
+ break;
+ case ef_on:
+ (*f->func.on.fn)(status, f->func.on.arg);
+ break;
+ case ef_at:
+ (*f->func.at)();
+ break;
+ }
+ }
+ }
+
+#ifdef HAVE_GNU_LD
+ {
+ void EXFUN((*CONST *fn), (NOARGS));
+ for (fn = __libc_atexit.fn; *fn != NULL; ++fn)
+ (**fn) ();
+ }
+#else
+ {
+ extern void EXFUN(_cleanup, (NOARGS));
+ _cleanup();
+ }
+#endif
+
+ _exit(status);
+}
+
diff --git a/test/etags/c-src/fail.c b/test/etags/c-src/fail.c
new file mode 100644
index 0000000..3248278
--- /dev/null
+++ b/test/etags/c-src/fail.c
@@ -0,0 +1 @@
+void (*prt_call())();
diff --git a/test/etags/c-src/getopt.h b/test/etags/c-src/getopt.h
new file mode 100644
index 0000000..93a5cf7
--- /dev/null
+++ b/test/etags/c-src/getopt.h
@@ -0,0 +1,125 @@
+/* Declarations for getopt.
+ Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#ifndef _GETOPT_H
+#define _GETOPT_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+ When `getopt' finds an option that takes an argument,
+ the argument value is returned here.
+ Also, when `ordering' is RETURN_IN_ORDER,
+ each non-option ARGV-element is returned here. */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+ This is used for communication to and from the caller
+ and for communication between successive calls to `getopt'.
+
+ On entry to `getopt', zero means this is the first call; initialize.
+
+ When `getopt' returns EOF, this is the index of the first of the
+ non-option elements that the caller should itself scan.
+
+ Otherwise, `optind' communicates from one call to the next
+ how much of ARGV has been scanned so far. */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+ for unrecognized options. */
+
+extern int opterr;
+
+/* Describe the long-named options requested by the application.
+ The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+ of `struct option' terminated by an element containing a name which is
+ zero.
+
+ The field `has_arg' is:
+ no_argument (or 0) if the option does not take an argument,
+ required_argument (or 1) if the option requires an argument,
+ optional_argument (or 2) if the option takes an optional argument.
+
+ If the field `flag' is not NULL, it points to a variable that is set
+ to the value given in the field `val' when the option is found, but
+ left unchanged if the option is not found.
+
+ To have a long-named option do something other than set an `int' to
+ a compiled-in constant, such as set a value from `optarg', set the
+ option's `flag' field to zero and its `val' field to a nonzero
+ value (the equivalent single-letter option character, if there is
+ one). For long options that have a zero `flag' field, `getopt'
+ returns the contents of the `val' field. */
+
+struct option
+{
+#if __STDC__
+ const char *name;
+#else
+ char *name;
+#endif
+ /* has_arg can't be an enum because some compilers complain about
+ type mismatches in all the code that assumes it is an int. */
+ int has_arg;
+ int *flag;
+ int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'. */
+
+#define no_argument 0
+#define required_argument 1
+#define optional_argument 2
+
+#if __STDC__
+#if defined(__GNU_LIBRARY__)
+/* Many other libraries have conflicting prototypes for getopt, with
+ differences in the consts, in stdlib.h. To avoid compilation
+ errors, only prototype getopt for the GNU C library. */
+extern int getopt (int argc, char *const *argv, const char *shortopts);
+#else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+#endif /* not __GNU_LIBRARY__ */
+extern int getopt_long (int argc, char *const *argv, const char *shortopts,
+ const struct option *longopts, int *longind);
+extern int getopt_long_only (int argc, char *const *argv,
+ const char *shortopts,
+ const struct option *longopts, int *longind);
+
+/* Internal only. Users should not call this directly. */
+extern int _getopt_internal (int argc, char *const *argv,
+ const char *shortopts,
+ const struct option *longopts, int *longind,
+ int long_only);
+#else /* not __STDC__ */
+extern int getopt ();
+extern int getopt_long ();
+extern int getopt_long_only ();
+
+extern int _getopt_internal ();
+#endif /* not __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GETOPT_H */
diff --git a/test/etags/c-src/h.h b/test/etags/c-src/h.h
new file mode 100644
index 0000000..f86c00d
--- /dev/null
+++ b/test/etags/c-src/h.h
@@ -0,0 +1,119 @@
+typedef enum
+{
+ ELEM_I/**< Comment Element i
+ Second comment line. */
+} Fails_t;
+typedef void Lang_function ();
+void Asm_labels ();
+typedef struct tpcmd
+{
+#define ggg hhh
+ union
+ {
+ } arg;
+}
+tpcmd;
+typedef struct foobar2_ {
+ fu int (*funcptr) (void *ptr);
+ long foo;
+ char bar;
+} foobar2;
+typedef enum
+{
+ DEVICE_SWP,
+ DEVICE_LAST
+} bsp_DevId;
+typedef union {
+ struct constant_args {
+ unsigned int burst;
+ } constant;
+} args;
+typedef int *regset;
+typedef int INT;
+typedef union abc
+{
+ int def;
+} ghi1;
+typedef union abc {
+ int def;
+} ghi2;
+typedef struct a {
+} b;
+#define c() d
+typedef struct an_extern_linkage *an_extern_linkage_ptr;
+typedef struct an_extern_linkage {
+ a_name_linkage_kind
+ kind;
+ /* The kind of external linkage ("C++" or "C"). */
+ a_byte_boolean
+ is_explicit;
+ /* TRUE if the external linkage requirement is
+ explicitly specified in the source; FALSE for the
+ default set for the translation unit as a whole. */
+#ifdef CL_CHANGES
+ a_byte_boolean is_curly_brace_form;
+#endif
+} an_extern_linkage;
+typedef struct pollfd pfdset[FD_SETSIZE];
+typedef union rtunion_def
+ {
+ int rtint;
+ char *rtstr;
+ struct rtx_def *rtx;
+ } womboid ;
+typedef union rtunion_def
+
+{
+
+ int rtint;
+ char *rtstr;
+ struct rtx_def *rtxp;
+ struct rtx_def rtxnp;
+
+}
+
+womboid
+
+;
+
+
+/* Leave the next two lines in that order. They exercise an old bug. */
+enum {dog, cat} animals;
+typedef void (_CALLBACK_ *signal_handler)(int);
+typedef void (_CALLBACK_ *signal_handler1)(int);
+/* comment */ #define ANSIC
+ #define ANSIC
+ #else
+typedef void (proc) ();
+typedef void OperatorFun(int opId);
+typedef int f(int a,
+ int b);
+struct my_struct {
+};
+typedef struct my_struct my_typedef;
+typedef RETSIGTYPE (*signal_handler_t) (int);
+#if 0
+ Date 04 May 87 235311 PDT (Mon)
+ Date: 04 May 87 23:53:11 PDT (Mon)
+#endif
+typedef unsigned char unchar;
+typedef int X, Y, Z;
+typedef mio mao;
+extern void ab();
+typedef struct a { } b;
+typedef struct b
+{
+} c;
+int (*oldhup)();
+request (*oldhup) ();
+int extvar;
+#define tag1
+#define aaaaaa \
+bbbbbb
+#define bbbbbb\
+cccccc
+#define cccccccccc
+#define enter_critical_section do { int pri = spl7();
+#define exit_critical_to_previous splarg (pri); } while (0)
+#define UNDEFINED
+struct re_pattern_buffer { unsigned char *buffer; };
diff --git a/test/etags/c-src/machsyscalls.c b/test/etags/c-src/machsyscalls.c
new file mode 100644
index 0000000..44930c3
--- /dev/null
+++ b/test/etags/c-src/machsyscalls.c
@@ -0,0 +1,10 @@
+/* Aliases for basic Mach system calls:
+ mach_task_self -> __mach_task_self, etc. */
+
+#include <gnu-stabs.h>
+
+#define SYSCALL(name, number, type, args, typed_args) \
+ function_alias (name, __##name, type, args, \
+ name typed_args)
+
+#include "mach_syscalls.h"
diff --git a/test/etags/c-src/machsyscalls.h b/test/etags/c-src/machsyscalls.h
new file mode 100644
index 0000000..8b33dc4
--- /dev/null
+++ b/test/etags/c-src/machsyscalls.h
@@ -0,0 +1,31 @@
+SYSCALL (mach_msg_trap, -25,
+ mach_msg_return_t,
+ (msg, option, send_size,
+ rcv_size, rcv_name, timeout, notify),
+ (mach_msg_header_t *msg,
+ mach_msg_option_t option,
+ mach_msg_size_t send_size,
+ mach_msg_size_t rcv_size,
+ mach_port_t rcv_name,
+ mach_msg_timeout_t timeout,
+ mach_port_t notify))
+
+SYSCALL (mach_reply_port, -26,
+ mach_port_t,
+ (),
+ (void))
+
+SYSCALL (mach_thread_self, -27,
+ mach_port_t,
+ (),
+ (void))
+
+SYSCALL (mach_task_self, -28,
+ mach_port_t,
+ (),
+ (void))
+
+SYSCALL (mach_host_self, -29,
+ mach_port_t,
+ (),
+ (void))
diff --git a/test/etags/c-src/sysdep.h b/test/etags/c-src/sysdep.h
new file mode 100644
index 0000000..298a0e4
--- /dev/null
+++ b/test/etags/c-src/sysdep.h
@@ -0,0 +1,57 @@
+/* Copyright (C) 1992, 1993 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA. */
+
+#include <sysdeps/unix/sysdep.h>
+
+#define ENTRY(name)
\
+ .globl _##name; \
+ .align 2; \
+ _##name##:
+
+#define PSEUDO(name, syscall_name, args)
\
+ .text; \
+ .globl syscall_error;
\
+ ENTRY (name) \
+ XCHG_##args
+ movl $SYS_##syscall_name, %eax; \
+ int $0x80; \
+ test %eax, %eax; \
+ jl syscall_error; \
+ XCHG_##args
+
+/* Linux takes system call arguments in registers:
+ 1: %ebx
+ 2: %ecx
+ 3: %edx
+ 4: %esi
+ 5: %edi
+ We put the arguments into registers from the stack,
+ and save the registers, by using the 386 `xchg' instruction
+ to swap the values in both directions. */
+
+#define XCHG_0 /* No arguments to frob. */
+#define XCHG_1 xchg 8(%esp), %ebx; XCHG_0
+#define XCHG_2 xchg 12(%esp), %ecx; XCHG_1
+#define XCHG_3 xchg 16(%esp), %edx; XCHG_2
+#define XCHG_4 xchg 20(%esp), %esi; XCHG_3
+#define XCHG_5 xchg 24(%esp), %edi; XCHG_3
+
+#define r0 %eax /* Normal return-value register. */
+#define r1 %edx /* Secondary return-value register. */
+#define scratch %ecx /* Call-clobbered register for random use. */
+#define MOVE(x,y) movl x, y
diff --git a/test/etags/c-src/tab.c b/test/etags/c-src/tab.c
new file mode 100644
index 0000000..b25d55c
--- /dev/null
+++ b/test/etags/c-src/tab.c
@@ -0,0 +1,112 @@
+/*
+** tab.c for in
+**
+** Made by Pierric
+** Login <address@hidden>
+**
+** Started on Thu Jan 24 18:36:47 2002 Pierric
+** Last update Mon Sep 23 18:02:02 2002 Pierric
+*/
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include "my_malloc.h"
+
+static int count_words(char *str, char delim)
+{
+ int count;
+
+ count = 0;
+ while (*str)
+ {
+ if (*str != delim)
+ {
+ count++;
+ if (!strchr(str + 1, delim))
+ return (count);
+ str = strchr(str + 1, delim);
+ }
+ else
+ str++;
+ }
+ return (count);
+}
+
+static char *get_word(char **str, char delim)
+{
+ char *tmp;
+ char *new;
+
+ while (**str == delim)
+ (*str)++;
+ if (**str == 0)
+ return (NULL);
+ tmp = strchr(*str, delim);
+ if (!tmp)
+ {
+ new = strdup(*str);
+ while (**str)
+ (*str)++;
+ return (new);
+ }
+ my_malloc(new, tmp - *str + 1);
+ new[tmp - *str] = '\0';
+ strncpy(new, *str, tmp - *str);
+ *str = tmp;
+ return (new);
+}
+
+void tab_free(char **tab)
+{
+ int index;
+
+ if (!tab)
+ return;
+ for (index = 0; tab[index]; index++)
+ free(tab[index]);
+ free(tab);
+}
+
+char **tab_fill(char *str, char delim)
+{
+ int count;
+ char **tab;
+ int index;
+
+ if (!str)
+ return (NULL);
+ count = count_words(str, delim);
+ if (!count)
+ return (NULL);
+ my_malloc(tab, (count + 1) * sizeof(char *));
+ for (index = 0; (tab[index] = get_word(&str, delim)); index++)
+ ;
+ return (tab);
+}
+
+/*
+** Deletes the first element of a wordtab, shifting the other
+** elements. The size of the malloced area stays the same, though
+*/
+int tab_delete_first(char **tab)
+{
+ int i;
+
+ if (!tab[0])
+ return (-1);
+ free(tab[0]);
+ for (i = 0; tab[i]; i++)
+ tab[i] = tab[i + 1];
+ return (0);
+}
+
+int tab_count_words(char **tab)
+{
+ int count;
+
+ if (!tab)
+ return (0);
+ for (count = 0; tab[count]; count++)
+ ;
+ return (count);
+}
diff --git a/test/etags/c-src/torture.c b/test/etags/c-src/torture.c
new file mode 100644
index 0000000..77c3763
--- /dev/null
+++ b/test/etags/c-src/torture.c
@@ -0,0 +1,107 @@
+/* Date: Thu, 05 Aug 1993 20:28:03 +0200
+ From: "Tom R.Hageman" <address@hidden>
+ Subject: more etags torture;-) [etags 7.3 patch#3]
+ To: address@hidden
+
+ Hi,
+
+ This test file illustrates some more problems with etags (7.3):
+
+
+ 1. parentheses are confusing,
+ 2. preprocessor directives can disrupt other state machines. */
+
+/* A small torture test for etags. */
+
+/* The classic parenthesis nightmare, based on signal(). */
+void
+(*tag1 (sig, handler)) ()
+ int sig;
+ void (*handler) ();
+{
+ (*handler)(sig);
+ return handler;
+}
+
+#define notag2 void
+/* The classic, with user-defined return type. */
+notag2
+(*tag2 (sig, handler)) ()
+ int sig;
+ void (*handler) ();
+{
+ (*handler)(sig);
+ return handler;
+}
+
+/* The classic, in ANSI C style. */
+void
+(*tag3 (int sig, void (*handler) (int))) (int)
+{
+ (*handler)(sig);
+ return handler;
+}
+
+#define notag4 void
+/* The classic, with user-defined return type, in ANSI C style. */
+notag4
+(*tag4 (int sig, void (*handler) (int))) (int)
+{
+ (*handler)(sig);
+ return handler;
+}
+
+
+/* A less tortuous example. */
+void
+tag5 (handler, arg)
+void (*handler)();
+void *arg;
+{
+ (*handler)(arg);
+}
+
+/* A less tortuous example, in ANSI C style. */
+void
+tag6 (void (*handler) (void *), void *arg)
+{
+ (*handler)(arg);
+}
+
+
+/* Interfering preprocessing torture */
+
+int pp1(
+#if (__STDC__)
+ int
+#endif
+ bar)
+#if (!__STDC__)
+ int bar;
+#endif
+{
+ return bar;
+}
+
+int
+pp2
+#if __STDC__
+ (int bar)
+#else
+ (bar)
+ int bar;
+#endif
+{
+ return bar;
+}
+
+int
+#if __STDC__
+pp3(int bar)
+#else
+pp3(bar)
+ int bar;
+#endif
+{
+ return bar;
+}
diff --git a/test/etags/cp-src/MDiagArray2.h b/test/etags/cp-src/MDiagArray2.h
new file mode 100644
index 0000000..78ee5e1
--- /dev/null
+++ b/test/etags/cp-src/MDiagArray2.h
@@ -0,0 +1,163 @@
+// Template array classes with like-type math ops
+/*
+
+Copyright (C) 1996 John W. Eaton
+
+This file is part of Octave.
+
+Octave is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+Octave is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with Octave; see the file COPYING. If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+*/
+
+#if defined (__GNUG__)
+#pragma interface
+#endif
+
+#if !defined (octave_MDiagArray2_h)
+#define octave_MDiagArray2_h 1
+
+#include "DiagArray2.h"
+#include "MArray2.h"
+
+#if defined (LTGT)
+#undef LTGT
+#endif
+
+#if !defined (CXX_NEW_FRIEND_TEMPLATE_DECL)
+#define LTGT
+#else
+
+#define LTGT <>
+
+template <class T>
+class MDiagArray2;
+
+template <typename T> MDiagArray2<T>&
+operator += (MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+template <typename T> MDiagArray2<T>&
+operator -= (MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+template <typename T> MDiagArray2<T>
+operator * (const MDiagArray2<T>& a, const T& s);
+
+template <typename T> MDiagArray2<T>
+operator / (const MDiagArray2<T>& a, const T& s);
+
+template <typename T> MDiagArray2<T>
+operator * (const T& s, const MDiagArray2<T>& a);
+
+template <typename T> MDiagArray2<T>
+operator + (const MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+template <typename T> MDiagArray2<T>
+operator - (const MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+template <typename T> MDiagArray2<T>
+product (const MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+template <typename T> MDiagArray2<T>
+operator - (const MDiagArray2<T>& a);
+#endif
+
+// Two dimensional diagonal array with math ops.
+
+template <class T>
+class MDiagArray2 : public DiagArray2<T>
+{
+protected:
+
+ MDiagArray2 (T *d, int r, int c) : DiagArray2<T> (d, r, c) { }
+
+public:
+
+ MDiagArray2 (void) : DiagArray2<T> () { }
+ MDiagArray2 (int r, int c) : DiagArray2<T> (r, c) { }
+ MDiagArray2 (int r, int c, const T& val) : DiagArray2<T> (r, c, val) { }
+ MDiagArray2 (const Array<T>& a) : DiagArray2<T> (a) { }
+ MDiagArray2 (const DiagArray2<T>& a) : DiagArray2<T> (a) { }
+ MDiagArray2 (const MDiagArray2<T>& a) : DiagArray2<T> (a) { }
+
+ ~MDiagArray2 (void) { }
+
+ MDiagArray2<T>& operator = (const MDiagArray2<T>& a)
+ {
+ DiagArray2<T>::operator = (a);
+ return *this;
+ }
+
+ operator MArray2<T> () const
+ {
+ MArray2<T> retval (nr, nc, T (0));
+
+ int len = nr < nc ? nr : nc;
+
+ for (int i = 0; i < len; i++)
+ retval.xelem (i, i) = xelem (i, i);
+
+ return retval;
+ }
+
+ // element by element MDiagArray2 by MDiagArray2 ops
+
+ friend MDiagArray2<T>&
+ operator += LTGT (MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+ friend MDiagArray2<T>&
+ operator -= LTGT (MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+ // element by element MDiagArray2 by scalar ops
+
+ friend MDiagArray2<T> operator * LTGT (const MDiagArray2<T>& a, const T& s);
+ friend MDiagArray2<T> operator / LTGT (const MDiagArray2<T>& a, const T& s);
+
+ // element by element scalar by MDiagArray2 ops
+
+ friend MDiagArray2<T> operator * LTGT (const T& s, const MDiagArray2<T>& a);
+
+ // element by element MDiagArray2 by MDiagArray2 ops
+
+ friend MDiagArray2<T>
+ operator + LTGT (const MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+ friend MDiagArray2<T>
+ operator - LTGT (const MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+ friend MDiagArray2<T>
+ product LTGT (const MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+ friend MDiagArray2<T> operator - LTGT (const MDiagArray2<T>& a);
+};
+
+#undef LTGT
+
+#define INSTANTIATE_MDIAGARRAY_FRIENDS(T) \
+ template MDiagArray2<T>& operator += (MDiagArray2<T>& a, const
MDiagArray2<T>& b); \
+ template MDiagArray2<T>& operator -= (MDiagArray2<T>& a, const
MDiagArray2<T>& b); \
+ template MDiagArray2<T> operator * (const MDiagArray2<T>& a, const T& s); \
+ template MDiagArray2<T> operator / (const MDiagArray2<T>& a, const T& s); \
+ template MDiagArray2<T> operator * (const T& s, const MDiagArray2<T>& a); \
+ template MDiagArray2<T> operator + (const MDiagArray2<T>& a, const
MDiagArray2<T>& b); \
+ template MDiagArray2<T> operator - (const MDiagArray2<T>& a, const
MDiagArray2<T>& b); \
+ template MDiagArray2<T> product (const MDiagArray2<T>& a, const
MDiagArray2<T>& b); \
+ template MDiagArray2<T> operator - (const MDiagArray2<T>& a);
+
+#endif
+
+/*
+;;; Local Variables: ***
+;;; mode: C++ ***
+;;; End: ***
+*/
diff --git a/test/etags/cp-src/Pctest.h b/test/etags/cp-src/Pctest.h
new file mode 100644
index 0000000..52d68aa
--- /dev/null
+++ b/test/etags/cp-src/Pctest.h
@@ -0,0 +1,99 @@
+// -*- c++ -*-
+//
+// $Id: Pctest.h,v 1.14 2000/01/19 17:14:42 bmah Exp $
+//
+// Pctest.h
+// Bruce A. Mah <address@hidden>
+//
+// This work was first produced by an employee of Sandia National
+// Laboratories under a contract with the U.S. Department of Energy.
+// Sandia National Laboratories dedicates whatever right, title or
+// interest it may have in this software to the public. Although no
+// license from Sandia is needed to copy and use this software,
+// copying and using the software might infringe the rights of
+// others. This software is provided as-is. SANDIA DISCLAIMS ANY
+// WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.
+//
+// Header for virtual base class of tests. A particular protocol (e.g.
+// IPv4, IPv6) will override the methods of this base class
+// with protocol-specific implementations.
+//
+//
+
+#ifndef PCTEST_H
+#define PCTEST_H
+
+#include <stdio.h>
+
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <string.h>
+#endif /* STDC_HEADERS */
+
+#if HAVE_UNISTD_H
+#include <sys/types.h>
+#endif /* HAVE_UNISTD_H */
+
+#include <sys/socket.h>
+#include <sys/time.h>
+
+#include "pc.h"
+// #include "TestRecord.h"
+class TestRecord;
+
+// Action codes. ICMPv4 and ICMPv6 have different values for their type
+// and code fields. The Pctest abstracts these differences.
+typedef enum {
+ PctestActionValid, // store valid measurement (e.g. ICMP
+ // time exceeded)
+ PctestActionValidLasthop, // store valid measurement, this is last hop
+ // (e.g. ICMP port unreachable)
+ PctestActionFiltered, // packets filtered, give up (e.g.
+ // ICMP prohibited)
+ PctestActionAbort // huh? we haven't a clue
+} PctestActionType;
+
+class Pctest {
+
+ public:
+ Pctest() {
+ initialized = 0;
+ TimeSyscall(syscallTime);
+
+ IF_DEBUG(3, fprintf(stderr, "syscallTime.tv_usec = %ld\n",
syscallTime.tv_usec));
+ }
+ virtual ~Pctest() { };
+
+ // Get gettimeofday() system call overhead.
+ virtual void TimeSyscall(struct timeval &diff);
+
+ // Get random payload buffer
+ virtual char *GeneratePayload(int size);
+
+ // Set target host for our tests (resolve if necessary)
+ virtual int SetTargetName(char *target) = 0;
+
+ // Get target host name and address
+ virtual char *GetTargetName() { return targetName; };
+ virtual char *GetPrintableAddress() = 0;
+ virtual char *GetPrintableAddress(void *a) = 0;
+ virtual char *GetName(void *a) = 0;
+ virtual char *GetAddressFamily() = 0;
+
+ // Perform a test and return statistics
+ virtual int Test(TestRecord &tr) = 0;
+ virtual PctestActionType GetAction(TestRecord &tr) = 0;
+ virtual PctestActionType GetAction(TestRecord *tr) {
+ return this->GetAction(*tr);
+ };
+
+ virtual int GetMinSize() = 0;
+
+ protected:
+ int initialized; // initialization flag
+ char *targetName; // target hostname
+ struct timeval syscallTime; // estimated overhead for gettimeofday()
+
+};
+
+#endif /* PCTEST_H */
diff --git a/test/etags/cp-src/Range.h b/test/etags/cp-src/Range.h
new file mode 100644
index 0000000..b8cbab4
--- /dev/null
+++ b/test/etags/cp-src/Range.h
@@ -0,0 +1,96 @@
+/*
+
+Copyright (C) 1996 John W. Eaton
+
+This file is part of Octave.
+
+Octave is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+Octave is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with Octave; see the file COPYING. If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+*/
+
+#if !defined (octave_Range_h)
+#define octave_Range_h 1
+
+#if defined (__GNUG__)
+#pragma interface
+#endif
+
+class istream;
+class ostream;
+class Matrix;
+
+class
+Range
+{
+ public:
+
+ Range (void)
+ : rng_base (-1), rng_limit (-1), rng_inc (-1), rng_nelem (-1) { }
+
+ Range (const Range& r)
+ : rng_base (r.rng_base), rng_limit (r.rng_limit), rng_inc (r.rng_inc),
+ rng_nelem (r.rng_nelem) { }
+
+ Range (double b, double l)
+ : rng_base (b), rng_limit (l), rng_inc (1),
+ rng_nelem (nelem_internal ()) { }
+
+ Range (double b, double l, double i)
+ : rng_base (b), rng_limit (l), rng_inc (i),
+ rng_nelem (nelem_internal ()) { }
+
+ double base (void) const { return rng_base; }
+ double limit (void) const { return rng_limit; }
+ double inc (void) const { return rng_inc; }
+ int nelem (void) const { return rng_nelem; }
+
+ bool all_elements_are_ints (void) const;
+
+ Matrix matrix_value (void) const;
+
+ double min (void) const;
+ double max (void) const;
+
+ void sort (void);
+
+ void set_base (double b) { rng_base = b; }
+ void set_limit (double l) { rng_limit = l; }
+ void set_inc (double i) { rng_inc = i; }
+
+ friend ostream& operator << (ostream& os, const Range& r);
+ friend istream& operator >> (istream& is, Range& r);
+
+ void print_range (void);
+
+ private:
+
+ double rng_base;
+ double rng_limit;
+ double rng_inc;
+
+ int rng_nelem;
+
+ int nelem_internal (void) const;
+};
+
+extern Range operator - (const Range& r);
+
+#endif
+
+/*
+;;; Local Variables: ***
+;;; mode: C++ ***
+;;; End: ***
+*/
diff --git a/test/etags/cp-src/abstract.C b/test/etags/cp-src/abstract.C
new file mode 100644
index 0000000..82aded4
--- /dev/null
+++ b/test/etags/cp-src/abstract.C
@@ -0,0 +1,4840 @@
+/*****************************************************************************
+
+ Copyright (c) 1992 Consorzio Pisa Ricerche.
+ Authors: Caneve Maurizio, Salvatori Elena
+
+ This software was produced under the ESPRIT/LOTOSPHERE
+ project. All rights reserved.
+
+*****************************************************************************/
+
+/* */
+/* @(#)abstract.c 4.46 2/1/93 */
+/* */
+
+#include <defs.h>
+#include <adatat.h>
+#include <abstract.h>
+#include <editor.h>
+#include <graphics.h>
+#include <sheet.h>
+#include <folder.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#ifdef DEBUG
+ #include <stream.h>
+#endif
+
+/* */
+/* implementation of class Half_Container */
+/* */
+
+Half_Container::Half_Container(ID_List *g_l)
+{
+gate_list = g_l;
+type = HALFCONTAINER;
+selectable = FALSE;
+visible = g_l->GetVisible();
+
+Set_Unparser(new Gl_Half_Container(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Half_Container::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "HalfContainer" << x << " " << y << "\n";
+ cout << "HalfContainer" << h << " " << w << "\n";
+#endif
+if(father->GetTextual())
+ gate_list->SetPosition(x,y);
+ else gate_list->SetPosition(x + ROUND_CORNER,y - ROUND_CORNER);
+}
+
+void Half_Container::SetDimensions(void)
+{
+gate_list->SetDimensions();
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(father->GetTextual())
+ {
+ h = Tree_Node::inUseFont()->Height();
+ w = gate_list->Get_W();
+ }
+ else {
+ h = gate_list->Get_H() + ROUND_CORNER + VBORDER;
+ w = gate_list->Get_W() + 2 * ROUND_CORNER;
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Half_Container::SetFather(Tree_Node *f)
+{
+father = f;
+gate_list->SetFather(this);
+}
+
+void Half_Container::SetCollapsed(char t)
+{
+collapsed = t;
+gate_list->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class Specification methods */
+/* */
+
+Specification::Specification(Comment_List *c_l, ID_Place *id, ID_List *g_i_l,
+ Id_Decl_List *i_d_l, Comment_List *c_l1,
Definition *d,
+ Tree_Node *f, Data_List *data_l)
+{
+Gl_Sheet *sh;
+type = SPECIFICATION;
+selectable = FALSE;
+com_list = c_l;
+com_list1 = c_l1;
+ident = id;
+gate_list = g_i_l;
+id_decl_list = i_d_l;
+def = d;
+func = f;
+dt_list = data_l;
+Set_Unparser(new Gl_Specification(this));
+sh = (glow->Get_Folder())->Current();
+sh->Add(Get_Unparser());
+sh->SetRoot(this);
+}
+
+void Specification::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Specification" << x << " " << y << "\n";
+ cout << "Specification" << h << " " << w << "\n";
+#endif
+com_list->SetPosition(x,y);
+
+y1 = (com_list->Get_H() == 0)?y :y - com_list->Get_H() - SEPARATOR;
+com_list1->SetPosition(x,y1);
+
+x1 = x + round((w - gate_list->Get_W()) / 2.0);
+y1 = (com_list1->Get_H() == 0)?y1 :y1 - com_list1->Get_H() - SEPARATOR;
+gate_list->SetPosition(x1,y1);
+
+y = y1 - gate_list->Get_H();
+
+x1 = x + round((w - ident->Get_W()) / 2.0);
+y1 = y - VBORDER;
+ident->SetPosition(x1,y1);
+yl1 = y1 - ident->Get_H() - VBORDER;
+
+x1 = x + round((w - id_decl_list->Get_W()) / 2.0);
+y1 = yl1 - VBORDER;
+id_decl_list->SetPosition(x1,y1);
+
+yl2 = y1 - id_decl_list->Get_H() - VBORDER;
+
+y1 = (id_decl_list->Get_H() == 0)? yl2 + 2 * VBORDER - BORDER
+ : yl2 - BORDER;
+x1 = x + round((w - def->Get_W()) / 2.0);
+def->SetPosition(x1,y1);
+
+if(func->GetType() == EXIT && func->Get_W() != 0)
+ yl3 = y1 - def->Get_H() - BORDER;
+ else yl3 = 0;
+x1 = x + round((w - func->Get_W()) / 2.0);
+if(func->GetType() == EXIT)
+ ((Exit *)func)->SetPosition(x1,y - h + func->Get_H(),x + w,y - h +
func->Get_H());
+ else func->SetPosition(x + w, y - h + func->Get_H());
+}
+
+void Specification::SetDimensions(void)
+{
+com_list->SetDimensions();
+com_list1->SetDimensions();
+ident->SetDimensions();
+gate_list->SetDimensions();
+id_decl_list->SetDimensions();
+func->SetDimensions();
+def->SetDimensions();
+w = Max4(gate_list->Get_W(),ident->Get_W(),id_decl_list->Get_W(),def->Get_W());
+w = Max(w, func->Get_W());
+w += 2 * BORDER;
+
+h = ident->Get_H()+id_decl_list->Get_H()+def->Get_H();
+h = (func->GetType() == EXIT && func->Get_W() != 0)? h + func->Get_H(): h;
+h = (id_decl_list->Get_H() == 0)? h + 2 * VBORDER + 2 * BORDER
+ : h + 4 * VBORDER + 2 * BORDER;
+MaxX = com_list->Get_W();
+MaxX = Max(MaxX, w + EXIT_S);
+MaxY = h + gate_list->Get_H(); /* we have also to take in account the gate
list */
+if(com_list->Get_H() != 0)
+ MaxY = MaxY + com_list->Get_H() + SEPARATOR; /* there are also some
comments */
+}
+
+void Specification::SetFather(Tree_Node *f)
+{
+father = f;
+com_list->SetFather(this);
+com_list1->SetFather(this);
+ident->SetFather(this);
+gate_list->SetFather(this);
+id_decl_list->SetFather(this);
+def->SetFather(this);
+func->SetFather(this);
+if(dt_list != NULL)
+ dt_list->SetFather(this);
+}
+
+void Specification::SetPath(int& np, int& nd)
+{
+char buff[PATH_LENGHT];
+np = np + 1;
+sprintf(buff,"of %s",ident->GetIdent());
+def->SetPath(buff, 1, np, nd);
+if(dt_list != NULL)
+ dt_list->SetPath(buff, 0, np, nd);
+}
+
+Coord Specification::GetMaxX()
+{ return(MaxX);}
+
+Coord Specification::GetMaxY()
+{ return(MaxY);}
+
+/* */
+/* implementation of class Process methods */
+/* */
+
+Process::Process(Comment_List *c_l, ID_Place *id, ID_List *g_i_l, Id_Decl_List
*i_d_l,
+ Definition *d, Tree_Node *f)
+{
+Gl_Sheet *sh;
+type = PROCESS;
+selectable = FALSE;
+nesting = 0;
+com_list = c_l;
+ident = id;
+gate_list = g_i_l;
+id_decl_list = i_d_l;
+def = d;
+func = f;
+Set_Unparser(new Gl_Process(this));
+
+sh = (glow->Get_Folder())->Current();
+sh->Add(Get_Unparser());
+sh->SetRoot(this);
+}
+
+void Process::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+ypath = yy;
+y = yy - SEPARATOR - ident->Get_H(); /* it is equal to the
height of the path */
+#ifdef DEBUG
+ cout << "Process" << x << " " << y << "\n";
+ cout << "Process" << h << " " << w << "\n";
+#endif
+
+com_list->SetPosition(x,y);
+
+x1 = x + round((w - gate_list->Get_W()) / 2.0);
+y1 = (com_list->Get_H() == 0)?y :y - com_list->Get_H() - SEPARATOR;
+gate_list->SetPosition(x1,y1);
+
+y = y1 - gate_list->Get_H();
+
+x1 = x + round((w - ident->Get_W()) / 2.0);
+y1 = y - VBORDER;
+ident->SetPosition(x1,y1);
+yl1 = y1 - ident->Get_H() - VBORDER;
+
+x1 = x + round((w - id_decl_list->Get_W()) / 2.0);
+y1 = yl1 - VBORDER;
+id_decl_list->SetPosition(x1,y1);
+
+if(id_decl_list->Get_H() != 0)
+ {
+ yl2 = y1 - id_decl_list->Get_H() - VBORDER;
+ y1 = yl2 - BORDER;
+ }
+ else {
+ yl2 = 0;
+ y1 = yl1 - BORDER;
+ }
+x1 = x + round((w - def->Get_W()) / 2.0);
+def->SetPosition(x1,y1);
+
+if(func->GetType() == EXIT && func->Get_W() != 0)
+ yl3 = y1 - def->Get_H() - BORDER;
+ else yl3 = 0;
+x1 = x + round((w - func->Get_W()) / 2.0);
+if(func->GetType() == EXIT)
+ ((Exit *)func)->SetPosition(x1,y - h + func->Get_H(),x + w,y - h +
func->Get_H());
+ else func->SetPosition(x + w, y - h + func->Get_H());
+}
+
+void Process::SetDimensions(void)
+{
+com_list->SetDimensions();
+ident->SetDimensions();
+gate_list->SetDimensions();
+id_decl_list->SetDimensions();
+func->SetDimensions();
+def->SetDimensions();
+w = Max4(gate_list->Get_W(),ident->Get_W(),id_decl_list->Get_W(),def->Get_W());
+w = Max(w, func->Get_W());
+w += 2 * BORDER;
+
+h = ident->Get_H()+id_decl_list->Get_H()+def->Get_H();
+h = (func->GetType() == EXIT && func->Get_W() != 0)? h + func->Get_H(): h;
+h = (id_decl_list->Get_H() == 0)? h + 2 * VBORDER + 2 * BORDER
+ : h + 4 * VBORDER + 2 * BORDER;
+MaxX = Max(com_list->Get_W(),Tree_Node::inUseFont()->Width(((Proc_List
*)GetFather())->GetPath()));
+MaxX = Max(MaxX,w + EXIT_S);
+MaxY = h + SEPARATOR + ident->Get_H() + gate_list->Get_H(); /* we have also to
take in account */
+ /* the path and
the gate list */
+if(com_list->Get_H() != 0)
+ MaxY = MaxY + com_list->Get_H() + SEPARATOR; /* there are also some
comments */
+}
+
+void Process::SetFather(Tree_Node *f)
+{
+father = f;
+com_list->SetFather(this);
+ident->SetFather(this);
+gate_list->SetFather(this);
+id_decl_list->SetFather(this);
+func->SetFather(this);
+def->SetFather(this);
+}
+
+void Process::SetPath(char *p, char n, int& np, int& nd)
+{
+char buff[PATH_LENGHT];
+nesting = n;
+np = np + 1;
+sprintf(buff,"of %s %s",ident->GetIdent(), p);
+def->SetPath(buff, nesting + 1, np, nd);
+}
+
+Coord Process::GetMaxX()
+{return(MaxX);}
+
+Coord Process::GetMaxY()
+{return(MaxY);}
+
+/* */
+/* implementation of class Choice methods */
+/* */
+
+
+Choice::Choice(Tree_Node *b1, Tree_Node *b2)
+{
+type = CHOICE;
+alignement = glow->GetAligs(CHOICE);
+bex1 = b1;
+bex2 = b2;
+
+Set_Unparser(new Gl_Choice(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Choice::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Choice" << x << " " << y << "\n";
+ cout << "Choice" << h << " " << w << "\n";
+#endif
+if(textual)
+ {
+ SetTerminalPos();
+ x1 = xl + Tree_Node::inUseFont()->Width("[] ");
+ bex1->SetPosition(x1,y - border);
+ bex2->SetPosition(x1, yl);
+ }
+ else { /* graphical */
+ if(alignement == HOR)
+ {
+ if(!havebox)
+ x1 = x;
+ else x1 = x + BORDER;
+ y1 = round(y - (h - bex1->Get_H())/2.0);
+ bex1->SetPosition(x1,y1);
+ xl = x1 + bex1->Get_W() + BORDER;
+ x1 = xl + BORDER;
+ y1 = round(y - (h - bex2->Get_H())/2.0);
+ bex2->SetPosition(x1,y1);
+ }
+ else {
+ if(!havebox)
+ y1 = y;
+ else y1 = y - BORDER;
+ x1 = round(x + (w - bex1->Get_W())/2.0);
+ bex1->SetPosition(x1,y1);
+ xl = y1 - bex1->Get_H() - BORDER;
+ y1 = xl - BORDER;
+ x1 = round(x + (w - bex2->Get_W())/2.0);
+ bex2->SetPosition(x1,y1);
+ }
+ }
+delta = (!havebox && (father->GetType() != CHOICE))?
+ (father->GetType() == DEFINITION)?
+ round((father->GetFather()->Get_W() - w)/2.0)
+ : round((father->Get_W() - w)/2.0)
+ : BORDER;
+}
+
+void Choice::SetDimensions(void)
+{
+bex1->SetDimensions();
+bex2->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL ))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ break;
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = Get_Textual_H(); w = Get_Textual_W();
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ }
+ else { /* graphical */
+ if(alignement == HOR)
+ {
+ w = bex1->Get_W() + bex2->Get_W() + 2 * BORDER;
+ h = Max(bex1->Get_H(), bex2->Get_H());
+ }
+ else {
+ h = bex1->Get_H() + bex2->Get_H() + 2 * BORDER;
+ w = Max(bex1->Get_W(), bex2->Get_W());
+ }
+ if(havebox)
+ {w += 2 * BORDER; h += 2 * BORDER;}
+ else {
+ if((bex1->GetType() == CHOICE) && (bex1->Collapsed() !=
COLLAPSED_VIS))
+ {
+ if(alignement == HOR)
+ ((Choice *)bex1)->ChangeH(h);
+ else ((Choice *)bex1)->ChangeW(w);
+ }
+ if((bex2->GetType() == CHOICE) && (bex2->Collapsed() !=
COLLAPSED_VIS))
+ {
+ if(alignement == HOR)
+ ((Choice *)bex2)->ChangeH(h);
+ else ((Choice *)bex2)->ChangeW(w);
+ }
+ }
+ }
+ break;
+ }
+aligline = round(h/2.0);
+}
+
+void Choice::ChangeH(int nh)
+{
+int bh; /* it will be the forced height for the second choice
son */
+if(!(GetTextual()))
+ {
+ h = nh;
+ bh = h - ((Choice *)bex1)->Get_H();
+ if(alignement == HOR)
+ {
+ if((bex1->GetType() == CHOICE) && (bex1->Collapsed() != COLLAPSED_VIS))
+ ((Choice *)bex1)->ChangeH(h);
+ if((bex2->GetType() == CHOICE) && (bex2->Collapsed() != COLLAPSED_VIS))
+ ((Choice *)bex2)->ChangeH(h);
+ }
+ else {
+ if((bex1->GetType() == CHOICE) && (bex1->Collapsed() != COLLAPSED_VIS))
+ ((Choice *)bex1)->ChangeW(w);
+ else bh = bh - 2 * BORDER;
+ if((bex2->GetType() == CHOICE) && (bex2->Collapsed() != COLLAPSED_VIS))
+ {
+ ((Choice *)bex2)->ChangeW(w);
+ ((Choice *)bex2)->ChangeH(bh); /* we have to remember the forced
*/
+ /* height, even if the alignwement is
*/
+ /* now vertical
*/
+ }
+ }
+ }
+}
+
+void Choice::ChangeW(int nw)
+{
+int bw;
+if(!(GetTextual()))
+ {
+ w = nw;
+ bw = w - ((Choice *)bex1)->Get_W();
+ if(alignement != HOR)
+ {
+ if((bex1->GetType() == CHOICE) && (bex1->Collapsed() != COLLAPSED_VIS))
+ ((Choice *)bex1)->ChangeW(w);
+ if((bex2->GetType() == CHOICE) && (bex2->Collapsed() != COLLAPSED_VIS))
+ ((Choice *)bex2)->ChangeW(w);
+ }
+ else {
+ if((bex1->GetType() == CHOICE) && (bex1->Collapsed() != COLLAPSED_VIS))
+ ((Choice *)bex1)->ChangeH(h);
+ else bw = bw - 2 * BORDER;
+ if((bex2->GetType() == CHOICE) && (bex2->Collapsed() != COLLAPSED_VIS))
+ {
+ ((Choice *)bex2)->ChangeH(h);
+ ((Choice *)bex2)->ChangeW(bw);
+ }
+ }
+ }
+}
+
+void Choice::SetFather(Tree_Node *f)
+{
+char ft;
+ft = (f->GetType() == PARALLEL)? ((Parallel *)f)->GetOperType(): f->GetType();
+havebox = HaveBox(CHOICE,ft);
+father = f;
+bex1->SetFather(this);
+bex2->SetFather(this);
+}
+
+void Choice::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+bex1->SetTextual(t);
+bex2->SetTextual(t);
+}
+
+void Choice::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+bex1->SetCollapsed(t);
+bex2->SetCollapsed(t);
+}
+
+int Choice::Get_Textual_H()
+{
+if((father->GetType() == CHOICE) && father->GetTextual())
+ return(bex1->Get_H() + bex2->Get_H() + VBORDER);
+ else return(bex1->Get_H() + bex2->Get_H() + 2 * VBORDER
+ + Tree_Node::inUseFont()->Height());
+}
+
+int Choice::Get_Textual_W()
+{
+int b;
+b = Max(bex1->Get_W(), bex2->Get_W());
+if((father->GetType() == CHOICE) && father->GetTextual())
+ return(b);
+ else return(Tree_Node::inUseFont()->Width("[] ") + b);
+}
+
+void Choice::SetTerminalPos()
+{
+
+xl=yl=yl1=0;
+if((father->GetType() == CHOICE) &&
+ father->GetTextual()) /* xl, yl is the position of [] */
+ {
+ xl = x - Tree_Node::inUseFont()->Width("[] ") + border;
+ yl = y - bex1->Get_H() - VBORDER - border;
+ }
+ else { /* x,y is the position of ( */
+ xl = x + border;
+ yl = y - bex1->Get_H() - VBORDER - border;
+ yl1 = yl - bex2->Get_H() - VBORDER;
+ }
+}
+
+
+/* */
+/* implementation of class stop methods */
+/* */
+
+Stop::Stop()
+{
+type = STOP;
+Set_Unparser(new Gl_Stop(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Stop::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+cout << "Stop" << x << " " << y << "\n";
+cout << "Stop" << h << " " << w << "\n";
+#endif
+}
+
+void Stop::SetDimensions(void)
+{
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ break;
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("stop");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ }
+ else {
+ w = 2 * STOP_R;
+ h = 2 * STOP_R;
+ if(havebox)
+ {w += 2 * BORDER; h += 2 * BORDER;}
+ }
+ break;
+ }
+aligline = round(h/2.0);
+}
+
+void Stop::SetFather(Tree_Node *f)
+{
+char ft;
+ft = (f->GetType() == PARALLEL)? ((Parallel *)f)->GetOperType(): f->GetType();
+havebox = HaveBox(STOP,ft);
+father = f;
+}
+
+void Stop::SetTextual(char t, char s)
+{ textual = t; selectable = (!t | s); }
+
+void Stop::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+}
+
+
+/* */
+/* implementation of class Exit methods */
+/* */
+
+Exit::Exit(ID_List *sl)
+{
+type = EXIT;
+selectable = FALSE;
+sort_list = sl;
+Set_Unparser(new Gl_Exit(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Exit::SetPosition(Coord x1, Coord y1, Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+sort_list->SetPosition(x1,y1 - VBORDER);
+#ifdef DEBUG
+ cout << "Exit" << x << " " << y << "\n";
+ cout << "Exit" << h << " " << w << "\n";
+#endif
+}
+
+void Exit::SetDimensions(void)
+{
+sort_list->SetDimensions();
+w = sort_list->Get_W();
+h = (sort_list->Get_H() == 0)? EXIT_S: sort_list->Get_H() + 2 * VBORDER;
+aligline = round(h/2.0);
+}
+
+void Exit::SetFather(Tree_Node *f)
+{father = f;
+}
+
+/* */
+/* implementation of class Exit_Bex methods */
+/* */
+
+Exit_Bex::Exit_Bex(Exit_Entry_List *l)
+{
+type = EXIT;
+alignement = glow->GetAligs(EXIT);
+entry_list = l;
+
+Set_Unparser(new Gl_Exit_Bex(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Exit_Bex::SetPosition(Coord xx, Coord yy)
+{
+Coord x1, y1;
+x = xx;
+y = yy;
+if(textual)
+ {
+ x1 = x + border;
+ y1 = y - border;
+ if(entry_list->GetVisible())
+ {
+ Xopen = x1 + Tree_Node::inUseFont()->Width("exit");
+ entry_list->SetPosition(Xopen + Tree_Node::inUseFont()->Width(" (") ,y1);
+ Xclose = Xopen + Tree_Node::inUseFont()->Width(" (") +
entry_list->Get_W();
+ }
+ else entry_list->SetPosition(x1 + Tree_Node::inUseFont()->Width("exit")
,y);
+ }
+ else if(havebox)
+ entry_list->SetPosition(x + 2 * BORDER,y - VBORDER - BORDER);
+ else entry_list->SetPosition(x + BORDER,y - VBORDER);
+
+#ifdef DEBUG
+ cout << "Exit_Bex" << x << " " << y << "\n";
+ cout << "Exit_Bex" << h << " " << w << "\n";
+#endif
+}
+
+void Exit_Bex::SetDimensions(void)
+{
+entry_list->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ aligline = round(h/2.0);
+ break;
+ case COLLAPSED_INV: w = 0; h = 0; aligline = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ w = (entry_list->Get_W() == 0)?
Tree_Node::inUseFont()->Width("exit")
+ : entry_list->Get_W() +
Tree_Node::inUseFont()->Width("exit")
+ + Tree_Node::inUseFont()->Width(" (") +
Tree_Node::inUseFont()->Width(")");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ aligline = round(h/2.0);
+ }
+ else {
+ if(alignement == HOR)
+ {
+ w = (entry_list->Get_W() == 0)? EXIT_S
+ : entry_list->Get_W() + 2 * BORDER + EXIT_S;
+ h = (entry_list->Get_H() == 0)? EXIT_S
+ : Max(entry_list->Get_H() + 2 * VBORDER,EXIT_S);
+ aligline = round(h/2.0);
+ if(havebox)
+ {w += 2 * BORDER; h += 2 * BORDER; aligline += BORDER;}
+ }
+ else {
+ w = (entry_list->Get_W() == 0)? EXIT_S
+ : Max(entry_list->Get_W() + 2 * BORDER,EXIT_S);
+ h = (entry_list->Get_H() == 0)? EXIT_S
+ : entry_list->Get_H() + 2 * VBORDER + EXIT_S;
+ aligline = (entry_list->Get_H() == 0)? round(EXIT_S/2.0)
+ : round((h - EXIT_S)/2.0);
+ if(havebox)
+ {w += 2 * BORDER; h += 2 * BORDER; aligline += BORDER;}
+ }
+ }
+ }
+}
+
+void Exit_Bex::SetFather(Tree_Node *f)
+{
+char ft;
+ft = (f->GetType() == PARALLEL)? ((Parallel *)f)->GetOperType(): f->GetType();
+havebox = HaveBox(EXIT,ft);
+father = f;
+entry_list->SetFather(this);
+}
+
+void Exit_Bex::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+entry_list->SetTextual(t);
+}
+
+void Exit_Bex::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+entry_list->SetCollapsed(t);
+}
+
+/* */
+/* implementation of class NoExit methods */
+/* */
+
+NoExit::NoExit()
+{
+type = NOEXIT;
+selectable = FALSE;
+
+Set_Unparser(new Gl_NoExit(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void NoExit::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "NoExit" << x << " " << y << "\n";
+ cout << "NoExit" << h << " " << w << "\n";
+#endif
+}
+
+void NoExit::SetDimensions(void)
+{
+w = NO_EXIT_S;
+h = NO_EXIT_S;
+aligline = round(h/2.0);
+}
+
+void NoExit::SetFather(Tree_Node *f)
+{father = f;
+}
+
+
+/* */
+/* implementation of class ID_Place methods */
+/* */
+
+ID_Place::ID_Place()
+{
+type = IDPLACE;
+visible = FALSE;
+textual = TRUE;
+RBubble = NORMAL;
+selectable = FALSE;
+str = new char[2];
+str[0] = ' '; str[1] = '\0';
+
+Set_Unparser(new Gl_Identifier(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void ID_Place::SetIdent(char *identifier)
+{
+int i;
+visible = TRUE;
+
+delete str;
+str = new char[strlen(identifier) + 1];
+for(i=0; i<= strlen(identifier); i++)
+ *(str+i) = *(identifier+i);
+}
+
+void ID_Place::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "IDPlace" << x << " " << y << "\n";
+ cout << "IDPlace" << h << " " << w << "\n";
+ cout << "IDPlace" << visible << " " << collapsed << "\n";
+#endif
+}
+
+void ID_Place::SetDimensions(void)
+{
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ switch(RBubble)
+ {
+ case NORMAL: w = Tree_Node::inUseFont()->Width(str);
+ h = Tree_Node::inUseFont()->Height();
+ break;
+ case ROUND: w = Max(Tree_Node::inUseFont()->Width(str) +
+ 2 * ROUND_CORNER, SMALL_DIL);
+ h = Tree_Node::inUseFont()->Height() +
+ SYNCR_L + SMALL_PEN;
+ break;
+ case ELLIPSE:
+ case F_ELLIPSE: w = Tree_Node::inUseFont()->Width(str) + 2 *
ROUND_CORNER;
+ h = Tree_Node::inUseFont()->Height() + 2 *
ROUND_CORNER;
+ break;
+ case D_ELLIPSE: w = Tree_Node::inUseFont()->Width(str) + 2 *
ROUND_CORNER;
+ h = Tree_Node::inUseFont()->Height() + 2 *
ROUND_CORNER
+ + 2 *MAX_VIEWS;
+ break;
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void ID_Place::SetFather(Tree_Node *f)
+{ father = f;
+}
+
+ID_Place::~ID_Place()
+{ delete str; }
+
+void ID_Place::SetVisible(char v)
+{
+if (strcmp(str, " ") != 0)
+ visible = v;
+}
+
+void ID_Place::ClearID(void)
+{
+visible = FALSE;
+delete str;
+str = new char[2];
+str[0] = ' '; str[1] = '\0';
+}
+
+/* */
+/* implementation of class ID_List methods */
+/* */
+
+ID_List::ID_List(ID_Place *el, ID_List *nxt)
+{
+type = IDLIST;
+elem = el;
+next = nxt;
+alignement = HOR;
+textual = TRUE;
+selectable = FALSE;
+visible = elem->GetVisible();
+
+Set_Unparser(new Gl_Id_List(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void ID_List::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "IDList" << x << " " << y << "\n";
+ cout << "IDList" << h << " " << w << "\n";
+ cout << "IDList" << visible << " " << collapsed << "\n";
+#endif
+if (elem != NULL)
+ {
+ y1 = y;
+ x1 = (alignement == HOR) ? x : x - round(elem->Get_W()/2.0);
+ /* x is the central axis for the Vertical list*/
+ elem->SetPosition(x1,y1);
+ if (next != NULL)
+ {
+ if (elem->GetRBubble() == NORMAL)
+ {
+ x1 = (alignement == VER) ? x:
+ x1 + elem->Get_W() + Tree_Node::inUseFont()->Width(", ");
+ y1 = (alignement == VER) ? y1 - elem->Get_H() - VBORDER : y;
+ }
+ else
+ x1 = x + elem->Get_W() + ROUND_CORNER;
+ next->SetPosition(x1,y1);
+ }
+
+}
+}
+
+void ID_List::SetDimensions(void)
+{
+elem->SetDimensions();
+if(next!=NULL)
+ next->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: if (elem->GetRBubble() == NORMAL)
+ {
+ if (alignement == HOR)
+ {h = Tree_Node::inUseFont()->Height();
+ w = (next == NULL || next->next == NULL)
+ ? elem->Get_W() : elem->Get_W() +
+ next->Get_W() +
Tree_Node::inUseFont()->Width(", ");
+ }
+ else /*op_id_list only*/
+ {
+ h = (next == NULL || next->next == NULL)
+ ? elem->Get_H() : elem->Get_H() +
+ next->Get_H() + VBORDER;
+ w = (next == NULL || next->next == NULL)
+ ? elem->Get_W() : Max(elem->Get_W(),
+ next->Get_W());
+ }
+
+ }
+ else {
+ h = elem->Get_H();
+ w = (next == NULL || next->next == NULL)
+ ? elem->Get_W() : elem->Get_W() +
+ next->Get_W() + ROUND_CORNER;
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void ID_List::SetFather(Tree_Node *f)
+{
+father = f;
+if(elem != NULL)
+ elem->SetFather(this);
+if(next != NULL)
+ next->SetFather(this);
+}
+
+void ID_List::SetCollapsed(char t)
+{
+collapsed = t;
+if(elem != NULL)
+ elem->SetCollapsed(t);
+if(next != NULL)
+ next->SetCollapsed(t);
+}
+
+void ID_List::HideMe(void)
+{
+visible = FALSE;
+if(elem != NULL)
+ elem->SetVisible(FALSE);
+if(next != NULL)
+ next->HideMe();
+}
+
+void ID_List::SetRBubble(char r)
+{
+if(elem != NULL)
+ elem->SetRBubble(r);
+if(next != NULL)
+ next->SetRBubble(r);
+}
+
+void ID_List::SetAlignement(char a)
+{
+alignement = a;
+if(elem != NULL)
+ elem->SetAlignement(a);
+if(next != NULL)
+ next->SetAlignement(a);
+}
+
+int ID_List::GetCardinality(int c)
+{
+int card;
+card = c;
+if(elem->GetVisible())
+ card ++;
+if(next != NULL)
+ card = next->GetCardinality(card);
+return(card);
+}
+
+void ID_List::SetVisible(char v)
+{
+if(elem != NULL)
+ elem->SetVisible(v);
+visible = elem->GetVisible(); /*ID_List is set to visible only if elem
is
+ not a placeholder */
+if(next != NULL)
+ next->SetVisible(v);
+}
+
+void ID_List::BuildSigSorts(char bubble, SignatureSorts **head, char type,
Oper *op)
+{
+if((elem != NULL) && elem->GetVisible())
+ {
+ if(*head != NULL)
+ (*head)->Append(bubble, elem, type, op);
+ else {
+ *head = new SignatureSorts(bubble, elem, NULL);
+ switch(type)
+ {
+ case '0': break;
+ case '1': (*head)->cost = op;
+ break;
+ case '2': (*head)->op_in_l = new OperSig(op, NULL);
+ break;
+ case '3': (*head)->op_out_l = new OperSig(op, NULL);
+ }
+ }
+ }
+if(next != NULL)
+ next->BuildSigSorts(bubble, head, type, op);
+}
+
+void ID_List::ClearIDs(void)
+{
+visible = FALSE;
+if(elem != NULL)
+ elem->ClearID();
+if(next != NULL)
+ next->ClearIDs();
+}
+
+/* */
+/* implementation of class Id_Decl methods */
+/* */
+
+Id_Decl::Id_Decl(ID_List *l, ID_Place *s)
+{
+type = IDDECL;
+textual = TRUE;
+selectable = FALSE;
+id_list = l;
+sort_id = s;
+if(l == NULL)
+ id_list = new ID_List(new ID_Place(),NULL);
+if(s == NULL)
+ sort_id = new ID_Place();
+visible = (id_list->GetVisible() && sort_id->GetVisible());
+
+Set_Unparser(new Gl_Id_Decl(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Id_Decl::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "IDDecl" << x << " " << y << "\n";
+ cout << "IDDecl" << h << " " << w << "\n";
+#endif
+if(id_list != NULL)
+ {
+ id_list->SetPosition(x,y);
+ x1 = x + id_list->Get_W() + Tree_Node::inUseFont()->Width(": ");
+ if(sort_id != NULL)
+ sort_id->SetPosition(x1,y);
+ }
+}
+
+void Id_Decl::SetDimensions(void)
+{
+id_list->SetDimensions();
+sort_id->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = Tree_Node::inUseFont()->Height();
+ w = (visible)? id_list->Get_W()+sort_id->Get_W()
+
+Tree_Node::inUseFont()->Width(": ")
+ : 0;
+ }
+aligline = round(h/2.0);
+}
+
+void Id_Decl::SetFather(Tree_Node *f)
+{
+father = f;
+if(id_list != NULL)
+ id_list->SetFather(this);
+if(sort_id != NULL)
+ sort_id->SetFather(this);
+}
+
+void Id_Decl::SetCollapsed(char t)
+{
+collapsed = t;
+if(id_list != NULL)
+ id_list->SetCollapsed(t);
+if(sort_id != NULL)
+ sort_id->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class Id_Decl_List methods */
+/* */
+
+Id_Decl_List::Id_Decl_List(Id_Decl *el, Id_Decl_List *nxt)
+{
+type = IDDECLLIST;
+textual = TRUE;
+selectable = FALSE;
+elem = el;
+next = nxt;
+visible = elem->GetVisible();
+
+Set_Unparser(new Gl_Id_Decl_List(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Id_Decl_List::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "IDDeclList" << x << " " << y << "\n";
+ cout << "IDDeclList" << h << " " << w << "\n";
+#endif
+if(elem != NULL)
+ {
+ elem->SetPosition(x,y);
+ x1 = x + elem->Get_W() + Tree_Node::inUseFont()->Width(", ");
+ if(next != NULL)
+ next->SetPosition(x1,y);
+ }
+}
+
+void Id_Decl_List::SetDimensions(void)
+{
+elem->SetDimensions();
+if(next!=NULL)
+ next->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = Tree_Node::inUseFont()->Height();
+ w = (next == NULL || next->next == NULL)? elem->Get_W()
+ : elem->Get_W() + next->Get_W() +
Tree_Node::inUseFont()->Width(", ");
+ }
+aligline = round(h/2.0);
+}
+
+void Id_Decl_List::SetFather(Tree_Node *f)
+{
+father = f;
+if(elem != NULL)
+ elem->SetFather(this);
+if(next != NULL)
+ next->SetFather(this);
+}
+
+void Id_Decl_List::SetCollapsed(char t)
+{
+collapsed = t;
+if(elem != NULL)
+ elem->SetCollapsed(t);
+if(next != NULL)
+ next->SetCollapsed(t);
+}
+
+
+
+/* */
+/* implementation of class Comment methods */
+/* */
+
+Comment::Comment()
+{
+type = COMMENT;
+textual = TRUE;
+visible = FALSE;
+selectable = FALSE;
+comm = new char[2];
+comm[0] = ' '; comm[1] = '\0';
+
+Set_Unparser(new Gl_Comment(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Comment::SetComment(char *comment)
+{
+visible = TRUE;
+delete comm;
+comm = new char[strlen(comment)+7];
+sprintf(comm, "(* %s *)",comment);
+if(glow->ShowComments())
+ {
+ w = Tree_Node::inUseFont()->Width(comm);
+ h = Tree_Node::inUseFont()->Height();
+ }
+ else {
+ w = 0;
+ h = 0;
+ };
+((glow->Get_Folder())->Current())->YesComments();
+}
+
+void Comment::SetFather(Tree_Node *f)
+{father = f;
+}
+
+void Comment::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Comment" << x << " " << y << "\n";
+ cout << "Comment" << h << " " << w << "\n";
+#endif
+}
+
+void Comment::SetDimensions(void)
+{
+if(visible && glow->ShowComments())
+ {
+ w = Tree_Node::inUseFont()->Width(comm);
+ h = Tree_Node::inUseFont()->Height();
+ }
+ else {
+ w = 0;
+ h = 0;
+ };
+aligline = round(h/2.0);
+}
+
+Comment::~Comment()
+{ delete comm; }
+
+/* */
+/* implementation of class Comment_List methods */
+/* */
+
+Comment_List::Comment_List(Comment *el, Comment_List *nxt)
+{
+type = COMMENTLIST;
+textual = TRUE;
+visible = TRUE;
+selectable = FALSE;
+elem = el;
+next = nxt;
+}
+
+void Comment_List::SetPosition(Coord xx, Coord yy)
+{
+Coord y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "CommentList" << x << " " << y << "\n";
+ cout << "CommentList" << h << " " << w << "\n";
+#endif
+if(elem != NULL)
+ {
+ elem->SetPosition(x,y);
+ y1 = y - elem->Get_H();
+ if(next != NULL)
+ next->SetPosition(x,y1);
+ }
+}
+
+void Comment_List::SetDimensions(void)
+{
+elem->SetDimensions();
+if(next!=NULL)
+ next->SetDimensions();
+h = (next != NULL)? elem->Get_H() + next->Get_H()
+ : elem->Get_H();
+w = (next != NULL)? Max(elem->Get_W(), next->Get_W())
+ : elem->Get_W();
+aligline = round(h/2.0);
+}
+
+void Comment_List::SetFather(Tree_Node *f)
+{
+father = f;
+if(elem != NULL)
+ elem->SetFather(this);
+if(next != NULL)
+ next->SetFather(this);
+}
+
+
+/* */
+/* implementation of class Parallel methods */
+/* */
+
+Parallel::Parallel(Tree_Node *b1, Tree_Node *op, Tree_Node *b2)
+{
+type = PARALLEL;
+bex1 = b1;
+bex2 = b2;
+oper = op;
+
+Set_Unparser(new Gl_Parallel(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Parallel::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Parallel" << x << " " << y << "\n";
+ cout << "Parallel" << h << " " << w << "\n";
+ cout << "Parallel" << visible << " " << collapsed << "\n";
+#endif
+
+if(textual)
+ {
+ SetTerminalPos();
+ x1 = (oper->GetType() == GEN_PARAL)? xl + Tree_Node::inUseFont()->Width("
")
+ : xl + oper->Get_W();
+ bex1->SetPosition(x1, y - border);
+ oper->SetPosition(xl, yl);
+ if(oper->GetType() == GEN_PARAL)
+ bex2->SetPosition(x1, yl - oper->Get_H() - VBORDER);
+ else bex2->SetPosition(x1, yl);
+ }
+ else {
+ if(alignement == HOR)
+ {
+ if(!havebox)
+ x1 = x;
+ else x1 = x + BORDER;
+ y1 = y - aligline + bex1->GetAligLine();
+ bex1->SetPosition(x1,y1);
+ x1 = x1 + bex1->Get_W();
+ y1 = y - aligline + oper->GetAligLine();
+ oper->SetPosition(x1,y1);
+ x1 = x1 + oper->Get_W();
+ y1 = y - aligline + bex2->GetAligLine();
+ bex2->SetPosition(x1,y1);
+ }
+ else {
+ if(!havebox)
+ y1 = y;
+ else y1 = y - BORDER;
+ x1 = round(x + (w - bex1->Get_W())/2.0);
+ bex1->SetPosition(x1,y1);
+ y1 = y1 - bex1->Get_H();
+ x1 = round(x + (w - oper->Get_W())/2.0);
+ oper->SetPosition(x1,y1);
+ y1 = y1 - oper->Get_H();
+ x1 = round(x + (w - bex2->Get_W())/2.0);
+ bex2->SetPosition(x1,y1);
+ }
+ }
+delta = (father->GetType() == DEFINITION)?
+ round((father->GetFather()->Get_W() - w)/2.0)
+ : BORDER;
+}
+
+void Parallel::SetDimensions(void)
+{
+bex1->SetDimensions();
+bex2->SetDimensions();
+oper->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ aligline = round(h/2.0);
+ break;
+ case COLLAPSED_INV: w = 0; h = 0; aligline = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = Get_Textual_H(); w = Get_Textual_W();
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ aligline = round(h/2.0);
+ }
+ else {
+ if(alignement == HOR)
+ {
+ w = bex1->Get_W() + oper->Get_W() + bex2->Get_W();
+
+ aligline = Max(bex1->GetAligLine(),oper->GetAligLine());
+ aligline = Max(aligline,bex2->GetAligLine());
+ if(bex1->Get_H() - bex1->GetAligLine() >
+ oper->Get_H() - oper->GetAligLine())
+ h = bex1->Get_H() - bex1->GetAligLine();
+ else h = oper->Get_H() - oper->GetAligLine();
+ if(bex2->Get_H() - bex2->GetAligLine() > h)
+ h = bex2->Get_H() - bex2->GetAligLine();
+ h += aligline;
+ if(havebox)
+ {w += 2 * BORDER; h += 2 * BORDER; aligline += BORDER;}
+ }
+ else {
+ h = bex1->Get_H() + oper->Get_H() + bex2->Get_H();
+ w = Max(bex1->Get_W(), bex2->Get_W());
+ w = Max(w, oper->Get_W());
+ if(havebox)
+ {h += 2 * BORDER; w += 2 * BORDER;}
+ aligline = round(h/2.0);
+ }
+ }
+ }
+}
+
+void Parallel::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+bex1->SetTextual(t);
+oper->SetTextual(t);
+bex2->SetTextual(t);
+}
+
+int Parallel::Get_Textual_W()
+{
+int b;
+b = Max(bex1->Get_W(), bex2->Get_W());
+if(oper->GetType() == GEN_PARAL)
+ {
+ b += Tree_Node::inUseFont()->Width(" ");
+ b = Max(oper->Get_W(), b); return(b);
+ }
+ else
+ if((father->GetType() == PARALLEL) && (((Parallel
*)father)->GetOperType() == oper->GetType())
+ && father->GetTextual())
+ return(b);
+ else return(oper->Get_W() + b);
+}
+
+int Parallel::Get_Textual_H()
+{
+if(oper->GetType() == GEN_PARAL)
+ return(bex1->Get_H() + bex2->Get_H() + oper->Get_H() + 3 *VBORDER
+ + Tree_Node::inUseFont()->Height());
+ else if((father->GetType() == PARALLEL) && (((Parallel
*)father)->GetOperType() == oper->GetType())
+ && father->GetTextual())
+ return(bex1->Get_H() + bex2->Get_H() + VBORDER);
+ else return(bex1->Get_H() + bex2->Get_H() + 2 *VBORDER +
Tree_Node::inUseFont()->Height());
+}
+
+void Parallel::SetTerminalPos()
+{
+xl=yl=yl1=0;
+
+yl = y - bex1->Get_H() - VBORDER - border;
+if(oper->GetType() == GEN_PARAL)
+ {
+ xl = x + border;
+ yl1 = yl - oper->Get_H() - bex2->Get_H() - 2 * VBORDER;
+ }
+ else
+ if((father->GetType() == PARALLEL) && (((Parallel
*)father)->GetOperType() == oper->GetType())
+ && father->GetTextual())
+ xl = x - oper->Get_W() + border;
+ else {
+ xl = x + border;
+ yl1 = yl - bex2->Get_H() - VBORDER;
+ }
+}
+
+void Parallel::SetFather(Tree_Node *f)
+{
+char ft;
+ft = (f->GetType() == PARALLEL)? ((Parallel *)f)->GetOperType(): f->GetType();
+havebox = HaveBox(oper->GetType(),ft);
+father = f;
+bex1->SetFather(this);
+oper->SetFather(this);
+bex2->SetFather(this);
+}
+
+void Parallel::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+bex1->SetCollapsed(t);
+oper->SetCollapsed(t);
+bex2->SetCollapsed(t);
+}
+
+/* */
+/* implementation of class Ident_Eq methods */
+/* */
+
+Ident_Eq::Ident_Eq(Id_Decl *idd, Value_Expr *ex)
+{
+type = IDEQ;
+textual = TRUE;
+selectable = FALSE;
+iddecl = idd;
+expr = ex;
+if(idd == NULL)
+ iddecl = new Id_Decl(NULL,NULL);
+if(ex == NULL)
+ expr = new Value_Expr;
+visible = (iddecl->GetVisible() && expr->GetVisible());
+
+Set_Unparser(new Gl_Ident_Eq(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Ident_Eq::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "IdentEq" << x << " " << y << "\n";
+ cout << "IdentEq" << h << " " << w << "\n";
+#endif
+
+iddecl->SetPosition(x,y);
+x1 = x + iddecl->Get_W() + Tree_Node::inUseFont()->Width(" = ");
+expr->SetPosition(x1,y);
+}
+
+void Ident_Eq::SetDimensions(void)
+{
+iddecl->SetDimensions();
+expr->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: w = iddecl->Get_W() + expr->Get_W() +
Tree_Node::inUseFont()->Width(" = ");
+ h = Tree_Node::inUseFont()->Height();
+ }
+aligline = round(h/2.0);
+}
+
+void Ident_Eq::SetFather(Tree_Node *f)
+{
+father = f;
+iddecl->SetFather(this);
+expr->SetFather(this);
+}
+
+void Ident_Eq::SetCollapsed(char t)
+{
+collapsed = t;
+iddecl->SetCollapsed(t);
+expr->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class Ident_Eq_List methods */
+/* */
+
+Ident_Eq_List::Ident_Eq_List(Ident_Eq *el, Ident_Eq_List *nxt)
+{
+type = IDEQLIST;
+textual = TRUE;
+selectable = FALSE;
+elem = el;
+next = nxt;
+visible = elem->GetVisible();
+
+Set_Unparser(new Gl_Ident_Eq_List(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Ident_Eq_List::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "IdentEqList" << x << " " << y << "\n";
+ cout << "IdentEqList" << h << " " << w << "\n";
+#endif
+if(elem != NULL)
+ {
+ elem->SetPosition(x,y);
+ x1 = x + elem->Get_W() + Tree_Node::inUseFont()->Width(", ");
+ if(next != NULL)
+ next->SetPosition(x1,y);
+ }
+}
+
+void Ident_Eq_List::SetDimensions(void)
+{
+elem->SetDimensions();
+if(next!=NULL)
+ next->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = Tree_Node::inUseFont()->Height();
+ w = (next == NULL || next->next == NULL)? elem->Get_W()
+ : elem->Get_W() + next->Get_W() +
Tree_Node::inUseFont()->Width(", ");
+ }
+aligline = round(h/2.0);
+}
+
+void Ident_Eq_List::SetCollapsed(char t)
+{
+collapsed = t;
+if(elem != NULL)
+ elem->SetCollapsed(t);
+if(next != NULL)
+ next->SetCollapsed(t);
+}
+
+void Ident_Eq_List::SetFather(Tree_Node *f)
+{
+father = f;
+if(elem != NULL)
+ elem->SetFather(this);
+if(next != NULL)
+ next->SetFather(this);
+}
+
+/* */
+/* implementation of class Local_Def methods */
+/* */
+
+Local_Def::Local_Def(Ident_Eq_List *e_l, Tree_Node *b)
+{
+type = LOCALDEF;
+equa_list = e_l;
+bex = b;
+
+Set_Unparser(new Gl_Local_Def(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Local_Def::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Local_Def" << x << " " << y << "\n";
+ cout << "Local_Def" << h << " " << w << "\n";
+#endif
+
+if (textual)
+ { /* x is the position og LET */
+ x1 = x + Tree_Node::inUseFont()->Width("let ") + border;
+ equa_list->SetPosition(x1, y - border);
+ yl = x1 + equa_list->Get_W(); /*yl is the position of IN */
+ x1 = x + SMALL_BORDER + border;
+ y1 = y - equa_list->Get_H() - VBORDER - border;
+ bex->SetPosition(x1,y1);
+ }
+ else {
+ x1 = x + BORDER;
+ y1 = y - VBORDER;
+ equa_list->SetPosition(x1,y1);
+ yl = y1 - equa_list->Get_H() - VBORDER;
+ y1 = yl - BORDER;
+ x1 = x + round((w - bex->Get_W())/2.0);
+ bex->SetPosition(x1,y1);
+ }
+}
+
+void Local_Def::SetDimensions(void)
+{
+bex->SetDimensions();
+equa_list->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ break;
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = equa_list->Get_H() + VBORDER + bex->Get_H();
+ w = Max(equa_list->Get_W() + Tree_Node::inUseFont()->Width("let ") +
+ Tree_Node::inUseFont()->Width(" in "), bex->Get_W() +
SMALL_BORDER);
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ }
+ else {
+ w = Max(bex->Get_W(), equa_list->Get_W());
+ w += 2 * BORDER;
+ h = bex->Get_H() + equa_list->Get_H() + 2 * (VBORDER + BORDER);
+ }
+ break;
+ }
+aligline = round(h/2.0);
+}
+
+void Local_Def::SetFather(Tree_Node *f)
+{
+father = f;
+equa_list->SetFather(this);
+bex->SetFather(this);
+}
+
+void Local_Def::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+equa_list->SetCollapsed(t);
+bex->SetCollapsed(t);
+}
+
+void Local_Def::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+bex->SetTextual(t);
+}
+
+
+/* */
+/* implementation of class Hide methods */
+/* */
+
+Hide::Hide(ID_List *g_l, Tree_Node *b)
+{
+type = HIDE;
+alignement = VER;
+gate_list = g_l;
+bex = b;
+
+Set_Unparser(new Gl_Hide(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Hide::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Hide" << x << " " << y << "\n";
+ cout << "Hide" << h << " " << w << "\n";
+#endif
+
+if (textual)
+ { /* x is the position of Hide */
+ x1 = x + Tree_Node::inUseFont()->Width("hide ") + border;
+ gate_list->SetPosition(x1, y - border);
+ yl = x1 + gate_list->Get_W(); /* position of IN */
+ x1 = x + SMALL_BORDER + border;
+ y1 = y - gate_list->Get_H() - VBORDER - border;
+ bex->SetPosition(x1, y1);
+ }
+ else {
+ x1 = x + HIDE_W + BORDER;
+ y1 = y - VBORDER;
+ gate_list->SetPosition(x1,y1);
+ yl = y1 - gate_list->Get_H() - VBORDER;
+ y1 = yl - BORDER;
+ x1 = x + BORDER;
+ bex->SetPosition(x1,y1);
+ }
+}
+
+void Hide::SetDimensions(void)
+{
+int foo;
+
+bex->SetDimensions();
+gate_list->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ break;
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual == TRUE)
+ {
+ h = gate_list->Get_H() + VBORDER + bex->Get_H();
+ foo = Tree_Node::inUseFont()->Width("hide ") + gate_list->Get_W() +
+ Tree_Node::inUseFont()->Width(" in ");
+ w = Max(foo, bex->Get_W() + SMALL_BORDER);
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ }
+ else {
+ w = Max(bex->Get_W(), HIDE_W + gate_list->Get_W());
+ w += 2 * BORDER;
+ h = bex->Get_H() + gate_list->Get_H() + 2 * (VBORDER + BORDER);
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Hide::SetFather(Tree_Node *f)
+{
+father = f;
+gate_list->SetFather(this);
+bex->SetFather(this);
+}
+
+void Hide::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+gate_list->SetCollapsed(t);
+bex->SetCollapsed(t);
+}
+
+
+void Hide::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+bex->SetTextual(t);
+}
+
+/* */
+/* implementation of class Interl methods */
+/* */
+
+Interl::Interl()
+{
+type = INTERL;
+alignement = glow->GetAligs(INTERL);
+selectable = FALSE;
+
+Set_Unparser(new Gl_Interl(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Interl::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Interl" << x << " " << y << "\n";
+ cout << "Interl" << h << " " << w << "\n";
+ cout << "Interl" << visible << " " << collapsed << "\n";
+#endif
+}
+
+void Interl::SetDimensions(void)
+{
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("||| ");
+ h = Tree_Node::inUseFont()->Height();
+ }
+ else {
+ if(father->GetAlignement() == HOR)
+ {
+ w = 2 * BORDER;
+ h = 0;
+ }
+ else {
+ w = 0;
+ h = 2 * BORDER;
+ }
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Interl::SetFather(Tree_Node *f)
+{
+father = f;
+father->UpdateAlig(INTERL);
+}
+
+/* */
+/* implementation of class Syncr methods */
+/* */
+
+Syncr::Syncr()
+{
+type = SYNCR;
+alignement = glow->GetAligs(SYNCR);
+selectable = FALSE;
+
+Set_Unparser(new Gl_Syncr(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Syncr::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Syncr" << x << " " << y << "\n";
+ cout << "Syncr" << h << " " << w << "\n";
+#endif
+}
+
+void Syncr::SetDimensions(void)
+{
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("|| ");
+ h = Tree_Node::inUseFont()->Height();
+ }
+ else {
+ if(father->GetAlignement() == HOR)
+ {
+ w = 2 * (SYNCR_R + SYNCR_L);
+ h = 2 * SYNCR_R;
+ }
+ else {
+ w = 2 * SYNCR_R;
+ h = 2 * (SYNCR_R + SYNCR_L);
+ }
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Syncr::SetFather(Tree_Node *f)
+{
+father = f;
+father->UpdateAlig(SYNCR);
+}
+
+/* */
+/* implementation of class Enable methods */
+/* */
+
+
+Enable::Enable(Tree_Node *b1, ID_List *g_i_l, Tree_Node *b2)
+{
+type = ENABLE;
+alignement = glow->GetAligs(ENABLE);
+bex1 = b1;
+gate_id_list = g_i_l;
+bex2 = b2;
+
+Set_Unparser(new Gl_Enable(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Enable::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Enable" << x << " " << y << "\n";
+ cout << "Enable" << h << " " << w << "\n";
+#endif
+
+if(textual)
+ {
+ SetTerminalPos();
+ bex1->SetPosition(xl, y - border);
+ if(gate_id_list->GetVisible())
+ {
+ gate_id_list->SetPosition(xl + Tree_Node::inUseFont()->Width("accept
"),yid);
+ bex2->SetPosition(xl, yid - gate_id_list->Get_H() - VBORDER);
+ }
+ else bex2->SetPosition(xl, yid);
+ }
+ else {
+ if(alignement == HOR)
+ {
+ if(havebox)
+ x1 = x + BORDER;
+ else x1 = x;
+ y1 = y - aligline + bex1->GetAligLine();
+ bex1->SetPosition(x1,y1);
+
+ if(havebox)
+ xl = x + bex1->Get_W() + BORDER;
+ else xl = x + bex1->Get_W();
+ yl1 = y - aligline;
+
+ xid = xl + ENAB_L;
+ yid = yl1 + round(gate_id_list->Get_H()/2.0) + VBORDER;
+ gate_id_list->SetPosition(xid + BORDER,yid - VBORDER);
+
+ yl2 = (gate_id_list->Get_W() != 0)?
+ xid + gate_id_list->Get_W() + 2 * BORDER
+ : xid;
+ x1 = yl2 + ENAB_L + ENAB_S;
+ y1 = y - aligline + bex2->GetAligLine();
+ bex2->SetPosition(x1,y1);
+ }
+ else {
+ xl = x + round(w/2.0);
+ x1 = x + round((w - bex1->Get_W())/2.0);
+ if(havebox)
+ y1 = y - BORDER;
+ else y1 = y;
+ bex1->SetPosition(x1,y1);
+ yl1 = y1 - bex1->Get_H();
+ xid = x + round((w - gate_id_list->Get_W())/2.0) - BORDER;
+ yid = yl1 - ENAB_L;
+ gate_id_list->SetPosition(xid + BORDER,yid - VBORDER);
+ yl2 = (gate_id_list->Get_H() != 0)?
+ yid - gate_id_list->Get_H() - 2 * VBORDER
+ : yid - gate_id_list->Get_H();
+ x1 = x + round((w - bex2->Get_W())/2.0);
+ y1 = yl2 - ENAB_L - ENAB_S;
+ bex2->SetPosition(x1,y1);
+ }
+ }
+}
+
+void Enable::SetDimensions(void)
+{
+bex1->SetDimensions();
+gate_id_list->SetDimensions();
+bex2->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ aligline = round(h/2.0);
+ break;
+ case COLLAPSED_INV: w = 0; h = 0; aligline = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = bex1->Get_H() + bex2->Get_H() + 2*VBORDER +
Tree_Node::inUseFont()->Height();
+ w = Get_Textual_W();
+ if(gate_id_list->GetVisible())
+ h += VBORDER + Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ aligline = round(h/2.0);
+ }
+ else {
+ if(alignement == HOR)
+ {
+ int b1,b2;
+ aligline =
Max((round(ENAB_S/2.0)),(round(gate_id_list->Get_H()/2.0) + VBORDER));
+ aligline = Max(aligline,bex1->GetAligLine());
+ aligline = Max(aligline,bex2->GetAligLine());
+
+ if((gate_id_list->Get_H() - gate_id_list->GetAligLine()) >
+ round(ENAB_S/2.0))
+ b1 = gate_id_list->Get_H() - gate_id_list->GetAligLine();
+ else b1 = round(ENAB_S/2.0);
+ if((bex1->Get_H() - bex1->GetAligLine()) >
+ (bex2->Get_H() - bex1->GetAligLine()))
+ b2 = bex1->Get_H() - bex1->GetAligLine();
+ else b2 = bex2->Get_H() - bex1->GetAligLine();
+ if(b1 > b2)
+ h = aligline + b1;
+ else h = aligline + b2;
+ w = bex1->Get_W() + gate_id_list->Get_W() + bex2->Get_W();
+ w += (gate_id_list->Get_W() == 0)? 2 * ENAB_L + ENAB_S
+ : 2 * ENAB_L + ENAB_S + 2 * BORDER;
+ if(havebox)
+ {w += 2 * BORDER; h += 2 * BORDER; aligline += BORDER;}
+ }
+ else {
+ w = Max4(bex1->Get_W(), gate_id_list->Get_W() + 2*BORDER,
+ bex2->Get_W(), ENAB_S);
+ h = bex1->Get_H() + gate_id_list->Get_H() + bex2->Get_H();
+ h += (gate_id_list == 0)? 2 * ENAB_L + ENAB_S
+ : 2 * ENAB_L + ENAB_S + 2 * VBORDER;
+ aligline = round(h/2.0);
+ if(havebox)
+ {w += 2 * BORDER; h += 2 * BORDER;}
+ }
+ }
+ }
+}
+
+void Enable::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+bex1->SetTextual(t);
+bex2->SetTextual(t);
+}
+
+void Enable::SetTerminalPos()
+
+/* x, y are the coordinate of ( */
+/* xid, yid are the coordinate of >> */
+/* xl, yl1 are the coordinate of accept */
+/* xl2, yl2 are the coordinate of in */
+{
+xid = x + border;
+yid = y - bex1->Get_H() - VBORDER - border;
+xl = xid + Tree_Node::inUseFont()->Width(">> ");
+if(gate_id_list->GetVisible())
+ {
+ yl1 = yid;
+ xl2 = xl + Tree_Node::inUseFont()->Width("accept ") + gate_id_list->Get_W();
+ yl2 = yid;
+ Yclose = yid - gate_id_list->Get_H() - bex2->Get_H() - 2 * VBORDER;
+ }
+ else Yclose = yid - bex2->Get_H() - VBORDER;
+}
+
+int Enable::Get_Textual_W()
+{
+int b;
+b = (gate_id_list->GetVisible())? Max(bex2->Get_W(), gate_id_list->Get_W() +
+ Tree_Node::inUseFont()->Width("accept in "))
+ : bex2->Get_W();
+b = Max(bex1->Get_W(), b);
+return(Tree_Node::inUseFont()->Width(">> ") + b);
+
+}
+
+int Enable::Get_Textual_H()
+{ return(bex1->Get_H() + bex2->Get_H() + 2*VBORDER +
Tree_Node::inUseFont()->Height()); }
+
+void Enable::SetFather(Tree_Node *f)
+{
+char ft;
+ft = (f->GetType() == PARALLEL)? ((Parallel *)f)->GetOperType(): f->GetType();
+if(gate_id_list->GetVisible())
+ havebox = HaveBox(9,ft);
+ else havebox = HaveBox(ENABLE,ft);
+father = f;
+bex1->SetFather(this);
+gate_id_list->SetFather(this);
+bex2->SetFather(this);
+}
+
+void Enable::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+bex1->SetCollapsed(t);
+gate_id_list->SetCollapsed(t);
+bex2->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class Disable methods */
+/* */
+
+
+Disable::Disable(Tree_Node *b1, Tree_Node *b2)
+{
+type = DISABLE;
+alignement = glow->GetAligs(DISABLE);
+bex1 = b1;
+bex2 = b2;
+
+Set_Unparser(new Gl_Disable(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Disable::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Disable" << x << " " << y << "\n";
+ cout << "Disable" << h << " " << w << "\n";
+#endif
+if(textual)
+ {
+ SetTerminalPos();
+ x1 = xl + Tree_Node::inUseFont()->Width("[> ");
+ bex1->SetPosition(x1, y - border);
+ bex2->SetPosition(x1, yl);
+ }
+ else {
+ if(alignement == HOR)
+ {
+ if(havebox)
+ x1 = x + BORDER;
+ else x1 = x;
+ y1 = y - aligline + bex1->GetAligLine();
+ bex1->SetPosition(x1,y1);
+
+ x1 = x1 + bex1->Get_W() + SMALL_PEN + SYNCR_L + 2 * SYNCR_R;
+ y1 = y - aligline + bex2->GetAligLine();
+ bex2->SetPosition(x1,y1);
+ if(havebox)
+ xl = x + bex1->Get_W() + BORDER;
+ else xl = x + bex1->Get_W();
+ yl = y - aligline + SYNCR_R;
+ }
+ else {
+ if(havebox)
+ y1 = y - BORDER;
+ else y1 = y;
+ x1 = round(x + (w - bex1->Get_W())/2.0);
+ bex1->SetPosition(x1,y1);
+ yl = y1 - bex1->Get_H() - SMALL_PEN - SYNCR_L - 2 * SYNCR_R;
+ xl = round(x + (w - bex2->Get_W())/2.0);
+ bex2->SetPosition(xl,yl);
+ xl = x + round(w/2) - SYNCR_R;
+ if(havebox)
+ yl = y - bex1->Get_H() - BORDER;
+ else yl = y - bex1->Get_H();
+ }
+ }
+
+}
+
+void Disable::SetDimensions(void)
+{
+bex1->SetDimensions();
+bex2->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ aligline = round(h/2.0);
+ break;
+ case COLLAPSED_INV: w = 0; h = 0; aligline = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = Get_Textual_H();
+ w = Get_Textual_W();
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ aligline = round(h/2.0);
+ }
+ else {
+ if(alignement == HOR)
+ {
+ int b1;
+ w = bex1->Get_W() + bex2->Get_W();
+ w += SYNCR_L + 2 * SYNCR_R + SMALL_PEN;
+
+ aligline = Max(bex1->GetAligLine(), bex2->GetAligLine());
+ if((bex1->Get_H() - bex1->GetAligLine()) >
+ (bex2->Get_H() - bex2->GetAligLine()))
+ b1 = bex1->Get_H() - bex1->GetAligLine();
+ else b1 = bex2->Get_H() - bex2->GetAligLine();
+ h = aligline + b1;
+ if(havebox)
+ {w += 2 * BORDER; h += 2 * BORDER; aligline += BORDER;}
+ }
+ else {
+ h = bex1->Get_H() + bex2->Get_H();
+ h += SYNCR_L + 2 * SYNCR_R + SMALL_PEN;
+ w = Max(bex1->Get_W(), bex2->Get_W());
+ aligline = bex1->GetAligLine();
+ if(havebox)
+ {w += 2 * BORDER; h += 2 * BORDER; aligline += BORDER;}
+ }
+ }
+ }
+}
+
+void Disable::SetFather(Tree_Node *f)
+{
+char ft;
+ft = (f->GetType() == PARALLEL)? ((Parallel *)f)->GetOperType(): f->GetType();
+havebox = HaveBox(DISABLE,ft);
+father = f;
+bex1->SetFather(this);
+bex2->SetFather(this);
+}
+
+void Disable::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+bex1->SetCollapsed(t);
+bex2->SetCollapsed(t);
+}
+
+void Disable::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+bex1->SetTextual(t);
+bex2->SetTextual(t);
+}
+
+void Disable::SetTerminalPos()
+{
+
+if(father->GetType() == DISABLE &&
+ father->GetTextual()) /* xl, yl is the position of [> */
+ {
+ xl = x - Tree_Node::inUseFont()->Width("[> ") + border;
+ yl = y - bex1->Get_H() - VBORDER - border;
+ }
+ else { /* x,y is the position of ( */
+ xl = x + border;
+ yl = y - bex1->Get_H() - VBORDER - border;
+ yl2 = yl - bex2->Get_H() - VBORDER;
+ }
+}
+
+int Disable::Get_Textual_W()
+{
+int b;
+b = Max(bex1->Get_W(), bex2->Get_W());
+if((father->GetType() == DISABLE) && father->GetTextual())
+ return(b);
+return(Tree_Node::inUseFont()->Width("[> ") + b);
+}
+
+int Disable::Get_Textual_H()
+{
+if(father->GetType() == DISABLE && father->GetTextual())
+ return(bex1->Get_H() + bex2->Get_H() + VBORDER);
+ else return(bex1->Get_H() + bex2->Get_H() + 2 * VBORDER +
Tree_Node::inUseFont()->Height());
+}
+
+/* */
+/* implementation of class Gen_Paral methods */
+/* */
+
+
+Gen_Paral::Gen_Paral(ID_List *g_i_l)
+{
+type = GEN_PARAL;
+alignement = glow->GetAligs(GEN_PARAL);
+selectable = FALSE;
+gate_id_list = g_i_l;
+visible = g_i_l->GetVisible();
+
+Set_Unparser(new Gl_Gen_Paral(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+
+}
+
+void Gen_Paral::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Gen_Paral" << x << " " << y << "\n";
+ cout << "Gen_Paral" << h << " " << w << "\n";
+#endif
+
+if(textual)
+ { /* x is the position of |[ */
+ x1 = x + Tree_Node::inUseFont()->Width(" |[");
+ gate_id_list->SetPosition(x1, y);
+ Xclose = x1 + gate_id_list->Get_W(); /* position of ]| */
+ }
+ else {
+ if(father->GetType() == PAR)
+ gate_id_list->SetPosition(x + ROUND_CORNER, y - ROUND_CORNER);
+ else {
+ if(father->GetAlignement() == HOR)
+ gate_id_list->SetPosition(x + SYNCR_L + ROUND_CORNER,y
-ROUND_CORNER);
+ else gate_id_list->SetPosition(x + ROUND_CORNER,y-SYNCR_L -
ROUND_CORNER);
+ }
+ }
+}
+
+void Gen_Paral::SetDimensions(void)
+{
+gate_id_list->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ break;
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = Tree_Node::inUseFont()->Height();
+ w = Tree_Node::inUseFont()->Width(" |[") + gate_id_list->Get_W() +
+ Tree_Node::inUseFont()->Width("]| ");
+ }
+ else {
+ if(father->GetType() == PAR)
+ {
+ h = gate_id_list->Get_H() + 2 * ROUND_CORNER;
+ w = gate_id_list->Get_W() + 2 * ROUND_CORNER;
+ }
+ else {
+ if(father->GetAlignement() == HOR)
+ {
+ h = gate_id_list->Get_H() + 2 * ROUND_CORNER;
+ w = gate_id_list->Get_W() + 2 * ROUND_CORNER + 2 *
SYNCR_L;
+ }
+ else {
+ h = gate_id_list->Get_H() + 2 * ROUND_CORNER + 2 *
SYNCR_L;
+ w = gate_id_list->Get_W() + 2 * ROUND_CORNER;
+ }
+ }
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Gen_Paral::SetFather(Tree_Node *f)
+{
+father = f;
+father->UpdateAlig(GEN_PARAL);
+gate_id_list->SetFather(this);
+}
+
+void Gen_Paral::SetCollapsed(char t)
+{
+collapsed = t;
+gate_id_list->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class Action_Pref methods */
+/* */
+
+
+Action_Pref::Action_Pref(Tree_Node *a_d, Tree_Node *b)
+{
+type = ACTION_PREF;
+alignement = glow->GetAligs(ACTION_PREF);
+action_den = a_d;
+bex = b;
+
+Set_Unparser(new Gl_Action_Pref(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Action_Pref::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Action_Pref" << x << " " << y << "\n";
+ cout << "Action_Pref" << h << " " << w << "\n";
+#endif
+
+if(textual)
+ {
+ action_den->SetPosition(x + border, y - border);
+ y1 = y - action_den->Get_H() - VBORDER - border;
+ x1 = x + SMALL_BORDER + border;
+ bex->SetPosition(x1, y1);
+ }
+ else {
+ if(alignement == HOR)
+ {
+ y1 = y - aligline + action_den->GetAligLine();
+ if(havebox)
+ {
+ action_den->SetPosition(x + BORDER,y1);
+ x1 = x + action_den->Get_W() + BORDER;
+ }
+ else
+ {
+ action_den->SetPosition(x,y1);
+ x1 = x + action_den->Get_W();
+ }
+ y1 = y - aligline + bex->GetAligLine();
+ bex->SetPosition(x1,y1);
+ }
+ else {
+ x1 = round(x + (w - action_den->Get_W())/2.0);
+ if(havebox)
+ y1 = y - BORDER;
+ else y1 = y;
+ action_den->SetPosition(x1,y1);
+ x1 = round(x + (w - bex->Get_W())/2.0);
+ y1 = y1 - action_den->Get_H();
+ bex->SetPosition(x1,y1);
+ }
+ }
+
+}
+
+void Action_Pref::SetDimensions(void)
+{
+action_den->SetDimensions();
+bex->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ aligline = round(h/2.0);
+ break;
+ case COLLAPSED_INV: w = 0; h = 0; aligline = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = action_den->Get_H() + bex->Get_H() + VBORDER;
+ w = Max(action_den->Get_W(), bex->Get_W() + SMALL_BORDER);
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ aligline = round(h/2.0);
+ }
+ else {
+ if(alignement == HOR)
+ {
+ w = action_den->Get_W() + bex->Get_W();
+ aligline = Max(action_den->GetAligLine(),bex->GetAligLine());
+ if((action_den->Get_H() - action_den->GetAligLine()) >
+ (bex->Get_H() - bex->GetAligLine()))
+ h = aligline + action_den->Get_H() -
action_den->GetAligLine();
+ else h = aligline + bex->Get_H() - bex->GetAligLine();
+ if(havebox)
+ {w += 2 * BORDER; h += 2 * BORDER; aligline += BORDER;}
+ }
+ else {
+ h = action_den->Get_H() + bex->Get_H();
+ w = Max(action_den->Get_W(), bex->Get_W());
+ aligline = action_den->GetAligLine();
+ if(havebox)
+ {w += 2 * BORDER; h += 2 * BORDER; aligline += BORDER;}
+ }
+ }
+ }
+}
+
+void Action_Pref::SetFather(Tree_Node *f)
+{
+char ft;
+ft = (f->GetType() == PARALLEL)? ((Parallel *)f)->GetOperType(): f->GetType();
+havebox = HaveBox(ACTION_PREF,ft);
+father = f;
+action_den->SetFather(this);
+bex->SetFather(this);
+}
+
+void Action_Pref::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+action_den->SetCollapsed(t);
+bex->SetCollapsed(t);
+}
+
+void Action_Pref::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+action_den->SetTextual(t);
+bex->SetTextual(t);
+}
+
+
+/* */
+/* implementation of class Internal methods */
+/* */
+
+
+Internal::Internal()
+{
+type = INTERNAL;
+selectable = FALSE;
+visible = TRUE;
+
+Set_Unparser(new Gl_Internal(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+
+}
+
+void Internal::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Internal" << x << " " << y << "\n";
+ cout << "Internal" << h << " " << w << "\n";
+#endif
+}
+
+void Internal::SetDimensions(void)
+{
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = Tree_Node::inUseFont()->Height();
+ w = Tree_Node::inUseFont()->Width("i ; ");
+ }
+ else {
+ if(father->GetAlignement() == HOR)
+ {
+ h = INT_EV_H;
+ w = INT_EV_W + INT_EV_L + SMALL_PEN;
+ }
+ else {
+ h = INT_EV_H + INT_EV_L + SMALL_PEN;
+ w = INT_EV_W;
+ }
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Internal::SetFather(Tree_Node *f)
+{ father = f;
+}
+
+
+/* */
+/* implementation of class Communication methods */
+/* */
+
+
+Communication::Communication(ID_Place *i, Tree_Node *ex_op)
+{
+type = COMMUNICATION;
+selectable = FALSE;
+gate_identifier = i;
+experiment_option = ex_op;
+
+Set_Unparser(new Gl_Communication(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Communication::SetPosition(Coord xx, Coord yy)
+{
+int dum;
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Communication" << x << " " << y << "\n";
+ cout << "Communication" << h << " " << w << "\n";
+#endif
+
+if(textual)
+ {
+ gate_identifier->SetPosition(x, y);
+ dum = x + gate_identifier->Get_W() + Tree_Node::inUseFont()->Width(" ");
+ experiment_option->SetPosition(dum, y) ;
+ yl = dum + experiment_option->Get_W(); /*position of ; */
+ }
+ else {
+ if(father->GetAlignement() == HOR)
+ {
+ int w1;
+ w1 = w - SMALL_PEN - INT_EV_L;
+ if(experiment_option->GetType() == EXPERIMENT &&
+ ((Experiment *)experiment_option)->GetGuard()->Get_W() == w1)
+ {
+ dum = round((w1 - (gate_identifier->Get_W() +
+ experiment_option->Get_W() + ROUND_CORNER))/2.0);
+ x1 = x + dum;
+ }
+ else x1 = x + ROUND_CORNER;
+ gate_identifier->SetPosition(x1, y - ROUND_CORNER);
+ yl = y - round(gate_identifier->Get_H()/2) - ROUND_CORNER;
+ xl = x + w1;
+ if(experiment_option->GetType() == EXPERIMENT)
+ {
+ dum =round((w1 -
+ ((Experiment *)experiment_option)->GetGuard()->Get_W())/2.0);
+ x1 = x1 + gate_identifier->Get_W() + ROUND_CORNER;
+ experiment_option->SetPosition(x1, y - ROUND_CORNER);
+ ((Experiment *)experiment_option)->GetGuard()->SetPosition(x + dum,
+ y - gate_identifier->Get_H() - 2 *
ROUND_CORNER);
+ }
+ }
+ else {
+ if(experiment_option->GetType() == EXPERIMENT &&
+ ((Experiment *)experiment_option)->GetGuard()->Get_W() == w)
+ {
+ dum = round((w - (gate_identifier->Get_W() +
+ experiment_option->Get_W() + ROUND_CORNER))/2.0);
+ x1 = x + dum;
+ }
+ else x1 = x + ROUND_CORNER;
+ gate_identifier->SetPosition(x1, y - ROUND_CORNER);
+ yl = y - gate_identifier->Get_H() - 2 * ROUND_CORNER;
+ xl = x + round(w/2.0);
+ if(experiment_option->GetType() == EXPERIMENT)
+ {
+ dum =round((w -
+ ((Experiment *)experiment_option)->GetGuard()->Get_W())/2.0);
+ x1 = x1 + gate_identifier->Get_W() + ROUND_CORNER;
+ experiment_option->SetPosition(x1, y - ROUND_CORNER);
+ ((Experiment *)experiment_option)->GetGuard()->SetPosition(x + dum,
+ y - gate_identifier->Get_H() - 2 *
ROUND_CORNER);
+ yl -= ((Experiment *)experiment_option)->GetGuard()->Get_H();
+ }
+ }
+ }
+}
+
+void Communication::SetDimensions(void)
+{
+gate_identifier->SetDimensions();
+experiment_option->SetDimensions();
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0; aligline = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = Tree_Node::inUseFont()->Height();
+ w = gate_identifier->Get_W() + experiment_option->Get_W() +
+ Tree_Node::inUseFont()->Width(" ") +
Tree_Node::inUseFont()->Width(" ; ");
+ aligline = round(h/2.0);
+ }
+ else {
+ hr = gate_identifier->Get_H() + 2 * ROUND_CORNER;
+ if(father->GetAlignement() == HOR)
+ h = gate_identifier->Get_H() + 2 * ROUND_CORNER;
+ else h = gate_identifier->Get_H() + 2 * ROUND_CORNER +
SMALL_PEN + INT_EV_L;
+ w = gate_identifier->Get_W() + 2 * ROUND_CORNER;
+ if(experiment_option->GetType() == EXPERIMENT)
+ {
+ w += experiment_option->Get_W() + ROUND_CORNER;
+ if(((Experiment *)experiment_option)->GetGuard()->Get_W() > w)
+ w = ((Experiment *)experiment_option)->GetGuard()->Get_W();
+ h += ((Experiment *)experiment_option)->GetGuard()->Get_H();
+ }
+ if(father->GetAlignement() == HOR)
+ w += SMALL_PEN + INT_EV_L;
+ aligline = round(gate_identifier->Get_H()/2.0) + ROUND_CORNER;
+ }
+ }
+}
+
+void Communication::SetFather(Tree_Node *f)
+{
+father = f;
+gate_identifier->SetFather(this);
+experiment_option->SetFather(this);
+}
+
+void Communication::SetCollapsed(char t)
+{
+collapsed = t;
+gate_identifier->SetCollapsed(t);
+experiment_option->SetCollapsed(t);
+}
+
+void Communication::SetTextual(char t, char)
+{
+textual = t;
+experiment_option->SetTextual(t);
+}
+
+
+/* */
+/* implementation of class NoGuard methods */
+/* */
+
+
+NoGuard::NoGuard()
+{
+type = NO_GUARD;
+visible = FALSE;
+selectable = FALSE;
+w = 0; h = 0;
+aligline = 0;
+
+Set_Unparser(new Gl_NoGuard(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+
+}
+
+void NoGuard::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "NoGuard" << x << " " << y << "\n";
+ cout << "NoGuard" << h << " " << w << "\n";
+#endif
+}
+
+void NoGuard::SetDimensions(void)
+{ }
+
+void NoGuard::SetFather(Tree_Node *f)
+{ father = f; }
+
+
+/* */
+/* implementation of class Guard methods */
+/* */
+
+
+Guard::Guard(Equality *eq)
+{
+type = GUARD;
+visible = TRUE;
+selectable = FALSE;
+equality = eq;
+
+Set_Unparser(new Gl_Guard(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+
+}
+
+void Guard::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Guard" << x << " " << y << "\n";
+ cout << "Guard" << h << " " << w << "\n";
+#endif
+if (textual)
+ equality->SetPosition(x + Tree_Node::inUseFont()->Width(" ["), y);
+ else
+ equality->SetPosition(x+BORDER, y - VBORDER);
+}
+
+void Guard::SetDimensions(void)
+{
+equality->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = Tree_Node::inUseFont()->Height();
+ w = equality->Get_W() + Tree_Node::inUseFont()->Width(" [") +
Tree_Node::inUseFont()->Width("]");
+ }
+ else {
+ h = equality->Get_H() + 2 * VBORDER;
+ w = equality->Get_W() + 2 * BORDER;
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Guard::SetFather(Tree_Node *f)
+{
+father = f;
+equality->SetFather(this);
+}
+
+void Guard::SetCollapsed(char t)
+{
+collapsed = t;
+equality->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class NoExperiment methods */
+/* */
+
+
+NoExperiment::NoExperiment()
+{
+type = NO_EXPERIMENT;
+visible = FALSE;
+selectable = FALSE;
+w = 0; h = 0;
+aligline = 0;
+
+Set_Unparser(new Gl_NoExperiment(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+
+}
+
+void NoExperiment::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "NoExperiment" << x << " " << y << "\n";
+ cout << "NoExperiment" << h << " " << w << "\n";
+#endif
+}
+
+void NoExperiment::SetDimensions(void)
+{ }
+
+void NoExperiment::SetFather(Tree_Node *f)
+{ father = f; }
+
+
+/* */
+/* implementation of class Experiment methods */
+/* */
+
+
+Experiment::Experiment(Exper_Off_List *e_of_l, Tree_Node *g_op)
+{
+type = EXPERIMENT;
+visible = TRUE;
+selectable = FALSE;
+exp_offer_list = e_of_l;
+guard_option = g_op;
+
+Set_Unparser(new Gl_Experiment(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+
+}
+
+void Experiment::SetPosition(Coord xx, Coord yy)
+{
+
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Experiment" << x << " " << y << "\n";
+ cout << "Experiment" << h << " " << w << "\n";
+#endif
+if (textual)
+ {
+ exp_offer_list->SetPosition(x , y);
+ guard_option->SetPosition(x + exp_offer_list->Get_W(), y);
+ }
+ else
+ exp_offer_list->SetPosition(x + ROUND_CORNER, y);
+}
+
+void Experiment::SetDimensions(void)
+{
+exp_offer_list->SetDimensions();
+guard_option->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: if (textual)
+ {
+ h = Tree_Node::inUseFont()->Height();
+ w = exp_offer_list->Get_W() + guard_option->Get_W();
+ }
+ else {
+ h = exp_offer_list->Get_H();
+ w = exp_offer_list->Get_W() + ROUND_CORNER;
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Experiment::SetFather(Tree_Node *f)
+{
+father = f;
+exp_offer_list->SetFather(this);
+guard_option->SetFather(this);
+}
+
+void Experiment::SetCollapsed(char t)
+{
+collapsed = t;
+exp_offer_list->SetCollapsed(t);
+guard_option->SetCollapsed(t);
+}
+
+
+void Experiment::SetTextual(char t, char)
+{
+textual = t;
+guard_option->SetTextual(t);
+}
+
+/* */
+/* implementation of class Proc_Inst methods */
+/* */
+
+Proc_Inst::Proc_Inst(ID_Place *id, ID_List *g_i_l, Value_Expr_List *v_l)
+{
+Gl_Sheet *sh;
+type = PROCINST;
+visible = TRUE;
+
+ident = id;
+gate_list = g_i_l;
+value_expr_list = v_l;
+
+Set_Unparser(new Gl_Proc_Inst(this));
+sh = (glow->Get_Folder())->Current();
+sh->Add(Get_Unparser());
+sh->SetRoot(this);
+}
+
+void Proc_Inst::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Proc Inst" << x << " " << y << "\n";
+ cout << "Proc Inst" << h << " " << w << "\n";
+#endif
+
+if ( textual)
+ {
+ ident->SetPosition(x + border,y - border);
+ yp = yl1 = x + ident->Get_W() + border; /* yp position of [*/
+ if (gate_list->GetVisible())
+ {
+ x1 = yp + Tree_Node::inUseFont()->Width(" [");
+ gate_list->SetPosition(x1, y - border);
+ yl1 = x1 + gate_list->Get_W(); /* yl1 position of ] */
+ }
+ if (value_expr_list->GetVisible())
+ {
+ Xopen = yl1 + Tree_Node::inUseFont()->Width("] "); /*position
of ( */
+ x1 = Xopen + Tree_Node::inUseFont()->Width(" (");
+ value_expr_list->SetPosition(x1, y - border);
+ Xclose = x1 + value_expr_list->Get_W(); /*poistion of )*/
+ }
+ }
+
+ else {
+ x1 = x + round((w - gate_list->Get_W()) / 2.0);
+ gate_list->SetPosition(x1,y);
+
+ x1 = x + round((w - ident->Get_W()) / 2.0);
+ yp = y - gate_list->Get_H();
+ y1 = yp - VBORDER;
+ ident->SetPosition(x1,y1);
+ yl1 = y1 - ident->Get_H() - VBORDER;
+ x1 = x + round((w - value_expr_list->Get_W()) / 2.0);
+ y1 = yl1 - VBORDER;
+ value_expr_list->SetPosition(x1,y1);
+ }
+
+}
+
+void Proc_Inst::SetDimensions(void)
+{
+ident->SetDimensions();
+gate_list->SetDimensions();
+value_expr_list->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ aligline = round(h/2.0);
+ break;
+ case COLLAPSED_INV: w = 0; h = 0; aligline = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = Tree_Node::inUseFont()->Height();
+ w = ident->Get_W() + gate_list->Get_W() + value_expr_list->Get_W();
+ w += (gate_list->GetVisible())? Tree_Node::inUseFont()->Width(" [") +
+ Tree_Node::inUseFont()->Width("] "):0;
+ w += (value_expr_list->GetVisible())? Tree_Node::inUseFont()->Width("
(") +
+ Tree_Node::inUseFont()->Width(") "):0;
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ aligline = round(h/2.0);
+ }
+ else {
+ w = Max(ident->Get_W(),value_expr_list->Get_W());
+ w = Max(w, gate_list->Get_W());
+ w += 2 * BORDER;
+ if(value_expr_list->Get_H() != 0)
+ hp = ident->Get_H() + value_expr_list->Get_H() + 4 * VBORDER;
+ else hp = ident->Get_H() + 2 * VBORDER;
+ h = hp + gate_list->Get_H();
+ aligline = gate_list->Get_H() + round(ident->Get_H()/2.0) + VBORDER;
+ }
+ }
+}
+
+void Proc_Inst::SetFather(Tree_Node *f)
+{
+father = f;
+ident->SetFather(this);
+gate_list->SetFather(this);
+value_expr_list->SetFather(this);
+}
+
+void Proc_Inst::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+ident->SetCollapsed(t);
+gate_list->SetCollapsed(t);
+value_expr_list->SetCollapsed(t);
+}
+
+void Proc_Inst::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+gate_list->SetTextual(t);
+}
+
+
+/* */
+/* implementation of class Value_Expr methods */
+/* */
+
+Value_Expr::Value_Expr()
+{
+type = VALEXPR;
+textual = TRUE;
+visible = FALSE;
+selectable = FALSE;
+w = 0; h = 0;
+aligline = 0;
+
+Set_Unparser(new Gl_Value_Expr(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Value_Expr::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "ValueExpr" << x << " " << y << "\n";
+ cout << "ValueExpr" << h << " " << w << "\n";
+ cout << "ValueExpr" << visible << " " << collapsed << "\n";
+#endif
+}
+
+void Value_Expr::SetDimensions(void)
+{ }
+
+void Value_Expr::SetFather(Tree_Node *f)
+{ father = f; }
+
+
+/* */
+/* implementation of class Value_Expr_List methods */
+/* */
+
+Value_Expr_List::Value_Expr_List(Tree_Node *el, Value_Expr_List *nxt)
+{
+type = VALUEEXPRLIST;
+textual = TRUE;
+selectable = FALSE;
+elem = el;
+next = nxt;
+visible = elem->GetVisible();
+
+Set_Unparser(new Gl_Value_Expr_List(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Value_Expr_List::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "ValueExprList" << x << " " << y << "\n";
+ cout << "ValueExprList" << h << " " << w << "\n";
+#endif
+if(elem != NULL)
+ {
+ elem->SetPosition(x,y);
+ x1 = x + elem->Get_W() + Tree_Node::inUseFont()->Width(", ");
+ if(next != NULL)
+ next->SetPosition(x1,y);
+ }
+}
+
+void Value_Expr_List::SetDimensions(void)
+{
+elem->SetDimensions();
+if(next!=NULL)
+ next->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = Tree_Node::inUseFont()->Height();
+ w = (next == NULL || next->next == NULL)? elem->Get_W()
+ : elem->Get_W() + next->Get_W() +
Tree_Node::inUseFont()->Width(", ");
+ }
+aligline = round(h/2.0);
+}
+
+void Value_Expr_List::SetFather(Tree_Node *f)
+{
+father = f;
+if(elem != NULL)
+ elem->SetFather(this);
+if(next != NULL)
+ next->SetFather(this);
+}
+
+void Value_Expr_List::SetCollapsed(char t)
+{
+collapsed = t;
+if(elem != NULL)
+ elem->SetCollapsed(t);
+if(next != NULL)
+ next->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class Sum_Ident methods */
+/* */
+
+
+Sum_Ident::Sum_Ident(Id_Decl_List *i_d_l, Tree_Node *b)
+{
+type = SUM_IDENT;
+visible = TRUE;
+alignement = VER;
+ident_decl_list = i_d_l;
+bex = b;
+
+Set_Unparser(new Gl_Sum_Ident(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Sum_Ident::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Sum_Ident" << x << " " << y << "\n";
+ cout << "Sum_Ident" << h << " " << w << "\n";
+#endif
+if (textual)
+ {
+ SetTerminalPos();
+ x1 = Xch + Tree_Node::inUseFont()->Width("choice ");
+ y1 = Ych;
+ ident_decl_list->SetPosition(x1, y1);
+ x1 = x + SMALL_BORDER;
+ y1 = y - ident_decl_list->Get_H() - VBORDER - border;
+ bex->SetPosition(x1, y1);
+ }
+ else {
+ x1 = x + round((w - ident_decl_list->Get_W() -
+ 2 * LINE_SPACE)/2.0) + BORDER;
+ y1 = y - 2 * VBORDER;
+ ident_decl_list->SetPosition(x1, y1);
+ yl = y1 - 2 * VBORDER - ident_decl_list->Get_H();
+ x1 = x + round((w - bex->Get_W())/2.0);
+ y1 = yl - BORDER;
+ bex->SetPosition(x1,y1);
+ }
+}
+
+void Sum_Ident::SetDimensions(void)
+
+{
+ident_decl_list->SetDimensions();
+bex->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ break;
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = ident_decl_list->Get_H() + bex->Get_H() +
+ Tree_Node::inUseFont()->Height() + 2 * VBORDER;
+ w = Max4(Tree_Node::inUseFont()->Width("(choice ") +
+ ident_decl_list->Get_W() + Tree_Node::inUseFont()->Width("
[]"),
+ bex->Get_W() + SMALL_BORDER,
Tree_Node::inUseFont()->Width(")"), 0);
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ }
+ else {
+ w = Max(ident_decl_list->Get_W() + 2 * LINE_SPACE, bex->Get_W());
+ w += 2*BORDER;
+ h = ident_decl_list->Get_H() + bex->Get_H() + 4*VBORDER + 2*BORDER;
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Sum_Ident::SetFather(Tree_Node *f)
+{
+father = f;
+ident_decl_list->SetFather(this);
+bex->SetFather(this);
+}
+
+void Sum_Ident::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+ident_decl_list->SetCollapsed(t);
+bex->SetCollapsed(t);
+}
+
+void Sum_Ident::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+bex->SetTextual(t);
+}
+
+void Sum_Ident::SetTerminalPos()
+
+/* x, y is the position of ( */
+/* Xch, Ych is the position of choice */
+/* xl, yl is the position of [] */
+/* Xclose, Yclose is the position of ) */
+{
+Ych = yl = y - border;
+
+Xch = x + Tree_Node::inUseFont()->Width("(") + border;
+xl = Xch + Tree_Node::inUseFont()->Width("choice ") + ident_decl_list->Get_W();
+Xclose = x + border;
+Yclose = y - ident_decl_list->Get_H() - bex->Get_H() - 2 * VBORDER - border;
+}
+
+
+/* */
+/* implementation of class Value methods */
+/* */
+
+Value::Value(ID_Place *i, ID_Place *s)
+{
+type = VALUE;
+textual = TRUE;
+visible = TRUE;
+selectable = FALSE;
+ident = i;
+sort_id = s;
+if(glow->ShowOfSort())
+ sort_id->SetVisible(TRUE);
+ else sort_id->SetVisible(FALSE);
+
+Set_Unparser(new Gl_Value(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+((glow->Get_Folder())->Current())->YesOfSort();
+}
+
+void Value::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Value" << x << " " << y << "\n";
+ cout << "Value" << h << " " << w << "\n";
+#endif
+ident->SetPosition(x,y);
+x1 = x + ident->Get_W() + Tree_Node::inUseFont()->Width(" of ");
+sort_id->SetPosition(x1,y);
+}
+
+void Value::SetDimensions(void)
+{
+ident->SetDimensions();
+sort_id->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = Tree_Node::inUseFont()->Height();
+ if(glow->ShowOfSort())
+ {
+ sort_id->SetVisible(TRUE);
+ w = ident->Get_W() + sort_id->Get_W() +
Tree_Node::inUseFont()->Width(" of ");
+ }
+ else {
+ w = ident->Get_W();
+ sort_id->SetVisible(FALSE);
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Value::SetFather(Tree_Node *f)
+{
+father = f;
+ident->SetFather(this);
+sort_id->SetFather(this);
+}
+
+void Value::SetCollapsed(char t)
+{
+collapsed = t;
+ident->SetCollapsed(t);
+sort_id->SetCollapsed(t);
+}
+
+
+
+/* */
+/* implementation of class Term methods */
+/* */
+
+Term::Term(ID_Place *op, Value_Expr_List *el, ID_Place *s)
+{
+type = TERM;
+textual = TRUE;
+visible = TRUE;
+selectable = FALSE;
+op_ident = op;
+expr_list = el;
+sort_id = s;
+visible = TRUE;
+
+if(glow->ShowOfSort())
+ sort_id->SetVisible(TRUE);
+ else sort_id->SetVisible(FALSE);
+
+Set_Unparser(new Gl_Term(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+((glow->Get_Folder())->Current())->YesOfSort();
+}
+
+void Term::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Term" << x << " " << y << "\n";
+ cout << "Term" << h << " " << w << "\n";
+#endif
+op_ident->SetPosition(x,y);
+if(expr_list->Get_W() == 0)
+ {
+ x1 = x + op_ident->Get_W();
+ expr_list->SetPosition(x1,y);
+ x1 = x1 + Tree_Node::inUseFont()->Width(" of ");
+ sort_id->SetPosition(x1,y);
+ }
+ else {
+ x1 = x + op_ident->Get_W() + Tree_Node::inUseFont()->Width("(");
+ expr_list->SetPosition(x1,y);
+ x1 = x1 + expr_list->Get_W() + Tree_Node::inUseFont()->Width(") of ");
+ sort_id->SetPosition(x1,y);
+ }
+}
+
+void Term::SetDimensions(void)
+{
+op_ident->SetDimensions();
+expr_list->SetDimensions();
+sort_id->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = Tree_Node::inUseFont()->Height();
+ if(glow->ShowOfSort())
+ {
+ sort_id->SetVisible(TRUE);
+ w = op_ident->Get_W() + sort_id->Get_W() +
Tree_Node::inUseFont()->Width(" of ");
+ }
+ else {
+ w = op_ident->Get_W();
+ sort_id->SetVisible(FALSE);
+ }
+ w = (expr_list->Get_W() == 0)?w : w +
expr_list->Get_W() +
+ 2 *
Tree_Node::inUseFont()->Width(")");
+ }
+aligline = round(h/2.0);
+}
+
+void Term::SetFather(Tree_Node *f)
+{
+father = f;
+op_ident->SetFather(this);
+expr_list->SetFather(this);
+sort_id->SetFather(this);
+}
+
+void Term::SetCollapsed(char t)
+{
+collapsed = t;
+op_ident->SetCollapsed(t);
+expr_list->SetCollapsed(t);
+sort_id->SetCollapsed(t);
+}
+
+
+
+/* */
+/* implementation of class Exit_Entry methods */
+/* */
+
+Exit_Entry::Exit_Entry()
+{
+type = EXITENTRY;
+textual = TRUE;
+visible = FALSE;
+selectable = FALSE;
+w = 0; h = 0;
+aligline = 0;
+
+Set_Unparser(new Gl_Exit_Entry(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Exit_Entry::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "ValueExpr" << x << " " << y << "\n";
+ cout << "ValueExpr" << h << " " << w << "\n";
+ cout << "ValueExpr" << visible << " " << collapsed << "\n";
+#endif
+}
+
+void Exit_Entry::SetDimensions(void)
+{ }
+
+void Exit_Entry::SetFather(Tree_Node *f)
+{ father = f; }
+
+
+/* */
+/* implementation of class Exit_Entry_List methods */
+/* */
+
+Exit_Entry_List::Exit_Entry_List(Tree_Node *el, Exit_Entry_List *nxt)
+{
+type = EXITENTRYLIST;
+selectable = FALSE;
+elem = el;
+next = nxt;
+visible = elem->GetVisible();
+
+Set_Unparser(new Gl_Exit_Entry_List(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Exit_Entry_List::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "ExitEntryList" << x << " " << y << "\n";
+ cout << "ExitEntryList" << h << " " << w << "\n";
+ cout << "ExitEntryList" << visible << " " << collapsed << "\n";
+#endif
+if(elem != NULL)
+ {
+ elem->SetPosition(x,y);
+ x1 = x + elem->Get_W() + Tree_Node::inUseFont()->Width(", ");
+ if(next != NULL)
+ next->SetPosition(x1,y);
+ }
+}
+
+void Exit_Entry_List::SetDimensions(void)
+{
+elem->SetDimensions();
+if(next!=NULL)
+ next->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = Tree_Node::inUseFont()->Height();
+ w = (next == NULL || next->next == NULL)? elem->Get_W()
+ : elem->Get_W() + next->Get_W() +
Tree_Node::inUseFont()->Width(", ");
+ }
+aligline = round(h/2.0);
+}
+
+void Exit_Entry_List::SetFather(Tree_Node *f)
+{
+father = f;
+if(elem != NULL)
+ elem->SetFather(this);
+if(next != NULL)
+ next->SetFather(this);
+}
+
+void Exit_Entry_List::SetCollapsed(char t)
+{
+collapsed = t;
+if(elem != NULL)
+ elem->SetCollapsed(t);
+if(next != NULL)
+ next->SetCollapsed(t);
+}
+
+
+
+/* */
+/* implementation of class Sum_Gate methods */
+/* */
+
+Sum_Gate::Sum_Gate(Gate_Decl_List *g_d_l, Tree_Node *b)
+{
+type = SUM_GATE;
+visible = TRUE;
+alignement = VER;
+gate_decl_list = g_d_l;
+bex = b;
+Set_Unparser(new Gl_Sum_Gate(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Sum_Gate::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Sum_Gate" << x << " " << y << "\n";
+ cout << "Sum_Gate" << h << " " << w << "\n";
+#endif
+
+if (textual)
+ {
+ SetTerminalPos();
+ x1 = Xch + Tree_Node::inUseFont()->Width("choice ");
+ y1 = Ych;
+ gate_decl_list->SetPosition(x1, y1);
+ x1 = x + SMALL_BORDER + border;
+ y1 = y - gate_decl_list->Get_H() - VBORDER - border;
+ bex->SetPosition(x1, y1);
+ }
+ else {
+ x1 = x + round((w - gate_decl_list->Get_W() - 2 * LINE_SPACE)/2.0)
+ + BORDER;
+ y1 = y - 2 * VBORDER;
+
+ gate_decl_list->SetPosition(x1, y1);
+
+ yl = y1 - 2 * VBORDER - gate_decl_list->Get_H();
+
+ y1 = yl - BORDER;
+ x1 = x + round((w - bex->Get_W())/2.0);
+ bex->SetPosition(x1,y1);
+ }
+
+}
+
+void Sum_Gate::SetDimensions(void)
+{
+gate_decl_list->SetDimensions();
+bex->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ break;
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = gate_decl_list->Get_H() + bex->Get_H() +
+ Tree_Node::inUseFont()->Height() + 2 * VBORDER;
+ w = Max4(Tree_Node::inUseFont()->Width("(choice ") +
+ gate_decl_list->Get_W() + Tree_Node::inUseFont()->Width(" []"),
+ bex->Get_W() + SMALL_BORDER,
Tree_Node::inUseFont()->Width(")"), 0);
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ }
+ else {
+ w = Max(gate_decl_list->Get_W() + 2 * LINE_SPACE, bex->Get_W());
+ w += 2*BORDER;
+ h = gate_decl_list->Get_H() + bex->Get_H() + 4*VBORDER + 2*BORDER;
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Sum_Gate::SetFather(Tree_Node *f)
+{
+father = f;
+gate_decl_list->SetFather(this);
+bex->SetFather(this);
+}
+
+void Sum_Gate::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+gate_decl_list->SetCollapsed(t);
+bex->SetCollapsed(t);
+}
+
+void Sum_Gate::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+bex->SetTextual(t);
+}
+
+void Sum_Gate::SetTerminalPos()
+
+/* x, y is the position of ( */
+/* Xch, Ych is the position of choice */
+/* xl, yl is the position of [] */
+/* Xclose, Yclose is the position of ) */
+{
+Ych = yl = y;
+
+Xch = x + Tree_Node::inUseFont()->Width("(") + border;
+xl = Xch + Tree_Node::inUseFont()->Width("choice ") + gate_decl_list->Get_W();
+Xclose = x + border;
+Yclose = y - gate_decl_list->Get_H() - bex->Get_H() - 2 * VBORDER - border;
+}
+
+
+
+/* */
+/* implementation of class Gate_Decl methods */
+/* */
+
+Gate_Decl::Gate_Decl(ID_List *g_id_l1, ID_List *g_id_l2)
+{
+type = GATE_DECL;
+textual = TRUE;
+selectable = FALSE;
+gate_id_list1 = g_id_l1;
+gate_id_list2 = g_id_l2;
+
+if(g_id_l1 == NULL)
+ gate_id_list1 = new ID_List(new ID_Place(),NULL);
+if(g_id_l2 == NULL)
+ gate_id_list2 = new ID_List(new ID_Place(), NULL);
+visible = (gate_id_list1->GetVisible() && gate_id_list2->GetVisible());
+
+Set_Unparser(new Gl_Gate_Decl(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Gate_Decl::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Gate_Decl" << x << " " << y << "\n";
+ cout << "Gate_Decl" << h << " " << w << "\n";
+#endif
+if(gate_id_list1 != NULL)
+ {
+ gate_id_list1->SetPosition(x,y);
+ x1 = x + gate_id_list1->Get_W() + Tree_Node::inUseFont()->Width(" in [");
+ if(gate_id_list2 != NULL)
+ gate_id_list2->SetPosition(x1,y);
+ }
+}
+
+void Gate_Decl::SetDimensions(void)
+{
+gate_id_list1->SetDimensions();
+gate_id_list2->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = Tree_Node::inUseFont()->Height();
+ w = (visible)? gate_id_list1->Get_W() +
gate_id_list2->Get_W()
+ + Tree_Node::inUseFont()->Width("in [] ") : 0;
+ }
+aligline = round(h/2.0);
+}
+
+void Gate_Decl::SetFather(Tree_Node *f)
+{
+father = f;
+if(gate_id_list1 != NULL)
+ gate_id_list1->SetFather(this);
+if(gate_id_list2 != NULL)
+ gate_id_list2->SetFather(this);
+}
+
+void Gate_Decl::SetCollapsed(char t)
+{
+collapsed = t;
+if(gate_id_list1 != NULL)
+ gate_id_list1->SetCollapsed(t);
+if(gate_id_list2 != NULL)
+ gate_id_list2->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class Gate_Decl_List methods */
+/* */
+
+Gate_Decl_List::Gate_Decl_List(Gate_Decl *el, Gate_Decl_List *nxt)
+{
+type = GATE_DECL_LIST;
+textual = TRUE;
+selectable = FALSE;
+elem = el;
+next = nxt;
+visible = elem->GetVisible();
+
+Set_Unparser(new Gl_Gate_Decl_List(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Gate_Decl_List::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Gate_Decl_List" << x << " " << y << "\n";
+ cout << "Gate_Decl_List" << h << " " << w << "\n";
+#endif
+if(elem != NULL)
+ {
+ elem->SetPosition(x,y);
+ x1 = x + elem->Get_W() + Tree_Node::inUseFont()->Width(", ");
+ if(next != NULL)
+ next->SetPosition(x1,y);
+ }
+}
+
+void Gate_Decl_List::SetDimensions(void)
+{
+elem->SetDimensions();
+if(next!=NULL)
+ next->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = Tree_Node::inUseFont()->Height();
+ w = (next == NULL || next->next == NULL)? elem->Get_W()
+ : elem->Get_W() + next->Get_W() +
Tree_Node::inUseFont()->Width(", ");
+ }
+aligline = round(h/2.0);
+}
+
+void Gate_Decl_List::SetFather(Tree_Node *f)
+{
+father = f;
+if(elem != NULL)
+ elem->SetFather(this);
+if(next != NULL)
+ next->SetFather(this);
+}
+
+void Gate_Decl_List::SetCollapsed(char t)
+{
+collapsed = t;
+if(elem != NULL)
+ elem->SetCollapsed(t);
+if(next != NULL)
+ next->SetCollapsed(t);
+}
+
+
+
+/* */
+/* implementation of class Par methods */
+/* */
+
+Par::Par(Gate_Decl_List *g_d_l, Tree_Node *op, Tree_Node *b)
+{
+type = PAR;
+visible = TRUE;
+alignement = VER;
+gate_decl_list = g_d_l;
+bex = b;
+oper = op;
+if (textual)
+ oper->SetVisible(TRUE);
+ else {
+ oper->SetVisible(FALSE);
+ if(oper->GetType() == GEN_PARAL)
+ oper->SetVisible(TRUE);
+ }
+
+Set_Unparser(new Gl_Par(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Par::SetPosition(Coord xx, Coord yy)
+{
+Coord x1,y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Par" << x << " " << y << "\n";
+ cout << "Par" << h << " " << w << "\n";
+#endif
+
+if (textual)
+ {
+ x1 = x + Tree_Node::inUseFont()->Width("(par ") + border;
+ gate_decl_list->SetPosition(x1, y - border);
+ x1 = x1 + gate_decl_list->Get_W();
+ oper->SetPosition(x1, y - border);
+ y1 = y - gate_decl_list->Get_H() - VBORDER - border;
+ x1 = x + SMALL_BORDER + border;
+ bex->SetPosition(x1, y1);
+ xl = x + border;
+ yl = y1 - bex->Get_H() - VBORDER;
+ }
+ else {
+ if(oper->GetType() == GEN_PARAL)
+ {
+ x1 = x + SMALL_BORDER;
+ y1 = y - ROUND_CORNER;
+ oper->SetPosition(x1,y1);
+ x1 = x1 + oper->Get_W() + BORDER;
+ y1 = y1 - ROUND_CORNER;
+ gate_decl_list->SetPosition(x1,y1);
+ yl = y1 - gate_decl_list->Get_H() - 2 * ROUND_CORNER;
+ y1 = yl - BORDER;
+ x1 = x + round((w - bex->Get_W())/2.0);
+ bex->SetPosition(x1,y1);
+ }
+ else {
+ x1 = x + round((w - gate_decl_list->Get_W() - 2 *
LINE_SPACE)/2.0) + BORDER;
+ y1 = y - 2 * VBORDER;
+ gate_decl_list->SetPosition(x1, y1);
+ yl = y1 - 2 * VBORDER - gate_decl_list->Get_H();
+ x1 = x + round((w - bex->Get_W())/2.0);
+ y1 = yl - BORDER;
+ bex->SetPosition(x1,y1);
+ }
+ }
+}
+
+void Par::SetDimensions(void)
+{
+bex->SetDimensions();
+oper->SetDimensions();
+gate_decl_list->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ break;
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = gate_decl_list->Get_H() + bex->Get_H() +
Tree_Node::inUseFont()->Height() +
+ 2 * VBORDER;
+ w = Max4(Tree_Node::inUseFont()->Width("(par ") +
gate_decl_list->Get_W() +
+ oper->Get_W(), bex->Get_W(),
+ Tree_Node::inUseFont()->Width(")"), 0);
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ }
+ else {
+ if(oper->GetType() == GEN_PARAL)
+ {
+ w = Max(bex->Get_W(), oper->Get_W() + gate_decl_list->Get_W()
+ + 2 * BORDER + SMALL_BORDER);
+ h = gate_decl_list->Get_H() + bex->Get_H() + 2*BORDER +
+ 4*ROUND_CORNER;
+ }
+ else {
+ w = Max(gate_decl_list->Get_W() + 2 * LINE_SPACE,
bex->Get_W());
+ w += 2*BORDER;
+ h = gate_decl_list->Get_H() + bex->Get_H() + 4*VBORDER +
2*BORDER;
+ }
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Par::SetFather(Tree_Node *f)
+{
+father = f;
+gate_decl_list->SetFather(this);
+bex->SetFather(this);
+oper->SetFather(this);
+}
+
+void Par::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+gate_decl_list->SetCollapsed(t);
+bex->SetCollapsed(t);
+oper->SetCollapsed(t);
+}
+
+
+void Par::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+gate_decl_list->SetTextual(t);
+bex->SetTextual(t);
+oper->SetTextual(t);
+}
+
+/* */
+/* implementation of class Sort_Id_Exit methods */
+/* */
+
+Sort_Id_Exit::Sort_Id_Exit(ID_Place *s)
+{
+type = SORTIDEXIT;
+textual = TRUE;
+selectable = FALSE;
+sort_id = s;
+visible = TRUE;
+
+Set_Unparser(new Gl_Sort_Id_Exit(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Sort_Id_Exit::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Sort_Id_Exit" << x << " " << y << "\n";
+ cout << "Sort_Id_Exit" << h << " " << w << "\n";
+#endif
+x1 = x + Tree_Node::inUseFont()->Width("any ");
+sort_id->SetPosition(x1,y);
+}
+
+void Sort_Id_Exit::SetDimensions(void)
+{
+sort_id->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = Tree_Node::inUseFont()->Height();
+ w = sort_id->Get_W() +
Tree_Node::inUseFont()->Width("any ");
+ }
+aligline = round(h/2.0);
+}
+
+void Sort_Id_Exit::SetFather(Tree_Node *f)
+{
+father = f;
+sort_id->SetFather(this);
+}
+
+void Sort_Id_Exit::SetCollapsed(char t)
+{
+collapsed = t;
+sort_id->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class Equality methods */
+/* */
+
+Equality::Equality()
+{
+type = EQUALITY;
+textual = TRUE;
+selectable = FALSE;
+visible = FALSE;
+express1 = NULL;
+express2 = NULL;
+
+Set_Unparser(new Gl_Equality(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+Equality::Equality(Tree_Node *ex1, Tree_Node *ex2)
+{
+type = EQUALITY;
+textual = TRUE;
+visible = TRUE;
+selectable = FALSE;
+express1 = ex1;
+express2 = ex2;
+
+Set_Unparser(new Gl_Equality(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Equality::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Equality" << x << " " << y << "\n";
+ cout << "Equality" << h << " " << w << "\n";
+#endif
+if(visible)
+ {
+ express1->SetPosition(x, y);
+ x1 = x + express1->Get_W() + Tree_Node::inUseFont()->Width(" = ");
+ express2->SetPosition(x1, y);
+ }
+}
+
+void Equality::SetDimensions(void)
+{
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(visible)
+ {
+ express1->SetDimensions();
+ express2->SetDimensions();
+ h = express1->Get_H();
+ w = express1->Get_W() + express2->Get_W() +
Tree_Node::inUseFont()->Width(" = ");
+ }
+ else { h = 0; w = 0; }
+ }
+aligline = round(h/2.0);
+}
+
+void Equality::SetFather(Tree_Node *f)
+{
+father = f;
+if(visible)
+ {
+ express1->SetFather(this);
+ express2->SetFather(this);
+ }
+}
+
+void Equality::SetCollapsed(char t)
+{
+collapsed = t;
+express1->SetCollapsed(t);
+express2->SetCollapsed(t);
+}
+
+
+
+/* */
+/* implementation of class Guarded methods */
+/* */
+
+
+Guarded::Guarded(Equality *eq, Tree_Node *b)
+{
+type = GUARDED;
+visible = TRUE;
+alignement = VER;
+equality = eq;
+bex = b;
+
+Set_Unparser(new Gl_Guarded(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Guarded::SetPosition(Coord xx, Coord yy)
+{
+Coord x1, y1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Guarded" << x << " " << y << "\n";
+ cout << "Guarded" << h << " " << w << "\n";
+#endif
+if (textual)
+ {
+ x1 = x + Tree_Node::inUseFont()->Width("[") + border;
+ equality->SetPosition(x1, y - border);
+ Xclose = x1 + equality->Get_W(); /*position of ] -> */
+ y1 = y - equality->Get_H() - VBORDER - border;
+ x1 = x + SMALL_BORDER + border;
+ bex->SetPosition(x1, y1);
+ }
+ else {
+ y1 = y - VBORDER;
+ x1 = x + round((w - equality->Get_W())/2.0);
+ equality->SetPosition(x1, y1);
+ y1 = y1 - equality->Get_H() - VBORDER - BORDER;
+ x1 = x + round((w - bex->Get_W())/2.0);
+ bex->SetPosition(x1, y1);
+ }
+}
+
+void Guarded::SetDimensions(void)
+{
+equality->SetDimensions();
+bex->SetDimensions();
+border = 0;
+
+switch(collapsed)
+ {
+ case COLLAPSED_VIS: if(textual)
+ {
+ w = Tree_Node::inUseFont()->Width("<Bex>");
+ h = Tree_Node::inUseFont()->Height();
+ if(!(father->GetTextual()) && (father->GetType() <=
PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 *
VBORDER; }
+ }
+ else {
+ w =
round((Tree_Node::inUseFont()->Width("Bex"))*20.0/9.0);
+ h =
round((Tree_Node::inUseFont()->Width("Bex"))*14.0/9.0);
+ }
+ break;
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED:
+ if(textual)
+ {
+ h = equality->Get_H() + bex->Get_H() + VBORDER;
+
+ w = Max(equality->Get_W() + Tree_Node::inUseFont()->Width("[") +
+ Tree_Node::inUseFont()->Width("] -> "), bex->Get_W());
+ if(!(father->GetTextual()) && (father->GetType() <= PARALLEL))
+ {border = VBORDER; w += 2 * VBORDER; h += 2 * VBORDER; }
+ }
+ else {
+ h = equality->Get_H() + bex->Get_H() + 2 * VBORDER + 2 * BORDER;
+ w = Max(equality->Get_W(), bex->Get_W() + 2 * BORDER);
+ w += 2 * BORDER;
+ }
+ }
+aligline = round(h/2.0);
+}
+
+void Guarded::SetFather(Tree_Node *f)
+{
+father = f;
+equality->SetFather(this);
+bex->SetFather(this);
+}
+
+void Guarded::SetCollapsed(char t)
+{
+collapsed = t;
+if(t)
+ t = COLLAPSED_INV;
+equality->SetCollapsed(t);
+bex->SetCollapsed(t);
+}
+
+
+void Guarded::SetTextual(char t, char s)
+{
+textual = t;
+selectable = (!t | s);
+bex->SetTextual(t);
+}
+
+/* */
+/* implementation of class Exper_Off methods */
+/* */
+
+Exper_Off::Exper_Off()
+{
+type = EXPER_OFF;
+textual = TRUE;
+visible = FALSE;
+selectable = FALSE;
+w = 0; h = 0;
+aligline = 0;
+
+Set_Unparser(new Gl_Exper_Off(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Exper_Off::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "ExperOffer" << x << " " << y << "\n";
+ cout << "ExperOffer" << h << " " << w << "\n";
+#endif
+}
+
+void Exper_Off::SetDimensions(void)
+{ }
+
+void Exper_Off::SetFather(Tree_Node *f)
+{ father = f; }
+
+
+/* */
+/* implementation of class Exper_Off_List methods */
+/* */
+
+Exper_Off_List::Exper_Off_List(Exper_Off *el, Exper_Off_List *nxt)
+{
+type = EXPER_OFF_L;
+textual = TRUE;
+selectable = FALSE;
+elem = el;
+next = nxt;
+visible = elem->GetVisible();
+
+Set_Unparser(new Gl_Exper_Off_List(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+}
+
+void Exper_Off_List::SetPosition(Coord xx, Coord yy)
+{
+Coord x1;
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Exper_Off_List" << x << " " << y << "\n";
+ cout << "Exper_Off_List" << h << " " << w << "\n";
+#endif
+if(elem != NULL)
+ {
+ elem->SetPosition(x,y);
+ x1 = x + elem->Get_W() + Tree_Node::inUseFont()->Width(", ");
+ if(next != NULL)
+ next->SetPosition(x1,y);
+ }
+}
+
+void Exper_Off_List::SetDimensions(void)
+{
+elem->SetDimensions();
+if(next!=NULL)
+ next->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = Tree_Node::inUseFont()->Height();
+ w = (next == NULL || next->next == NULL)? elem->Get_W()
+ : elem->Get_W() + next->Get_W() +
Tree_Node::inUseFont()->Width(", ");
+ }
+aligline = round(h/2.0);
+}
+
+void Exper_Off_List::SetFather(Tree_Node *f)
+{
+father = f;
+if(elem != NULL)
+ elem->SetFather(this);
+if(next != NULL)
+ next->SetFather(this);
+}
+
+void Exper_Off_List::SetCollapsed(char t)
+{
+collapsed = t;
+if(elem != NULL)
+ elem->SetCollapsed(t);
+if(next != NULL)
+ next->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class Exclam methods */
+/* */
+
+
+Exclam::Exclam(Tree_Node *v_e)
+{
+type = EXCLAM;
+textual = TRUE;
+selectable = FALSE;
+value_exp = v_e;
+visible = TRUE;
+
+Set_Unparser(new Gl_Exclam(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+
+}
+
+void Exclam::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Exclam" << x << " " << y << "\n";
+ cout << "Exclam" << h << " " << w << "\n";
+#endif
+
+value_exp->SetPosition(x + Tree_Node::inUseFont()->Width("!"),y);
+}
+
+void Exclam::SetDimensions(void)
+{
+value_exp->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = value_exp->Get_H();
+ w = value_exp->Get_W() +
Tree_Node::inUseFont()->Width("!");
+ }
+aligline = round(h/2.0);
+}
+
+void Exclam::SetFather(Tree_Node *f)
+{
+father = f;
+value_exp->SetFather(this);
+}
+
+void Exclam::SetCollapsed(char t)
+{
+collapsed = t;
+value_exp->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class Query methods */
+/* */
+
+
+Query::Query(Id_Decl *i_d)
+{
+type = QUERY;
+textual = TRUE;
+selectable = FALSE;
+id_decl = i_d;
+visible = TRUE;
+
+Set_Unparser(new Gl_Query(this));
+((glow->Get_Folder())->Current())->Add(Get_Unparser());
+
+}
+
+void Query::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Query" << x << " " << y << "\n";
+ cout << "Query" << h << " " << w << "\n";
+#endif
+
+id_decl->SetPosition(x + Tree_Node::inUseFont()->Width("?"),y );
+}
+
+void Query::SetDimensions(void)
+{
+id_decl->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = id_decl->Get_H();
+ w = id_decl->Get_W() +
Tree_Node::inUseFont()->Width("?");
+ }
+aligline = round(h/2.0);
+}
+
+void Query::SetFather(Tree_Node *f)
+{
+father = f;
+id_decl->SetFather(this);
+}
+
+void Query::SetCollapsed(char t)
+{
+collapsed = t;
+id_decl->SetCollapsed(t);
+}
+
+
+/* */
+/* implementation of class Definition */
+/* */
+
+Definition::Definition(Tree_Node *b, Proc_List *p, Data_List *d)
+{
+selectable = FALSE;
+bex = b;
+process_list = p;
+data_list = d;
+
+type = DEFINITION;
+visible = TRUE;
+
+}
+
+void Definition::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "Definition" << x << " " << y << "\n";
+ cout << "Definition" << h << " " << w << "\n";
+#endif
+bex->SetPosition(x, y);
+}
+
+void Definition::SetDimensions(void)
+{
+bex->SetDimensions();
+switch(collapsed)
+ {
+ case COLLAPSED_VIS:
+ case COLLAPSED_INV: w = 0; h = 0;
+ break;
+ case NOCOLLAPSED: h = bex->Get_H();
+ w = bex->Get_W();
+ }
+aligline = round(h/2.0);
+}
+
+void Definition::SetFather(Tree_Node *f)
+{
+father = f;
+bex->SetFather(this);
+if(process_list != NULL)
+ process_list->SetFather(this);
+if(data_list != NULL)
+ data_list->SetFather(this);
+}
+
+
+void Definition::SetPath(char *p, char n, int& np, int& nd)
+{
+strcpy(path,p);
+if(process_list != NULL)
+ process_list->SetPath(path, n, np, nd);
+if(data_list != NULL)
+ data_list->SetPath(path, n, np, nd);
+}
+
+/* */
+/* implementation of class Proc_List methods */
+/* */
+
+Proc_List::Proc_List(Process *el, Proc_List *nxt)
+{
+type = PROCLIST;
+selectable = FALSE;
+elem = el;
+next = nxt;
+visible = TRUE;
+}
+
+void Proc_List::SetPosition(Coord xx, Coord yy)
+{
+x = xx;
+y = yy;
+#ifdef DEBUG
+ cout << "ProcList" << x << " " << y << "\n";
+ cout << "ProcList" << h << " " << w << "\n";
+#endif
+}
+
+void Proc_List::SetDimensions(void)
+{
+h = 0; w = 0;
+aligline = round(h/2.0);
+}
+
+void Proc_List::SetFather(Tree_Node *f)
+{
+father = f;
+if(elem != NULL)
+ elem->SetFather(this);
+if(next != NULL)
+ next->SetFather(this);
+}
+
+void Proc_List::SetPath(char *p, char n, int& np, int& nd)
+{
+if(elem != NULL)
+ elem->SetPath(p, n, np, nd);
+if(next != NULL)
+ next->SetPath(p, n, np, nd);
+}
+
+char *Proc_List::GetPath()
+{
+if(father->GetType() == PROCLIST)
+ return(((Proc_List *)father)->GetPath());
+
+if(father->GetType() == DEFINITION)
+ return(((Definition *)father)->GetPath());
+ else return(" ");
+}
diff --git a/test/etags/cp-src/abstract.H b/test/etags/cp-src/abstract.H
new file mode 100644
index 0000000..05d71cb
--- /dev/null
+++ b/test/etags/cp-src/abstract.H
@@ -0,0 +1,993 @@
+/*****************************************************************************
+
+ Copyright (c) 1992 Consorzio Pisa Ricerche.
+ Authors: Caneve Maurizio, Salvatori Elena
+
+ This software was produced under the ESPRIT/LOTOSPHERE
+ project. All rights reserved.
+
+*****************************************************************************/
+
+/* */
+/* @(#)abstract.h 4.31 2/1/93 */
+/* */
+
+#ifndef abstract_hh
+#define abstract_hh
+
+#include <tree.h>
+#include <adatat.h>
+
+class SignatureSorts;
+
+class ID_Place: public Tree_Node
+{
+ char *str;
+ char RBubble;
+
+friend class Gl_Identifier;
+
+public:
+ ID_Place();
+ void SetIdent(char *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetVisible(char);
+ void SetFather(Tree_Node *);
+ void ClearID(void);
+ virtual ~ID_Place();
+
+/* inline functions */
+ char *GetIdent() {return(str);};
+ void SetRBubble(char r) { RBubble = r; };
+ char GetRBubble(void) { return(RBubble); };
+}; /* end of class ID_Place */
+
+
+class ID_List: public Tree_Node
+{
+ ID_Place *elem;
+ ID_List *next;
+
+friend class Gl_Id_List;
+friend class Oper;
+
+public:
+
+ ID_List(ID_Place *, ID_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ ID_Place *GetElem();
+ void HideMe(void);
+ void SetCollapsed(char);
+ void SetRBubble(char);
+ void BuildSigSorts(char, SignatureSorts **, char, Oper *);
+ void SetVisible(char);
+ void SetAlignement(char);
+ void ClearIDs(void);
+ int GetCardinality(int);
+}; /* end of class ID_List */
+
+
+class Id_Decl: public Tree_Node
+{
+ ID_List *id_list;
+ ID_Place *sort_id;
+
+friend class Gl_Id_Decl;
+
+public:
+ Id_Decl(ID_List *, ID_Place *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Id_Decl */
+
+
+class Id_Decl_List: public Tree_Node
+{
+ Id_Decl *elem;
+ Id_Decl_List *next;
+
+friend class Gl_Id_Decl_List;
+
+public:
+ Id_Decl_List(Id_Decl *, Id_Decl_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Id_Decl_List */
+
+
+class Comment: public Tree_Node
+{
+ char *comm;
+
+friend class Gl_Comment;
+
+public:
+ Comment();
+ Comment(Tree_Node*, Coord , Coord);
+ void SetComment(char *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ virtual ~Comment();
+}; /* end of class Comment */
+
+
+class Comment_List: public Tree_Node
+{
+ Comment *elem;
+ Comment_List *next;
+
+public:
+ Comment_List(Comment *, Comment_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+}; /* end of class Comment_List */
+
+
+class Value_Expr: public Tree_Node
+{
+
+friend class Gl_Value_Expr;
+
+public:
+ Value_Expr();
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+
+}; /* end of class Value_Expr */
+
+
+class Value_Expr_List: public Tree_Node
+{
+ Tree_Node *elem;
+ Value_Expr_List *next;
+
+friend class Gl_Value_Expr_List;
+
+public:
+ Value_Expr_List(Tree_Node *, Value_Expr_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Value_Expr_List */
+
+
+class Exit_Entry: public Tree_Node
+{
+
+friend class Gl_Exit_Entry;
+
+public:
+ Exit_Entry();
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+
+}; /* end of class Exit_Entry */
+
+
+class Exit_Entry_List: public Tree_Node
+{
+ Tree_Node *elem;
+ Exit_Entry_List *next;
+
+friend class Gl_Exit_Entry_List;
+
+public:
+ Exit_Entry_List(Tree_Node *, Exit_Entry_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Exit_Entry_List */
+
+
+class Exper_Off: public Tree_Node
+{
+
+public:
+ Exper_Off();
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+
+}; /* end of class Exper_Off */
+
+
+class Exper_Off_List: public Tree_Node
+{
+ Exper_Off *elem;
+ Exper_Off_List *next;
+
+friend class Gl_Exper_Off_List;
+
+public:
+ Exper_Off_List(Exper_Off *, Exper_Off_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Exper_Off_List */
+
+
+class Gate_Decl: public Tree_Node
+{
+ ID_List *gate_id_list1;
+ ID_List *gate_id_list2;
+
+friend class Gl_Gate_Decl;
+
+public:
+ Gate_Decl(ID_List *, ID_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Gate_Decl */
+
+
+class Gate_Decl_List: public Tree_Node
+{
+ Gate_Decl *elem;
+ Gate_Decl_List *next;
+
+friend class Gl_Gate_Decl_List;
+
+public:
+ Gate_Decl_List(Gate_Decl *, Gate_Decl_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Gate_Decl_List */
+
+
+class Ident_Eq: public Tree_Node
+{
+ Id_Decl *iddecl;
+ Value_Expr *expr;
+
+friend class Gl_Ident_Eq;
+
+public:
+ Ident_Eq(Id_Decl *, Value_Expr *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Ident_Eq */
+
+
+class Ident_Eq_List: public Tree_Node
+{
+ Ident_Eq *elem;
+ Ident_Eq_List *next;
+
+friend class Gl_Ident_Eq_List;
+
+public:
+ Ident_Eq_List(Ident_Eq *, Ident_Eq_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Ident_Eq_List */
+
+
+class Half_Container: public Tree_Node
+{
+ ID_List *gate_list;
+
+friend class Gl_Half_Container;
+
+public:
+ Half_Container(ID_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Half_Container */
+
+
+
+/* */
+/* Process Definitions */
+/* */
+
+
+class Specification: public Tree_Node
+{
+class Definition;
+
+ Comment_List *com_list;
+ ID_Place *ident;
+ ID_List *gate_list;
+ Id_Decl_List *id_decl_list;
+ Comment_List *com_list1;
+ Tree_Node *func;
+ Data_List *dt_list;
+ Definition *def;
+ Coord yl1,yl2,yl3;
+ Coord MaxX, MaxY;
+
+friend class Gl_Specification;
+
+public:
+ Specification(Comment_List *, ID_Place *, ID_List *, Id_Decl_List *,
+ Comment_List *, Definition *, Tree_Node *, Data_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetPath(int&, int&);
+ Coord GetMaxX();
+ Coord GetMaxY();
+}; /* end of class Specification */
+
+
+class Process: public Tree_Node
+{
+ Comment_List *com_list;
+ ID_Place *ident;
+ ID_List *gate_list;
+ Id_Decl_List *id_decl_list;
+ Definition *def;
+ Tree_Node *func;
+ char nesting;
+ Coord yl1,yl2,yl3,ypath;
+ Coord MaxX, MaxY;
+
+friend class Gl_Process;
+
+public:
+ Process(Comment_List *, ID_Place *, ID_List *,Id_Decl_List *, Definition *,
Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetPath(char *, char, int&, int&);
+ void NewBex(Tree_Node *);
+
+ Coord GetMaxY();
+ Coord GetMaxX();
+
+/* inline functions */
+ char GetNesting() {return(nesting);};
+}; /* end of class Process */
+
+
+class Proc_List: public Tree_Node
+{
+ Process *elem;
+ Proc_List *next;
+
+public:
+ Proc_List(Process *, Proc_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetPath(char *, char, int&, int&);
+ char *GetPath();
+}; /* end of class Proc_List */
+
+
+class Definition: public Tree_Node
+{
+ Tree_Node *bex;
+ Proc_List *process_list;
+ Data_List *data_list;
+ char path[PATH_LENGHT];
+
+public:
+ Definition(Tree_Node *, Proc_List *, Data_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetPath(char *, char, int&, int&);
+
+/* inline functions */
+ char *GetPath() { return(path);};
+}; /* end of class Definition */
+
+
+
+/* */
+/* Functionalities */
+/* */
+
+
+class Exit: public Tree_Node
+{
+ ID_List *sort_list;
+
+friend class Gl_Exit;
+
+public:
+ Exit(ID_List *);
+ void SetPosition(Coord, Coord, Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+}; /*end of class Exit */
+
+
+class NoExit: public Tree_Node
+{
+
+friend class Gl_NoExit;
+
+public:
+ NoExit();
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+}; /*end of class NoExit */
+
+
+
+/* */
+/* Value Expressions */
+/* */
+
+
+class Value: public Tree_Node
+{
+ ID_Place *ident;
+ ID_Place *sort_id;
+
+friend class Gl_Value;
+
+public:
+ Value(ID_Place *, ID_Place *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Value */
+
+
+class Term: public Tree_Node
+{
+ ID_Place *op_ident;
+ Value_Expr_List *expr_list;
+ ID_Place *sort_id;
+
+friend class Gl_Term;
+
+public:
+ Term(ID_Place *, Value_Expr_List *, ID_Place *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Term */
+
+
+class Equality: public Tree_Node
+{
+ Tree_Node *express1;
+ Tree_Node *express2;
+
+friend class Gl_Equality;
+
+public:
+ Equality();
+ Equality(Tree_Node *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Equality */
+
+
+class Sort_Id_Exit: public Tree_Node
+{
+ ID_Place *sort_id;
+
+friend class Gl_Sort_Id_Exit;
+
+public:
+ Sort_Id_Exit(ID_Place *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Sort_id_Exit */
+
+
+
+/* */
+/* Guard Options */
+/* */
+
+
+class NoGuard: public Tree_Node
+{
+
+friend class Gl_NoGuard;
+
+public:
+ NoGuard();
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+}; /* end of class NoGuard */
+
+
+class Guard: public Tree_Node
+{
+ Equality *equality;
+
+friend class Gl_Guard;
+
+public:
+ Guard(Equality *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Guard */
+
+
+
+/* */
+/* Experiment Offers */
+/* */
+
+
+class NoExperiment: public Tree_Node
+{
+
+friend class Gl_NoExperiment;
+
+public:
+ NoExperiment();
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+}; /* end of class NoExperiment */
+
+
+class Experiment: public Tree_Node
+{
+ Exper_Off_List *exp_offer_list;
+ Tree_Node *guard_option;
+
+friend class Gl_Experiment;
+
+public:
+ Experiment(Exper_Off_List *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetCollapsed(char);
+
+/* inline functions */
+ Tree_Node *GetGuard(void) { return(guard_option); };
+}; /* end of class Experiment */
+
+
+class Exclam: public Tree_Node
+{
+ Tree_Node *value_exp;
+
+friend class Gl_Exclam;
+
+public:
+ Exclam(Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Exclam */
+
+
+class Query: public Tree_Node
+{
+ Id_Decl *id_decl;
+
+friend class Gl_Query;
+
+public:
+ Query(Id_Decl *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+}; /* end of class Query */
+
+
+
+/* */
+/* Action Denotations */
+/* */
+
+
+class Internal: public Tree_Node
+{
+
+friend class Gl_Internal;
+
+public:
+ Internal();
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+}; /* end of class Internal */
+
+
+class Communication: public Tree_Node
+{
+ ID_Place *gate_identifier;
+ Tree_Node *experiment_option;
+ Coord xl, yl;
+ int hr;
+
+friend class Gl_Communication;
+
+public:
+ Communication(ID_Place *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetCollapsed(char);
+}; /* end of class Communication */
+
+
+
+/* */
+/* Parallel Operators */
+/* */
+
+
+class Gen_Paral: public Tree_Node
+{
+ ID_List *gate_id_list;
+ Coord Xclose;
+ char border;
+
+friend class Gl_Gen_Paral;
+
+public:
+ Gen_Paral(ID_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetCollapsed(char);
+
+/* inline functions */
+ void HideGate() { ((ID_List *)gate_id_list)->HideMe(); };
+}; /* end of class Gen_Paral */
+
+
+class Interl: public Tree_Node
+{
+
+friend class Gl_Interl;
+
+public:
+ Interl();
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+}; /* end of class Interl */
+
+
+class Syncr: public Tree_Node
+{
+
+friend class Gl_Syncr;
+
+public:
+ Syncr();
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+}; /* end of class Syncr */
+
+
+
+/* */
+/* Bejhviour Expressions */
+/* */
+
+
+class Action_Pref: public Tree_Node
+{
+ Tree_Node *action_den;
+ Tree_Node *bex;
+ char havebox;
+ char border;
+
+friend class Gl_Action_Pref;
+
+public:
+ Action_Pref(Tree_Node *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetCollapsed(char);
+}; /* end of class Action_Pref */
+
+
+class Enable: public Tree_Node
+{
+ Tree_Node *bex1, *bex2;
+ ID_List *gate_id_list;
+ Coord xl, yl1, xl2, yl2, xid, yid, Yclose;
+ char havebox;
+ char border;
+
+friend class Gl_Enable;
+
+public:
+ Enable(Tree_Node *, ID_List *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ int Get_Textual_H(void);
+ int Get_Textual_W(void);
+ void SetTerminalPos(void);
+ void SetCollapsed(char);
+}; /* end of class Enable */
+
+
+class Disable: public Tree_Node
+{
+ Tree_Node *bex1, *bex2;
+ Coord xl, yl, yl2;
+ char havebox;
+ char border;
+
+friend class Gl_Disable;
+
+public:
+ Disable(Tree_Node *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ int Get_Textual_H(void);
+ int Get_Textual_W(void);
+ void SetTerminalPos(void);
+ void SetCollapsed(char);
+}; /* end of class Disable */
+
+
+class Choice: public Tree_Node
+{
+ Tree_Node *bex1, *bex2;
+ Coord xl, yl, yl1;
+ char havebox;
+ int delta;
+ char border;
+
+friend class Gl_Choice;
+
+public:
+ Choice(Tree_Node *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetCollapsed(char);
+ int Get_Textual_H(void);
+ int Get_Textual_W(void);
+ void SetTerminalPos(void);
+ void ChangeH(int);
+ void ChangeW(int);
+}; /* end of class Choice */
+
+
+class Stop: public Tree_Node
+{
+ char havebox;
+ char border;
+
+friend class Gl_Stop;
+
+public:
+ Stop();
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetCollapsed(char);
+}; /* end of class Stop */
+
+
+class Exit_Bex: public Tree_Node
+{
+ Exit_Entry_List *entry_list;
+ Coord Xopen, Xclose;
+ char havebox;
+ char border;
+
+friend class Gl_Exit_Bex;
+
+public:
+ Exit_Bex(Exit_Entry_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetCollapsed(char);
+}; /*end of class Exit_Bex */
+
+
+class Hide: public Tree_Node
+{
+ ID_List *gate_list;
+ Tree_Node *bex;
+ char border;
+ Coord yl;
+
+friend class Gl_Hide;
+
+public:
+ Hide(ID_List *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetCollapsed(char);
+}; /* end of class Hide */
+
+
+class Guarded: public Tree_Node
+{
+ Equality *equality;
+ Tree_Node *bex;
+ Coord Xclose;
+ char border;
+
+friend class Gl_Guarded;
+
+public:
+ Guarded(Equality *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetCollapsed(char);
+}; /* end of class Guarded */
+
+
+class Proc_Inst: public Tree_Node
+{
+ ID_List *gate_list;
+ ID_Place *ident;
+ Value_Expr_List *value_expr_list;
+ Coord yp, yl1, Xopen, Xclose;
+ int hp;
+ char border;
+
+friend class Gl_Proc_Inst;
+
+public:
+ Proc_Inst(ID_Place *, ID_List *, Value_Expr_List *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetCollapsed(char);
+}; /* end of class Proc_inst */
+
+
+class Parallel: public Tree_Node
+{
+ Tree_Node *bex1, *bex2, *oper;
+ Coord xl, yl, yl1;
+ char havebox;
+ int delta;
+ char border;
+
+friend class Gl_Parallel;
+
+public:
+ Parallel(Tree_Node *, Tree_Node *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ int Get_Textual_W(void);
+ int Get_Textual_H(void);
+ void SetTerminalPos(void);
+ void SetCollapsed(char);
+
+/* inline functions */
+ char GetOperType(void) { return(oper->GetType());};
+}; /* end of class Parallel */
+
+
+class Local_Def: public Tree_Node
+{
+ Ident_Eq_List *equa_list;
+ Tree_Node *bex;
+ Coord yl;
+ char border;
+
+friend class Gl_Local_Def;
+
+public:
+ Local_Def(Ident_Eq_List *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetCollapsed(char);
+}; /* end of class Local_Def */
+
+
+class Par: public Tree_Node
+{
+ Gate_Decl_List *gate_decl_list;
+ Tree_Node *oper, *bex;
+ Coord xl, yl;
+ char border;
+
+friend class Gl_Par;
+
+public:
+ Par(Gate_Decl_List *, Tree_Node *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetCollapsed(char);
+}; /* end of class Par */
+
+
+class Sum_Gate: public Tree_Node
+{
+ Gate_Decl_List *gate_decl_list;
+ Tree_Node *bex;
+ Coord xl, yl, Xch, Ych, Xclose, Yclose;
+ char border;
+
+friend class Gl_Sum_Gate;
+
+public:
+ Sum_Gate(Gate_Decl_List *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetTerminalPos(void);
+ void SetCollapsed(char);
+}; /* end of class Sum_Gate */
+
+
+class Sum_Ident: public Tree_Node
+{
+ Id_Decl_List *ident_decl_list;
+ Tree_Node *bex;
+ Coord xl, yl, Xch, Ych, Xclose, Yclose;
+ char border;
+
+friend class Gl_Sum_Ident;
+
+public:
+ Sum_Ident(Id_Decl_List *, Tree_Node *);
+ void SetPosition(Coord, Coord);
+ void SetDimensions(void);
+ void SetFather(Tree_Node *);
+ void SetTextual(char, char = FALSE);
+ void SetTerminalPos(void);
+ void SetCollapsed(char);
+}; /* end of class Sum_Ident */
+
+
+
+#endif
diff --git a/test/etags/cp-src/burton.cpp b/test/etags/cp-src/burton.cpp
new file mode 100644
index 0000000..d86ad75
--- /dev/null
+++ b/test/etags/cp-src/burton.cpp
@@ -0,0 +1,14 @@
+::dummy::dummy test::dummy1(void)
+{
+ return ::dummy::dummy;
+}
+
+::dummy::dummy test::dummy2(::CORBA::Long dummy)
+{
+ return ::dummy::dummy;
+}
+
+::dummy::dummy test::dummy3(char* name, ::CORBA::Long dummy)
+{
+ return ::dummy::dummy;
+}
diff --git a/test/etags/cp-src/c.C b/test/etags/cp-src/c.C
new file mode 100644
index 0000000..2c5f7e0
--- /dev/null
+++ b/test/etags/cp-src/c.C
@@ -0,0 +1,156 @@
+template <typename ipc3dIslandHierarchy, typename ipc3dChannelType, unsigned
numOfChannels, typename ipc3dLinkControl, typename ipc3dLinkControlSetup>
+class CMultiChannelCSC19_3D
+{
+private:
+ ipc3dLinkControlSetup setup;
+
ipc3dCSC19<ipc3dIslandHierarchy,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipcMultiChannel<ipc3dChannelType,numOfChannels>,ipc3dLinkControl>
mcCSC;
+ advTimer cscInitTime;
+ advTimer cscSegmentationTime;
+ advTimer outputTime;
+public:
+ void execute(CPluginCSCState& p, int w, int h, int d, const
ipcMultiChannel<ipc3dChannelType,numOfChannels>* orgImage,
ipcMultiChannel<ipc3dChannelType,numOfChannels>* regionImage, unsigned int*
mapImage, ipc3dBlockCompressedLabelImage* compressedMapImage=NULL)
+ {
+ if (orgImage!=NULL)
+ {
+ //do something
+ }
+ }
+
+class foo {
+ int const_func() const;
+ int b;
+ int non_const_func2(void);
+};
+static void my_function1(int var1) const;
+int main (void) { my_function0(0); my_function1(1); return; }
+double base (void) const { return rng_base; }
+
+template <typename T> MDiagArray2<T>&
+operator += (MDiagArray2<T>& a, const MDiagArray2<T>& b);
+
+class TestRecord;
+typedef struct s1 {
+ int counter;
+} t1;
+struct s2 {
+ int counter;
+};
+typedef struct s2 t2;
+class A {
+ enum { rosso, giallo, verde } colori;
+ const A& operator+(const A&);
+};
+const A& A::operator+(const A&) { }
+void operator+(int, int) {}
+void operator -(int, int) {}
+void operator int(int, int) {}
+
+A<int>* f() {}
+int f(A<int> x) {}
+int A<int>::f(A<int>* x) {}
+A<float,B<int> > A<B<float>,int>::f(A<int>* x) {}
+template <class C, int n> class AT { C t[n]; };
+class AU { T x; };
+class B<int> { void f() {} };
+const A::B::T& abt = abc;
+class A { class B { int f(); }; };
+class A {
+ int get_data() const;
+ A operator+(A& a) {};
+};
+is_muldiv_operation(pc)
+{
+}
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+domain foo {
+ void f() {}
+};
+
+void A::A() {}
+struct A { A(); }
+struct B { B(); };
+void B::B() {}
+void BE_Node::BE_Node() {}
+class BE_Node {};
+
+struct foo {
+ int x;
+};
+
+#ifdef __cplusplus
+}
+#endif
+class test {
+ int f(){return 0;}; // first comment
+ // second comment
+ int ff(){return 1;};
+ int g(){return 2;};
+}
+class AST_Root : public virtual AST_Module
+{
+};
+
+class AST_Root; // The root of an AST 112,3888
+// etags finds
+
+AST_ConcreteType::AST_ConcreteType(AST_Decl::NodeType nt, UTL_ScopedName *n,
+ UTL_StrList *p)
+ : AST_Decl(nt, n, p)
+{
+}
+
+// and
+
+AST_Array::AST_Array(UTL_ScopedName *n, unsigned long nd, UTL_ExprList *ds)
+ : pd_n_dims(nd), pd_base_type(NULL),
+ AST_Decl(AST_Decl::NT_array, n, NULL)
+{
+}
+
+// as definitions of AST_Decl.
+class {
+ void f() {}
+};
+struct A {
+ ~A();
+};
+A::~A() {}
+
+struct B {
+ ~B() {};
+};
+
+enum {dog, cat} animals;
+struct {int teats;} cow;
+
+class Boo {
+ enum {dog, cat} animals;
+ struct {int treats;} cow;
+ int i,a,b;
+ foo() {
+ cout << "hi";
+ }
+
+ Boo(int _i, int _a, int _b) : i(_i), a(_a), b(_b) {}
+ Boo(Boo);
+};
+
+Boo::Boo(Boo) :
+ i(i),
+ a(a),
+ b(b)
+{}
+
+/* extern "C" grot: */
+extern "C" {
+typedef int should_see_this_one_enclosed_in_extern_C;
+}
+
+/* Typedefs: */
+typedef int (*should_see_this_function_pointer) (
+ void *but_not_this_argument);
+
+typedef int should_see_this_array_type[but_not_this_subscript];
diff --git a/test/etags/cp-src/cfront.H b/test/etags/cp-src/cfront.H
new file mode 100644
index 0000000..2d79186
--- /dev/null
+++ b/test/etags/cp-src/cfront.H
@@ -0,0 +1,836 @@
+/*ident "@(#)cfront:src/cfront.h 1.13" */
+/***********************************************************************
+
+ C++ source for cfront, the C++ compiler front-end
+ written in the computer science research center of Bell Labs
+
+ Copyright (c) 1984 AT&T, Inc. All Rights Reserved
+ THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T, INC.
+
+ When reading cfront code please remember that C++ was not available
+ when it was originally written. Out of necessity cfront is written
+ in a style that takes advantage of only few of C++'s features.
+
+cfront.h:
+
+ Here is all the class definitions for cfront, and most of the externs
+
+***********************************************************************/
+
+/* WARNING:
+ This program relies on non-initialized class members being ZERO.
+ This will be true as long as they are allocated using the "new" operator
+*/
+
+#include "token.h"
+#include "typedef.h"
+
+extern bit old_fct_accepted; /* if set:
+ old style function definitions are
legal,
+ implicit declarations are legal
+ */
+extern bit fct_void; /* if set:
+ int f(); ... f(1); gives a warning per
file
+ undeclared(); gives a warning per file
+ if not:
+ int f(); ... f(1); is an error
+ undeclared(); is an error
(currently only a warning)
+
+ */
+
+#ifndef GRAM
+extern char* prog_name; // compiler name and version
+extern int inline_restr; // inline expansion restrictions
+extern bit emode; // print_mode error
+#endif
+
+extern Pname name_free; // free lists
+extern Pexpr expr_free;
+extern Pstmt stmt_free;
+
+ /* "spy" counters: */
+extern int Nspy;
+extern int Nfile, Nline, Ntoken, Nname, Nfree_store, Nalloc, Nfree;
+extern int Nn, Nbt, Nt, Ne, Ns, Nstr, Nc, Nl;
+extern int NFn, NFtn, NFpv, NFbt, NFf, NFs, NFc, NFe, NFl;
+
+extern TOK lex();
+extern Pname syn();
+
+extern void init_print(); // stage initializers
+extern void init_lex();
+extern void int_syn();
+extern void ext(int);
+
+extern char* make_name(TOK);
+
+struct loc // a source file location
+{
+ short file; // index into file_name[], or zero
+ short line;
+#ifndef GRAM
+ void put(FILE*);
+ void putline();
+#endif
+};
+
+extern Loc curloc;
+extern int curr_file;
+
+struct ea { // fudge portable printf-like formatting for error()
+ union {
+ void* p;
+ int i;
+ };
+
+ ea(void* pp) { p = pp; }
+ ea(int ii) { i = ii; }
+ ea() {}
+ ea(int i) { x; }
+};
+
+extern ea* ea0;
+
+overload error;
+int error(const char*, ea& = *ea0, ea& = *ea0, ea& = *ea0, ea& = *ea0);
+int error(loc*, const char*, ea& = *ea0, ea& = *ea0, ea& = *ea0, ea& = *ea0);
+int error(int, const char*, ea& = *ea0, ea& = *ea0, ea& = *ea0, ea& = *ea0);
+int error(int, loc*, const char*, ea& = *ea0, ea& = *ea0, ea& = *ea0, ea& =
*ea0);
+
+#ifndef GRAM
+extern int error_count;
+extern bit debug;
+extern int vtbl_opt;
+extern FILE* out_file;
+extern FILE* in_file;
+extern char scan_started;
+extern bit warn;
+#endif
+
+extern int br_level;
+extern int bl_level;
+extern Ptable ktbl; // keywords and typedef names
+extern Ptable gtbl; // global names
+extern char* oper_name(TOK);
+extern Pclass ccl;
+extern Pbase defa_type;
+extern Pbase moe_type;
+
+#ifndef GRAM
+extern Pstmt Cstmt; // current statement, or 0
+extern Pname Cdcl; // name currently being declared, or 0
+extern void put_dcl_context();
+
+extern Ptable any_tbl; // table of undefined struct members
+extern Pbase any_type;
+#endif
+
+extern Pbase int_type;
+extern Pbase char_type;
+extern Pbase short_type;
+extern Pbase long_type;
+extern Pbase uint_type;
+extern Pbase float_type;
+extern Pbase double_type;
+extern Pbase void_type;
+
+#ifndef GRAM
+extern Pbase uchar_type;
+extern Pbase ushort_type;
+extern Pbase ulong_type;
+extern Ptype Pchar_type;
+extern Ptype Pint_type;
+extern Ptype Pfctvec_type;
+extern Ptype Pfctchar_type;
+extern Ptype Pvoid_type;
+extern Pbase zero_type;
+
+extern int byte_offset;
+extern int bit_offset;
+extern int max_align;
+extern int stack_size;
+extern int enum_count;
+extern int const_save;
+#endif
+
+extern Pexpr dummy; /* the empty expression */
+extern Pexpr zero;
+extern Pexpr one;
+extern Pname sta_name; /* qualifier for unary :: */
+
+#define DEL(p) if (p && (p->permanent==0)) p->del()
+#define PERM(p) p->permanent=1
+#define UNPERM(p) p->permanent=0
+
+struct node {
+ TOK base;
+ TOK n_key; /* for names in table: class */
+ bit permanent;
+};
+
+#ifndef GRAM
+extern Pclass Ebase, Epriv; /* lookc return values */
+#endif
+
+struct table : node {
+/* a table is a node only to give it a "base" for debugging */
+ char init_stat; /* ==0 if block(s) of table not simplified,
+ ==1 if simplified but had no initializers,
+ ==2 if simplified and had initializers.
+ */
+ short size;
+ short hashsize;
+ short free_slot; /* next free slot in entries */
+ Pname* entries;
+ short* hashtbl;
+ Pstmt real_block; /* the last block the user wrote,
+ not one of the ones cfront created
+ */
+ Ptable next; /* table for enclosing scope */
+ Pname t_name; /* name of the table */
+
+ table(short, Ptable, Pname);
+
+ Pname look(char*, TOK);
+ Pname insert(Pname, TOK);
+#ifndef GRAM
+ void grow(int);
+ void set_scope(Ptable t) { next = t; };
+ void set_name(Pname n) { t_name = n; };
+ Pname get_mem(int);
+ int max() { return free_slot-1; };
+ void dcl_print(TOK,TOK);
+ Pname lookc(char*, TOK);
+ Pexpr find_name(Pname, bit, Pexpr);
+ void del();
+#endif
+};
+
+#ifndef GRAM
+extern bit Nold;
+extern bit vec_const, fct_const;
+#endif
+
+extern void restore();
+extern void set_scope(Pname);
+extern Plist modified_tn;
+extern Pbase start_cl(TOK, Pname, Pname);
+extern void end_cl();
+extern Pbase end_enum(Pname, Pname);
+
+/************ types : basic types, aggregates, declarators ************/
+
+#ifndef GRAM
+extern bit new_type;
+extern Pname cl_obj_vec;
+extern Pname eobj;
+#endif
+
+
+#define DEFINED 01 /* definition fed through ?::dcl() */
+#define SIMPLIFIED 02 /* in ?::simpl() */
+#define DEF_SEEN 04 /* definition seen, but not processed */
+ /* used for class members in norm.c */
+#define IN_ERROR 010
+
+struct type : node {
+ bit defined; /* flags DEF_SEEN, DEFINED, SIMPLIFIED, IN_ERROR
+ not used systematically yet
+ */
+ char* signature(char*);
+#ifndef GRAM
+ void print();
+ void dcl_print(Pname);
+ void base_print();
+ void del();
+
+ Pname is_cl_obj(); /* sets cl_obj_vec */
+ int is_ref();
+ void dcl(Ptable);
+ int tsizeof();
+ bit tconst();
+ TOK set_const(bit);
+ int align();
+ TOK kind(TOK,TOK);
+ TOK integral(TOK oo) { return kind(oo,I); };
+ TOK numeric(TOK oo) { return kind(oo,N); };
+ TOK num_ptr(TOK oo) { return kind(oo,P); };
+ bit vec_type();
+ bit check(Ptype, TOK);
+ Ptype deref();
+ Pptr addrof();
+#endif
+};
+
+struct enumdef : type { /* ENUM */
+ bit e_body;
+ short no_of_enumerators;
+ Pname mem;
+ enumdef(Pname n) { base=ENUM; mem=n; };
+#ifndef GRAM
+ void print();
+ void dcl_print(Pname);
+ void dcl(Pname, Ptable);
+ void simpl();
+#endif
+};
+
+struct classdef : type { /* CLASS */
+ bit pubbase;
+ bit c_body; /* print definition only once */
+ TOK csu; /* CLASS, STRUCT, UNION, or ANON */
+ char obj_align;
+ char bit_ass; // 1 if no member has operator=()
+ char virt_count; /* number of virtual functions
+ incl. virtuals in base classes */
+ Pname clbase; // base class
+ char* string; /* name of class */
+ Pname mem_list;
+ Ptable memtbl;
+ int obj_size;
+ int real_size; /* obj_size - alignment waste */
+ Plist friend_list;
+ Pname pubdef;
+ Plist tn_list; // list of member names hiding type names
+ Pclass in_class; /* enclosing class, or 0 */
+ Ptype this_type;
+ Pname* virt_init; /* vector of jump table initializers */
+ Pname itor; /* constructor X(X&) */
+ Pname conv; /* operator T() chain */
+
+ classdef(TOK);
+ TOK is_simple() { return (csu==CLASS)?0:csu; };
+#ifndef GRAM
+ void print();
+ void dcl_print(Pname);
+ void simpl();
+
+ void print_members();
+ void dcl(Pname, Ptable);
+ bit has_friend(Pname);
+ bit baseof(Pname);
+ bit baseof(Pclass);
+ Pname has_oper(TOK);
+ Pname has_ctor() { return memtbl->look("_ctor",0); }
+ Pname has_dtor() { return memtbl->look("_dtor",0); }
+ Pname has_itor() { return itor; }
+ Pname has_ictor();
+#endif
+};
+
+
+
+struct basetype : type
+ /* ZTYPE CHAR SHORT INT LONG FLOAT DOUBLE
+ FIELD EOBJ COBJ TYPE ANY
+ */
+ /* used for gathering all the attributes
+ for a list of declarators
+
+ ZTYPE is the (generic) type of ZERO
+ ANY is the generic type of an undeclared name
+ */
+{
+ bit b_unsigned;
+ bit b_const;
+ bit b_typedef;
+ bit b_inline;
+ bit b_virtual;
+ bit b_short;
+ bit b_long;
+ char b_bits; /* number of bits in field */
+ char b_offset; // bit offset of field
+ TOK b_sto; /* AUTO STATIC EXTERN REGISTER 0 */
+ Pname b_name; /* name of non-basic type */
+ Ptable b_table; /* memtbl for b_name, or 0 */
+ Pexpr b_field; /* field size expression for a field */
+ Pname b_xname; /* extra name */
+ Ptype b_fieldtype;
+
+ basetype(TOK, Pname);
+
+ Pbase type_adj(TOK);
+ Pbase base_adj(Pbase);
+ Pbase name_adj(Pname);
+ Pname aggr();
+ void normalize();
+#ifndef GRAM
+ Pbase check(Pname);
+ void dcl_print();
+ Pbase arit_conv(Pbase);
+#endif
+};
+
+
+struct fct : type // FCT
+{
+ TOK nargs;
+ TOK nargs_known; // KNOWN, ELLIPSIS, or 0
+ char f_virtual; // 1+index in virtual table, or 0
+ char f_inline; // 1 if inline, 2 if being expanded, else 0
+ Ptype returns;
+ Pname argtype;
+ Ptype s_returns;
+ Pname f_this;
+ Pclass memof; // member of class memof
+ Pblock body;
+ Pname f_init; // base/member initializers
+ // null name => base class init;
+ // ids => member classes (with ctors)
+ Pexpr b_init; // base class initializer
+ // ctor call after fct.dcl()
+// int frame_size;
+ Pexpr f_expr; // body expanded into an expression
+ Pexpr last_expanded;
+ Pname f_result; // extra second argument of type X&
+
+ fct(Ptype, Pname, TOK);
+
+ void argdcl(Pname,Pname);
+#ifndef GRAM
+ Ptype normalize(Ptype);
+ void dcl_print();
+ void dcl(Pname);
+ Pexpr base_init(Pname, Pexpr, Ptable);
+ Pexpr mem_init(Pname, Pexpr, Ptable);
+ bit declared() { return nargs_known; };
+ void simpl();
+ Pexpr expand(Pname,Ptable,Pexpr);
+#endif
+};
+
+
+struct name_list {
+ Pname f;
+ Plist l;
+ name_list(Pname ff, Plist ll) { f=ff; l=ll; };
+};
+
+#ifndef GRAM
+struct gen : type { // OVERLOAD
+ Plist fct_list;
+ char* string;
+ gen(char*);
+ Pname add(Pname, int);
+ Pname find(Pfct, bit);
+};
+#endif
+
+struct pvtyp : type {
+ Ptype typ;
+};
+
+struct vec : pvtyp // VEC
+ // typ [ dim ]
+{
+ Pexpr dim;
+ int size;
+
+ vec(Ptype t, Pexpr e) { Nt++; base=VEC; typ=t; dim=e; };
+#ifndef GRAM
+ Ptype normalize(Ptype);
+#endif
+};
+
+struct ptr : pvtyp // PTR, RPTR i.e. reference
+{
+ Pclass memof; // pointer to member of memof: memof::*
+ bit rdo; // "*const"
+
+ ptr(TOK b, Ptype t, bit r = 0) { Nt++; base=b; typ=t; rdo=r; };
+#ifndef GRAM
+ Ptype normalize(Ptype);
+#endif
+};
+
+#ifndef GRAM
+inline Pptr type::addrof() { return new ptr(PTR,this,0); }
+
+extern bit vrp_equiv;
+#endif
+
+
+/****************************** constants ********************************/
+
+ /* STRING ZERO ICON FCON CCON ID */
+ /* IVAL FVAL LVAL */
+
+/***************************** expressions ********************************/
+
+#ifndef GRAM
+extern Pexpr next_elem();
+extern void new_list(Pexpr);
+extern void list_check(Pname, Ptype, Pexpr);
+extern Pexpr ref_init(Pptr,Pexpr,Ptable);
+extern Pexpr class_init(Pexpr,Ptype,Pexpr,Ptable);
+extern Pexpr check_cond(Pexpr, TOK, Ptable);
+#endif
+
+struct expr : node /* PLUS, MINUS, etc. */
+ /* IMPORTANT: all expressions are of sizeof(expr) */
+ /* DEREF => *e1 (e2==0) OR e1[e2]
+ UMINUS => -e2
+ INCR (e1==0) => ++e2
+ INCR (e2==0) => e1++
+ CM => e1 , e2
+ ILIST => LC e1 RC (an initializer list)
+ a Pexpr may denote a name
+ */
+{
+ union {
+ Ptype tp;
+ int syn_class;
+ };
+ union {
+ Pexpr e1;
+ char* string;
+ int i1;
+ };
+ union {
+ Pexpr e2;
+ Pexpr n_initializer;
+ char* string2;
+ };
+ union { /* used by the derived classes */
+ Ptype tp2;
+ Pname fct_name;
+ Pexpr cond;
+ Pname mem;
+ Ptype as_type;
+ Ptable n_table;
+ Pin il;
+ };
+
+ expr(TOK, Pexpr, Pexpr);
+ ~expr();
+#ifndef GRAM
+ void del();
+ void print();
+ Pexpr typ(Ptable);
+ int eval();
+ int lval(TOK);
+ Ptype fct_call(Ptable);
+ Pexpr address();
+ Pexpr contents();
+ void simpl();
+ Pexpr expand();
+ bit not_simple();
+ Pexpr try_to_overload(Ptable);
+ Pexpr docast(Ptable);
+ Pexpr dovalue(Ptable);
+ Pexpr donew(Ptable);
+ void simpl_new();
+ void simpl_delete();
+#endif
+};
+
+struct texpr : expr { // NEW CAST VALUE
+ texpr(TOK bb, Ptype tt, Pexpr ee) : (bb,ee,0) {this=0; tp2=tt;}
+};
+
+struct ival : expr { // NEW CAST VALUE
+ ival(int ii) : (IVAL,0,0) {this=0; i1 = ii;}
+};
+
+struct call : expr { // CALL
+ call(Pexpr aa, Pexpr bb) : (CALL,aa,bb) { this=0; }
+#ifndef GRAM
+ void simpl();
+ Pexpr expand(Ptable);
+#endif
+};
+
+struct qexpr : expr { // QUEST cond ? e1 : e2
+ qexpr(Pexpr ee, Pexpr ee1, Pexpr ee2) : (QUEST,ee1,ee2) { this=0;
cond=ee; }
+};
+
+struct ref : expr { // REF DOT e1->mem OR e1.mem
+ ref(TOK ba, Pexpr a, Pname b) : (ba,a,0) { this=0; mem=b; }
+};
+
+struct text_expr : expr { // TEXT
+ text_expr(char* a, char* b) : (TEXT,0,0) { string=a; string2=b; }
+};
+
+/************************* names (are expressions)
****************************/
+
+struct name : expr { // NAME TNAME and the keywords in the ktbl
+ TOK n_oper; // name of operator or 0
+ TOK n_sto; // EXTERN STATIC AUTO REGISTER ENUM 0
+ TOK n_stclass; // STATIC AUTO REGISTER 0
+ TOK n_scope; // EXTERN STATIC FCT ARG PUBLIC 0
+ unsigned char n_union; // 0 or union index
+ bit n_evaluated; // 0 or n_val holds the value
+ bit n_xref; // argument of type X(X&)
+ unsigned char lex_level;
+ TOK n_protect; // PROTECTED (<=>n_scope==0) or 0
+ short n_addr_taken;
+ short n_used;
+ short n_assigned_to;
+ Loc where;
+ int n_val; // the value of n_initializer
+ // also used as the argument number
+ // for inline arguments
+ int n_offset; // byte offset in frame or struct
+ Pname n_list;
+ Pname n_tbl_list;
+ union {
+ Pname n_qualifier; // name of containing class
+ Ptable n_realscope; /* for labels (always entered in
+ function table) the table for the
+ actual scope in which label occurred.
+ */
+ };
+
+ name(char* =0);
+ ~name();
+
+ Pname normalize(Pbase, Pblock, bit);
+ Pname tdef();
+ Pname tname(TOK);
+ void hide();
+ void unhide() { n_key=0; n_list=0; };
+#ifndef GRAM
+ Pname dcl(Ptable,TOK);
+ int no_of_names();
+ void use() { n_used++; };
+ void assign();
+ void take_addr() { n_addr_taken++; };
+ void check_oper(Pname);
+ void simpl();
+ void del();
+ void print();
+ void dcl_print(TOK);
+ void field_align();
+ Pname dofct(Ptable,TOK);
+#endif
+};
+
+#ifndef GRAM
+extern int friend_in_class;
+#endif
+
+/******************** statements *********************************/
+
+struct stmt : node { /* BREAK CONTINUE DEFAULT */
+/* IMPORTANT: all statement nodes have sizeof(stmt) */
+ Pstmt s;
+ Pstmt s_list;
+ Loc where;
+ union {
+ Pname d;
+ Pexpr e2;
+ Pstmt has_default;
+ int case_value;
+ Ptype ret_tp;
+ };
+ union {
+ Pexpr e;
+ bit own_tbl;
+ Pstmt s2;
+ };
+ Ptable memtbl;
+ union {
+ Pstmt for_init;
+ Pstmt else_stmt;
+ Pstmt case_list;
+ bit empty;
+ };
+
+ stmt(TOK, loc, Pstmt);
+ ~stmt();
+#ifndef GRAM
+ void del();
+ void print();
+ void dcl();
+ void reached();
+ Pstmt simpl();
+ Pstmt expand();
+ Pstmt copy();
+#endif
+};
+
+#ifndef GRAM
+extern char* Neval;
+extern Pname dcl_temp(Ptable, Pname);
+extern char* temp(char*, char*, char*);
+extern Ptable scope;
+extern Ptable expand_tbl;
+extern Pname expand_fn;
+#endif
+
+struct estmt : stmt /* SM WHILE DO SWITCH RETURN CASE */
+ /* SM (e!=0) => e;
+ in particular assignments and function calls
+ SM (e==0) => ; (the null statement)
+ CASE => case e : s ;
+ */
+{
+ estmt(TOK t, loc ll, Pexpr ee, Pstmt ss) : (t,ll,ss) { this=0; e=ee; }
+};
+
+struct ifstmt : stmt /* IF */
+ // else_stme==0 => if (e) s
+ // else_stmt!=0 => if (e) s else else_stmt
+{
+ ifstmt(loc ll, Pexpr ee, Pstmt ss1, Pstmt ss2)
+ : (IF,ll,ss1) { this=0; e=ee; else_stmt=ss2; };
+};
+
+struct lstmt : stmt /* LABEL GOTO */
+ /*
+ d : s
+ goto d
+ */
+{
+ lstmt(TOK bb, loc ll, Pname nn, Pstmt ss) : (bb,ll,ss) { this=0; d=nn; }
+};
+
+struct forstmt : stmt { // FOR
+ forstmt(loc ll, Pstmt fss, Pexpr ee1, Pexpr ee2, Pstmt ss)
+ : (FOR,ll,ss) { this=0; for_init=fss; e=ee1; e2=ee2; }
+};
+
+struct block : stmt { // BLOCK { d s }
+ block(loc ll, Pname nn, Pstmt ss) : (BLOCK,ll,ss) { this=0; d=nn; }
+#ifndef GRAM
+ void dcl(Ptable);
+ Pstmt simpl();
+#endif
+};
+
+#ifndef GRAM
+struct pair : public stmt { // PAIR
+ pair(loc ll, Pstmt a, Pstmt b) : (PAIR,ll,a) { this=0; s2 = b; }
+};
+#endif
+
+struct nlist {
+ Pname head;
+ Pname tail;
+ nlist(Pname);
+ void add(Pname n) { tail->n_list = n; tail = n; };
+ void add_list(Pname);
+};
+
+extern Pname name_unlist(nlist*);
+
+struct slist {
+ Pstmt head;
+ Pstmt tail;
+ slist(Pstmt s) { Nl++; head = tail = s; };
+ void add(Pstmt s) { tail->s_list = s; tail = s; };
+};
+
+extern Pstmt stmt_unlist(slist*);
+
+struct elist {
+ Pexpr head;
+ Pexpr tail;
+ elist(Pexpr e) { Nl++; head = tail = e; };
+ void add(Pexpr e) { tail->e2 = e; tail = e; };
+};
+
+extern Pexpr expr_unlist(elist*);
+
+#ifndef GRAM
+extern class dcl_context * cc;
+
+struct dcl_context {
+ Pname c_this; /* current fct's "this" */
+ Ptype tot; /* type of "this" or 0 */
+ Pname not; /* name of "this"'s class or 0 */
+ Pclass cot; /* the definition of "this"'s class */
+ Ptable ftbl; /* current fct's symbol table */
+ Pname nof; /* current fct's name */
+
+ void stack() { cc++; *cc = *(cc-1); };
+ void unstack() { cc--; };
+};
+
+#define MAXCONT 20
+extern dcl_context ccvec[MAXCONT];
+#endif
+
+extern void yyerror(char*);
+extern TOK back;
+
+
+#ifndef GRAM
+extern char* line_format;
+
+extern Plist isf_list;
+extern Pstmt st_ilist;
+extern Pstmt st_dlist;
+extern Ptable sti_tbl;
+extern Ptable std_tbl;
+Pexpr try_to_coerce(Ptype, Pexpr, char*, Ptable);
+extern bit can_coerce(Ptype, Ptype);
+extern Ptype np_promote(TOK, TOK, TOK, Ptype, Ptype, TOK);
+extern void new_key(char*, TOK, TOK);
+
+extern Pname dcl_list;
+extern int over_call(Pname, Pexpr);
+extern Pname Nover;
+extern Pname Ntncheck;
+extern Pname Ncoerce;
+extern Nover_coerce;
+
+const MIA = 8;
+struct iline {
+ Pname fct_name; /* fct called */
+ Pin i_next;
+ Ptable i_table;
+ Pname local[MIA]; /* local variable for arguments */
+ Pexpr arg[MIA]; /* actual arguments for call */
+ Ptype tp[MIA]; /* type of formal arguments */
+};
+
+extern Pexpr curr_expr;
+extern Pin curr_icall;
+#define FUDGE111 111
+
+extern Pstmt curr_loop;
+extern Pblock curr_block;
+extern Pstmt curr_switch;
+extern bit arg_err_suppress;
+extern loc last_line;
+
+extern no_of_undcl;
+extern no_of_badcall;
+extern Pname undcl, badcall;
+
+extern int strlen(const char*);
+extern char* strcpy(char*, const char*);
+extern int str_to_int(const char*);
+extern int c_strlen(const char* s);
+#endif
+
+extern int strcmp(const char*, const char*);
+
+#ifndef GRAM
+extern Pname vec_new_fct;
+extern Pname vec_del_fct;
+
+extern int Nstd; // standard coercion used (derived* =>base* or int=>long or
...)
+
+extern int stcount; // number of names generated using make_name()
+
+extern Pname find_hidden(Pname);
+Pexpr replace_temp(Pexpr,Pexpr);
+void make_res(Pfct);
+Pexpr ptr_init(Pptr,Pexpr,Ptable);
+
+#endif
+
+extern bit fake_sizeof; // suppress error message for ``int v[];''
+
+extern TOK lalex();
+#ifdef DEBUG
+extern fprintf(FILE*, char* ...);
+#define DB(a) fprintf a
+#else
+#define DB(a) /**/
+#endif
+
+/* end */
diff --git a/test/etags/cp-src/clheir.cpp.gz b/test/etags/cp-src/clheir.cpp.gz
new file mode 100644
index 0000000..38b08a8
Binary files /dev/null and b/test/etags/cp-src/clheir.cpp.gz differ
diff --git a/test/etags/cp-src/clheir.hpp b/test/etags/cp-src/clheir.hpp
new file mode 100644
index 0000000..a924563
--- /dev/null
+++ b/test/etags/cp-src/clheir.hpp
@@ -0,0 +1,82 @@
+/* ======================================================================= */
+/* CLHEIR.H */
+/* ======================================================================= */
+
+// CLASS HEIRARCHY
+// Locations or Agents are both of type generic_object. Generic_objects may
+// have states, and are responsible for updating their states appropriately
+// when their step() functions are executed.
+
+extern void init_registry(void);
+extern void step_everybody(void);
+
+class generic_object
+ {
+ int where_in_registry;
+public:
+ generic_object(); // enter generic_object into ObjectRegistry
+ // We never copy generic_objects, so we don't need a copy constructor.
+ ~generic_object(void); // delete from ObjectRegistry
+ // Simulation steps, accomodate different kinds of time
+ virtual void compute_next_state(void) { }
+ virtual void step(void) { }
+ };
+
+// =======================================================================
+
+// Locations can be regular (like a field of squares or hexagons) or
+// irregular. Regular locations have 2-D or 3-D positions represented
+// by integers. Locations are never copied; no need for copy constructors.
+
+const int max_num_directions = 6; // handles both cubes and hexagons
+
+class location: public generic_object
+ {
+ // Any kind of location needs a physical position, but for a regular
+ // location, this may be implicit, and for an irregular location, it
+ // should be custom-defined.
+
+ // Any kind of location needs a private list of neighbors, but for a
+ // regular location, this may be implicit.
+
+public:
+ location() { }
+ ~location();
+ };
+
+class irregular_location: public location
+ {
+ double x, y, z;
+public:
+ irregular_location(double xi, double yi, double zi)
+ { x = xi; y = yi; z = zi; }
+ ~irregular_location();
+ };
+
+class discrete_location: public location
+ {
+ int x, y, z;
+ class location *neighbors[max_num_directions];
+ void clear_neighbors(void);
+public:
+ discrete_location(int xi, int yi, int zi):
+ x(xi), y(yi), z(zi)
+ { clear_neighbors(); }
+ ~discrete_location(void);
+ void assign_neighbor(int direction, location *x)
+ { neighbors[direction] = x; }
+ };
+
+// =======================================================================
+
+// Agents are generic_objects with locations, who can move. Examples in
+// Pacman would be the protagonist, the monsters, and the monsters' ghosts.
+
+class agent: public generic_object
+ {
+ location *where;
+public:
+ agent();
+ ~agent();
+ void move(int);
+ };
diff --git a/test/etags/cp-src/conway.cpp b/test/etags/cp-src/conway.cpp
new file mode 100644
index 0000000..1e60014
--- /dev/null
+++ b/test/etags/cp-src/conway.cpp
@@ -0,0 +1,95 @@
+/* ======================================================================= */
+/* CONWAY.CPP */
+/* ======================================================================= */
+
+#include "assert.h"
+#include "iostream.h"
+#include "conio.h"
+#include "clheir.h"
+#include "screen.h"
+#include "conway.h"
+
+#define max(x,y) ((x > y) ? x : y)
+#define min(x,y) ((x > y) ? y : x)
+
+const int num_rows = min(50, NUM_ROWS);
+const int num_columns = 40;
+
+class site *field_of_play[num_rows][num_columns];
+
+int site::total_surrounding(void)
+ {
+ int i, j, imin, imax, jmin, jmax, total;
+
+ total = 0;
+ imin = max(0, x - 1);
+ imax = min(num_rows - 1, x + 1);
+ jmin = max(0, y - 1);
+ jmax = min(num_columns - 1, y + 1);
+
+ for (i = imin; i <= imax; i++)
+ for (j = jmin; j <= jmax; j++)
+ if (field_of_play[i][j]->read()) total++;
+ if (alive) total--;
+ return total;
+ }
+
+void display(void)
+ {
+ int i, j;
+
+ for (i = 0; i < num_rows; i++)
+ for (j = 0; j < num_columns; j++)
+ {
+ if (field_of_play[i][j]->read()) write_xyc(2*j, i, 'X');
+ else write_xyc(2*j, i, '.');
+ }
+ hide_cursor();
+ }
+
+void glider(int x, int y)
+ {
+ field_of_play[x - 1][y + 0]->set();
+ field_of_play[x - 1][y + 1]->set();
+ field_of_play[x + 0][y - 1]->set();
+ field_of_play[x + 0][y + 0]->set();
+ field_of_play[x + 1][y + 1]->set();
+ }
+
+void traffic_light(int x, int y)
+ {
+ field_of_play[x - 1][y]->set();
+ field_of_play[x + 0][y]->set();
+ field_of_play[x + 1][y]->set();
+ }
+
+
+void main(void)
+ {
+ int i, j, c;
+
+ init_registry();
+
+ for (i = 0; i < num_rows; i++)
+ for (j = 0; j < num_columns; j++)
+ field_of_play[i][j] = new site(i, j);
+
+start_over:
+ traffic_light(num_rows/2 - 8, num_columns/2 - 8);
+ glider(num_rows/2 + 8, num_columns/2 + 8);
+
+ clear_screen();
+ while (1)
+ {
+ display();
+ if ((c = getch()) == 'q') { clear_screen(); return; }
+ if (c == 'i')
+ {
+ for (i = 0; i < num_rows; i++)
+ for (j = 0; j < num_columns; j++)
+ field_of_play[i][j]->clear();
+ goto start_over;
+ }
+ step_everybody();
+ }
+ }
diff --git a/test/etags/cp-src/conway.hpp b/test/etags/cp-src/conway.hpp
new file mode 100644
index 0000000..9fbb251
--- /dev/null
+++ b/test/etags/cp-src/conway.hpp
@@ -0,0 +1,23 @@
+/* ======================================================================= */
+/* CONWAY.H */
+/* ======================================================================= */
+
+class site: public location
+ {
+ char x, y, alive, next_alive;
+ int total_surrounding(void);
+public:
+ site(int xi, int yi): x(xi), y(yi), alive(0) { }
+ ~site();
+ char read() { return alive; }
+ void set(void) { alive = 1; }
+ void clear(void) { alive = 0; }
+ void compute_next_state(void)
+ {
+ int n = total_surrounding();
+ next_alive = alive;
+ if (n < 2 || n > 3) next_alive = 0;
+ else if (n > 2) next_alive = 1;
+ }
+ void step(void) { alive = next_alive; }
+ };
diff --git a/test/etags/cp-src/fail.C b/test/etags/cp-src/fail.C
new file mode 100644
index 0000000..c602ed2
--- /dev/null
+++ b/test/etags/cp-src/fail.C
@@ -0,0 +1,52 @@
+/* Examples provided by Sam Kendall <address@hidden>, Jan 1997 */
+
+// check use of references with nested/local classes
+
+// This example causes etags 13 to abort when compiled with -DDEBUG.
+// Etags 13 cannot deal with nested structures after the first level.
+struct A {
+ struct B {
+ struct C {
+ int x;
+ C(int i) {x = i;}
+ operator int() const {return x;}
+ };
+ typedef C T;
+ };
+ typedef B T2;
+};
+
+
+class String;
+
+
+class A {
+ class B {
+ class C {};
+ int f() { return 5; }
+ };
+};
+
+
+int A::B::f() { return 2; }
+
+
+A::B::C abc(-37);
+
+
+main()
+{
+ if (abc != -37 || abt != -37) return 1;
+
+ class D : public A::B::C {
+ public:
+ D() : ::A::T2::T(97), x(1066) {}
+ int x;
+ } &d = D();
+
+ if (d.x != 1066 || d.A::T2::T::x != 97) return 2;
+ return 0;
+}
+
+
+template <class T>
diff --git a/test/etags/cp-src/functions.cpp b/test/etags/cp-src/functions.cpp
new file mode 100644
index 0000000..fb546ed
--- /dev/null
+++ b/test/etags/cp-src/functions.cpp
@@ -0,0 +1,239 @@
+#include "main.hpp"
+#pragma ident "@(#)functions.cpp 1.0 98/11/12 (c) Rupak Rathore"
+
+// Constructor default argument initialises to today's values
+void Date::setDate ( int d , int m , int y ){
+ time_t t;
+ struct tm * ptm;
+ t = time ( NULL ) ;
+ if ( date != NULL )
+ delete date;
+ date = NULL;
+ if ( d == 0 && m == 0 && y == 0 ) // explicity called or default
constructor hence leave it.
+ return;
+ if ( d < 0 && m < 0 && d < 0 ) // Special instruction to intialise to
today's value
+ d=m=y=0;
+ date = new tm;
+ ptm=localtime ( &t ) ;
+ *date=(*ptm);
+ if ( d )
+ date->tm_mday = d;
+ if ( m )
+ date->tm_mon = m - 1; // Months are counted from January
+ if ( y > 1900 ) // Complete year specified so take into account
+ y -= 1900;
+ if ( y )
+ date->tm_year = y;
+ date->tm_sec=date->tm_min=date->tm_hour=0;
+ t = mktime ( date ) ;
+}
+
+// Addition operation ::: Warning ::: A combination of addition and
substraction does not give a proper result
+void Date::plus ( int days , int month , int year ){
+ if ( ! set () )
+ return;
+ date->tm_mday += days ;
+ date->tm_mon += month ;
+ date->tm_year += year ;
+ mktime ( date );
+}
+
+//Substraction operation ::: Warning ::: A combination of addition and
substraction does not give a proper result
+void Date::minus ( int days , int month , int year ){
+ if ( ! set () )
+ return;
+ date->tm_mday -= days ;
+ date->tm_mon -= month ;
+ date->tm_year -= year ;
+ mktime ( date );
+}
+
+
+void Date::shift ( void ){//Shift this date to previous working days (useful
for benchmarks)
+ if ( ! set() )
+ return ;
+ while(isHoliday(*this)||isweekend()){
+ date->tm_mday -= 1 ;
+ mktime ( date );
+ }
+}
+
+// Assignment
+Date & Date::operator = ( Date d ){
+ if ( d.set() )
+ setDate ( d.date->tm_mday, d.date->tm_mon + 1, d.date->tm_year
);
+ return(*this);
+}
+
+// Add number of days
+Date & Date::operator += ( int days ){
+ if ( set () ){
+ date->tm_mday += days ;
+ mktime ( date );
+ }
+ return(*this);
+}
+
+// Substract number of days
+Date & Date::operator -= ( int days ){
+ if ( set () ){
+ date->tm_mday -= days ;
+ mktime ( date );
+ }
+ return(*this);
+}
+
+// Advance one day
+Date & Date::operator ++ ( void ){
+ if ( set () ){
+ date->tm_mday += 1 ;
+ mktime ( date );
+ }
+ return(*this);
+}
+
+// Backwards one day
+Date & Date::operator -- ( void ){
+ if ( set () ){
+ date->tm_mday -= 1 ;
+ mktime ( date );
+ }
+ return(*this);
+}
+
+int Date::operator - ( Date d ){
+ long l;
+ if (( ! set() ) || (! d.set()))
+ return(0);
+ l=(mktime(date)-mktime(d.date))/(3600*24);
+ return((int)l);
+}
+
+int Date::operator < ( Date d ) {
+ return ( unidate() < d.unidate() );
+}
+
+int Date::operator > ( Date d ) {
+ return ( unidate() > d.unidate() );
+}
+
+int Date::operator == ( Date d ) {
+ return ( unidate() == d.unidate() );
+}
+
+ostream& operator << ( ostream &c, Date d ) {
+ if ( ! d.set() )
+ c << "Null";
+ else
+ c << d.date->tm_mday << ":" << d.date->tm_mon + 1 << ":" <<
d.date->tm_year + 1900 ;
+ return ( c );
+}
+
+// Modified to read date in yyyymmdd format.
+istream& operator >> ( istream &i, Date & dd ){
+ int d,m,y,tmp;
+ i >> tmp;
+ d=tmp%100;
+ tmp/=100;
+ m=tmp%100;
+ tmp/=100;
+ y=tmp;
+ dd.setDate(d,m,y);
+ return(i);
+}
+/*
+istream& operator >> ( istream &i, Date &dd ) {
+ char input[11];
+ int d,m,y;
+ cout << "Enter the date ( dd-mm-yyyy ) : ";
+ i >> input ;
+ d = ( input[0] - '0' ) * 10 + ( input[1] - '0' );
+ m = ( input[3] - '0' ) * 10 + ( input[4] - '0' );
+ y = ( input[6] - '0' ) * 1000 + ( input[7] - '0' ) * 100 + ( input[8] -
'0' ) * 10 + ( input[9] - '0' );
+ dd.setDate ( d, m, y );
+ return ( i );
+}
+*/
+
+// Check whether given year is leap or not
+bool isLeap ( int year ){
+ return ( (year%100==0) ? (year%400==0) : (year%4==0) );
+}
+
+bool isHoliday ( Date d ){
+ long int ld;
+ ld = ( d.year()*100 + d.month() )*100 + d.day();
+ for ( int i=0; i<no_of_vacations;i++)
+ if ( ld == vacation[i] )
+ return(true);
+ return(false);
+}
+
+// Sort the given array in ascending order
+void asort(int *a, int num){
+ int i,k,mini,tmp;
+ for ( k=1; k<num; k++ ){
+ mini=k-1;
+ for ( i=k; i<num; i++ )
+ if ( a[mini] > a[i] ) {
+ tmp=a[i];
+ a[i]=a[mini];
+ a[mini]=tmp;
+ }
+ }
+}
+
+void ReadVacation ( char *filename ) {
+ // cerr << filename;
+ ifstream vacfile(filename);
+ if ( ! vacfile.good() )
+ d_error("ReadVacation","Unable to find the vacation and
holidays file");
+ // cerr << filename ;
+ d_silent("ReadVacation","vacation file successfully opened.");
+ no_of_vacations = 0;
+ while ( !vacfile.eof() )
+ vacfile >> vacation[no_of_vacations++];
+ --no_of_vacations;
+ d_silent("ReadVacation","Finished Reading file");
+ vacfile.close();
+}
+
+void Debug ( int lineno, int level, char* func , char* mesg ) // error_level,
function, message
+{
+ if ( debug_level <= level )
+ cerr << PROGNAME << ": " << func << ": " << lineno << ": " <<
debug_string[level] << ": " << mesg << endl;
+ if ( level == ERROR ){
+ cerr << PROGNAME << ": Exiting because of fatal error." <<endl ;
+ exit(2);
+ }
+}
+
+int WorkingDays(Date a, Date b){
+ Date tmp;
+ int wdays=0,days=0;
+ if ( (! a.set()) || (! b.set()) )
+ return(0);
+ days=b-a+1; // Inclusive
+ tmp=a;
+ for ( int i=0;i<days;i++){
+ if((!isHoliday(tmp))&&(!tmp.isweekend()))
+ wdays++;
+ tmp++;
+ }
+ return(wdays);
+}
+
+Date StartDay(Date a,int days){//Function to calculate the apropriate start
day to finish in days working days
+ Date tmp;
+ int wdays=0;
+ if ( ! a.set() )
+ return (a);
+ tmp=a;
+ while(wdays<days){
+ if((!isHoliday(tmp))&&(!tmp.isweekend()))
+ wdays++;
+ tmp--;
+ }
+ tmp++;
+ return(tmp);
+}
diff --git a/test/etags/cp-src/screen.cpp b/test/etags/cp-src/screen.cpp
new file mode 100644
index 0000000..1958a19
--- /dev/null
+++ b/test/etags/cp-src/screen.cpp
@@ -0,0 +1,62 @@
+/* ======================================================================= */
+/* SCREEN.CPP */
+/* ======================================================================= */
+
+#include "stdio.h"
+#include "stdlib.h"
+#include "dos.h"
+
+#include "screen.h"
+
+/* ----------------------------------------------------------------------- */
+/* Cursor Position and Screen Buffering Functions */
+/* ----------------------------------------------------------------------- */
+
+unsigned char cursor_x, cursor_y;
+static union REGS regs;
+
+void goto_xy(unsigned char x, unsigned char y)
+ {
+ regs.h.ah = 2;
+ regs.h.bh = 0;
+ regs.h.dh = y;
+ regs.h.dl = x;
+ int86(0x10, ®s, ®s);
+ }
+
+void hide_cursor(void)
+ {
+ goto_xy(0, NUM_ROWS);
+ }
+
+void cursor_position(void)
+ {
+ regs.h.ah = 3;
+ regs.h.bh = 0;
+ int86(0x10, ®s, ®s);
+ cursor_x = regs.h.dl;
+ cursor_y = regs.h.dh;
+ }
+
+void clear_screen(void)
+ {
+ unsigned int i, j;
+ char far *p;
+
+ p = SCREEN_START;
+ for (i = 0; i < NUM_ROWS; i++)
+ for (j = 0; j < 80; j++)
+ {
+ *p++ = ' ';
+ *p++ = LIGHTGRAY;
+ }
+ }
+
+void write_xyc(int x, int y, char c)
+ {
+ char far *p;
+
+ p = SCREEN_FP(x, y);
+ *p++ = c;
+ *p = LIGHTGRAY;
+ }
diff --git a/test/etags/cp-src/screen.hpp b/test/etags/cp-src/screen.hpp
new file mode 100644
index 0000000..a7099a3
--- /dev/null
+++ b/test/etags/cp-src/screen.hpp
@@ -0,0 +1,39 @@
+/* ======================================================================= */
+/* SCREEN.H */
+/* ======================================================================= */
+
+// This stuff is entirely non-portable MSDOS-ish code. Note the hardware
+// address below, for the standard location of the EGA video buffer.
+
+#if !defined(__COLORS)
+#define __COLORS
+
+enum COLORS {
+ BLACK, /* dark colors */
+ BLUE,
+ GREEN,
+ CYAN,
+ RED,
+ MAGENTA,
+ BROWN,
+ LIGHTGRAY,
+ DARKGRAY, /* light colors */
+ LIGHTBLUE,
+ LIGHTGREEN,
+ LIGHTCYAN,
+ LIGHTRED,
+ LIGHTMAGENTA,
+ YELLOW,
+ WHITE
+};
+#endif
+
+#define SCREEN_FP(x,y) \
+ ((char far *) (0xB8000000L | ((unsigned) (160 * (y) + 2 * (x)))))
+#define SCREEN_START SCREEN_FP(0, 0)
+
+void goto_xy(unsigned char x, unsigned char y);
+void hide_cursor(void);
+void cursor_position(void);
+void clear_screen(void);
+void write_xyc(int x, int y, char c);
diff --git a/test/etags/el-src/TAGTEST.EL b/test/etags/el-src/TAGTEST.EL
new file mode 100644
index 0000000..acf0baf
--- /dev/null
+++ b/test/etags/el-src/TAGTEST.EL
@@ -0,0 +1,31 @@
+(foo::defmumble bletch beuarghh)
+;;; Ctags test file for lisp mode.
+
+;; from emacs/lisp/delsel.el:76:
+(defalias 'pending-delete-mode 'delete-selection-mode)
+
+;; compare with:
+(defalias (quote explicitly-quoted-pending-delete-mode) 'delete-selection-mode)
+
+;;
+;; Output from original ctags:
+;;
+;'pending-delete-mode tagstest.el /^(defalias 'pending-delete-mode
'delete-selection-m/
+;(quote tagstest.el /^(defalias (quote
explicitly-quoted-pending-delete-/
+;;
+;; Output from ctags with my patch in L-getit():
+;;
+;pending-delete-mode tagstest.el /^(defalias 'pending-delete-mode
'delete-selection-m/
+;explicitly-quoted-pending-delete-mode tagstest.el /^(defalias (quote
explicitly-quoted-pending-delete-/
+;; Output from original etags:
+;;
+;tagstest.el,61
+;(defalias 'pending-delete-mode 4,68
+;(defalias (quote 7,141
+;;
+;; Output from patched etags:
+;;
+;tagstest.el,99
+;(defalias 'pending-delete-mode 4,68
+;(defalias (quote explicitly-quoted-pending-delete-mode)7,141
+;;
diff --git a/lisp/progmodes/etags.el
b/test/etags/el-src/emacs/lisp/progmodes/etags.el
similarity index 100%
copy from lisp/progmodes/etags.el
copy to test/etags/el-src/emacs/lisp/progmodes/etags.el
diff --git a/test/etags/erl-src/gs_dialog.erl b/test/etags/erl-src/gs_dialog.erl
new file mode 100644
index 0000000..c04ee8b
--- /dev/null
+++ b/test/etags/erl-src/gs_dialog.erl
@@ -0,0 +1,271 @@
+-module(gs_dialog). % behaviour
+-define(VERSION, '2001.1101').
+-vsn(?VERSION).
+-author('address@hidden').
+-copyright('Copyright (c)2001 Cat`s Eye Technologies. All rights reserved.').
+
+%%% Redistribution and use in source and binary forms, with or without
+%%% modification, are permitted provided that the following conditions
+%%% are met:
+%%%
+%%% Redistributions of source code must retain the above copyright
+%%% notice, this list of conditions and the following disclaimer.
+%%%
+%%% Redistributions in binary form must reproduce the above copyright
+%%% notice, this list of conditions and the following disclaimer in
+%%% the documentation and/or other materials provided with the
+%%% distribution.
+%%%
+%%% Neither the name of Cat's Eye Technologies nor the names of its
+%%% contributors may be used to endorse or promote products derived
+%%% from this software without specific prior written permission.
+%%%
+%%% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+%%% CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+%%% INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+%%% MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+%%% DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
+%%% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+%%% OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+%%% PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+%%% OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+%%% ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+%%% OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+%%% OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+%%% POSSIBILITY OF SUCH DAMAGE.
+
+-export([behaviour_info/1,
+ show/4,
+ test/0]).
+
+%%% BEGIN gs_dialog.erl %%%
+
+%%% This module specifies a common behaviour for "modal" dialog boxes
+%%% using GS.
+
+%%--------------------------------------------------------------------
+%% behaviour_info(callbacks) -> ListOfFunctionArityTuples
+%% Used by R8 to check the implementation modules for consistency
+%% with the behaviour specification, what callbacks this module needs.
+
+behaviour_info(callbacks) ->
+ [
+
+ %%----------------------------------------------------------------
+ %% Module:buttons() -> ListOfAtoms
+ %% Should return the labels used on the main (non-extra) buttons
+ %% of the dialog box.
+ %% e.g. ['OK', 'Cancel'].
+
+ {buttons, 0},
+
+ %%----------------------------------------------------------------
+ %% Module:icon() -> FileNameString | {Text, FgColour, BgColour}
+ %% Should return the the icon displayed in the dialog box.
+ %% This should either be the fully qualified filename of a 32x32 GIF
+ %% file (e.g. in the application's priv dir,) or a 3-tuple
+ %% describing a simple "circle" icon to be rendered by GS itself.
+ %% The latter option was added because some versions of Erlang for
+ %% Windows use a Tk emulation package which is not always on the
+ %% ball when it comes to correct image transparency and colour.
+ %% e.g. filename:join(code:priv_dir(?MODULE), "notify.gif")
+
+ {icon, 0},
+
+ %%----------------------------------------------------------------
+ %% Module:controls(Parent, ArgList) -> {GSControl | nil, NewArgList}
+ %% Used by the implementation to provide extra controls in the dialog
+ %% box, if any. If not, nil should be returned instead of the control.
+ %% If many controls are added, it is recommended they are placed in a
+ %% frame, with the frame returned as the control.
+ %% The control need not have positioning information, as it will be
+ %% assigned a pack_xy option when it is placed into the Parent frame.
+ %% The list of arguments may be modified by this callback.
+ %% e.g. {nil, Args}
+
+ {controls, 2},
+
+ %%----------------------------------------------------------------
+ %% Module:on_key(ExtraControl, KeyAtom, ArgList) ->
+ %% {button, ButtonNameAtom} | nil
+ %% Called when a key is pressed in the dialog box. The return value
+ %% specified whether it is linked to pressing a button, or whether it
+ %% it is ignored and passed on to a further handler (if any.)
+
+ {on_key, 3},
+
+ %%----------------------------------------------------------------
+ %% Module:on_button(ExtraControl, ButtonNameAtom, ArgList) -> Result
+ %% Called when one of the main (non-extra) buttons are pressed in
+ %% the dialog box. Since this closes the dialog box, the implementation
+ %% module is expected to provide a final result term with this function.
+
+ {on_button, 3},
+
+ %%----------------------------------------------------------------
+ %% Module:on_event(ExtraControl, Event, ArgList) -> Result
+ %% Allows the implementation module to handle other GS events,
+ %% e.g. those generated by the extra controls specified.
+
+ {on_event, 3}
+ ].
+
+%%% Public Interface
+
+%%--------------------------------------------------------------------
+%% show(ModuleNameAtom, TitleString, MessageString, ArgList) -> Result
+%% Display a generic modal dialog box, customized by the
+%% callback functions in Module. This should be called by
+%% the 'show' function in the Module in question.
+%% The argument list is passed back to the callback functions in the
+%% module, for retaining information pertinent to the callback module;
+%% the behaviour itself does not inspect or care about this list.
+
+show(Module, Title, Message, Args) ->
+ Screen = gs:start(),
+ Buttons = Module:buttons(),
+ NumButtons = length(Buttons),
+ application:load(?MODULE),
+ {ok, Font} = application:get_env(?MODULE, font),
+ {ok, {ScreenWidth, ScreenHeight}} =
+ application:get_env(?MODULE, screen_size),
+ {ok, {DialogWidth, DialogHeight}} =
+ application:get_env(?MODULE, dialog_size),
+ Window = gs:create(window, Screen,
+ [{width, DialogWidth}, {height, DialogHeight},
+ {x, (ScreenWidth - DialogWidth) div 2},
+ {y, (ScreenHeight - DialogHeight) div 2},
+ {title, Title},
+ {configure, true}, {keypress, true}]),
+ Frame = gs:create(frame, Window,
+ [{bw, 0},
+ {packer_x, lists:duplicate(NumButtons, {stretch, 1})},
+ {packer_y, [{stretch, 1},{stretch, 2},{stretch, 1}]}]),
+ case Module:icon() of
+ nil ->
+ Label = gs:create(label, Frame,
+ [{label, {text, Message}}, {font, Font}, {justify, center},
+ {pack_xy, {{1, NumButtons}, 1}}]);
+ {Text, Fg, Bg} ->
+ InnerFrame = gs:create(frame, Frame,
+ [{pack_xy, {{1, NumButtons}, 1}}, {bw, 0},
+ {packer_x, [{stretch, 1}, {fixed, 32}, {stretch, 8}]},
+ {packer_y, [{stretch, 1}, {fixed, 32}, {stretch, 1}]}]),
+ IconCanvas = gs:create(canvas, InnerFrame,
+ [{pack_xy, {2, 2}}]),
+ IconCircle = gs:create(oval, IconCanvas,
+ [{coords, [{0, 0}, {31, 31}]}, {fg, black}, {fill, Bg}]),
+ IconFont = {screen, bold, 24},
+ {ITW,ITH} = gs:read(IconCanvas, {font_wh, {IconFont, Text}}),
+ ITX = 16 - ITW div 2,
+ ITY = 16 - ITH div 2,
+ IconText = gs:create(text, IconCanvas,
+ [{coords, [{ITX, ITY}]}, {fg, Fg}, {text, Text}, {font, IconFont}]),
+ Label = gs:create(label, InnerFrame,
+ [{label, {text, Message}}, {font, Font}, {justify, center},
+ {pack_xy, {3, {1,3}}}]);
+ FileName when list(FileName) ->
+ InnerFrame = gs:create(frame, Frame,
+ [{pack_xy, {{1, NumButtons}, 1}}, {bw, 0},
+ {packer_x, [{stretch, 1}, {fixed, 32}, {stretch, 8}]},
+ {packer_y, [{stretch, 1}, {fixed, 32}, {stretch, 1}]}]),
+ IconCanvas = gs:create(canvas, InnerFrame,
+ [{pack_xy, {2, 2}}]),
+ Icon = gs:create(image, IconCanvas, [{coords, [{0, 0}]},
+ {load_gif, FileName}]),
+ Label = gs:create(label, InnerFrame,
+ [{label, {text, Message}}, {font, Font}, {justify, center},
+ {pack_xy, {3, {1,3}}}])
+ end,
+ {Extra, NewArgs} = Module:controls(Frame, Args),
+ case Extra of
+ nil -> gs:config(Frame, {packer_y, [{stretch, 2},{fixed, 0},{stretch,
1}]});
+ _ -> gs:config(Extra, {pack_xy, {{1, NumButtons}, 2}})
+ end,
+ lists:foldl(fun(X, A) ->
+ I = gs:create(frame, Frame, [{packer_x, [{stretch, 1}, {fixed, 80},
{stretch, 1}]},
+ {packer_y, [{stretch, 1}, {fixed, 24},
{stretch, 1}]},
+ {pack_xy, {A, 3}}]),
+ gs:create(button, I, [{label, {text, atom_to_list(X)}}, {font, Font},
+ {data, {button, X}},
+ {pack_xy, {2, 2}}]),
+ A + 1
+ end, 1, Buttons),
+ gs:config(Frame, [{width, DialogWidth}, {height, DialogHeight}]),
+ {MessageWidth, MessageHeight} = gs:read(Frame, {font_wh, {Font, Message}}),
+ case MessageWidth of
+ N1 when N1 > trunc(DialogWidth * 0.8) ->
+ NewDialogWidth = trunc(MessageWidth * 1.2),
+ gs:config(Window,
+ [{width, NewDialogWidth},
+ {x, (ScreenWidth - NewDialogWidth) div 2}]);
+ _ -> ok
+ end,
+ case MessageHeight of
+ N2 when N2 > trunc(DialogHeight * 0.666) ->
+ NewDialogHeight = trunc(MessageHeight * 1.666),
+ gs:config(Window,
+ [{height, NewDialogHeight},
+ {y, (ScreenHeight - NewDialogHeight) div 2}]);
+ _ -> ok
+ end,
+ gs:config(Window, {map, true}),
+ dialog_loop(Module, Window, Frame, Extra, NewArgs).
+
+%%--------------------------------------------------------------------
+%% dialog_loop(Module, Window, Frame, Extra, Args) -> Result
+%% Called by show/4, handles generic events in a dialog box.
+
+dialog_loop(Module, Window, Frame, Extra, Args) ->
+ receive
+ {gs, Window, destroy, Data, EventArgs} ->
+ Module:on_button(Extra, 'Cancel', Args);
+ {gs, Window, configure, Data, [W,H | Rest]} ->
+ gs:config(Frame, [{width, W}, {height, H}]),
+ dialog_loop(Module, Window, Frame, Extra, Args);
+ {gs, Window, keypress, Data, [KeyCode | Rest]} ->
+ case Module:on_key(Extra, KeyCode, Args) of
+ {button, ButtonType} ->
+ Return = Module:on_button(Extra, ButtonType, Args),
+ gs:destroy(Window),
+ Return;
+ _ -> dialog_loop(Module, Window, Frame, Extra, Args)
+ end;
+ {gs, Button, click, {button, ButtonType}, EventArgs} ->
+ Return = Module:on_button(Extra, ButtonType, Args),
+ gs:destroy(Window),
+ Return;
+ Other -> % io:fwrite("~w~n", [Other]),
+ case Module:on_event(Extra, Other, Args) of
+ {button, ButtonType} ->
+ Return = Module:on_button(Extra, ButtonType, Args),
+ gs:destroy(Window),
+ Return;
+ _ -> dialog_loop(Module, Window, Frame, Extra, Args)
+ end
+ end.
+
+%%--------------------------------------------------------------------
+%% test() -> ResultTuple.
+%% Tests some of the common dialog boxes implemented with this behaviour.
+
+test() ->
+ A = gs_dialog_notify:show("Notification", "This is a notification dialog."),
+ B = gs_dialog_confirm:show("Confirmation",
+ "Are you sure you want to\ntake some sort of drastic action?"),
+ C = gs_dialog_question:show("Question", "Save your barcodes first?"),
+ D = gs_dialog_entry:show("Text Entry",
+ "Enter the address of this order:", "555 Twenty-third St."),
+ E = gs_dialog_list:show("Select One", "Select a game to play.",
+ ["Chess", "Checkers", "Othello", "Go", "Backgammon", "Kali", "Sink"]),
+ F = gs_dialog_color:show("Choose Colour", "Pick your favourite colour.",
+ {255, 0, 128}),
+ G = gs_dialog_notify:show("Lengthy Notification",
+ "This is an extremely long message with no line breaks. "
+ "The dialog box should expand to display the entire message."),
+ H = gs_dialog_notify:show("Lengthy Notification",
+ "This is an extremely\nlong message with\nmany lines.\n\n"
+ "The dialog box\nshould\nexpand\nto\ndisplay\nthe\nentire\nmessage."),
+ {A,B,C,D,E,F,G,H}.
+
+%%% END of gs_dialog.erl %%%
diff --git a/test/etags/erl-src/lines.erl b/test/etags/erl-src/lines.erl
new file mode 100644
index 0000000..6ec8750
--- /dev/null
+++ b/test/etags/erl-src/lines.erl
@@ -0,0 +1,297 @@
+%%% The contents of this file are subject to the Erlang Public License,
+%%% Version 1.0, (the "License"); you may not use this file except in
+%%% compliance with the License. You may obtain a copy of the License at
+%%% http://www.erlang.org/license/EPL1_0.txt
+%%%
+%%% Software distributed under the License is distributed on an "AS IS"
+%%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%%% the License for the specific language governing rights and limitations
+%%% under the License.
+%%%
+%%% The Original Code is lines-1.0.
+%%%
+%%% The Initial Developer of the Original Code is Ericsson Telecom
+%%% AB. Portions created by Ericsson are Copyright (C), 1998, Ericsson
+%%% Telecom AB. All Rights Reserved.
+%%%
+%%% Contributor(s): ______________________________________.
+
+%%%----------------------------------------------------------------------
+%%% #0. BASIC INFORMATION
+%%%----------------------------------------------------------------------
+%%% File: lines.erl
+%%% Author : Ulf Wiger <address@hidden>
+%%% Description : Efficient array of lines (e.g. for text editor)
+%%%
+%%% Modules used : lists
+%%%
+%%%----------------------------------------------------------------------
+%%% Efficient array of lines (e.g. for text editor)
+%%% allows for append, as well as insert, replace, delete in any position
+%%% with reasonable access times.
+%%% Rough benchmarking indicates (on a 440MHz Ultra):
+%%%
+%%% NoOfLines Append (uSec) Read (uSec) Delete (uSec)
+%%% 100 9 7 7
+%%% 1,000 14 10 11
+%%% 10,000 22 13 15
+%%% 100,000 30 16 18
+%%%
+%%% Comment on the benchmark: The times for Append and Delete are mean
+%%% times for "growing file" and "shrinking file", that is, starting from
+%%% an empty array and inserting 100,000 lines took ca 3 seconds; deleting
+%%% them took ca 1.8 seconds. The Read test involved accessing all lines
+%%% in the full array and calculating the mean time.
+%%%
+%%% The array doesn't care what goes into each position. In other words,
+%%% it can be used for any datatype -- not just lines of text.
+%%%----------------------------------------------------------------------
+
+-module(lines).
+-vsn('1.0').
+-date('00-03-13').
+-author('address@hidden').
+
+-export([new/0,
+ count/1,
+ nth/2,
+ append/2,
+ replace/3,
+ insert/3,
+ insert_after/3,
+ delete/2,
+ convert_to_list/1,
+ convert_from_list/1]).
+
+-define(BREAK, 10). % how many lines to store in each leaf
+
+-define(dbg(Fmt, Args), ok=io:format("~p: " ++ Fmt, [?LINE|Args])).
+%% new() -> line_array()
+%%
+%% Creates a new line array.
+%%
+new() ->
+ {0, []}.
+
+%% line_count(line_array()) -> integer()
+%%
+%% Returns the number of lines stored in the array
+%%
+count({N, _}) ->
+ N.
+
+%% nth(LineNo : integer(), Array : line_array()) -> line()
+%%
+%% Returns the line in position LineNo
+%%
+nth(L, _) when L < 1 ->
+ exit({out_of_range, L});
+nth(L, {LMax, _}) when L > LMax ->
+ exit({out_of_range, L});
+nth(L, {LMax, List}) when list(List) ->
+ lists:nth(L, List);
+nth(L, {LMax, {Left = {LL, _}, Right}}) when L > LL ->
+ nth(L-LL, Right);
+nth(L, {_, {Left, _}}) ->
+ nth(L, Left).
+
+%% append(Line : line(), Array : line_array()) -> line_array().
+%%
+%% Appends Line to the end of Array.
+%% e.g. append(x, [1,2,3,4]) -> [1,2,3,4,x].
+%% Returns the modified array.
+%%
+append(Line, {L, List}) when list(List), L < ?BREAK ->
+ {L+1, List ++ [Line]};
+append(Line, {L, List}) when list(List) ->
+ {L+1, {{L, List}, {1, [Line]}}};
+append(Line, {L, {Left = {LL1, L1}, Right}}) ->
+ NewRight = append(Line, Right),
+ balance_left(L+1, Left, NewRight).
+
+%% replace(LineNo : integer(), Array : line_array(), NewLine : line()) ->
+%% line_array().
+%%
+%% Replaces the line in position LineNo with NewLine.
+%% e.g. replace(3, [1,2,3,4], x) -> [1,2,x,4].
+%% Returns the modified array.
+%%
+replace(Lno, _, _) when Lno < 1 ->
+ exit({out_of_range, Lno});
+replace(Lno, {L, _}, NewLine) when Lno > L ->
+ exit({out_of_range, Lno});
+replace(Lno, {L, List}, NewLine) when list(List) ->
+ {L, replace_nth(Lno, List, NewLine)};
+replace(Lno, {L, {Left={LL1, L1}, Right={LL2, L2}}}, NewLine) when Lno > LL1 ->
+ NewRight = replace(Lno-LL1, Right, NewLine),
+ {L, Left, NewRight};
+replace(Lno, {L, {Left={LL1,L1}, Right={LL2,L2}}}, NewLine) ->
+ NewLeft = replace(Lno, Left, NewLine),
+ {L, NewLeft, Right}.
+
+%% insert(LineNo : integer(), Array : line_array(), NewLine) -> line_array().
+%%
+%% Inserts NewLine *before* the line in position LineNo.
+%% e.g. insert(3, [1,2,3,4], x) -> [1,2,x,3,4].
+%% Returns the modified array.
+%%
+insert(Lno, _, _) when Lno < 1 ->
+ exit({out_of_range, Lno});
+insert(Lno, {L, _}, NewLine) when Lno > L ->
+ exit({out_of_range, Lno});
+insert(Lno, {L, List}, NewLine) when list(List) ->
+ if L < ?BREAK ->
+ {L+1, insert_nth(Lno, List, NewLine)};
+ true ->
+ NewList = insert_nth(Lno, List, NewLine),
+ {L1, L2} = split_at(?BREAK, NewList),
+ NewL = L+1,
+ {NewL, {{?BREAK, L1}, {NewL-?BREAK, L2}}}
+ end;
+insert(Lno, {L, {Left={LL,_}, Right}}, NewLine) when Lno > LL ->
+ NewRight = insert(Lno-LL, Right, NewLine),
+ balance_left(L+1, Left, NewRight);
+insert(Lno, {L, {Left, Right}}, NewLine) ->
+ NewLeft = insert(Lno, Left, NewLine),
+ balance_right(L+1, NewLeft, Right).
+
+%% insert_after(LineNo : integer(), Array : line_array(), NewLine) ->
+%% line_array().
+%%
+%% Inserts NewLine *after* the line in position LineNo.
+%% e.g. insert(3, [1,2,3,4], x) -> [1,2,3,x,4].
+%% Returns the modified array.
+%%
+insert_after(Lno, _, _) when Lno < 1 ->
+ exit({out_of_range, Lno});
+insert_after(Lno, {L, _}, NewLine) when Lno > L ->
+ exit({out_of_range, Lno});
+insert_after(Lno, {L, List}, NewLine) when list(List) ->
+ if L < ?BREAK ->
+ {L+1, insert_after_nth(Lno, List, NewLine)};
+ true ->
+ NewList = insert_after_nth(Lno, List, NewLine),
+ {L1, L2} = split_at(?BREAK, NewList),
+ NewL = L+1,
+ {NewL, {{?BREAK, L1}, {NewL-?BREAK, L2}}}
+ end;
+insert_after(Lno, {L, {Left={LL,_}, Right}}, NewLine) when Lno > LL ->
+ NewRight = insert_after(Lno-LL, Right, NewLine),
+ balance_left(L+1, Left, NewRight);
+insert_after(Lno, {L, {Left, Right}}, NewLine) ->
+ NewLeft = insert_after(Lno, Left, NewLine),
+ balance_right(L+1, NewLeft, Right).
+
+
+%% delete(LineNo : integer(), Array : line_array()) -> line_array().
+%%
+%% Deletes the line in position LineNo.
+%% e.g. delete(3, [1,2,3,4]) -> [1,2,4].
+%% Returns the modified array.
+%%
+delete(Lno, _) when Lno < 1 ->
+ exit({out_of_range, Lno});
+delete(Lno, {N_Tot, _}) when Lno > N_Tot ->
+ exit({out_of_range, Lno});
+delete(Lno, {N, List}) when list(List) ->
+ {N-1, delete_nth(Lno, List)};
+delete(Lno, {N, {Left = {N_Left, _}, Right}}) when Lno > N_Left ->
+ case delete(Lno-N_Left, Right) of
+ {0, _} ->
+ case N-1 of N_Left -> ok end, % Assert
+ Left;
+ NewRight ->
+ balance_right(N-1, Left, NewRight)
+ end;
+delete(Lno, {N, {Left, Right = {N_Right,_}}}) ->
+ case delete(Lno, Left) of
+ {0, _} ->
+ case N-1 of N_Right -> ok end, % Assert
+ Right;
+ NewLeft ->
+ balance_left(N-1, NewLeft, Right)
+ end.
+
+convert_to_list({_, List}) when list(List) ->
+ List;
+convert_to_list({L, {Left, Right}}) ->
+ convert_to_list(Left) ++ convert_to_list(Right).
+
+convert_from_list(L) when list(L) ->
+ lists:foldl(fun(Ln, Lsx) ->
+ append(Ln, Lsx)
+ end, new(), L).
+
+%%% ===========================================================
+%%% internal functions
+%%% ===========================================================
+
+replace_nth(1, [H|T], X) ->
+ [X|T];
+replace_nth(N, [H|T], X) ->
+ [H|replace_nth(N-1, T, X)].
+
+insert_nth(1, L, X) ->
+ [X|L];
+insert_nth(N, [H|T], X) ->
+ [H|insert_nth(N-1, T, X)].
+
+insert_after_nth(1, [H|T], X) ->
+ [H,X|T];
+insert_after_nth(N, [H|T], X) ->
+ [H|insert_after_nth(N-1, T, X)].
+
+delete_nth(1, [H|T]) ->
+ T;
+delete_nth(N, [H|T]) ->
+ [H|delete_nth(N-1, T)].
+
+%% split_at(Pos, List) -> {List1, List2}
+%% split List into two after position Pos (List1 includes List[Pos])
+%%
+split_at(Pos, L) ->
+ split_at(Pos, L, []).
+
+split_at(0, L, Acc) ->
+ {lists:reverse(Acc), L};
+split_at(Pos, [H|T], Acc) ->
+ split_at(Pos-1, T, [H|Acc]).
+
+
+%% Balancing functions
+%% Since we know whether we inserted/deleted in the right or left subtree,
+%% we have explicit balancing functions for each case.
+%% We rebalance if the number of elements in one sub-subtree exceeds the
+%% sum of elements in the others.
+
+balance_left(N_Tot,
+ Left = {N_Left, _},
+ Right = {N_Right, {RLeft = {N_RLeft, _},
+ RRight = {N_RRight, _}}}) ->
+ NewN_Left = N_Left + N_RLeft,
+ if N_RRight > NewN_Left ->
+ NewLeft = {NewN_Left, {Left, RLeft}},
+ NewRight = RRight,
+ {N_Tot, {NewLeft, NewRight}};
+ true ->
+ {N_Tot, {Left, Right}}
+ end;
+balance_left(N_Tot, Left, Right) ->
+ {N_Tot, {Left, Right}}.
+
+balance_right(N_Tot,
+ Left = {N_Left, {LLeft = {N_LLeft, _},
+ LRight = {N_LRight, _}}},
+ Right = {N_Right, _}) ->
+ NewN_Right = N_Right + N_LRight,
+ if N_LLeft > NewN_Right ->
+ NewLeft = LLeft,
+ NewRight = {NewN_Right, {LRight, Right}},
+ {N_Tot, {NewLeft, NewRight}};
+ true ->
+ {N_Tot, {Left, Right}}
+ end;
+balance_right(N_Tot, Left, Right) ->
+ {N_Tot, {Left, Right}}.
+
+
diff --git a/test/etags/erl-src/lists.erl.gz b/test/etags/erl-src/lists.erl.gz
new file mode 100644
index 0000000..5ba2e16
Binary files /dev/null and b/test/etags/erl-src/lists.erl.gz differ
diff --git a/test/etags/f-src/entry.for b/test/etags/f-src/entry.for
new file mode 100644
index 0000000..52b8a24
--- /dev/null
+++ b/test/etags/f-src/entry.for
@@ -0,0 +1,581 @@
+C$Procedure PRTPKG ( Declare Arguments for Error Message Routines )
+
+ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL, TRACE, DFAULT, TYPE )
+
+C$ Abstract
+C
+C Declare the arguments for the error message selection entry
+C points. DO NOT CALL THIS ROUTINE.
+C
+C$ Required_Reading
+C
+C ERROR
+C
+C$ Keywords
+C
+C ERROR
+C
+C$ Declarations
+
+ LOGICAL SHORT
+ LOGICAL EXPL
+ LOGICAL LONG
+ LOGICAL TRACE
+ LOGICAL DFAULT
+ CHARACTER*(*) TYPE
+
+ INTEGER FILEN
+ PARAMETER ( FILEN = 128 )
+
+
+C$ Brief_I/O
+C
+C VARIABLE I/O ENTRY
+C -------- --- --------------------------------------------------
+C
+C SHORT I SETPRT
+C EXPL I SETPRT
+C LONG I SETPRT
+C TRACE I SETPRT
+C DFAULT I SETPRT
+C TYPE I MSGSEL
+C FILEN P MSGSEL
+C
+C$ Detailed_Input
+C
+C See the ENTRY points for discussions of their arguments.
+C
+C$ Detailed_Output
+C
+C See the ENTRY points for discussions of their arguments.
+C
+C$ Parameters
+C
+C See the ENTRY points for discussions of their parameters.
+C
+C$ Exceptions
+C
+C This routine signals an error IF IT IS CALLED.
+C
+C$ Files
+C
+C None.
+C
+C$ Particulars
+C
+C DO NOT CALL THIS ROUTINE.
+C
+C The entry points declared in this routine are:
+C
+C SETPRT
+C MSGSEL
+C
+C There is no reason to call this subroutine.
+C The purpose of this subroutine is to make the
+C declarations required by the various entry points.
+C This routine has no run-time function.
+C
+C$ Examples
+C
+C None. DO NOT CALL THIS ROUTINE.
+C
+C$ Restrictions
+C
+C DO NOT CALL THIS ROUTINE.
+C
+C$ Literature_References
+C
+C None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C-
+C Comment section for permuted index source lines was added
+C following the header.
+C
+C
+C-&
+
+C$ Index_Entries
+C
+C None.
+C
+C-&
+
+
+
+C$ Revisions
+C
+C
+C- Beta Version 1.0.1, 08-FEB-1989
+C
+C PRTPKG, though it performs no run-time function, must
+C still return a value, in order to comply with the Fortran
+C standard. So, now it does.
+C
+C- Beta Version 1.0.1, 08-FEB-1989
+C
+C Warnings added to discourage use of this routine.
+C Parameter declarations moved to "Declarations" section.
+C Two local declarations moved to the correct location.
+C-&
+
+
+
+C
+C SPICELIB functions
+C
+
+ LOGICAL SETPRT
+ LOGICAL MSGSEL
+
+C
+C Local variables:
+C
+ CHARACTER*(FILEN) DEVICE
+
+ CHARACTER*(10) LTYPE
+ CHARACTER*(10) LOCTYP
+
+C
+C Saved variables:
+C
+ LOGICAL SVSHRT
+ LOGICAL SVEXPL
+ LOGICAL SVLONG
+ LOGICAL SVTRAC
+ LOGICAL SVDFLT
+
+ SAVE SVSHRT
+ SAVE SVEXPL
+ SAVE SVLONG
+ SAVE SVTRAC
+ SAVE SVDFLT
+
+C
+C Initial values:
+C
+ DATA SVSHRT / .TRUE. /
+ DATA SVEXPL / .TRUE. /
+ DATA SVLONG / .TRUE. /
+ DATA SVTRAC / .TRUE. /
+ DATA SVDFLT / .TRUE. /
+
+C
+C Executable Code:
+C
+
+ CALL GETDEV ( DEVICE )
+
+ CALL WRLINE ( DEVICE,
+ . 'PRTPKG: You have called an entry point which' //
+ . ' has no run-time function; this may indicate' //
+ . ' a program bug. Please check the PRTPKG' //
+ . ' documentation. ' )
+
+ CALL WRLINE ( DEVICE, 'SPICE(BOGUSENTRY)' )
+
+ PRTPKG = .FALSE.
+
+ RETURN
+
+
+
+
+
+
+C$Procedure SETPRT ( Store Error Message Types to be Output )
+
+C ENTRY BOGUS (X, Y, Z)
+
+ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, DFAULT )
+
+C$ Abstract
+C
+C Store (a representation of) the selection of types of error
+C messages to be output. DO NOT CALL THIS ROUTINE.
+C
+C$ Required_Reading
+C
+C ERROR
+C
+C$ Keywords
+C
+C ERROR
+C
+C$ Declarations
+C
+C LOGICAL SHORT
+C LOGICAL EXPL
+C LOGICAL LONG
+C LOGICAL TRACE
+C LOGICAL DFAULT
+C
+C$ Brief_I/O
+C
+C VARIABLE I/O DESCRIPTION
+C -------- --- --------------------------------------------------
+C
+C SHORT I Select output of short error message?
+C EXPL I Select output of explanation of short message?
+C LONG I Select output of long error message?
+C TRACE I Select output of traceback?
+C DFAULT I Select output of default message?
+C
+C$ Detailed_Input
+C
+C SHORT indicates whether the short error message is selected
+C as one of the error messages to be output when an error
+C is detected. A value of .TRUE. indicates that the
+C short error message IS selected.
+C
+C EXPL indicates whether the explanatory text for the short
+C error message is selected as one of the error messages
+C to be output when an error is detected. A value of
+C .TRUE. indicates that the explanatory text for the
+C short error message IS selected.
+C
+C LONG indicates whether the long error message is selected
+C as one of the error messages to be output when an error
+C is detected. A value of .TRUE. indicates that the
+C long error message IS selected.
+C
+C TRACE indicates whether the traceback is selected
+C as one of the error messages to be output when an error
+C is detected. A value of .TRUE. indicates that the
+C traceback IS selected.
+C
+C DFAULT indicates whether the default message is selected
+C as one of the error messages to be output when an error
+C is detected. A value of .TRUE. indicates that the
+C default message IS selected.
+C
+C
+C$ Detailed_Output
+C
+C None.
+C
+C$ Parameters
+C
+C None.
+C
+C$ Exceptions
+C
+C None.
+C
+C$ Files
+C
+C None.
+C
+C$ Particulars
+C
+C DO NOT CALL THIS ROUTINE.
+C
+C The effect of this routine is an ENVIRONMENTAL one. This
+C routine performs no output; it stores the error message
+C selection provided as input.
+C
+C Note that the actual output of error messages depends not
+C only on the selection made using this routine, but also
+C on the selection of the error output device (see ERRDEV)
+C and the choice of error response action (see ERRACT). If
+C the action is not 'IGNORE' (possible choices are
+C 'IGNORE', 'ABORT', 'DEFAULT', 'REPORT', and 'RETURN'),
+C the selected error messages will be written to the chosen
+C output device when an error is detected.
+C
+C$ Examples
+C
+C 1. In this example, the short and long messages are selected.
+C
+C C
+C C Select short and long error messages for output
+C C (We don't examine the status returned because no
+C C errors are detected by SETPRT):
+C C
+C
+C STATUS = SETPRT ( .TRUE., .FALSE., .TRUE., .FALSE.,
+C . .FALSE. )
+C
+C
+C
+C$ Restrictions
+C
+C DO NOT CALL THIS ROUTINE.
+C
+C$ Literature_References
+C
+C None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C-
+C
+C-&
+
+C$ Index_Entries
+C
+C None.
+C
+C-&
+
+
+C$ Revisions
+C
+C-
+C Warnings added to discourage use of this routine in
+C non-error-handling code. Parameters section added.
+C
+C-&
+
+
+
+C
+C Executable Code:
+C
+
+
+ IF ( SHORT ) THEN
+ SVSHRT = .TRUE.
+ ELSE
+ SVSHRT = .FALSE.
+ END IF
+
+
+
+ IF ( EXPL ) THEN
+ SVEXPL = .TRUE.
+ ELSE
+ SVEXPL = .FALSE.
+ END IF
+
+
+
+ IF ( LONG ) THEN
+ SVLONG = .TRUE.
+ ELSE
+ SVLONG = .FALSE.
+ END IF
+
+
+
+ IF ( TRACE ) THEN
+ SVTRAC = .TRUE.
+ ELSE
+ SVTRAC = .FALSE.
+ END IF
+
+ IF ( DFAULT ) THEN
+ SVDFLT = .TRUE.
+ ELSE
+ SVDFLT = .FALSE.
+ END IF
+
+
+C
+C We assign a value to SETPRT, but this value is
+C not meaningful...
+C
+ SETPRT = .TRUE.
+
+
+ RETURN
+
+
+
+
+C$Procedure MSGSEL ( Is This Message Type Selected for Output? )
+
+ ENTRY MSGSEL ( TYPE )
+
+C$ Abstract
+C
+C Indicate whether the specified message type has been selected
+C for output.
+C
+C$ Required_Reading
+C
+C ERROR
+C
+C$ Keywords
+C
+C ERROR
+C
+C$ Declarations
+C
+C TYPE
+C
+C$ Brief_I/O
+C
+C VARIABLE I/O DESCRIPTION
+C -------- --- --------------------------------------------------
+C
+C TYPE I Type of message whose selection status is queried.
+C FILEN P Maximum length of a file name.
+C
+C The function takes the value .TRUE. if the message type indicated
+C by TYPE has been selected for output to the error output device.
+C
+C
+C$ Detailed_Input
+C
+C TYPE Refers to a type of error message. Possible values
+C are 'SHORT', 'EXPLAIN', 'LONG', 'DEFAULT',
+C and 'TRACEBACK'.
+C
+C$ Detailed_Output
+C
+C The function takes the value .TRUE. if the message type indicated
+C by TYPE has been selected for output to the error output device.
+C
+C$ Parameters
+C
+C FILEN is the maximum length of a file name.
+C
+C$ Exceptions
+C
+C Additionally, invalid values of TYPE are detected.
+C
+C The short error message set in this case is:
+C 'SPICE(INVALIDMSGTYPE)'
+C
+C The handling of this error is a special case; to avoid recursion
+C problems, SIGERR is not called when the error is detected.
+C Instead, the short and long error messages are output directly.
+C
+C
+C$ Files
+C
+C None.
+C
+C$ Particulars
+C
+C This routine is part of the SPICELIB error handling mechanism.
+C
+C Note that even though a given type of message may have been
+C selected for output, the output device and error response
+C action must also have been selected appropriately.
+C Use ERRDEV to choose the output device for error messages.
+C Use ERRACT to choose the error response action. Any action
+C other than 'IGNORE' will result in error messages being
+C written to the error output device when errors are detected.
+C See ERRACT for details.
+C
+C$ Examples
+C
+C
+C 1. We want to know if the short message has been selected
+C for output:
+C
+C C
+C C Test whether the short message has been selected:
+C C
+C
+C SELECT = MSGSEL ( 'SHORT' )
+C
+C
+C$ Restrictions
+C
+C None.
+C
+C$ Literature_References
+C
+C None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C
+C-&
+
+C$ Index_Entries
+C
+C None.
+C
+C-&
+
+
+C$ Revisions
+C
+C
+C Parameters section added; parameter declaration added
+C to brief I/O section as well.
+C
+C-&
+
+
+
+C
+C Executable Code:
+C
+
+ CALL LJUST ( TYPE, LTYPE )
+ CALL UCASE ( LTYPE, LTYPE )
+
+
+ IF ( LTYPE .EQ. 'SHORT' ) THEN
+
+ MSGSEL = SVSHRT
+
+ ELSE IF ( LTYPE .EQ. 'EXPLAIN' ) THEN
+
+ MSGSEL = SVEXPL
+
+ ELSE IF ( LTYPE .EQ. 'LONG' ) THEN
+
+ MSGSEL = SVLONG
+
+ ELSE IF ( LTYPE .EQ. 'TRACEBACK' ) THEN
+
+ MSGSEL = SVTRAC
+
+ ELSE IF ( LTYPE .EQ. 'DEFAULT' ) THEN
+
+ MSGSEL = SVDFLT
+
+ ELSE
+
+C
+C Bad value of type! We have a special case here; to
+C avoid recursion, we output the messages directly,
+C rather than call SIGERR.
+C
+
+ CALL GETDEV ( DEVICE )
+
+ CALL WRLINE ( DEVICE, 'SPICE(INVALIDMSGTYPE)' )
+
+ CALL WRLINE ( DEVICE, ' ' )
+
+ LOCTYP = TYPE
+
+C
+C Note: What looks like a typo below isn't; there's
+C a line break after the substring 'specified' of
+C the "word" 'specifiedwas'.
+C
+
+ CALL WRLINE ( DEVICE,
+
+ . 'MSGSEL: An invalid error message type was supplied as' //
+ . ' input; the type specifiedwas: ' // LOCTYP
+
+ . )
+
+
+ END IF
+
+ subroutine
+ & intensity1(efv,fv,svin,svquad,sfpv,maxp,value,jndex,k,kj,jmod,isup)
+
+ character*(*) function foo()
+
+ END
diff --git a/test/etags/f-src/entry.strange.gz
b/test/etags/f-src/entry.strange.gz
new file mode 100644
index 0000000..5f22edc
Binary files /dev/null and b/test/etags/f-src/entry.strange.gz differ
diff --git a/test/etags/f-src/entry.strange_suffix
b/test/etags/f-src/entry.strange_suffix
new file mode 100644
index 0000000..52b8a24
--- /dev/null
+++ b/test/etags/f-src/entry.strange_suffix
@@ -0,0 +1,581 @@
+C$Procedure PRTPKG ( Declare Arguments for Error Message Routines )
+
+ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL, TRACE, DFAULT, TYPE )
+
+C$ Abstract
+C
+C Declare the arguments for the error message selection entry
+C points. DO NOT CALL THIS ROUTINE.
+C
+C$ Required_Reading
+C
+C ERROR
+C
+C$ Keywords
+C
+C ERROR
+C
+C$ Declarations
+
+ LOGICAL SHORT
+ LOGICAL EXPL
+ LOGICAL LONG
+ LOGICAL TRACE
+ LOGICAL DFAULT
+ CHARACTER*(*) TYPE
+
+ INTEGER FILEN
+ PARAMETER ( FILEN = 128 )
+
+
+C$ Brief_I/O
+C
+C VARIABLE I/O ENTRY
+C -------- --- --------------------------------------------------
+C
+C SHORT I SETPRT
+C EXPL I SETPRT
+C LONG I SETPRT
+C TRACE I SETPRT
+C DFAULT I SETPRT
+C TYPE I MSGSEL
+C FILEN P MSGSEL
+C
+C$ Detailed_Input
+C
+C See the ENTRY points for discussions of their arguments.
+C
+C$ Detailed_Output
+C
+C See the ENTRY points for discussions of their arguments.
+C
+C$ Parameters
+C
+C See the ENTRY points for discussions of their parameters.
+C
+C$ Exceptions
+C
+C This routine signals an error IF IT IS CALLED.
+C
+C$ Files
+C
+C None.
+C
+C$ Particulars
+C
+C DO NOT CALL THIS ROUTINE.
+C
+C The entry points declared in this routine are:
+C
+C SETPRT
+C MSGSEL
+C
+C There is no reason to call this subroutine.
+C The purpose of this subroutine is to make the
+C declarations required by the various entry points.
+C This routine has no run-time function.
+C
+C$ Examples
+C
+C None. DO NOT CALL THIS ROUTINE.
+C
+C$ Restrictions
+C
+C DO NOT CALL THIS ROUTINE.
+C
+C$ Literature_References
+C
+C None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C-
+C Comment section for permuted index source lines was added
+C following the header.
+C
+C
+C-&
+
+C$ Index_Entries
+C
+C None.
+C
+C-&
+
+
+
+C$ Revisions
+C
+C
+C- Beta Version 1.0.1, 08-FEB-1989
+C
+C PRTPKG, though it performs no run-time function, must
+C still return a value, in order to comply with the Fortran
+C standard. So, now it does.
+C
+C- Beta Version 1.0.1, 08-FEB-1989
+C
+C Warnings added to discourage use of this routine.
+C Parameter declarations moved to "Declarations" section.
+C Two local declarations moved to the correct location.
+C-&
+
+
+
+C
+C SPICELIB functions
+C
+
+ LOGICAL SETPRT
+ LOGICAL MSGSEL
+
+C
+C Local variables:
+C
+ CHARACTER*(FILEN) DEVICE
+
+ CHARACTER*(10) LTYPE
+ CHARACTER*(10) LOCTYP
+
+C
+C Saved variables:
+C
+ LOGICAL SVSHRT
+ LOGICAL SVEXPL
+ LOGICAL SVLONG
+ LOGICAL SVTRAC
+ LOGICAL SVDFLT
+
+ SAVE SVSHRT
+ SAVE SVEXPL
+ SAVE SVLONG
+ SAVE SVTRAC
+ SAVE SVDFLT
+
+C
+C Initial values:
+C
+ DATA SVSHRT / .TRUE. /
+ DATA SVEXPL / .TRUE. /
+ DATA SVLONG / .TRUE. /
+ DATA SVTRAC / .TRUE. /
+ DATA SVDFLT / .TRUE. /
+
+C
+C Executable Code:
+C
+
+ CALL GETDEV ( DEVICE )
+
+ CALL WRLINE ( DEVICE,
+ . 'PRTPKG: You have called an entry point which' //
+ . ' has no run-time function; this may indicate' //
+ . ' a program bug. Please check the PRTPKG' //
+ . ' documentation. ' )
+
+ CALL WRLINE ( DEVICE, 'SPICE(BOGUSENTRY)' )
+
+ PRTPKG = .FALSE.
+
+ RETURN
+
+
+
+
+
+
+C$Procedure SETPRT ( Store Error Message Types to be Output )
+
+C ENTRY BOGUS (X, Y, Z)
+
+ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, DFAULT )
+
+C$ Abstract
+C
+C Store (a representation of) the selection of types of error
+C messages to be output. DO NOT CALL THIS ROUTINE.
+C
+C$ Required_Reading
+C
+C ERROR
+C
+C$ Keywords
+C
+C ERROR
+C
+C$ Declarations
+C
+C LOGICAL SHORT
+C LOGICAL EXPL
+C LOGICAL LONG
+C LOGICAL TRACE
+C LOGICAL DFAULT
+C
+C$ Brief_I/O
+C
+C VARIABLE I/O DESCRIPTION
+C -------- --- --------------------------------------------------
+C
+C SHORT I Select output of short error message?
+C EXPL I Select output of explanation of short message?
+C LONG I Select output of long error message?
+C TRACE I Select output of traceback?
+C DFAULT I Select output of default message?
+C
+C$ Detailed_Input
+C
+C SHORT indicates whether the short error message is selected
+C as one of the error messages to be output when an error
+C is detected. A value of .TRUE. indicates that the
+C short error message IS selected.
+C
+C EXPL indicates whether the explanatory text for the short
+C error message is selected as one of the error messages
+C to be output when an error is detected. A value of
+C .TRUE. indicates that the explanatory text for the
+C short error message IS selected.
+C
+C LONG indicates whether the long error message is selected
+C as one of the error messages to be output when an error
+C is detected. A value of .TRUE. indicates that the
+C long error message IS selected.
+C
+C TRACE indicates whether the traceback is selected
+C as one of the error messages to be output when an error
+C is detected. A value of .TRUE. indicates that the
+C traceback IS selected.
+C
+C DFAULT indicates whether the default message is selected
+C as one of the error messages to be output when an error
+C is detected. A value of .TRUE. indicates that the
+C default message IS selected.
+C
+C
+C$ Detailed_Output
+C
+C None.
+C
+C$ Parameters
+C
+C None.
+C
+C$ Exceptions
+C
+C None.
+C
+C$ Files
+C
+C None.
+C
+C$ Particulars
+C
+C DO NOT CALL THIS ROUTINE.
+C
+C The effect of this routine is an ENVIRONMENTAL one. This
+C routine performs no output; it stores the error message
+C selection provided as input.
+C
+C Note that the actual output of error messages depends not
+C only on the selection made using this routine, but also
+C on the selection of the error output device (see ERRDEV)
+C and the choice of error response action (see ERRACT). If
+C the action is not 'IGNORE' (possible choices are
+C 'IGNORE', 'ABORT', 'DEFAULT', 'REPORT', and 'RETURN'),
+C the selected error messages will be written to the chosen
+C output device when an error is detected.
+C
+C$ Examples
+C
+C 1. In this example, the short and long messages are selected.
+C
+C C
+C C Select short and long error messages for output
+C C (We don't examine the status returned because no
+C C errors are detected by SETPRT):
+C C
+C
+C STATUS = SETPRT ( .TRUE., .FALSE., .TRUE., .FALSE.,
+C . .FALSE. )
+C
+C
+C
+C$ Restrictions
+C
+C DO NOT CALL THIS ROUTINE.
+C
+C$ Literature_References
+C
+C None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C-
+C
+C-&
+
+C$ Index_Entries
+C
+C None.
+C
+C-&
+
+
+C$ Revisions
+C
+C-
+C Warnings added to discourage use of this routine in
+C non-error-handling code. Parameters section added.
+C
+C-&
+
+
+
+C
+C Executable Code:
+C
+
+
+ IF ( SHORT ) THEN
+ SVSHRT = .TRUE.
+ ELSE
+ SVSHRT = .FALSE.
+ END IF
+
+
+
+ IF ( EXPL ) THEN
+ SVEXPL = .TRUE.
+ ELSE
+ SVEXPL = .FALSE.
+ END IF
+
+
+
+ IF ( LONG ) THEN
+ SVLONG = .TRUE.
+ ELSE
+ SVLONG = .FALSE.
+ END IF
+
+
+
+ IF ( TRACE ) THEN
+ SVTRAC = .TRUE.
+ ELSE
+ SVTRAC = .FALSE.
+ END IF
+
+ IF ( DFAULT ) THEN
+ SVDFLT = .TRUE.
+ ELSE
+ SVDFLT = .FALSE.
+ END IF
+
+
+C
+C We assign a value to SETPRT, but this value is
+C not meaningful...
+C
+ SETPRT = .TRUE.
+
+
+ RETURN
+
+
+
+
+C$Procedure MSGSEL ( Is This Message Type Selected for Output? )
+
+ ENTRY MSGSEL ( TYPE )
+
+C$ Abstract
+C
+C Indicate whether the specified message type has been selected
+C for output.
+C
+C$ Required_Reading
+C
+C ERROR
+C
+C$ Keywords
+C
+C ERROR
+C
+C$ Declarations
+C
+C TYPE
+C
+C$ Brief_I/O
+C
+C VARIABLE I/O DESCRIPTION
+C -------- --- --------------------------------------------------
+C
+C TYPE I Type of message whose selection status is queried.
+C FILEN P Maximum length of a file name.
+C
+C The function takes the value .TRUE. if the message type indicated
+C by TYPE has been selected for output to the error output device.
+C
+C
+C$ Detailed_Input
+C
+C TYPE Refers to a type of error message. Possible values
+C are 'SHORT', 'EXPLAIN', 'LONG', 'DEFAULT',
+C and 'TRACEBACK'.
+C
+C$ Detailed_Output
+C
+C The function takes the value .TRUE. if the message type indicated
+C by TYPE has been selected for output to the error output device.
+C
+C$ Parameters
+C
+C FILEN is the maximum length of a file name.
+C
+C$ Exceptions
+C
+C Additionally, invalid values of TYPE are detected.
+C
+C The short error message set in this case is:
+C 'SPICE(INVALIDMSGTYPE)'
+C
+C The handling of this error is a special case; to avoid recursion
+C problems, SIGERR is not called when the error is detected.
+C Instead, the short and long error messages are output directly.
+C
+C
+C$ Files
+C
+C None.
+C
+C$ Particulars
+C
+C This routine is part of the SPICELIB error handling mechanism.
+C
+C Note that even though a given type of message may have been
+C selected for output, the output device and error response
+C action must also have been selected appropriately.
+C Use ERRDEV to choose the output device for error messages.
+C Use ERRACT to choose the error response action. Any action
+C other than 'IGNORE' will result in error messages being
+C written to the error output device when errors are detected.
+C See ERRACT for details.
+C
+C$ Examples
+C
+C
+C 1. We want to know if the short message has been selected
+C for output:
+C
+C C
+C C Test whether the short message has been selected:
+C C
+C
+C SELECT = MSGSEL ( 'SHORT' )
+C
+C
+C$ Restrictions
+C
+C None.
+C
+C$ Literature_References
+C
+C None.
+C
+C$ Author_and_Institution
+C
+C
+C$ Version
+C
+C
+C-&
+
+C$ Index_Entries
+C
+C None.
+C
+C-&
+
+
+C$ Revisions
+C
+C
+C Parameters section added; parameter declaration added
+C to brief I/O section as well.
+C
+C-&
+
+
+
+C
+C Executable Code:
+C
+
+ CALL LJUST ( TYPE, LTYPE )
+ CALL UCASE ( LTYPE, LTYPE )
+
+
+ IF ( LTYPE .EQ. 'SHORT' ) THEN
+
+ MSGSEL = SVSHRT
+
+ ELSE IF ( LTYPE .EQ. 'EXPLAIN' ) THEN
+
+ MSGSEL = SVEXPL
+
+ ELSE IF ( LTYPE .EQ. 'LONG' ) THEN
+
+ MSGSEL = SVLONG
+
+ ELSE IF ( LTYPE .EQ. 'TRACEBACK' ) THEN
+
+ MSGSEL = SVTRAC
+
+ ELSE IF ( LTYPE .EQ. 'DEFAULT' ) THEN
+
+ MSGSEL = SVDFLT
+
+ ELSE
+
+C
+C Bad value of type! We have a special case here; to
+C avoid recursion, we output the messages directly,
+C rather than call SIGERR.
+C
+
+ CALL GETDEV ( DEVICE )
+
+ CALL WRLINE ( DEVICE, 'SPICE(INVALIDMSGTYPE)' )
+
+ CALL WRLINE ( DEVICE, ' ' )
+
+ LOCTYP = TYPE
+
+C
+C Note: What looks like a typo below isn't; there's
+C a line break after the substring 'specified' of
+C the "word" 'specifiedwas'.
+C
+
+ CALL WRLINE ( DEVICE,
+
+ . 'MSGSEL: An invalid error message type was supplied as' //
+ . ' input; the type specifiedwas: ' // LOCTYP
+
+ . )
+
+
+ END IF
+
+ subroutine
+ & intensity1(efv,fv,svin,svquad,sfpv,maxp,value,jndex,k,kj,jmod,isup)
+
+ character*(*) function foo()
+
+ END
diff --git a/test/etags/forth-src/test-forth.fth
b/test/etags/forth-src/test-forth.fth
new file mode 100644
index 0000000..ce4069d
--- /dev/null
+++ b/test/etags/forth-src/test-forth.fth
@@ -0,0 +1,53 @@
+\
+\ This is a file that tests Forth tags
+\
+\ You should get:
+\ a-forth-word (twice)
+\ a-forth-constant!
+\ a-forth-value?
+\ :a-forth-dictionary-entry
+\ #a-defer-word
+\ (another-forth-word)
+\ (a-forth-constant
+\ #some-storage
+\ assemby-code-word
+
+
+\ This is a forth comment
+
+( Another forth comment )
+
+: a-forth-word ( a b c -- a*b+c ) + * ;
+
+99 constant a-forth-constant!
+55 value a-forth-value?
+create :a-forth-dictionary-entry
+0 c, 9 c, 5 c, 7 c, 999999 ,
+
+defer #a-defer-word
+
+: (another-forth-word) ( -- )
+ ." Hello world"
+;
+
+' (another-forth-word) to #a-defer-word
+
+struct
+ 9 field >field1
+ 5 field >field2
+constant (a-forth-constant
+
+
+2000 buffer: #some-storage
+
+code assemby-code-word ( dunno what it does )
+ g1 g2 mov \ Move from here to there
+ sc2 h# 13 sc2 sllx \ shift stuff 'round
+c;
+
+\ And for the heck of it, redefine a-forth-word.
+
+: a-forth-word ( a b c -- )
+ a-forth-word dup 200 > abort" Eek. The number is too big"
+ ." Result is " . cr
+;
diff --git a/test/etags/html-src/algrthms.html
b/test/etags/html-src/algrthms.html
new file mode 100644
index 0000000..322dafa
--- /dev/null
+++ b/test/etags/html-src/algrthms.html
@@ -0,0 +1,519 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Chip Fleming">
+ <meta name="GENERATOR" content="Mozilla/4.7 [en] (Win95; U) [Netscape]">
+ <title>Tutorial on Convolutional Coding with Viterbi Decoding--Description
of the Data Generation, Convolutional Encoding, Channel Mapping and AWGN, and
Quantizing Algorithms</title>
+</head>
+<body>
+<a NAME="algorithms"></a><b><font face="Arial"><font size=+1>Description
+of the Algorithms (Part 1)</font></font></b>
+<p> The steps involved in simulating a communication channel using
+convolutional encoding and Viterbi decoding are as follows:
+<ul>
+<li>
+<a href="#genalgorithm">Generate the data</a> to be transmitted through
+the channel-result is binary data bits</li>
+
+<li>
+<a href="#conalgorithm">Convolutionally encode</a> the data-result is channel
+symbols</li>
+
+<li>
+<a href="#mapping">Map the one/zero channel symbols</a> onto an antipodal
+baseband signal, producing transmitted channel symbols</li>
+
+<li>
+<a href="#addnoise">Add noise</a> to the transmitted channel symbols-result
+is received channel symbols</li>
+
+<li>
+<a href="#quantizing">Quantize</a> the received channel levels-one bit
+quantization is called hard-decision, and two to n bit quantization is
+called soft-decision (n is usually three or four)</li>
+
+<li>
+<a href="algrthms2.html">Perform Viterbi decoding</a> on the quantized
+received channel symbols-result is again binary data bits</li>
+
+<li>
+Compare the decoded data bits to the transmitted data bits and count the
+number of errors.</li>
+</ul>
+<i>Many of you will notice that I left out the steps of modulating the
+channel symbols onto a transmitted carrier, and then demodulating the received
+carrier to recover the channel symbols. You're right, but we can accurately
+model the effects of AWGN even though we bypass those steps.</i>
+<p><a NAME="genalgorithm"></a><b><i><font face="Arial">Generating the
Data</font></i></b>
+<p>Generating the data to be transmitted through the channel can be
accomplished
+quite simply by using a random number generator. One that produces a uniform
+distribution of numbers on the interval 0 to a maximum value is provided
+in C: <tt>rand ()</tt>. Using this function, we can say that any value
+less than half of the maximum value is a zero; any value greater than or
+equal to half of the maximum value is a one.
+<p><a NAME="conalgorithm"></a><b><i><font face="Arial">Convolutionally
+Encoding the Data</font></i></b>
+<p>Convolutionally encoding the data is accomplished using a shift register
+and associated combinatorial logic that performs modulo-two addition. (A
+shift register is merely a chain of flip-flops wherein the output of the
+nth flip-flop is tied to the input of the (n+1)th flip-flop. Every time
+the active edge of the clock occurs, the input to the flip-flop is clocked
+through to the output, and thus the data are shifted over one stage.) The
+combinatorial logic is often in the form of cascaded exclusive-or gates.
+As a reminder, exclusive-or gates are two-input, one-output gates often
+represented by the logic symbol shown below,
+<center>
+<p><img SRC="figs/xor_gate.gif" ALT="exclusive-or gate symbol" height=64
width=93></center>
+
+<p>that implement the following truth-table:
+<br>
+<br>
+<center><table BORDER CELLPADDING=7 WIDTH="218" >
+<tr>
+<td VALIGN=TOP WIDTH="28%">
+<center><b><tt>Input A</tt></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="27%">
+<center><b><tt>Input B</tt></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="45%">
+<center><b><tt>Output</tt></b>
+<p><b><tt>(A xor B)</tt></b></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="28%">
+<center><tt>0</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="27%">
+<center><tt>0</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="45%">
+<center><tt>0</tt></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="28%">
+<center><tt>0</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="27%">
+<center><tt>1</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="45%">
+<center><tt>1</tt></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="28%">
+<center><tt>1</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="27%">
+<center><tt>0</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="45%">
+<center><tt>1</tt></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="28%">
+<center><tt>1</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="27%">
+<center><tt>1</tt></center>
+</td>
+
+<td VALIGN=TOP WIDTH="45%">
+<center><tt>0</tt></center>
+</td>
+</tr>
+</table></center>
+
+<p>The exclusive-or gate performs modulo-two addition of its inputs. When
+you cascade q two-input exclusive-or gates, with the output of the first
+one feeding one of the inputs of the second one, the output of the second
+one feeding one of the inputs of the third one, etc., the output of the
+last one in the chain is the modulo-two sum of the q + 1 inputs.
+<p>Another way to illustrate the modulo-two adder, and the way that is
+most commonly used in textbooks, is as a circle with a + symbol inside,
+thus:
+<center>
+<p><img SRC="figs/ringsum.gif" ALT="modulo-two adder symbol" height=48
width=48></center>
+
+<p>Now that we have the two basic components of the convolutional encoder
+(flip-flops comprising the shift register and exclusive-or gates comprising
+the associated modulo-two adders) defined, let's look at a picture of a
+convolutional encoder for a rate 1/2, K = 3, m = 2 code:
+<br>
+<br>
+<br>
+<center>
+<p><img SRC="figs/ce_7_5_a.gif" ALT="rate 1/2 K = 3 (7, 5) convolutional
encoder" height=232 width=600></center>
+
+<p>In this encoder, data bits are provided at a rate of k bits per second.
+Channel symbols are output at a rate of n = 2k symbols per second. The
+input bit is stable during the encoder cycle. The encoder cycle starts
+when an input clock edge occurs. When the input clock edge occurs, the
+output of the left-hand flip-flop is clocked into the right-hand flip-flop,
+the previous input bit is clocked into the left-hand flip-flop, and a new
+input bit becomes available. Then the outputs of the upper and lower modulo-two
+adders become stable. The output selector (SEL A/B block) cycles through
+two states-in the first state, it selects and outputs the output of the
+upper modulo-two adder; in the second state, it selects and outputs the
+output of the lower modulo-two adder.
+<p>The encoder shown above encodes the K = 3, (7, 5) convolutional code.
+The octal numbers 7 and 5 represent the code generator polynomials, which
+when read in binary (111<sub>2</sub> and 101<sub>2</sub>) correspond to
+the shift register connections to the upper and lower modulo-two adders,
+respectively. This code has been determined to be the "best" code for rate
+1/2, K = 3. It is the code I will use for the remaining discussion and
+examples, for reasons that will become readily apparent when we get into
+the Viterbi decoder algorithm.
+<p>Let's look at an example input data stream, and the corresponding output
+data stream:
+<p>Let the input sequence be 010111001010001<sub>2</sub>.
+<p>Assume that the outputs of both of the flip-flops in the shift register
+are initially cleared, i.e. their outputs are zeroes. The first clock cycle
+makes the first input bit, a zero, available to the encoder. The flip-flop
+outputs are both zeroes. The inputs to the modulo-two adders are all zeroes,
+so the output of the encoder is 00<sub>2</sub>.
+<p>The second clock cycle makes the second input bit available to the encoder.
+The left-hand flip-flop clocks in the previous bit, which was a zero, and
+the right-hand flip-flop clocks in the zero output by the left-hand flip-flop.
+The inputs to the top modulo-two adder are 100<sub>2</sub>, so the output
+is a one. The inputs to the bottom modulo-two adder are 10<sub>2</sub>,
+so the output is also a one. So the encoder outputs 11<sub>2</sub> for
+the channel symbols.
+<p>The third clock cycle makes the third input bit, a zero, available to
+the encoder. The left-hand flip-flop clocks in the previous bit, which
+was a one, and the right-hand flip-flop clocks in the zero from two bit-times
+ago. The inputs to the top modulo-two adder are 010<sub>2</sub>, so the
+output is a one. The inputs to the bottom modulo-two adder are 00<sub>2</sub>,
+so the output is zero. So the encoder outputs 10<sub>2</sub> for the channel
+symbols.
+<p>And so on. The timing diagram shown below illustrates the process:
+<br>
+<br>
+<br>
+<center>
+<p><img SRC="figs/ce_td.gif" ALT="timing diagram for rate 1/2 convolutional
encoder" height=322 width=600></center>
+
+<p><br>
+<br>
+<br>
+<p>After all of the inputs have been presented to the encoder, the output
+sequence will be:
+<p>00 11 10 00 01 10 01 11 11 10 00 10 11 00 11<sub>2</sub>.
+<p>Notice that I have paired the encoder outputs-the first bit in each
+pair is the output of the upper modulo-two adder; the second bit in each
+pair is the output of the lower modulo-two adder.
+<p>You can see from the structure of the rate 1/2 K = 3 convolutional encoder
+and from the example given above that each input bit has an effect on three
+successive pairs of output symbols. That is an extremely important point
+and that is what gives the convolutional code its error-correcting power.
+The reason why will become evident when we get into the Viterbi decoder
+algorithm.
+<p>Now if we are only going to send the 15 data bits given above, in order
+for the last bit to affect three pairs of output symbols, we need to output
+two more pairs of symbols. This is accomplished in our example encoder
+by clocking the convolutional encoder flip-flops two ( = m) more times,
+while holding the input at zero. This is called "flushing" the encoder,
+and results in two more pairs of output symbols. The final binary output
+of the encoder is thus 00 11 10 00 01 10 01 11 11 10 00 10 11 00 11 10
+11<sub>2</sub>. If we don't perform the flushing operation, the last m
+bits of the message have less error-correction capability than the first
+through (m - 1)th bits had. This is a pretty important thing to remember
+if you're going to use this FEC technique in a burst-mode environment.
+So's the step of clearing the shift register at the beginning of each burst.
+The encoder must start in a known state and end in a known state for the
+decoder to be able to reconstruct the input data sequence properly.
+<p>Now, let's look at the encoder from another perspective. You can think
+of the encoder as a simple state machine. The example encoder has two bits
+of memory, so there are four possible states. Let's give the left-hand
+flip-flop a binary weight of 2<sup>1</sup>, and the right-hand flip-flop
+a binary weight of 2<sup>0</sup>. Initially, the encoder is in the all-zeroes
+state. If the first input bit is a zero, the encoder stays in the all zeroes
+state at the next clock edge. But if the input bit is a one, the encoder
+transitions to the 10<sub>2</sub> state at the next clock edge. Then, if
+the next input bit is zero, the encoder transitions to the 01<sub>2</sub>
+state, otherwise, it transitions to the 11<sub>2</sub> state. The following
+table gives the next state given the current state and the input, with
+the states given in binary:
+<br>
+<br>
+<center><table BORDER CELLSPACING=2 CELLPADDING=7 WIDTH="282" >
+<tr>
+<td VALIGN=TOP WIDTH="33%"><font face="Arial"><font
size=-1> </font></font></td>
+
+<td VALIGN=TOP COLSPAN="2" WIDTH="67%">
+<center><a NAME="statetable"></a><b><font face="Arial"><font size=-1>Next
+State, if </font></font></b></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Current
State</font></font></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Input =
0:</font></font></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Input =
1:</font></font></b></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+</tr>
+</table></center>
+
+<br>
+<p>The above table is often called a state transition table. We'll refer
+to it as the <tt>next state</tt> table.<tt> </tt>Now let us look at a table
+that lists the channel output symbols, given the current state and the
+input data, which we'll refer to as the <tt>output</tt> table:
+<br>
+<br>
+<center><table BORDER CELLSPACING=2 CELLPADDING=7 WIDTH="282" >
+<tr>
+<td VALIGN=TOP WIDTH="33%"></td>
+
+<td VALIGN=TOP COLSPAN="2" WIDTH="67%">
+<center><a NAME="outputtable"></a><b><font face="Arial"><font size=-1>Output
+Symbols, if</font></font></b></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Current
State</font></font></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Input =
0:</font></font></b></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><b><font face="Arial"><font size=-1>Input =
1:</font></font></b></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>00</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+</tr>
+
+<tr>
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>11</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>01</font></font></center>
+</td>
+
+<td VALIGN=TOP WIDTH="33%">
+<center><font face="Arial"><font size=-1>10</font></font></center>
+</td>
+</tr>
+</table></center>
+
+<br>
+<p>You should now see that with these two tables, you can completely describe
+the behavior of the example rate 1/2, K = 3 convolutional encoder. Note
+that both of these tables have 2<sup>(K - 1)</sup> rows, and 2<sup>k</sup>
+columns, where K is the constraint length and k is the number of bits input
+to the encoder for each cycle. These two tables will come in handy when
+we start discussing the Viterbi decoder algorithm.
+<p><a NAME="mapping"></a><b><i><font face="Arial">Mapping the Channel Symbols
+to Signal Levels</font></i></b>
+<p>Mapping the one/zero output of the convolutional encoder onto an antipodal
+baseband signaling scheme is simply a matter of translating zeroes to +1s
+and ones to -1s. This can be accomplished by performing the operation y
+= 1 - 2x on each convolutional encoder output symbol.
+<p><a NAME="addnoise"></a><b><i><font face="Arial">Adding Noise to the
+Transmitted Symbols</font></i></b>
+<p>Adding noise to the transmitted channel symbols produced by the
convolutional
+encoder involves generating Gaussian random numbers, scaling the numbers
+according to the desired energy per symbol to noise density ratio,
E<sub>s</sub>/N<sub>0</sub>,
+and adding the scaled Gaussian random numbers to the channel symbol values.
+<p>For the uncoded channel, E<sub>s</sub>/N<sub>0 </sub>=
E<sub>b</sub>/N<sub>0</sub>,
+since there is one channel symbol per bit. However, for the coded
+channel, E<sub>s</sub>/N<sub>0 </sub>= E<sub>b</sub>/N<sub>0</sub> +
10log<sub>10</sub>(k/n).
+For example, for rate 1/2 coding, E<sub>s</sub>/N<sub>0 </sub>=
E<sub>b</sub>/N<sub>0</sub>
++ 10log<sub>10</sub>(1/2) = E<sub>b</sub>/N<sub>0</sub> - 3.01 dB.
+Similarly, for rate 2/3 coding, E<sub>s</sub>/N<sub>0 </sub>=
E<sub>b</sub>/N<sub>0</sub>
++ 10log<sub>10</sub>(2/3) = E<sub>b</sub>/N<sub>0</sub> - 1.76 dB.
+<p>The Gaussian random number generator is the only interesting part of
+this task. C only provides a uniform random number generator, <tt>rand()</tt>.
+In order to obtain Gaussian random numbers, we take advantage of relationships
+between uniform, Rayleigh, and Gaussian distributions:
+<p>Given a uniform random variable U, a Rayleigh random variable R can
+be obtained by:
+<p><img SRC="figs/eqn01.gif" ALT="equation for Rayleigh random deviate given
uniform random deviate" height=30 width=297 align=ABSCENTER>
+<p>where <img SRC="figs/eqn02.gif" height=24 width=24 align=ABSCENTER>is
+the variance of the Rayleigh random variable, and given R and a second
+uniform random variable V, two Gaussian random variables G and H can be
+obtained by
+<p><i>G</i> = <i>R</i> cos <i>U</i> and <i>H</i> = <i>R</i> sin <i>V</i>.
+<p>In the AWGN channel, the signal is corrupted by additive noise, n(t),
+which has the power spectrum <i>No</i>/2 watts/Hz. The variance <img
SRC="figs/eqn02.gif" ALT="variance" height=24 width=24 align=ABSBOTTOM>of
+this noise is equal to <img SRC="figs/eqn03.gif" ALT="noise density div
by two" height=22 width=38 align=TEXTTOP>.
+If we set the energy per symbol <i>E<sub>s</sub></i> equal to 1,
then <img SRC="figs/eqn04.gif" ALT="equation relating variance to SNR"
height=28 width=110 align=ABSBOTTOM>.
+So <img SRC="figs/eqn05.gif" ALT="equation for AWGN st dev given SNR"
height=28 width=139 align=ABSCENTER>.
+<p><a NAME="quantizing"></a><b><i><font face="Arial">Quantizing the Received
+Channel Symbols</font></i></b>
+<p>An ideal Viterbi decoder would work with infinite precision, or at least
+with floating-point numbers. In practical systems, we quantize the received
+channel symbols with one or a few bits of precision in order to reduce
+the complexity of the Viterbi decoder, not to mention the circuits that
+precede it. If the received channel symbols are quantized to one-bit precision
+(< 0V = 1, <u>></u> 0V = 0), the result is called hard-decision data.
+If the received channel symbols are quantized with more than one bit of
+precision, the result is called soft-decision data. A Viterbi decoder with
+soft decision data inputs quantized to three or four bits of precision
+can perform about 2 dB better than one working with hard-decision inputs.
+The usual quantization precision is three bits. More bits provide little
+additional improvement.
+<p>The selection of the quantizing levels is an important design decision
+because it can have a significant effect on the performance of the link.
+The following is a very brief explanation of one way to set those levels.
+Let's assume our received signal levels in the absence of noise are -1V
+= 1, +1V = 0. With noise, our received signal has mean +/- 1 and standard
+deviation <img SRC="figs/eqn05.gif" ALT="equation for AWGN st dev given
SNR" height=28 width=139 align=ABSCENTER>.
+Let's use a uniform, three-bit quantizer having the input/output relationship
+shown in the figure below, where D is a decision level that we will calculate
+shortly:
+<center>
+<p><img SRC="figs/quantize.gif" ALT="8-level quantizer function plot"
height=342 width=384></center>
+
+<p>The decision level, D, can be calculated according to the formula <img
SRC="figs/eqn06.gif" ALT="equation for quantizer decision level" height=28
width=228 align=ABSCENTER>,
+where E<sub>s</sub>/N<sub>0</sub> is the energy per symbol to noise density
+ratio<i>. (The above figure was redrawn from Figure 2 of Advanced Hardware
+Architecture's ANRS07-0795, "Soft Decision Thresholds and Effects on Viterbi
+Performance". See the </i><a href="fecbiblio.html">bibliography</a><i>
+for a link to their web pages.)</i>
+<p>Click <a href="algrthms2.html">here</a> to proceed to the description
+of the Viterbi decoding algorithm itself...
+<p>Or click on one of the links below to go to the beginning of that section:
+<p> <a href="tutorial.html">Introduction</a>
+<br> <a href="algrthms2.html">Description of the Algorithms
+(Part 2)</a>
+<br> <a href="examples.html">Simulation Source Code Examples</a>
+<br> <a href="simrslts.html">Example Simulation Results</a>
+<br> <a href="fecbiblio.html">Bibliography</a>
+<br> <a href="tutorial.html#specapps">About Spectrum Applications...</a>
+<br>
+<br>
+<br>
+<br>
+<center>
+<p><img SRC="figs/stripe.gif" height=6 width=600></center>
+
+</body>
+</html>
diff --git a/test/etags/html-src/index.shtml b/test/etags/html-src/index.shtml
new file mode 100644
index 0000000..24f269f
--- /dev/null
+++ b/test/etags/html-src/index.shtml
@@ -0,0 +1,70 @@
+<!--#set var="chiavi" value="
+ prima pagina principale, home page, assoli,
+ free software, open source, italia, italy, italiano" -->
+<!--#include virtual="/inc/h.shtml"-->
+<!--#include virtual="/inc/menu-generico.html"-->
+<!--#include virtual="/inc/content-begin.html"-->
+
+<H3> </H3> <!-- un po' di spazio in cima -->
+
+<!--
+ La rubrica "in evidenza" va commentata se non c'� niente di serio
+ da mettere in evidenza
+ -->
+<H2>
+ In evidenza
+</H2>
+
+<ul>
+
+ <li>Assieme alla <A HREF="http://www.linux.it/">Italian Linux
+ Society</A> sollecitiamo una <A
+ HREF="/misc/raccoltafirme.shtml">raccolta di firme</A> per
+ sostenere il <a href="/altri/cortiana.shtml">disegno di legge</a> sul
+ software libero dal titolo "<i>Norme in materia di pluralismo
+ informatico sulla adozione e la diffusione del software libero e sulla
+ portabilit� dei documenti informatici nella Pubblica
+ Amministrazione</i>" (XIV Legislatura Atto Senato n. 1188).<P>
+
+</ul>
+
+<H2>
+ Comunicati e iniziative
+</H2>
+
+<ul>
+
+ <p></p><li>
+ Combattiamo il "bollino SIAE". Nel <A HREF="/news/">notiziario</A>
+ tutte le nostre iniziative in proposito. Insieme al <a
+ href="http://www.lugroma.org">LUG Roma</a> abbiamo scritto il <A
+ HREF="/bollino/">Bollino-HOWTO</A>, istruzioni passo passo su come
+ ottenere l'esenzione dal bollilno SIAE per la distribuzione di
+ software libero a titolo oneroso o gratuito. <A
+ HREF="/altri/semenzato-pieroni.shtml">Qui</A> il disegno di legge
+ Semenzato Pieroni sul diritto d'autore. E non � finita.
+
+ <p></p><li>
+ <a href="/altri/adeos.shtml">Salutiamo</a> l'arrivo di ADEOS, kernel
+ real-time per Linux libero da brevetti
+
+ <p></p><li>
+ <a href="/news/news020315_01.shtml">Comunicato</a> stampa di FSF Europa
+ ed Assoli in appoggio al disegno di legge per l'uso del software libero
+ nella pubblica amministrazione
+
+ <p></p><li>
+ <a href="/docs/pirateria.shtml">Posizione dell'Associazione</a> sulle
+ attuali campagna anti-"pirateria"</a>
+
+</ul>
+
+<H2>
+ Ultime notizie dall'associazione
+</H2>
+<P>
+<!--#include virtual="/news/notizie.shtml"-->
+</P>
+
+<!--#include virtual="inc/content-end.html"-->
+<!--#include virtual="inc/f.shtml"-->
diff --git a/test/etags/html-src/software.html
b/test/etags/html-src/software.html
new file mode 100644
index 0000000..4d174c6
--- /dev/null
+++ b/test/etags/html-src/software.html
@@ -0,0 +1,241 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
"http://www.w3.org/TR/REC-html40">
+<HTML LANG="en">
+<HEAD>
+ <STYLE TYPE="text/css"><!--
+ BODY { font-size: 12pt; }
+ P { text-indent: 0; text-align: justify }
+ DD { text-indent: 0; text-align: justify }
+ --></STYLE>
+ <TITLE>Francesco Potort� Software Page</TITLE>
+ <LINK REV="made" HREF="mailto:address@hidden">
+ <META NAME="description" CONTENT="Home page of Francesco Potort�.">
+ <META NAME="keywords"
+ CONTENT="Potorti Potort� Potorti' Potorti`
+ satellites MTG fracas simulator LEO MEO GEO
+ GNU emacs etags checkiso debian-bug">
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+</HEAD><BODY>
+
+<CENTER>
+ [<A HREFLANG="en" HREF="/home.html">home</A>]
+ | [<A HREFLANG="en" HREF="/foda/foda.html">FODA/IBEA</A>]
+ | [<A HREFLANG="en" HREF="/galileo/index.html">GaliLEO</A>]
+ | [<A HREFLANG="en" HREF="#fracas">fracas</A>]
+ | [<A HREFLANG="en" HREF="#leasqr">leasqr</A>]<BR>
+ [<A HREFLANG="en" HREF="#etags">etags</A>]
+ | [<A HREFLANG="en" HREF="#checkiso">checkiso</A>]
+ | [<A HREFLANG="en" HREF="#cgrep">cgrep</A>]
+ | [<A HREFLANG="en" HREF="#debian-bug">debian-bug</A>]
+</CENTER>
+
+<HR> <!---------------------------------------------------------------->
+
+<H4 ID="simulation">
+ <IMG SRC="/pictures/cnr-4.png" ALIGN="right"
+ ALT="CNR logo (png 3k)">
+ Software that I wrote for supporting my research activity
+</H4>
+
+
+<H5 ID="mtg">
+ MTG
+</H5>
+
+<P> The <A
+
HREF="/curriculum/pot-abstracts.html#R05:MTG-RealTimeSystems97"><CITE>M</CITE>ulti-Application
+ <cite>t</CITE>raffic <cite>g</CITE>enerator</A> was written in 1990 to run
on
+ a proprietary Motorola Delta SysV Unix running on 68030. It is a
+ programmable packet traffic generator for Ethernet with a
+ <CITE>curses</CITE>-based frontend and a backend that I wrote. MTG was
+ used to develop, test and evaluate the <A
HREF="/foda/foda.html">FODA/IBEA</A>
+ satellite access protocol.
+
+<P> The backend of MTG
+ was a Unix device driver which took control of the timer and Lance
+ interrupts, after having programmed them at the unmaskable level. Since I
+ had no access to the kernel sources, after having studied <CITE>Writing a
+ Unix device driver</CITE> by Egan Teixeira I had to get really well
+ acquainted with the Motorola C compiler and then to disassemble a couple of
+ kernel routines. For anyone interested in historical programming, <A
+ HREF="ftp://fly.cnuce.cnr.it/pub/software/unix/mtg.tgz"
+ TYPE="application/octet-stream">here</A> is the code.
+
+
+<H5 ID="fracas">
+ Fracas
+</H5>
+
+<P> The <A
+
HREF="/curriculum/pot-abstracts.html#R12:Fracas-TelCommSystems99"><CITE>Fra</CITE>med
+ <CITE>C</CITE>hannel <CITE>A</CITE>ccess <CITE>S</CITE>imulator</A> was
+ written around 1995 to study MAC protocols to access a geostationary
+ satellite channel. It is a little more general than that, though, and can
+ be used to simulate any framed multiple access scheme. It is a very fast,
+ extensible, non-user friendly C program that has been used for several
+ protocol studies:
+ <UL>
+ <LI> <A
HREF="/curriculum/pot-abstracts.html#R03:FODAIBEAvsDistributed-IJSC96">
+ <i>Comparison between distributed and centralised demand
+ assignment TDMA satellite access schemes</i></A>
+
+ <LI><A HREF="/curriculum/pot-abstracts.html#R07:FODAIBEAvsCFRA-IJSC97">
+ <i>Delay analysis for interlan traffic using two suitable TDMA
+ satellite access schemes</i></A>
+
+ <LI><A HREF="/curriculum/pot-abstracts.html#R17:VnL-IJSC00">
+ <i>A multi-level satellite channel allocation algorithm for
+ real-time VBR data</i></A>
+ </UL>
+
+<P> Everyone is welcome to download the <A
+ HREF="ftp://fly.cnuce.cnr.it/pub/software/C/fracas.tgz"
+ TYPE="application/octet-stream">complete sources</A> and a <A
+ HREF="ftp://fly.cnuce.cnr.it/pub/software/C/fracas-man-0.0.pdf"
+ TYPE="application/pdf">draft manual</A>. There is also a short <A
+
HREF="ftp://fly.cnuce.cnr.it/pub/data/docs/Fracas-slides.pdf">presentation</A>
+ (10 slides, 340KB). I will be happy to assist those who would like to
+ adapt Fracas to their purposes.
+
+
+<H5 ID="galileo">
+ GaliLEO
+</H5>
+
+<P> A simulator for Low Earth Orbit satellite constellations that I contributed
+ to design and implement in Java. This is work in progress, of which I made
+ a short <A
+
HREF="ftp://fly.cnuce.cnr.it/pub/data/docs/GaliLEO-slides.pdf">presentation</A>
+ (10 slides, 500KB). GaliLEO has <A HREF="http://galileo.tesa.prd.fr/">its
+ own page</A> and a <A HREF="/galileo/index.html">local mirror</A>.
+
+
+
+<H5 ID="leasqr">
+ Leasqr
+</H5>
+
+<P> This is a package for <A HREF="http://www.octave.org/">Octave</A>, a
+high-level language which uses a language very similar to that of Matlab.
+Leasqr uses the Levenberg-Marquardt algorithm for doing nonlinear regression.
+I found leasqr on the web, but it did not run on Octave (it was made for
+Matlab) and so I adapted it and <A
+HREF="ftp://fly.cnuce.cnr.it/pub/software/octave/leasqr/">published</A> it.
+Since then, the original authors Richard I. Shrager, A.Jutan, Ray Muzic, and
+Sean Brennan agreed to put it under the <A
+HREF="http://www.gnu.org/licenses/gpl.html">GPL</A>. Matthias Jueschke tested
+the program using a non-linear optimisation <A
+HREF="http://www.itl.nist.gov/div898/strd/nls/nls_main.shtml">test suite</A>,
+and was satisfied with the results.
+
+<P>The most current version of the leasqr is part of the optimization package
+at <a href="http://octave.sf.net">octave-forge</a>. You should refer to the
+files leasqr.m, leasqrdemo.m and dfdp.m <a
+href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/octave/octave-forge/main/optim/">therein</a>.
+The names of the individual files may change in the future. Please let me know
+if that happens so I can update this page.
+
+<HR> <!---------------------------------------------------------------->
+
+<H4 ID="gnu">
+ <IMG SRC="/pictures/gnu-head-3.png" ALIGN="right"
+ ALT="small GNU Head (png 3k)">
+ Free software that I wrote for the GNU project or for my personal or work
+ interest
+</H4>
+
+
+<H5 ID="etags">
+ Etags
+</H5>
+
+<P> On behalf of the <A HREF="http://www.gnu.org/fsf/fsf.html">Free
+ Software Foundation (FSF)</A> I currently volunteer to maintain
+ <CITE>etags</CITE>, a program that can be compiled either as a replacement
+ of the classic <CITE>ctags</CITE> Unix program or as <CITE>etags</CITE>,
+ whose output file format is used by Emacs. The latest (unofficial) version
+ of etags is available for <A HREF="ftp://fly.cnuce.cnr.it/pub/etags.c.gz"
+ TYPE="application/octet-stream">download</A> (30 KB).
+
+
+<H5 ID="checkiso">
+ checkiso
+</H5>
+
+<P> A Unix <A HREF="ftp://fly.cnuce.cnr.it/pub/software/unix/checkiso"
+ TYPE="application/octet-stream">shell script</A> for checking a CD against
+ the iso image from which it has been burned. The comparison is made using
+ an MD5 signature built from the original image or from a known good CD.
+ Shows the location of the first read error detected. Can extract a disk Id
+ from the image or the CD itself and build a local database of Ids for
+ future checking of archived CDs. The Id contains the image length, the MD5
+ signature and the Volume ID of the disk, so it can automatically recognise
+ the CD to check. Contains a small internal database of <A
+ HREF="http://www.debian.org/">Debian</A> <A
+ HREF="http://cdimage.debian.org/">CD images</A>.
+
+
+<H5 ID="cgrep">
+ cgrep
+</H5>
+
+<P> A Unix <A HREF="ftp://fly.cnuce.cnr.it/pub/software/unix/cgrep"
+ TYPE="application/octet-stream">shell script</A> that wraps around grep to
+ make it understand files compressed with gzip or bzip2. You just use it
+ like grep. If you rename it cegrep or cfgrep it will wrap around egrep or
+ fgrep, respectively. Instead of renaming it, you can use a symbolic or
+ hard link.
+
+
+<H5 ID="debian-bug">
+ debian-bug.el
+</H5>
+
+<P> An Emacs add-on script in emacs lisp which simplifies
+ the task of submitting a bug report to the <A
+ HREF="http://www.debian.org/Bugs/">Debian bug tracking system</A>. Part of
+ the <A
+
HREF="http://packages.debian.org/testing/utils/debbugs-el.html">debbugs-el</A>
+ Debian package. I handed the package over to Peter Galbraith, who is
+ maintaining it much more actively than I was. You can download its <A
+ HREF="http://people.debian.org/~psg/debian-bug.el"
+ TYPE="application/octet-stream">latest version</A>.
+
+
+<H5 ID="tcpdump">
+ tcpdump
+</H5>
+
+<P> A Unix <A HREF="ftp://fly.cnuce.cnr.it/pub/software/unix/pottcpdump-1.3"
+ TYPE="application/octet-stream">shell wrapper</A> around
+ <CITE>tcpdump</CITE> which optionally displays the contents of the packets.
+
+
+<HR> <!---------------------------------------------------------------->
+
+<H4 ID="links">
+ Links to interesting software
+</H4>
+
+
+<DL>
+ <DT>The Error Correcting Codes (ECC) Page
+ <DD><A
+ HREF="http://www.csl.sony.co.jp/person/morelos/ecc/codes.html">This</A> is a
+ really good list of free (in various senses) programs for coding and
+ decoding. I keep a <A HREF="codes.html">mirror</A> of this page.
+
+ <DT>Forward error correcting codes by Phil Karn
+ <DD>Phil Karn's optimised really <A HREF="http://www.ka9q.net/code/fec/">free
+ codes</A>.
+
+</DL>
+
+</BODY>
+
+<!--
+Local variables:
+fill-column: 79
+end:
+-->
+
+</HTML>
diff --git a/test/etags/html-src/softwarelibero.html
b/test/etags/html-src/softwarelibero.html
new file mode 100644
index 0000000..7aa74c5
--- /dev/null
+++ b/test/etags/html-src/softwarelibero.html
@@ -0,0 +1,313 @@
+<DIV LANG="it" ALIGN="justify">
+
+<H2>
+ Cos'� il software libero?
+</H2>
+
+<P>
+ Il concetto di software libero discende naturalmente da quello di
+ libert� di scambio di idee e di informazioni. Negli ambienti
+ scientifici, quest'ultimo principio � tenuto in alta considerazione
+ per la fecondit� che ha dimostrato; ad esso infatti � generalmente
+ attribuita molta parte dell'eccezionale ed imprevedibile crescita del
+ sapere negli ultimi tre secoli.
+</P>
+<P>
+ La libert� di scambio di idee non � tuttavia una questione puramente
+ pratica: essa � anche alla base dei concetti di libert� di pensiero e
+ di espressione. Analogamente alle idee, il software � immateriale, e
+ pu� essere riprodotto e trasmesso facilmente. In modo simile a quanto
+ avviene per le idee, parte essenziale del processo che sostiene la
+ crescita e l'evoluzione del software � la sua libera diffusione. Ed
+ ogni giorno di pi�, come le idee, il software permea il tessuto
+ sociale e lo influenza, produce effetti etici, economici, politici e
+ in un senso pi� generale culturali.
+</P>
+<P>
+ Fu Richard M. Stallman, nei primi anni Ottanta, a formalizzare per la
+ prima volta il concetto di software libero. La <A TITLE="definizione
+ di software libero secondo FSF"
+ href="http://www.it.gnu.org/philosophy/free-sw.it.html">definizione</A>
+ di Stallman, che da subito assurse al ruolo di definizione per
+ eccellenza di software libero, assume la forma di quattro principi di
+ libert�:
+</P>
+<P>
+<DL>
+ <DT>Libert� 0, o libert� fondamentale:
+ <DD>La libert� di eseguire il programma per qualunque scopo, senza
+ vincoli sul suo utilizzo.
+
+ <DT>Libert� 1:
+ <DD>La libert� di studiare il funzionamento del programma, e
+ di adattarlo alle proprie esigenze.
+
+ <DT>Libert� 2:
+ <DD>La libert� di redistribuire copie del programma.
+
+ <DT>Libert� 3:
+ <DD>La libert� di migliorare il programma, e di distribuirne
+ i miglioramenti.
+</DL>
+</P>
+<P>
+ Il software distribuito con una licenza che rispetti questi principi �
+ detto <Q><EM>software libero</EM></Q> (in inglese <Q><EM>free
+ software</EM></Q>). Nel 1984 Richard M. Stallman <A TITLE="storia
+ del progetto GNU"
+ HREF="http://www.it.gnu.org/gnu/thegnuproject.it.html">diede vita al
+ progetto GNU</A>, con lo scopo di tradurre in pratica il concetto di
+ software libero, e cre� la <Q>Free Software Foundation</Q> per
+ dare supporto logistico, legale ed economico al progetto GNU.
+</P>
+
+<H3><A NAME="licenze">
+ Licenze d'uso di un programma
+</A></H3>
+
+<P>
+ La <EM>licenza d'uso</EM> � un documento legale generalmente
+ distribuito assieme a ogni programma. Essa, appoggiandosi alle norme
+ sul diritto d'autore, specifica diritti e doveri di chi riceve tale
+ programma.
+</P>
+<P>
+ Gran parte delle licenze comunemente usate sono <EM>proprietarie</EM>,
+ cio� non libere, in quanto non garantiscono le quattro libert�. Quasi
+ sempre tali licenze non consentono infatti la libera copia del
+ programma, n� la sua modifica. Spesso, se il programma � installato
+ sul computer di casa, la licenza impedisce persino di installarlo sul
+ proprio portatile (per utilizzare il programma fuori casa); se il
+ programma � utilizzato in uno studio professionale, non consente di
+ tenerlo installato su un computer di riserva, nel caso che quello
+ principale si guasti.
+</P>
+<P>
+ La licenza del progetto GNU, la <EM>Licenza Pubblica Generica GNU (<A
+ TITLE="traduzione della licenza GNU GPL"
+ HREF="http://softwarelibero.it/gnudoc/gpl.it.txt">GNU GPL</A>)</EM>,
+ al contrario, concede all'utente del programma tutte e quattro le
+ libert� suddette. Inoltre si occupa anche di proteggerle: chi
+ modifichi un programma protetto da GPL e lo distribuisca con tali
+ modifiche, deve distribuirlo sotto licenza GPL. � grazie a questo
+ tipo di protezione che la GPL � attualmente la licenza pi� usata per
+ il software libero.
+</P>
+<P>
+ Con un gioco di parole, il nome dato a questo tipo di protezione
+ � <EM>permesso d'autore</EM> (in inglese <A TITLE="definizione di
+ copyleft (inglese)" LANG="en"
+ HREF="http://www.it.gnu.org/copyleft/copyleft.html"><EM>copyleft</EM></A>):
+ � il criterio che prevede che le modifiche ad un programma possano
+ essere distribuite solo con la stessa licenza del programma originale.
+ Le licenze proprietarie usano le norme sul diritto d'autore (copyright
+ in inglese) per togliere libert� agli utenti di un programma; il
+ permesso d'autore usa le stesse norme per garantire quelle libert� e
+ per proteggerle.
+</P>
+<P>
+ La GNU GPL non � unica nel suo genere. Diverse <A TITLE="lista di
+ licenze libere e non"
+ HREF="http://www.it.gnu.org/licenses/license-list.it.html">altre
+ licenze</A> garantiscono le quattro libert� e si possono pertanto
+ qualificare come licenze per il software libero. Fra queste, merita
+ una speciale menzione per la sua diffusione la <A TITLE="la licenza
+ BSD (in inglese)" LANG="en"
+ HREF="http://www.freebsd.org/copyright/license.html">licenza BSD</A>,
+ la cui principale differenza dalla GPL � che, non essendo basata sul
+ permesso d'autore, non ha fra i propri obiettivi quello di proteggere
+ la libert� del software cui � applicata. Chi infatti modifichi un
+ programma protetto da BSD, pu� distribuirlo con le modifiche usando
+ qualunque licenza.
+</P>
+<P>
+ Sia BSD che GPL hanno pro e contro. La licenza GPL riflette l'idea
+ della cooperazione: se io concedo ad altri la libert� di modificare e
+ redistribuire il mio programma, costoro sono tenuti a concedere le
+ stesse libert� sulle loro modifiche. Il problema � che alcuni vedono
+ questo vincolo come un'imposizione ingenerosa, se non addirittura una
+ restrizione insopportabile. La licenza BSD riflette l'idea del dono
+ liberale: chiunque pu� fare ci� che meglio crede del mio programma.
+ Il problema � che questo significa che chiunque pu� redistribuire
+ anche in forma chiusa con una licenza proprietaria un programma BSD
+ modificato, impedendo cos� ai propri acquirenti di modificarlo e
+ redistribuirlo a loro volta.
+</P>
+
+<H3><A NAME="miti">
+ Sfatiamo alcuni miti
+</A></H3>
+
+<P>
+<DL>
+
+ <DT>Il software libero � gratuito
+
+ <DD>� falso: la libert� del software non ha nulla a che vedere con
+ il suo prezzo. Bench� gran parte del software libero pi� diffuso
+ sia distribuito gratuitamente, ci sono programmatori che vivono
+ della vendita e della manutenzione dei programmi liberi da loro
+ creati.
+
+ <DT>Il software gratuito � libero
+
+ <DD>� falso. Molti programmi proprietari vengono distribuiti
+ gratuitamente.
+
+ <DT>Il software libero � privo di copyright
+
+ <DD>� falso. Bench� si possa rinunciare al copyright su un proprio
+ programma e renderlo cos� di pubblico dominio, la gran parte del
+ software libero � distribuito con una licenza. Per esempio, sono
+ licenze di copyright la licenza BSD e la GNU GPL, anche se per
+ qualificare quest'ultima spesso si parla di permesso d'autore
+ (copyleft).
+
+ <DT>L'introduzione del software libero nella scuola e nella pubblica
+ amministrazione, ma anche nei paesi poveri, ridurrebbe i costi
+ relativi al software
+
+ <DD>Potrebbe essere vero, ma una seria valutazione dei costi � molto
+ difficile. Qualunque tipo di software, se usato in ambito non
+ domestico, ha dei costi di manutenzione che sono solitamente
+ maggiori del suo prezzo di acquisto. I motivi per sostenere l'uso
+ del software libero, specie in ambiti pubblici, riguardano anzitutto
+ la libert�, non il prezzo.
+
+<!-- Discorso inadatto ad un documento introduttivo
+ <DT>Chi scrive un programma libero lo deve pubblicare su Internet
+
+ <DD>� una falsa argomentazione spesso usata per scoraggiare
+ un'azienda dall'uso di una licenza libera per i suoi programmi.
+ Sia gli autori che gli acquirenti di un programma libero hanno il
+ diritto di distribuirlo a titolo oneroso o gratuito, ma non hanno
+ alcun obbligo in tal senso.
+-->
+
+</DL>
+</P>
+
+<H3><A NAME="oss">
+ Il movimento open source
+</A></H3>
+
+<P>
+ Nel 1998 Bruce Perens, Eric Raymond e altre personalit� nel campo del
+ software libero si convinsero che i principi di libert� associati ad
+ esso fossero malvisti nel mondo degli affari, a causa della loro
+ carica ideologica. Decisero perci� di evitare accuratamente ogni
+ riferimento a considerazioni politiche o di principio, e di lanciare
+ una campagna di promozione del software libero che ne mettesse in luce
+ i numerosi <A TITLE="un discorso di Robert Chassell di FSF"
+ HREF="http://softwarelibero.it/altri/economia-sl.shtml">vantaggi
+ pratici</A>, come la facilit� di adattamento, l'affidabilit�, la
+ sicurezza, la conformit� agli standard, l'indipendenza dai singoli
+ fornitori. A tal fine scrissero la <Q><A TITLE="la definizione di
+ Open Source (in inglese)" LANG="en"
+ HREF="http://www.opensource.org/docs/definition.html">Open Source
+ Definition</A></Q>, il documento fondamentale del movimento <A
+ TITLE="il sito di Open Source Initiative (OSI), in inglese" LANG="en"
+ HREF="http://opensource.org/"><EM>open source</EM></A>.
+</P>
+<P>
+ Il movimento open source fu un successo, e contribu� a sdoganare il
+ concetto di software libero in campo aziendale, dove era guardato con
+ sospetto o condiscendenza. Un esempio di questo successo �
+ l'atteggiamento dell'IBM, l'azienda che ha fatto di gran lunga i
+ maggiori investimenti nel campo del software libero, la quale parla
+ esclusivamente di open source, mai di software libero.
+</P>
+<P>
+ La voluta neutralit� del movimento open source verso gli aspetti
+ etici e politici del software libero � la caratteristica sostanziale
+ che lo distingue dalla filosofia del software libero, che al contrario
+ pone l'accento sulle motivazioni ideali. Parlare di software libero
+ piuttosto che di open source � una questione politica piuttosto che
+ pratica; i due movimenti concordano infatti sulle licenze considerate
+ accettabili, ed hanno obiettivi e mezzi comuni.
+</P>
+
+<H3><A NAME="impatto">
+ Impatto pratico del software libero
+</A></H3>
+
+<P>
+ La <A TITLE="usi commerciali del software libero, di Alessandro
+ Rubini"
+
HREF="http://www.it.gnu.org/philosophy/software-libre-commercial-viability.it.html">rilevanza
+ economica</A> del software libero � ancora molto ridotta, ma � in
+ fortissima crescita ormai da alcuni anni, e tutto consente di supporre
+ che tale crescita <A TITLE="prospettive del software libero, gruppo di
+ studio dell'UE"
+ HREF="http://eu.conecta.it/paper/Economics_open_source.html">continui
+ nel prossimo futuro</A>, anche grazie ai <A TITLE="vantaggi del
+ software libero, gruppo di studio UE"
+ HREF="http://eu.conecta.it/paper/Advantages_open_source_soft.html">vantaggi
+ tecnici ed economici</A> del software libero.
+</P>
+<P>
+ Ad oggi, il software libero � ampiamente diffuso in ambito accademico,
+ industriale e fra gli appassionati di calcolatori, soprattutto grazie
+ ai sistemi GNU/Linux. Questi sistemi liberi sono disponibili a costi
+ molto bassi, ben inferiori a quelli di analoghi sistemi proprietari.
+ Tuttavia, a causa delle loro caratteristiche, il loro uso richiede una
+ buona cultura di base nel campo del software.
+</P>
+<P>
+ In ambito accademico viene molto apprezzata la possibilit� di
+ personalizzare ogni parte del sistema, visto che i programmi liberi
+ sono liberamente modificabili (libert� numero uno). In ambito
+ industriale, si apprezza l'affidabilit� dei sistemi liberi, dovuta al
+ fatto che quando un utente corregge un errore in un programma
+ solitamente rende disponibile la correzione agli altri utenti (libert�
+ numero tre). Gli appassionati di calcolatori apprezzano lo spirito di
+ condivisione esistente fra gli utenti di software libero.
+</P>
+<P>
+ Ma le implicazioni dell'uso del software libero non sono soltanto
+ tecniche ed economiche, perch� il software da tempo ormai � avviato ad
+ occupare un ruolo di primo piano nella nostra vita quotidiana, ed �
+ destinato a cambiare in maniera profonda la societ�.
+</P>
+<P>
+ � per queste ragioni che la nostra libert� futura dipender� anche
+ dalla capacit� di ognuno di noi di controllare il software. � per
+ queste ragioni che ai tradizionali principi di libert� sessuale, di
+ culto, di movimento, di espressione deve essere affiancata la libert�
+ del software. � per queste ragioni che la nostra libert� futura
+ dipender� anche dall'uso di software libero.
+</P>
+
+<P>
+ <EM>scritto da <A TITLE="address@hidden"
+ HREF="mailto:address@hidden">Francesco Potort�</A> per l'<A
+ TITLE="il sito dell'Associazione Software Libero"
+ HREF="http://softwarelibero.it/">Associazione Software
+ Libero</A></EM>
+</P>
+<HR NOSHADE>
+<P>
+ Copyright © 2002 Francesco Potort�
+ <BR>
+ Ultima versione ipertestuale disponibile su <A TITLE="versione
+ stampabile"
+
HREF="http://softwarelibero.it/documentazione/softwarelibero.html"><http://softwarelibero.it/documentazione/softwarelibero.html></A>
+</P>
+<P>
+ La copia letterale e integrale e la distribuzione sono permesse con
+ qualsiasi mezzo, a condizione che questa nota sia riprodotta.
+</P>
+
+<!--
+Local variables:
+fill-column: 72
+time-stamp-active: t
+time-stamp-time-zone: "GMT"
+time-stamp-format: "%:y-%02m-%02d"
+time-stamp-line-limit: 30
+time-stamp-start: "ultima\\s-+modifica\\s-+�\\s-+del\\s-+"
+time-stamp-end: "\\."
+End:
+-->
+
+</DIV>
diff --git a/test/etags/java-src/AWTEMul.java b/test/etags/java-src/AWTEMul.java
new file mode 100644
index 0000000..c66f16e
--- /dev/null
+++ b/test/etags/java-src/AWTEMul.java
@@ -0,0 +1,658 @@
+/*
+ * @(#)AWTEventMulticaster.java 1.10 97/01/23
+ *
+ * Copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * This software is the confidential and proprietary information of Sun
+ * Microsystems, Inc. ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered into
+ * with Sun.
+ *
+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
+ * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
+ * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
+ * THIS SOFTWARE OR ITS DERIVATIVES.
+ *
+ * CopyrightVersion 1.1_beta
+ *
+ */
+package java.awt;
+
+import java.awt.event.*;
+import java.util.EventListener;
+import java.io.Serializable;
+import java.io.ObjectOutputStream;
+import java.io.IOException;
+
+
+/**
+ * A class which implements efficient multi-cast event dispatching
+ * for the AWT events defined in the java.awt.event package. This
+ * class will manage the structure of a chain of event listeners
+ * and dispatch events to those listeners.
+ *
+ * An example of how this class could be used to implement a new
+ * component which fires "action" events:
+ *
+ * <pre><code>
+ * public myComponent extends Component {
+ * ActionListener actionListener = null;
+ *
+ * public void addActionListener(ActionListener l) {
+ * actionListener = AWTEventMulticaster.add(actionListener, l);
+ * }
+ * public void removeActionListener(ActionListener l) {
+ * actionListener = AWTEventMulticaster.remove(actionListener, l);
+ * }
+ * public void processEvent(AWTEvent e) {
+ * // when event occurs which causes "action" semantic
+ * if (actionListener != null) {
+ * actionListener.actionPerformed(new ActionEvent());
+ * }
+ * }
+ * </code></pre>
+ *
+ * @version 1.10, 23 Jan 1997
+ * @author John Rose
+ * @author Amy Fowler
+ */
+
+public class AWTEventMulticaster implements
+ ComponentListener, ContainerListener, FocusListener, KeyListener,
+ MouseListener, MouseMotionListener, WindowListener,
+ ActionListener, ItemListener, AdjustmentListener,
+ TextListener {
+
+ protected EventListener a, b;
+
+ /**
+ * Creates an event multicaster instance which chains listener-a
+ * with listener-b.
+ * @param a listener-a
+ * @param b listener-b
+ */
+ protected AWTEventMulticaster(EventListener a, EventListener b) {
+ this.a = a; this.b = b;
+ }
+
+ /**
+ * Removes a listener from this multicaster and returns the
+ * resulting multicast listener.
+ * @param oldl the listener to be removed
+ */
+ protected EventListener remove(EventListener oldl) {
+ if (oldl == a) return b;
+ if (oldl == b) return a;
+ EventListener a2 = removeInternal(a, oldl);
+ EventListener b2 = removeInternal(b, oldl);
+ if (a2 == a && b2 == b) {
+ return this; // it's not here
+ }
+ return addInternal(a2, b2);
+ }
+
+ /**
+ * Handles the componentResized event by invoking the
+ * componentResized methods on listener-a and listener-b.
+ * @param e the component event
+ */
+ public void componentResized(ComponentEvent e) {
+ ((ComponentListener)a).componentResized(e);
+ ((ComponentListener)b).componentResized(e);
+ }
+
+ /**
+ * Handles the componentMoved event by invoking the
+ * componentMoved methods on listener-a and listener-b.
+ * @param e the component event
+ */
+ public void componentMoved(ComponentEvent e) {
+ ((ComponentListener)a).componentMoved(e);
+ ((ComponentListener)b).componentMoved(e);
+ }
+
+ /**
+ * Handles the componentShown event by invoking the
+ * componentShown methods on listener-a and listener-b.
+ * @param e the component event
+ */
+ public void componentShown(ComponentEvent e) {
+ ((ComponentListener)a).componentShown(e);
+ ((ComponentListener)b).componentShown(e);
+ }
+
+ /**
+ * Handles the componentHidden event by invoking the
+ * componentHidden methods on listener-a and listener-b.
+ * @param e the component event
+ */
+ public void componentHidden(ComponentEvent e) {
+ ((ComponentListener)a).componentHidden(e);
+ ((ComponentListener)b).componentHidden(e);
+ }
+
+ /**
+ * Handles the componentAdded container event by invoking the
+ * componentAdded methods on listener-a and listener-b.
+ * @param e the component event
+ */
+ public void componentAdded(ContainerEvent e) {
+ ((ContainerListener)a).componentAdded(e);
+ ((ContainerListener)b).componentAdded(e);
+ }
+
+ /**
+ * Handles the componentRemoved container event by invoking the
+ * componentRemoved methods on listener-a and listener-b.
+ * @param e the component event
+ */
+ public void componentRemoved(ContainerEvent e) {
+ ((ContainerListener)a).componentRemoved(e);
+ ((ContainerListener)b).componentRemoved(e);
+ }
+
+ /**
+ * Handles the focusGained event by invoking the
+ * focusGained methods on listener-a and listener-b.
+ * @param e the focus event
+ */
+ public void focusGained(FocusEvent e) {
+ ((FocusListener)a).focusGained(e);
+ ((FocusListener)b).focusGained(e);
+ }
+
+ /**
+ * Handles the focusLost event by invoking the
+ * focusLost methods on listener-a and listener-b.
+ * @param e the focus event
+ */
+ public void focusLost(FocusEvent e) {
+ ((FocusListener)a).focusLost(e);
+ ((FocusListener)b).focusLost(e);
+ }
+
+ /**
+ * Handles the keyTyped event by invoking the
+ * keyTyped methods on listener-a and listener-b.
+ * @param e the key event
+ */
+ public void keyTyped(KeyEvent e) {
+ ((KeyListener)a).keyTyped(e);
+ ((KeyListener)b).keyTyped(e);
+ }
+
+ /**
+ * Handles the keyPressed event by invoking the
+ * keyPressed methods on listener-a and listener-b.
+ * @param e the key event
+ */
+ public void keyPressed(KeyEvent e) {
+ ((KeyListener)a).keyPressed(e);
+ ((KeyListener)b).keyPressed(e);
+ }
+
+ /**
+ * Handles the keyReleased event by invoking the
+ * keyReleased methods on listener-a and listener-b.
+ * @param e the key event
+ */
+ public void keyReleased(KeyEvent e) {
+ ((KeyListener)a).keyReleased(e);
+ ((KeyListener)b).keyReleased(e);
+ }
+
+ /**
+ * Handles the mouseClicked event by invoking the
+ * mouseClicked methods on listener-a and listener-b.
+ * @param e the mouse event
+ */
+ public void mouseClicked(MouseEvent e) {
+ ((MouseListener)a).mouseClicked(e);
+ ((MouseListener)b).mouseClicked(e);
+ }
+
+ /**
+ * Handles the mousePressed event by invoking the
+ * mousePressed methods on listener-a and listener-b.
+ * @param e the mouse event
+ */
+ public void mousePressed(MouseEvent e) {
+ ((MouseListener)a).mousePressed(e);
+ ((MouseListener)b).mousePressed(e);
+ }
+
+ /**
+ * Handles the mouseReleased event by invoking the
+ * mouseReleased methods on listener-a and listener-b.
+ * @param e the mouse event
+ */
+ public void mouseReleased(MouseEvent e) {
+ ((MouseListener)a).mouseReleased(e);
+ ((MouseListener)b).mouseReleased(e);
+ }
+
+ /**
+ * Handles the mouseEntered event by invoking the
+ * mouseEntered methods on listener-a and listener-b.
+ * @param e the mouse event
+ */
+ public void mouseEntered(MouseEvent e) {
+ ((MouseListener)a).mouseEntered(e);
+ ((MouseListener)b).mouseEntered(e);
+ }
+
+ /**
+ * Handles the mouseExited event by invoking the
+ * mouseExited methods on listener-a and listener-b.
+ * @param e the mouse event
+ */
+ public void mouseExited(MouseEvent e) {
+ ((MouseListener)a).mouseExited(e);
+ ((MouseListener)b).mouseExited(e);
+ }
+
+ /**
+ * Handles the mouseDragged event by invoking the
+ * mouseDragged methods on listener-a and listener-b.
+ * @param e the mouse event
+ */
+ public void mouseDragged(MouseEvent e) {
+ ((MouseMotionListener)a).mouseDragged(e);
+ ((MouseMotionListener)b).mouseDragged(e);
+ }
+
+ /**
+ * Handles the mouseMoved event by invoking the
+ * mouseMoved methods on listener-a and listener-b.
+ * @param e the mouse event
+ */
+ public void mouseMoved(MouseEvent e) {
+ ((MouseMotionListener)a).mouseMoved(e);
+ ((MouseMotionListener)b).mouseMoved(e);
+ }
+
+ /**
+ * Handles the windowOpened event by invoking the
+ * windowOpened methods on listener-a and listener-b.
+ * @param e the window event
+ */
+ public void windowOpened(WindowEvent e) {
+ ((WindowListener)a).windowOpened(e);
+ ((WindowListener)b).windowOpened(e);
+ }
+
+ /**
+ * Handles the windowClosing event by invoking the
+ * windowClosing methods on listener-a and listener-b.
+ * @param e the window event
+ */
+ public void windowClosing(WindowEvent e) {
+ ((WindowListener)a).windowClosing(e);
+ ((WindowListener)b).windowClosing(e);
+ }
+
+ /**
+ * Handles the windowClosed event by invoking the
+ * windowClosed methods on listener-a and listener-b.
+ * @param e the window event
+ */
+ public void windowClosed(WindowEvent e) {
+ ((WindowListener)a).windowClosed(e);
+ ((WindowListener)b).windowClosed(e);
+ }
+
+ /**
+ * Handles the windowIconified event by invoking the
+ * windowIconified methods on listener-a and listener-b.
+ * @param e the window event
+ */
+ public void windowIconified(WindowEvent e) {
+ ((WindowListener)a).windowIconified(e);
+ ((WindowListener)b).windowIconified(e);
+ }
+
+ /**
+ * Handles the windowDeiconfied event by invoking the
+ * windowDeiconified methods on listener-a and listener-b.
+ * @param e the window event
+ */
+ public void windowDeiconified(WindowEvent e) {
+ ((WindowListener)a).windowDeiconified(e);
+ ((WindowListener)b).windowDeiconified(e);
+ }
+
+ /**
+ * Handles the windowActivated event by invoking the
+ * windowActivated methods on listener-a and listener-b.
+ * @param e the window event
+ */
+ public void windowActivated(WindowEvent e) {
+ ((WindowListener)a).windowActivated(e);
+ ((WindowListener)b).windowActivated(e);
+ }
+
+ /**
+ * Handles the windowDeactivated event by invoking the
+ * windowDeactivated methods on listener-a and listener-b.
+ * @param e the window event
+ */
+ public void windowDeactivated(WindowEvent e) {
+ ((WindowListener)a).windowDeactivated(e);
+ ((WindowListener)b).windowDeactivated(e);
+ }
+
+ /**
+ * Handles the actionPerformed event by invoking the
+ * actionPerformed methods on listener-a and listener-b.
+ * @param e the action event
+ */
+ public void actionPerformed(ActionEvent e) {
+ ((ActionListener)a).actionPerformed(e);
+ ((ActionListener)b).actionPerformed(e);
+ }
+
+ /**
+ * Handles the itemStateChanged event by invoking the
+ * itemStateChanged methods on listener-a and listener-b.
+ * @param e the item event
+ */
+ public void itemStateChanged(ItemEvent e) {
+ ((ItemListener)a).itemStateChanged(e);
+ ((ItemListener)b).itemStateChanged(e);
+ }
+
+ /**
+ * Handles the adjustmentValueChanged event by invoking the
+ * adjustmentValueChanged methods on listener-a and listener-b.
+ * @param e the adjustment event
+ */
+ public void adjustmentValueChanged(AdjustmentEvent e) {
+ ((AdjustmentListener)a).adjustmentValueChanged(e);
+ ((AdjustmentListener)b).adjustmentValueChanged(e);
+ }
+ public void textValueChanged(TextEvent e) {
+ ((TextListener)a).textValueChanged(e);
+ ((TextListener)b).textValueChanged(e);
+ }
+
+ /**
+ * Adds component-listener-a with component-listener-b and
+ * returns the resulting multicast listener.
+ * @param a component-listener-a
+ * @param b component-listener-b
+ */
+ public static ComponentListener add(ComponentListener a, ComponentListener
b) {
+ return (ComponentListener)addInternal(a, b);
+ }
+
+ /**
+ * Adds container-listener-a with container-listener-b and
+ * returns the resulting multicast listener.
+ * @param a container-listener-a
+ * @param b container-listener-b
+ */
+ public static ContainerListener add(ContainerListener a, ContainerListener
b) {
+ return (ContainerListener)addInternal(a, b);
+ }
+
+ /**
+ * Adds focus-listener-a with focus-listener-b and
+ * returns the resulting multicast listener.
+ * @param a focus-listener-a
+ * @param b focus-listener-b
+ */
+ public static FocusListener add(FocusListener a, FocusListener b) {
+ return (FocusListener)addInternal(a, b);
+ }
+
+ /**
+ * Adds key-listener-a with key-listener-b and
+ * returns the resulting multicast listener.
+ * @param a key-listener-a
+ * @param b key-listener-b
+ */
+ public static KeyListener add(KeyListener a, KeyListener b) {
+ return (KeyListener)addInternal(a, b);
+ }
+
+ /**
+ * Adds mouse-listener-a with mouse-listener-b and
+ * returns the resulting multicast listener.
+ * @param a mouse-listener-a
+ * @param b mouse-listener-b
+ */
+ public static MouseListener add(MouseListener a, MouseListener b) {
+ return (MouseListener)addInternal(a, b);
+ }
+
+ /**
+ * Adds mouse-motion-listener-a with mouse-motion-listener-b and
+ * returns the resulting multicast listener.
+ * @param a mouse-motion-listener-a
+ * @param b mouse-motion-listener-b
+ */
+ public static MouseMotionListener add(MouseMotionListener a,
MouseMotionListener b) {
+ return (MouseMotionListener)addInternal(a, b);
+ }
+
+ /**
+ * Adds window-listener-a with window-listener-b and
+ * returns the resulting multicast listener.
+ * @param a window-listener-a
+ * @param b window-listener-b
+ */
+ public static WindowListener add(WindowListener a, WindowListener b) {
+ return (WindowListener)addInternal(a, b);
+ }
+
+ /**
+ * Adds action-listener-a with action-listener-b and
+ * returns the resulting multicast listener.
+ * @param a action-listener-a
+ * @param b action-listener-b
+ */
+ public static ActionListener add(ActionListener a, ActionListener b) {
+ return (ActionListener)addInternal(a, b);
+ }
+
+ /**
+ * Adds item-listener-a with item-listener-b and
+ * returns the resulting multicast listener.
+ * @param a item-listener-a
+ * @param b item-listener-b
+ */
+ public static ItemListener add(ItemListener a, ItemListener b) {
+ return (ItemListener)addInternal(a, b);
+ }
+
+ /**
+ * Adds adjustment-listener-a with adjustment-listener-b and
+ * returns the resulting multicast listener.
+ * @param a adjustment-listener-a
+ * @param b adjustment-listener-b
+ */
+ public static AdjustmentListener add(AdjustmentListener a,
AdjustmentListener b) {
+ return (AdjustmentListener)addInternal(a, b);
+ }
+ public static TextListener add(TextListener a, TextListener b) {
+ return (TextListener)addInternal(a, b);
+ }
+
+ /**
+ * Removes the old component-listener from component-listener-l and
+ * returns the resulting multicast listener.
+ * @param l component-listener-l
+ * @param oldl the component-listener being removed
+ */
+ public static ComponentListener remove(ComponentListener l,
ComponentListener oldl) {
+ return (ComponentListener) removeInternal(l, oldl);
+ }
+
+ /**
+ * Removes the old container-listener from container-listener-l and
+ * returns the resulting multicast listener.
+ * @param l container-listener-l
+ * @param oldl the container-listener being removed
+ */
+ public static ContainerListener remove(ContainerListener l,
ContainerListener oldl) {
+ return (ContainerListener) removeInternal(l, oldl);
+ }
+
+ /**
+ * Removes the old focus-listener from focus-listener-l and
+ * returns the resulting multicast listener.
+ * @param l focus-listener-l
+ * @param oldl the focus-listener being removed
+ */
+ public static FocusListener remove(FocusListener l, FocusListener oldl) {
+ return (FocusListener) removeInternal(l, oldl);
+ }
+
+ /**
+ * Removes the old key-listener from key-listener-l and
+ * returns the resulting multicast listener.
+ * @param l key-listener-l
+ * @param oldl the key-listener being removed
+ */
+ public static KeyListener remove(KeyListener l, KeyListener oldl) {
+ return (KeyListener) removeInternal(l, oldl);
+ }
+
+ /**
+ * Removes the old mouse-listener from mouse-listener-l and
+ * returns the resulting multicast listener.
+ * @param l mouse-listener-l
+ * @param oldl the mouse-listener being removed
+ */
+ public static MouseListener remove(MouseListener l, MouseListener oldl) {
+ return (MouseListener) removeInternal(l, oldl);
+ }
+
+ /**
+ * Removes the old mouse-motion-listener from mouse-motion-listener-l
+ * and returns the resulting multicast listener.
+ * @param l mouse-motion-listener-l
+ * @param oldl the mouse-motion-listener being removed
+ */
+ public static MouseMotionListener remove(MouseMotionListener l,
MouseMotionListener oldl) {
+ return (MouseMotionListener) removeInternal(l, oldl);
+ }
+
+ /**
+ * Removes the old window-listener from window-listener-l and
+ * returns the resulting multicast listener.
+ * @param l window-listener-l
+ * @param oldl the window-listener being removed
+ */
+ public static WindowListener remove(WindowListener l, WindowListener oldl)
{
+ return (WindowListener) removeInternal(l, oldl);
+ }
+
+ /**
+ * Removes the old action-listener from action-listener-l and
+ * returns the resulting multicast listener.
+ * @param l action-listener-l
+ * @param oldl the action-listener being removed
+ */
+ public static ActionListener remove(ActionListener l, ActionListener oldl)
{
+ return (ActionListener) removeInternal(l, oldl);
+ }
+
+ /**
+ * Removes the old item-listener from item-listener-l and
+ * returns the resulting multicast listener.
+ * @param l item-listener-l
+ * @param oldl the item-listener being removed
+ */
+ public static ItemListener remove(ItemListener l, ItemListener oldl) {
+ return (ItemListener) removeInternal(l, oldl);
+ }
+
+ /**
+ * Removes the old adjustment-listener from adjustment-listener-l and
+ * returns the resulting multicast listener.
+ * @param l adjustment-listener-l
+ * @param oldl the adjustment-listener being removed
+ */
+ public static AdjustmentListener remove(AdjustmentListener l,
AdjustmentListener oldl) {
+ return (AdjustmentListener) removeInternal(l, oldl);
+ }
+ public static TextListener remove(TextListener l, TextListener oldl) {
+ return (TextListener) removeInternal(l, oldl);
+ }
+
+ /**
+ * Returns the resulting multicast listener from adding listener-a
+ * and listener-b together.
+ * If listener-a is null, it returns listener-b;
+ * If listener-b is null, it returns listener-a
+ * If neither are null, then it creates and returns
+ * a new AWTEventMulticaster instance which chains a with b.
+ * @param a event listener-a
+ * @param b event listener-b
+ */
+ protected static EventListener addInternal(EventListener a, EventListener
b) {
+ if (a == null) return b;
+ if (b == null) return a;
+ return new AWTEventMulticaster(a, b);
+ }
+
+ /**
+ * Returns the resulting multicast listener after removing the
+ * old listener from listener-l.
+ * If listener-l equals the old listener OR listener-l is null,
+ * returns null.
+ * Else if listener-l is an instance of AWTEventMulticaster,
+ * then it removes the old listener from it.
+ * Else, returns listener l.
+ * @param l the listener being removed from
+ * @param oldl the listener being removed
+ */
+ protected static EventListener removeInternal(EventListener l,
EventListener oldl) {
+ if (l == oldl || l == null) {
+ return null;
+ } else if (l instanceof AWTEventMulticaster) {
+ return ((AWTEventMulticaster)l).remove(oldl);
+ } else {
+ return l; // it's not here
+ }
+ }
+
+
+ /* Serialization support.
+ */
+
+ protected void saveInternal(ObjectOutputStream s, String k) throws
IOException {
+ if (a instanceof AWTEventMulticaster) {
+ ((AWTEventMulticaster)a).saveInternal(s, k);
+ }
+ else if (a instanceof Serializable) {
+ s.writeObject(k);
+ s.writeObject(a);
+ }
+
+ if (b instanceof AWTEventMulticaster) {
+ ((AWTEventMulticaster)b).saveInternal(s, k);
+ }
+ else if (b instanceof Serializable) {
+ s.writeObject(k);
+ s.writeObject(b);
+ }
+ }
+
+ static void save(ObjectOutputStream s, String k, EventListener l) throws
IOException {
+ if (l == null) {
+ return;
+ }
+ else if (l instanceof AWTEventMulticaster) {
+ ((AWTEventMulticaster)l).saveInternal(s, k);
+ }
+ else if (l instanceof Serializable) {
+ s.writeObject(k);
+ s.writeObject(l);
+ }
+ }
+}
diff --git a/test/etags/java-src/KeyEve.java b/test/etags/java-src/KeyEve.java
new file mode 100644
index 0000000..dc07fb2
--- /dev/null
+++ b/test/etags/java-src/KeyEve.java
@@ -0,0 +1,440 @@
+/*
+ * @(#)KeyEvent.java 1.20 97/01/30
+ *
+ * Copyright (c) 1995, 1996 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * This software is the confidential and proprietary information of Sun
+ * Microsystems, Inc. ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered into
+ * with Sun.
+ *
+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
+ * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
+ * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
+ * THIS SOFTWARE OR ITS DERIVATIVES.
+ *
+ * CopyrightVersion 1.1_beta
+ *
+ */
+
+package java.awt.event;
+
+import java.awt.Event;
+import java.awt.Component;
+import java.awt.Toolkit;
+
+/**
+ * The component-level keyboard event.
+ *
+ * @version 1.20 30 Jan 1997
+ * @author Carl Quinn
+ * @author Amy Fowler
+ */
+public class KeyEvent extends InputEvent {
+
+ /**
+ * Marks the first integer id for the range of key event ids.
+ */
+ public static final int KEY_FIRST = 400;
+
+ /**
+ * Marks the last integer id for the range of key event ids.
+ */
+ public static final int KEY_LAST = 402;
+
+ /**
+ * The key typed event type. This type is generated by a combination
+ * of a key press followed by a key release.
+ */
+ public static final int KEY_TYPED = KEY_FIRST;
+
+ /**
+ * The key pressed event type.
+ */
+ public static final int KEY_PRESSED = 1 + KEY_FIRST; //Event.KEY_PRESS
+
+ /**
+ * The key released event type.
+ */
+ public static final int KEY_RELEASED = 2 + KEY_FIRST; //Event.KEY_RELEASE
+
+ /**
+ * Virtual key codes. These codes report which keyboard key has
+ * been pressed, rather than any character generated by one or more
+ * keys being pressed.
+ *
+ * For example, pressing the Shift key will cause a KEY_PRESSED event
+ * with a VK_SHIFT keyCode, while pressing the 'a' key will result in
+ * a VK_A keyCode. After the 'a' key is released, a KEY_RELEASED event
+ * will be fired with VK_A, followed by a KEY_TYPED event with a keyChar
+ * value of 'A'. Key combinations which do not result in characters,
+ * such as action keys like F1, will not generate KEY_TYPED events.
+ *
+ * Note: not all keyboards or systems are capable of generating all
+ * virtual key codes. No attempt is made in Java to artificially
+ * generate these keys.
+ *
+ * WARNING: aside from those keys where are defined by the Java language
+ * (VK_ENTER, VK_BACK_SPACE, and VK_TAB), do not rely on the values of
these
+ * constants. Sun reserves the right to change these values as needed
+ * to accomodate a wider range of keyboards in the future.
+ */
+ public static final int VK_ENTER = '\n';
+ public static final int VK_BACK_SPACE = '\b';
+ public static final int VK_TAB = '\t';
+ public static final int VK_CANCEL = 0x03;
+ public static final int VK_CLEAR = 0x0C;
+ public static final int VK_SHIFT = 0x10;
+ public static final int VK_CONTROL = 0x11;
+ public static final int VK_ALT = 0x12;
+ public static final int VK_PAUSE = 0x13;
+ public static final int VK_CAPS_LOCK = 0x14;
+ public static final int VK_ESCAPE = 0x1B;
+ public static final int VK_SPACE = 0x20;
+ public static final int VK_PAGE_UP = 0x21;
+ public static final int VK_PAGE_DOWN = 0x22;
+ public static final int VK_END = 0x23;
+ public static final int VK_HOME = 0x24;
+ public static final int VK_LEFT = 0x25;
+ public static final int VK_UP = 0x26;
+ public static final int VK_RIGHT = 0x27;
+ public static final int VK_DOWN = 0x28;
+ public static final int VK_COMMA = 0x2C;
+ public static final int VK_PERIOD = 0x2E;
+ public static final int VK_SLASH = 0x2F;
+
+ /** VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39) */
+ public static final int VK_0 = 0x30;
+ public static final int VK_1 = 0x31;
+ public static final int VK_2 = 0x32;
+ public static final int VK_3 = 0x33;
+ public static final int VK_4 = 0x34;
+ public static final int VK_5 = 0x35;
+ public static final int VK_6 = 0x36;
+ public static final int VK_7 = 0x37;
+ public static final int VK_8 = 0x38;
+ public static final int VK_9 = 0x39;
+
+ public static final int VK_SEMICOLON = 0x3B;
+ public static final int VK_EQUALS = 0x3D;
+
+ /** VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A) */
+ public static final int VK_A = 0x41;
+ public static final int VK_B = 0x42;
+ public static final int VK_C = 0x43;
+ public static final int VK_D = 0x44;
+ public static final int VK_E = 0x45;
+ public static final int VK_F = 0x46;
+ public static final int VK_G = 0x47;
+ public static final int VK_H = 0x48;
+ public static final int VK_I = 0x49;
+ public static final int VK_J = 0x4A;
+ public static final int VK_K = 0x4B;
+ public static final int VK_L = 0x4C;
+ public static final int VK_M = 0x4D;
+ public static final int VK_N = 0x4E;
+ public static final int VK_O = 0x4F;
+ public static final int VK_P = 0x50;
+ public static final int VK_Q = 0x51;
+ public static final int VK_R = 0x52;
+ public static final int VK_S = 0x53;
+ public static final int VK_T = 0x54;
+ public static final int VK_U = 0x55;
+ public static final int VK_V = 0x56;
+ public static final int VK_W = 0x57;
+ public static final int VK_X = 0x58;
+ public static final int VK_Y = 0x59;
+ public static final int VK_Z = 0x5A;
+
+ public static final int VK_OPEN_BRACKET = 0x5B;
+ public static final int VK_BACK_SLASH = 0x5C;
+ public static final int VK_CLOSE_BRACKET = 0x5D;
+
+ public static final int VK_NUMPAD0 = 0x60;
+ public static final int VK_NUMPAD1 = 0x61;
+ public static final int VK_NUMPAD2 = 0x62;
+ public static final int VK_NUMPAD3 = 0x63;
+ public static final int VK_NUMPAD4 = 0x64;
+ public static final int VK_NUMPAD5 = 0x65;
+ public static final int VK_NUMPAD6 = 0x66;
+ public static final int VK_NUMPAD7 = 0x67;
+ public static final int VK_NUMPAD8 = 0x68;
+ public static final int VK_NUMPAD9 = 0x69;
+ public static final int VK_MULTIPLY = 0x6A;
+ public static final int VK_ADD = 0x6B;
+ public static final int VK_SEPARATER = 0x6C;
+ public static final int VK_SUBTRACT = 0x6D;
+ public static final int VK_DECIMAL = 0x6E;
+ public static final int VK_DIVIDE = 0x6F;
+ public static final int VK_F1 = 0x70;
+ public static final int VK_F2 = 0x71;
+ public static final int VK_F3 = 0x72;
+ public static final int VK_F4 = 0x73;
+ public static final int VK_F5 = 0x74;
+ public static final int VK_F6 = 0x75;
+ public static final int VK_F7 = 0x76;
+ public static final int VK_F8 = 0x77;
+ public static final int VK_F9 = 0x78;
+ public static final int VK_F10 = 0x79;
+ public static final int VK_F11 = 0x7A;
+ public static final int VK_F12 = 0x7B;
+ public static final int VK_DELETE = 0x7F; /* ASCII DEL */
+ public static final int VK_NUM_LOCK = 0x90;
+ public static final int VK_SCROLL_LOCK = 0x91;
+
+ public static final int VK_PRINTSCREEN = 0x9A;
+ public static final int VK_INSERT = 0x9B;
+ public static final int VK_HELP = 0x9C;
+ public static final int VK_META = 0x9D;
+
+ public static final int VK_BACK_QUOTE = 0xC0;
+ public static final int VK_QUOTE = 0xDE;
+
+ /** for Asian Keyboard */
+ public static final int VK_FINAL = 0x18;
+ public static final int VK_CONVERT = 0x1C;
+ public static final int VK_NONCONVERT = 0x1D;
+ public static final int VK_ACCEPT = 0x1E;
+ public static final int VK_MODECHANGE = 0x1F;
+ public static final int VK_KANA = 0x15;
+ public static final int VK_KANJI = 0x19;
+
+ /**
+ * KEY_TYPED events do not have a defined keyCode.
+ */
+ public static final int VK_UNDEFINED = 0x0;
+
+ /**
+ * KEY_PRESSED and KEY_RELEASED events which do not map to a
+ * valid Unicode character do not have a defined keyChar.
+ */
+ public static final char CHAR_UNDEFINED = 0x0;
+
+ int keyCode;
+ char keyChar;
+
+ /*
+ * JDK 1.1 serialVersionUID
+ */
+ private static final long serialVersionUID = -2352130953028126954L;
+
+ /**
+ * Constructs a KeyEvent object with the specified source component,
+ * type, modifiers, and key.
+ * @param source the object where the event originated
+ * @id the event type
+ * @when the time the event occurred
+ * @modifiers the modifier keys down during event
+ * @keyCode the integer code representing the key of the event
+ * @keyChar the Unicode character generated by this event, or NUL
+ */
+ public KeyEvent(Component source, int id, long when, int modifiers,
+ int keyCode, char keyChar) {
+ super(source, id, when, modifiers);
+
+ if (id == KEY_TYPED && keyChar == CHAR_UNDEFINED) {
+ throw new IllegalArgumentException("invalid keyChar");
+ }
+ if (id == KEY_TYPED && keyCode != VK_UNDEFINED) {
+ throw new IllegalArgumentException("invalid keyCode");
+ }
+
+ this.keyCode = keyCode;
+ this.keyChar = keyChar;
+ }
+
+ /*
+ * @deprecated, as of JDK1.1 - Do NOT USE; will be removed in 1.1.1.
+ */
+ public KeyEvent(Component source, int id, long when, int modifiers,
+ int keyCode) {
+ this(source, id, when, modifiers, keyCode, (char)keyCode);
+ }
+
+ /**
+ * Returns the integer key-code associated with the key in this event.
+ * For KEY_TYPED events, keyCode is VK_UNDEFINED.
+ */
+ public int getKeyCode() {
+ return keyCode;
+ }
+
+ public void setKeyCode(int keyCode) {
+ this.keyCode = keyCode;
+ }
+
+ public void setKeyChar(char keyChar) {
+ this.keyChar = keyChar;
+ }
+
+ public void setModifiers(int modifiers) {
+ this.modifiers = modifiers;
+ }
+
+ /**
+ * Returns the character associated with the key in this event.
+ * If no valid Unicode character exists for this key event, keyChar
+ * is CHAR_UNDEFINED.
+ */
+ public char getKeyChar() {
+ return keyChar;
+ }
+
+ /**
+ * Returns a String describing the keyCode, such as "HOME", "F1" or "A".
+ * These strings can be localized by changing the awt.properties file.
+ */
+ public static String getKeyText(int keyCode) {
+ if (keyCode >= VK_0 && keyCode <= VK_9 ||
+ keyCode >= VK_A && keyCode <= VK_Z) {
+ return String.valueOf((char)keyCode);
+ }
+
+ // Check for other ASCII keyCodes.
+ int index = ",./;=[\\]".indexOf(keyCode);
+ if (index >= 0) {
+ return String.valueOf((char)keyCode);
+ }
+
+ switch(keyCode) {
+ case VK_ENTER: return Toolkit.getProperty("AWT.enter", "Enter");
+ case VK_BACK_SPACE: return Toolkit.getProperty("AWT.backSpace",
"Backspace");
+ case VK_TAB: return Toolkit.getProperty("AWT.tab", "Tab");
+ case VK_CANCEL: return Toolkit.getProperty("AWT.cancel", "Cancel");
+ case VK_CLEAR: return Toolkit.getProperty("AWT.clear", "Clear");
+ case VK_SHIFT: return Toolkit.getProperty("AWT.shift", "Shift");
+ case VK_CONTROL: return Toolkit.getProperty("AWT.control",
"Control");
+ case VK_ALT: return Toolkit.getProperty("AWT.alt", "Alt");
+ case VK_PAUSE: return Toolkit.getProperty("AWT.pause", "Pause");
+ case VK_CAPS_LOCK: return Toolkit.getProperty("AWT.capsLock", "Caps
Lock");
+ case VK_ESCAPE: return Toolkit.getProperty("AWT.escape", "Escape");
+ case VK_SPACE: return Toolkit.getProperty("AWT.space", "Space");
+ case VK_PAGE_UP: return Toolkit.getProperty("AWT.pgup", "Page Up");
+ case VK_PAGE_DOWN: return Toolkit.getProperty("AWT.pgdn", "Page
Down");
+ case VK_END: return Toolkit.getProperty("AWT.end", "End");
+ case VK_HOME: return Toolkit.getProperty("AWT.home", "Home");
+ case VK_LEFT: return Toolkit.getProperty("AWT.left", "Left");
+ case VK_UP: return Toolkit.getProperty("AWT.up", "Up");
+ case VK_RIGHT: return Toolkit.getProperty("AWT.right", "Right");
+ case VK_DOWN: return Toolkit.getProperty("AWT.down", "Down");
+
+ case VK_MULTIPLY: return Toolkit.getProperty("AWT.multiply", "NumPad
*");
+ case VK_ADD: return Toolkit.getProperty("AWT.add", "NumPad +");
+ case VK_SEPARATER: return Toolkit.getProperty("AWT.separater",
"NumPad ,");
+ case VK_SUBTRACT: return Toolkit.getProperty("AWT.subtract", "NumPad
-");
+ case VK_DECIMAL: return Toolkit.getProperty("AWT.decimal", "NumPad
.");
+ case VK_DIVIDE: return Toolkit.getProperty("AWT.divide", "NumPad /");
+
+ case VK_F1: return Toolkit.getProperty("AWT.f1", "F1");
+ case VK_F2: return Toolkit.getProperty("AWT.f2", "F2");
+ case VK_F3: return Toolkit.getProperty("AWT.f3", "F3");
+ case VK_F4: return Toolkit.getProperty("AWT.f4", "F4");
+ case VK_F5: return Toolkit.getProperty("AWT.f5", "F5");
+ case VK_F6: return Toolkit.getProperty("AWT.f6", "F6");
+ case VK_F7: return Toolkit.getProperty("AWT.f7", "F7");
+ case VK_F8: return Toolkit.getProperty("AWT.f8", "F8");
+ case VK_F9: return Toolkit.getProperty("AWT.f9", "F9");
+ case VK_F10: return Toolkit.getProperty("AWT.f10", "F10");
+ case VK_F11: return Toolkit.getProperty("AWT.f11", "F11");
+ case VK_F12: return Toolkit.getProperty("AWT.f12", "F12");
+ case VK_DELETE: return Toolkit.getProperty("AWT.delete", "Delete");
+ case VK_NUM_LOCK: return Toolkit.getProperty("AWT.numLock", "Num
Lock");
+ case VK_SCROLL_LOCK: return Toolkit.getProperty("AWT.scrollLock",
"Scroll Lock");
+ case VK_PRINTSCREEN: return Toolkit.getProperty("AWT.printScreen",
"Print Screen");
+ case VK_INSERT: return Toolkit.getProperty("AWT.insert", "Insert");
+ case VK_HELP: return Toolkit.getProperty("AWT.help", "Help");
+ case VK_META: return Toolkit.getProperty("AWT.meta", "Meta");
+ case VK_BACK_QUOTE: return Toolkit.getProperty("AWT.backQuote",
"Back Quote");
+ case VK_QUOTE: return Toolkit.getProperty("AWT.quote", "Quote");
+
+ case VK_FINAL: return Toolkit.getProperty("AWT.final", "Final");
+ case VK_CONVERT: return Toolkit.getProperty("AWT.convert",
"Convert");
+ case VK_NONCONVERT: return Toolkit.getProperty("AWT.noconvert", "No
Convert");
+ case VK_ACCEPT: return Toolkit.getProperty("AWT.accept", "Accept");
+ case VK_MODECHANGE: return Toolkit.getProperty("AWT.modechange",
"Mode Change");
+ case VK_KANA: return Toolkit.getProperty("AWT.kana", "Kana");
+ case VK_KANJI: return Toolkit.getProperty("AWT.kanji", "Kanji");
+ }
+
+ if (keyCode >= VK_NUMPAD0 && keyCode <= VK_NUMPAD9) {
+ String numpad = Toolkit.getProperty("AWT.numpad", "NumPad");
+ char c = (char)(keyCode - VK_NUMPAD0 + '0');
+ return numpad + "-" + c;
+ }
+
+ String unknown = Toolkit.getProperty("AWT.unknown", "Unknown keyCode");
+ return unknown + ": 0x" + Integer.toString(keyCode, 16);
+ }
+
+ /**
+ * Returns a String describing the modifier key(s), such as "Shift",
+ * or "Ctrl+Shift". These strings can be localized by changing the
+ * awt.properties file.
+ */
+ public static String getKeyModifiersText(int modifiers) {
+ StringBuffer buf = new StringBuffer();
+ if ((modifiers & Event.META_MASK) != 0) {
+ buf.append(Toolkit.getProperty("AWT.meta", "Meta"));
+ buf.append("+");
+ }
+ if ((modifiers & Event.CTRL_MASK) != 0) {
+ buf.append(Toolkit.getProperty("AWT.control", "Ctrl"));
+ buf.append("+");
+ }
+ if ((modifiers & Event.META_MASK) != 0) {
+ buf.append(Toolkit.getProperty("AWT.alt", "Alt"));
+ buf.append("+");
+ }
+ if ((modifiers & Event.SHIFT_MASK) != 0) {
+ buf.append(Toolkit.getProperty("AWT.shift", "Shift"));
+ buf.append("+");
+ }
+ if (buf.length() > 0) {
+ buf.setLength(buf.length()-1); // remove trailing '+'
+ }
+ return buf.toString();
+ }
+
+ /** Returns whether or not the key in this event is an "action" key.
+ */
+ public boolean isActionKey() {
+ return (keyChar == CHAR_UNDEFINED);
+ }
+
+ public String paramString() {
+ String typeStr;
+ switch(id) {
+ case KEY_PRESSED:
+ typeStr = "KEY_PRESSED";
+ break;
+ case KEY_RELEASED:
+ typeStr = "KEY_RELEASED";
+ break;
+ case KEY_TYPED:
+ typeStr = "KEY_TYPED";
+ break;
+ default:
+ typeStr = "unknown type";
+ }
+
+ String str = typeStr + ",keyCode=" + keyCode;
+ if (isActionKey() || keyCode == VK_ENTER || keyCode == VK_BACK_SPACE
||
+ keyCode == VK_TAB || keyCode == VK_ESCAPE || keyCode == VK_DELETE ||
+ (keyCode >= VK_NUMPAD0 && keyCode <= VK_NUMPAD9)) {
+ str += "," + getKeyText(keyCode);
+ } else if (keyChar == '\n' || keyChar == '\b' ||
+ keyChar == '\t' || keyChar == VK_ESCAPE || keyChar == VK_DELETE) {
+ str += "," + getKeyText(keyChar);
+ } else {
+ str += ",keyChar='" + keyChar + "'";
+ }
+ if (modifiers > 0) {
+ str += ",modifiers=" + getKeyModifiersText(modifiers);
+ }
+ return str;
+ }
+
+}
diff --git a/test/etags/java-src/SMan.java b/test/etags/java-src/SMan.java
new file mode 100644
index 0000000..ccc9bf1
--- /dev/null
+++ b/test/etags/java-src/SMan.java
@@ -0,0 +1,848 @@
+/*
+ * @(#)SecurityManager.java 1.46 97/01/27
+ *
+ * Copyright (c) 1995, 1996 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * This software is the confidential and proprietary information of Sun
+ * Microsystems, Inc. ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered into
+ * with Sun.
+ *
+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
+ * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
+ * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
+ * THIS SOFTWARE OR ITS DERIVATIVES.
+ *
+ * CopyrightVersion 1.1_beta
+ *
+ */
+
+package java.lang;
+
+import java.io.FileDescriptor;
+import java.util.Hashtable;
+import java.net.InetAddress;
+import java.lang.reflect.Member;
+
+/**
+ * The security manager is an abstract class that allows
+ * applications to implement a security policy. It allows an
+ * application to determine, before performing a possibly unsafe or
+ * sensitive operation, what the operation is and whether the
+ * operation is being performed by a class created via a class loader
+ * rather than installed locally. Classes loaded via a class loader
+ * (especially if they have been downloaded over a network) may be
+ * less trustworthy than classes from files installed locally. The
+ * application can allow or disallow the operation.
+ * <p>
+ * The <code>SecurityManager</code> class contains many methods with
+ * names that begin with the word <code>check</code>. These methods
+ * are called by various methods in the Java libraries before those
+ * methods perform certain potentially sensitive operations. The
+ * invocation of such a check method typically looks like this:
+ * <p><blockquote><pre>
+ * SecurityManager security = System.getSecurityManager();
+ * if (security != null) {
+ * security.check</code><i>XXX</i><code>(argument,
. . . );
+ * }
+ * </pre></blockquote>
+ * <p>
+ * The security manager is thereby given an opportunity to prevent
+ * completion of the operation by throwing an exception. A security
+ * manager routine simply returns if the operation is permitted, but
+ * throws a <code>SecurityException</code> if the operation is not
+ * permitted. The only exception to this convention is
+ * <code>checkTopLevelWindow</code>, which returns a
+ * <code>boolean</code> value.
+ * <p>
+ * The current security manager is set by the
+ * <code>setSecurityManager</code> method in class
+ * <code>System</code>. The current security manager is obtained
+ * by the <code>getSecurityManager</code> method.
+ * <p>
+ * The default implementation of each of the
+ * <code>check</code><i>XXX</i> methods is to assume that the caller
+ * does <i>not</i> have permission to perform the requested operation.
+ *
+ * @author Arthur van Hoff
+ * @version 1.46, 27 Jan 1997
+ * @see java.lang.ClassLoader
+ * @see java.lang.SecurityException
+ * @see java.lang.SecurityManager#checkTopLevelWindow(java.lang.Object)
+ * @see java.lang.System#getSecurityManager()
+ * @see java.lang.System#setSecurityManager(java.lang.SecurityManager)
+ * @since JDK1.0
+ */
+public abstract
+class SecurityManager {
+ /**
+ * This field is <code>true</code> if there is a security check in
+ * progress; <code>false</code> otherwise.
+ *
+ * @since JDK1.0
+ */
+ protected boolean inCheck;
+
+ // Have we been initialized. Effective against finalizer attacks.
+ private boolean initialized = false;
+
+ /**
+ * Tests if there is a security check in progress.
+ *
+ * @return the value of the <code>inCheck</code> field. This field should
+ * contain <code>true</code> if a security check is in progress;
+ * <code>false</code> otherwise.
+ * @see java.lang.SecurityManager#inCheck
+ * @since JDK1.0
+ */
+ public boolean getInCheck() {
+ return inCheck;
+ }
+
+ /**
+ * Constructs a new <code>SecurityManager</code>. An application is
+ * not allowed to create a new security manager if there is already a
+ * current security manager.
+ *
+ * @exception SecurityException if a security manager already exists.
+ * @see java.lang.System#getSecurityManager()
+ * @since JDK1.0
+ */
+ protected SecurityManager() {
+ // checkCreateSecurityManager(); ? REMIND
+ initialized = true;
+ }
+
+ /**
+ * Returns the current execution stack as an array of classes.
+ * <p>
+ * The length of the array is the number of methods on the execution
+ * stack. The element at index <code>0</code> is the class of the
+ * currently executing method, the element at index <code>1</code> is
+ * the class of that method's caller, and so on.
+ *
+ * @return the execution stack.
+ * @since JDK1.0
+ */
+ protected native Class[] getClassContext();
+
+ /**
+ * Returns an object describing the most recent class loader executing
+ * on the stack.
+ *
+ * @return the class loader of the most recent occurrence on the stack
+ * of a method from a class defined using a class loader;
+ * returns <code>null</code> if there is no occurrence on the
+ * stack of a method from a class defined using a class loader.
+ * @since JDK1.0
+ */
+ protected native ClassLoader currentClassLoader();
+
+ /**
+ * Returns the current Class with a ClassLoader on the execution stack.
+ *
+ * @since JDK1.1
+ */
+ protected Class currentLoadedClass() {
+ return currentLoadedClass0();
+ }
+
+ /**
+ * Returns the stack depth of the specified class.
+ *
+ * @param name the fully qualified name of the class to search for.
+ * @return the depth on the stack frame of the first occurrence of a
+ * method from a class with the specified name;
+ * <code>-1</code> if such a frame cannot be found.
+ * @since JDK1.0
+ */
+ protected native int classDepth(String name);
+
+ /**
+ * Returns the stack depth of the most recently executing method
+ * from a class defined using a class loader.
+ *
+ * @return the depth on the stack frame of the most recent occurrence of a
+ * method from a class defined using a class loader; returns
+ * <code>-1</code> if there is no occurrence of a method from
+ * a class defined using a class loader.
+ * @since JDK1.0
+ */
+ protected native int classLoaderDepth();
+
+ /**
+ * Tests if the specified String is in this Class.
+ *
+ * @param name the fully qualified name of the class.
+ * @return <code>true</code> if a method from a class with the specified
+ * name is on the execution stack; <code>false</code> otherwise.
+ * @since JDK1.0
+ */
+ protected boolean inClass(String name) {
+ return classDepth(name) >= 0;
+ }
+
+ /**
+ * Tests if the current ClassLoader is equal to
+ * <code>null</code>.
+ *
+ * @return <code>true</code> if a method from a class defined using a
+ * class loader is on the execution stack.
+ * @since JDK1.0
+ */
+ protected boolean inClassLoader() {
+ return currentClassLoader() != null;
+ }
+
+ /**
+ * Creates an object that encapsulates the current execution
+ * environment. The result of this method is used by the
+ * three-argument <code>checkConnect</code> method and by the
+ * two-argument <code>checkRead</code> method.
+ * <p>
+ * These methods are needed because a trusted method may be called
+ * on to read a file or open a socket on behalf of another method.
+ * The trusted method needs to determine if the other (possibly
+ * untrusted) method would be allowed to perform the operation on its
+ * own.
+ *
+ * @return an implementation-dependent object that encapsulates
+ * sufficient information about the current execution environment
+ * to perform some security checks later.
+ * @see java.lang.SecurityManager#checkConnect(java.lang.String,
+ * int, java.lang.Object)
+ * @see java.lang.SecurityManager#checkRead(java.lang.String,
+ * java.lang.Object)
+ * @since JDK1.0
+ */
+ public Object getSecurityContext() {
+ return null;
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to create a new class loader.
+ * <p>
+ * The <code>checkCreateClassLoader</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @exception SecurityException if the caller does not have permission
+ * to create a new class loader.
+ * @see java.lang.ClassLoader#ClassLoader()
+ * @since JDK1.0
+ */
+ public void checkCreateClassLoader() {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to modify the thread argument.
+ * <p>
+ * This method is invoked for the current security manager by the
+ * <code>stop</code>, <code>suspend</code>, <code>resume</code>,
+ * <code>setPriority</code>, <code>setName</code>, and
+ * <code>setDaemon</code> methods of class <code>Thread</code>.
+ * <p>
+ * The <code>checkAccess</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param g the thread to be checked.
+
+ * @exception SecurityException if the caller does not have permission
+ * to modify the thread.
+ * @see java.lang.System#getSecurityManager()
+ * @see java.lang.Thread#resume()
+ * @see java.lang.Thread#setDaemon(boolean)
+ * @see java.lang.Thread#setName(java.lang.String)
+ * @see java.lang.Thread#setPriority(int)
+ * @see java.lang.Thread#stop()
+ * @see java.lang.Thread#suspend()
+ * @since JDK1.0
+ */
+ public void checkAccess(Thread g) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to modify the thread group argument.
+ * <p>
+ * This method is invoked for the current security manager when a
+ * new child thread or child thread group is created, and by the
+ * <code>setDaemon</code>, <code>setMaxPriority</code>,
+ * <code>stop</code>, <code>suspend</code>, <code>resume</code>, and
+ * <code>destroy</code> methods of class <code>ThreadGroup</code>.
+ * <p>
+ * The <code>checkAccess</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param g the thread group to be checked.
+ * @exception SecurityException if the caller does not have permission
+ * to modify the thread group.
+ * @see java.lang.System#getSecurityManager()
+ * @see java.lang.ThreadGroup#destroy()
+ * @see java.lang.ThreadGroup#resume()
+ * @see java.lang.ThreadGroup#setDaemon(boolean)
+ * @see java.lang.ThreadGroup#setMaxPriority(int)
+ * @see java.lang.ThreadGroup#stop()
+ * @see java.lang.ThreadGroup#suspend()
+ * @since JDK1.0
+ */
+ public void checkAccess(ThreadGroup g) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to cause the Java Virtual Machine to
+ * halt with the specified status code.
+ * <p>
+ * This method is invoked for the current security manager by the
+ * <code>exit</code> method of class <code>Runtime</code>. A status
+ * of <code>0</code> indicates success; other values indicate various
+ * errors.
+ * <p>
+ * The <code>checkExit</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param status the exit status.
+ * @exception SecurityException if the caller does not have permission
+ * to halt the Java Virtual Machine with the specified
status.
+ * @see java.lang.Runtime#exit(int)
+ * @see java.lang.System#getSecurityManager()
+ * @since JDK1.0
+ */
+ public void checkExit(int status) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to create a subprocss.
+ * <p>
+ * This method is invoked for the current security manager by the
+ * <code>exec</code> methods of class <code>Runtime</code>.
+ * <p>
+ * The <code>checkExec</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param cmd the specified system command.
+ * @exception SecurityException if the caller does not have permission
+ * to create a subprocess.
+ * @see java.lang.Runtime#exec(java.lang.String)
+ * @see java.lang.Runtime#exec(java.lang.String, java.lang.String[])
+ * @see java.lang.Runtime#exec(java.lang.String[])
+ * @see java.lang.Runtime#exec(java.lang.String[],
+ * java.lang.String[])
+ * @see java.lang.System#getSecurityManager()
+ * @since JDK1.0
+ */
+ public void checkExec(String cmd) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to dynamic link the library code
+ * specified by the string argument file. The argument is either a
+ * simple library name or a complete filename.
+ * <p>
+ * This method is invoked for the current security manager by
+ * methods <code>load</code> and <code>loadLibrary</code> of class
+ * <code>Runtime</code>.
+ * <p>
+ * The <code>checkLink</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param lib the name of the library.
+ * @exception SecurityException if the caller does not have permission
+ * to dynamically link the library.
+ * @see java.lang.Runtime#load(java.lang.String)
+ * @see java.lang.Runtime#loadLibrary(java.lang.String)
+ * @see java.lang.System#getSecurityManager()
+ * @since JDK1.0
+ */
+ public void checkLink(String lib) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to read from the specified file
+ * descriptor.
+ * <p>
+ * The <code>checkRead</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param fd the system-dependent file descriptor.
+ * @exception SecurityException if the caller does not have permission
+ * to access the specified file descriptor.
+ * @see java.io.FileDescriptor
+ * @since JDK1.0
+ */
+ public void checkRead(FileDescriptor fd) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to read the file specified by the
+ * string argument.
+ * <p>
+ * The <code>checkRead</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param file the system-dependent file name.
+ * @exception SecurityException if the caller does not have permission
+ * to access the specified file.
+ * @since JDK1.0
+ */
+ public void checkRead(String file) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * specified security context is not allowed to read the file
+ * specified by the string argument. The context must be a security
+ * context returned by a previous call to
+ * <code>getSecurityContext</code>.
+ * <p>
+ * The <code>checkRead</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param file the system-dependent filename.
+ * @param context a system-dependent security context.
+ * @exception SecurityException if the specified security context does
+ * not have permission to read the specified file.
+ * @see java.lang.SecurityManager#getSecurityContext()
+ * @since JDK1.0
+ */
+ public void checkRead(String file, Object context) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to write to the specified file
+ * descriptor.
+ * <p>
+ * The <code>checkWrite</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param fd the system-dependent file descriptor.
+ * @exception SecurityException if the caller does not have permission
+ * to access the specified file descriptor.
+ * @see java.io.FileDescriptor
+ * @since JDK1.0
+ */
+ public void checkWrite(FileDescriptor fd) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to write to the file specified by
+ * the string argument.
+ * <p>
+ * The <code>checkWrite</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param file the system-dependent filename.
+ * @exception SecurityException if the caller does not have permission
+ * to access the specified file.
+ * @since JDK1.0
+ */
+ public void checkWrite(String file) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to delete the specified file.
+ * <p>
+ * This method is invoked for the current security manager by the
+ * <code>delete</code> method of class <code>File</code>.
+ * <p>
+ * The <code>checkDelete</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param file the system-dependent filename.
+ * @exception SecurityException if the caller does not have permission
+ * to delete the file.
+ * @see java.io.File#delete()
+ * @see java.lang.System#getSecurityManager()
+ * @since JDK1.0
+ */
+ public void checkDelete(String file) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to open a socket connection to the
+ * specified host and port number.
+ * <p>
+ * A port number of <code>-1</code> indicates that the calling
+ * method is attempting to determine the IP address of the specified
+ * host name.
+ * <p>
+ * The <code>checkConnect</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param host the host name port to connect to.
+ * @param port the protocol port to connect to.
+ * @exception SecurityException if the caller does not have permission
+ * to open a socket connection to the specified
+ * <code>host</code> and <code>port</code>.
+ * @since JDK1.0
+ */
+ public void checkConnect(String host, int port) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * specified security context is not allowed to open a socket
+ * connection to the specified host and port number.
+ * <p>
+ * A port number of <code>-1</code> indicates that the calling
+ * method is attempting to determine the IP address of the specified
+ * host name.
+ * <p>
+ * The <code>checkConnect</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param host the host name port to connect to.
+ * @param port the protocol port to connect to.
+ * @param context a system-dependent security context.
+ * @exception SecurityException if the specified security context does
+ * not have permission to open a socket connection to the
+ * specified <code>host</code> and <code>port</code>.
+ * @see java.lang.SecurityManager#getSecurityContext()
+ * @since JDK1.0
+ */
+ public void checkConnect(String host, int port, Object context) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to wait for a connection request on
+ * the specified local port number.
+ * <p>
+ * The <code>checkListen</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param port the local port.
+ * @exception SecurityException if the caller does not have permission
+ * to listen on the specified port.
+ * @since JDK1.0
+ */
+ public void checkListen(int port) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not permitted to accept a socket connection from
+ * the specified host and port number.
+ * <p>
+ * This method is invoked for the current security manager by the
+ * <code>accept</code> method of class <code>ServerSocket</code>.
+ * <p>
+ * The <code>checkAccept</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param host the host name of the socket connection.
+ * @param port the port number of the socket connection.
+ * @exception SecurityException if the caller does not have permission
+ * to accept the connection.
+ * @see java.lang.System#getSecurityManager()
+ * @see java.net.ServerSocket#accept()
+ * @since JDK1.0
+ */
+ public void checkAccept(String host, int port) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Tests if current execution context is allowed to use
+ * (join/leave/send/receive) IP multicast.
+ *
+ * @param multicast Internet group address to be used.
+ * @exception SecurityException if a security error has occurred.
+ * @since JDK1.1
+ */
+ public void checkMulticast(InetAddress maddr) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Tests to see if current execution context is allowed to use
+ * (join/leave/send/receive) IP multicast.
+ *
+ * @param multicast Internet group address to be used.
+ * @param ttl value in use, if it is multicast send.
+ * @exception SecurityException if a security error has occurred.
+ * @since JDK1.1
+ */
+ public void checkMulticast(InetAddress maddr, byte ttl) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to access or modify the system
+ * properties.
+ * <p>
+ * This method is used by the <code>getProperties</code> and
+ * <code>setProperties</code> methods of class <code>System</code>.
+ * <p>
+ * The <code>checkPropertiesAccess</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @exception SecurityException if the caller does not have permission
+ * to access or modify the system properties.
+ * @see java.lang.System#getProperties()
+ * @see java.lang.System#setProperties(java.util.Properties)
+ * @since JDK1.0
+ */
+ public void checkPropertiesAccess() {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to access the system property with
+ * the specified <code>key</code> name.
+ * <p>
+ * This method is used by the <code>getProperty</code> method of
+ * class <code>System</code>.
+ * <p>
+ * The <code>checkPropertiesAccess</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param key a system property key.
+ * @exception SecurityException if the caller does not have permission
+ * to access the specified system property.
+ * @see java.lang.System#getProperty(java.lang.String)
+ * @since JDK1.0
+ */
+ public void checkPropertyAccess(String key) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Returns <code>false</code> if the calling
+ * thread is not trusted to bring up the top-level window indicated
+ * by the <code>window</code> argument. In this case, the caller can
+ * still decide to show the window, but the window should include
+ * some sort of visual warning. If the method returns
+ * <code>true</code>, then the window can be shown without any
+ * special restrictions.
+ * <p>
+ * See class <code>Window</code> for more information on trusted and
+ * untrusted windows.
+ * <p>
+ * The <code>checkSetFactory</code> method for class
+ * <code>SecurityManager</code> always returns <code>false</code>.
+ *
+ * @param window the new window that is being created.
+ * @return <code>true</code> if the caller is trusted to put up
+ * top-level windows; <code>false</code> otherwise.
+ * @exception SecurityException if creation is disallowed entirely.
+ * @see java.awt.Window
+ * @since JDK1.0
+ */
+ public boolean checkTopLevelWindow(Object window) {
+ return false;
+ }
+
+ /**
+ * Tests if a client can initiate a print job request.
+ *
+ * @since JDK1.1
+ */
+ public void checkPrintJobAccess() {
+ throw new SecurityException();
+ }
+
+ /**
+ * Tests if a client can get access to the system clipboard.
+ *
+ * @since JDK1.1
+ */
+ public void checkSystemClipboardAccess() {
+ throw new SecurityException();
+ }
+
+ /**
+ * Tests if a client can get access to the AWT event queue.
+ *
+ * @since JDK1.1
+ */
+ public void checkAwtEventQueueAccess() {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to access the package specified by
+ * the argument.
+ * <p>
+ * This method is used by the <code>loadClass</code> method of class
+ * loaders.
+ * <p>
+ * The <code>checkPackageAccess</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param pkg the package name.
+ * @exception SecurityException if the caller does not have permission
+ * to access the specified package.
+ * @see java.lang.ClassLoader#loadClass(java.lang.String, boolean)
+ * @since JDK1.0
+ */
+ public void checkPackageAccess(String pkg) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to define classes in the package
+ * specified by the argument.
+ * <p>
+ * This method is used by the <code>loadClass</code> method of some
+ * class loaders.
+ * <p>
+ * The <code>checkPackageDefinition</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @param pkg the package name.
+ * @exception SecurityException if the caller does not have permission
+ * to define classes in the specified package.
+ * @see java.lang.ClassLoader#loadClass(java.lang.String, boolean)
+ * @since JDK1.0
+ */
+ public void checkPackageDefinition(String pkg) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Throws a <code>SecurityException</code> if the
+ * calling thread is not allowed to set the socket factory used by
+ * <code>ServerSocket</code> or <code>Socket</code>, or the stream
+ * handler factory used by <code>URL</code>.
+ * <p>
+ * The <code>checkSetFactory</code> method for class
+ * <code>SecurityManager</code> always throws a
+ * <code>SecurityException</code>.
+ *
+ * @exception SecurityException if the caller does not have permission
+ * to specify a socket factory or a stream handler factory.
+ * @see java.net.ServerSocket#setSocketFactory(
+ *
java.net.SocketImplFactory)
+ * @see java.net.Socket#setSocketImplFactory(
+ *
java.net.SocketImplFactory)
+ * @see java.net.URL#setURLStreamHandlerFactory(
+ *
java.net.URLStreamHandlerFactory)
+ * @since JDK1.0
+ */
+ public void checkSetFactory() {
+ throw new SecurityException();
+ }
+
+ /**
+ * Tests if a client is allowed to access members. If access is
+ * denied, throw a SecurityException.
+ * The default policy is to deny all accesses.
+ *
+ * @since JDK1.1
+ */
+ public void checkMemberAccess(Class clazz, int which) {
+ throw new SecurityException();
+ }
+
+ /**
+ * Tests access to certain operations for a security API
+ * action.
+ *
+ * @since JDK1.1
+ */
+ public void checkSecurityAccess(String action) {
+ throw new SecurityException();
+ }
+
+ private native Class currentLoadedClass0();
+
+ /**
+ * Returns the thread group into which to instantiate any new
+ * thread being created at the time this is being called.
+ * By default, it returns the thread group of the current
+ * thread. This should be overriden by specific security
+ * manager to return the appropriate thread group.
+ *
+ * @since JDK1.1
+ */
+ public ThreadGroup getThreadGroup() {
+ return Thread.currentThread().getThreadGroup();
+ }
+
+}
+
+class NullSecurityManager extends SecurityManager {
+ public void checkCreateClassLoader() { }
+ public void checkAccess(Thread g) { }
+ public void checkAccess(ThreadGroup g) { }
+ public void checkExit(int status) { }
+ public void checkExec(String cmd) { }
+ public void checkLink(String lib) { }
+ public void checkRead(FileDescriptor fd) { }
+ public void checkRead(String file) { }
+ public void checkRead(String file, Object context) { }
+ public void checkWrite(FileDescriptor fd) { }
+ public void checkWrite(String file) { }
+ public void checkDelete(String file) { }
+ public void checkConnect(String host, int port) { }
+ public void checkConnect(String host, int port, Object context) { }
+ public void checkListen(int port) { }
+ public void checkAccept(String host, int port) { }
+ public void checkMulticast(InetAddress maddr) { }
+ public void checkMulticast(InetAddress maddr, byte ttl) { }
+ public void checkPropertiesAccess() { }
+ public void checkPropertyAccess(String key) { }
+ public void checkPropertyAccess(String key, String def) { }
+ public boolean checkTopLevelWindow(Object window) { return true; }
+ public void checkPrintJobAccess() { }
+ public void checkSystemClipboardAccess() { }
+ public void checkAwtEventQueueAccess() { }
+ public void checkPackageAccess(String pkg) { }
+ public void checkPackageDefinition(String pkg) { }
+ public void checkSetFactory() { }
+ public void checkMemberAccess(Class clazz, int which) { }
+ public void checkSecurityAccess(String provider) { }
+}
diff --git a/test/etags/java-src/SysCol.java b/test/etags/java-src/SysCol.java
new file mode 100644
index 0000000..5356442
--- /dev/null
+++ b/test/etags/java-src/SysCol.java
@@ -0,0 +1,381 @@
+/*
+ * @(#)SystemColor.java 1.5 97/01/27
+ *
+ * Copyright (c) 1995, 1996 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * This software is the confidential and proprietary information of Sun
+ * Microsystems, Inc. ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered into
+ * with Sun.
+ *
+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
+ * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
+ * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
+ * THIS SOFTWARE OR ITS DERIVATIVES.
+ *
+ * CopyrightVersion 1.1_beta
+ *
+ */
+package java.awt;
+
+/**
+ * A class to encapsulate symbolic colors representing the color
+ * of GUI objects on a system. For systems which support the dynamic
+ * update of the system colors (when the user changes the colors)
+ * the actual RGB values of these symbolic colors will also change
+ * dynamically. In order to compare the "current" RGB value of a SystemColor
+ * object with a non-symbolic Color object, getRGB() should be used
+ * rather than equals().
+ *
+ * @version 1.5, 27 Jan 1997
+ * @author Carl Quinn
+ * @author Amy Fowler
+ */
+public final class SystemColor extends Color implements java.io.Serializable {
+
+ /**
+ * The array index for the desktop background color.
+ */
+ public final static int DESKTOP = 0;
+
+ /**
+ * The array index for the active caption background color.
+ */
+ public final static int ACTIVE_CAPTION = 1;
+
+ /**
+ * The array index for the action caption text color.
+ */
+ public final static int ACTIVE_CAPTION_TEXT = 2;
+
+ /**
+ * The array index for the active caption border color.
+ */
+ public final static int ACTIVE_CAPTION_BORDER = 3;
+
+ /**
+ * The array index for the inactive caption background color.
+ */
+ public final static int INACTIVE_CAPTION = 4;
+
+ /**
+ * The array index for the inactive caption text color.
+ */
+ public final static int INACTIVE_CAPTION_TEXT = 5;
+
+ /**
+ * The array index for the inactive caption border color.
+ */
+ public final static int INACTIVE_CAPTION_BORDER = 6;
+
+ /**
+ * The array index for the window background color.
+ */
+ public final static int WINDOW = 7;
+
+ /**
+ * The array index for the window border color.
+ */
+ public final static int WINDOW_BORDER = 8;
+
+ /**
+ * The array index for the window text color.
+ */
+ public final static int WINDOW_TEXT = 9;
+
+ /**
+ * The array index for the menu background color.
+ */
+ public final static int MENU = 10;
+
+ /**
+ * The array index for the menu text color.
+ */
+ public final static int MENU_TEXT = 11;
+
+ /**
+ * The array index for the text background color.
+ */
+ public final static int TEXT = 12;
+
+ /**
+ * The array index for the text text color.
+ */
+ public final static int TEXT_TEXT = 13;
+
+ /**
+ * The array index for the text highlight color.
+ */
+ public final static int TEXT_HIGHLIGHT = 14;
+
+ /**
+ * The array index for the text highlight text color.
+ */
+ public final static int TEXT_HIGHLIGHT_TEXT = 15;
+
+ /**
+ * The array index for the text inactive text color.
+ */
+ public final static int TEXT_INACTIVE_TEXT = 16;
+
+ /**
+ * The array index for the control background color.
+ */
+ public final static int CONTROL = 17;
+
+ /**
+ * The array index for the control text color.
+ */
+ public final static int CONTROL_TEXT = 18;
+
+ /**
+ * The array index for the control highlight color.
+ */
+ public final static int CONTROL_HIGHLIGHT = 19;
+
+ /**
+ * The array index for the control light highlight color.
+ */
+ public final static int CONTROL_LT_HIGHLIGHT = 20;
+
+ /**
+ * The array index for the control shadow color.
+ */
+ public final static int CONTROL_SHADOW = 21;
+
+ /**
+ * The array index for the control dark shadow color.
+ */
+ public final static int CONTROL_DK_SHADOW = 22;
+
+ /**
+ * The array index for the scrollbar background color.
+ */
+ public final static int SCROLLBAR = 23;
+
+ /**
+ * The array index for the info background color.
+ */
+ public final static int INFO = 24;
+
+ /**
+ * The array index for the info text color.
+ */
+ public final static int INFO_TEXT = 25;
+
+ /**
+ * The number of system colors in the array.
+ */
+ public final static int NUM_COLORS = 26;
+
+ /**
+ * The color of the desktop background.
+ */
+ public final static SystemColor desktop = new SystemColor((byte)DESKTOP);
+
+ /**
+ * The background color for captions in window borders.
+ */
+ public final static SystemColor activeCaption = new
SystemColor((byte)ACTIVE_CAPTION);
+
+ /**
+ * The text color for captions in window borders.
+ */
+ public final static SystemColor activeCaptionText = new
SystemColor((byte)ACTIVE_CAPTION_TEXT);
+
+ /**
+ * The border color for captions in window borders.
+ */
+ public final static SystemColor activeCaptionBorder = new
SystemColor((byte)ACTIVE_CAPTION_BORDER);
+
+ /**
+ * The background color for inactive captions in window borders.
+ */
+ public final static SystemColor inactiveCaption = new
SystemColor((byte)INACTIVE_CAPTION);
+
+ /**
+ * The text color for inactive captions in window borders.
+ */
+ public final static SystemColor inactiveCaptionText = new
SystemColor((byte)INACTIVE_CAPTION_TEXT);
+
+ /**
+ * The border color for inactive captios in window borders.
+ */
+ public final static SystemColor inactiveCaptionBorder = new
SystemColor((byte)INACTIVE_CAPTION_BORDER);
+
+ /**
+ * The background color for windows.
+ */
+ public final static SystemColor window = new SystemColor((byte)WINDOW);
+
+ /**
+ * The border color for windows.
+ */
+ public final static SystemColor windowBorder = new
SystemColor((byte)WINDOW_BORDER);
+
+ /**
+ * The text color for windows.
+ */
+ public final static SystemColor windowText = new
SystemColor((byte)WINDOW_TEXT);
+
+ /**
+ * The background color for menus.
+ */
+ public final static SystemColor menu = new SystemColor((byte)MENU);
+
+ /**
+ * The text color for menus.
+ */
+ public final static SystemColor menuText = new
SystemColor((byte)MENU_TEXT);
+
+ /**
+ * The background color for text components.
+ */
+ public final static SystemColor text = new SystemColor((byte)TEXT);
+
+ /**
+ * The text color for text components.
+ */
+ public final static SystemColor textText = new
SystemColor((byte)TEXT_TEXT);
+
+ /**
+ * The background color for highlighted text.
+ */
+ public final static SystemColor textHighlight = new
SystemColor((byte)TEXT_HIGHLIGHT);
+
+ /**
+ * The text color for highlighted text.
+ */
+ public final static SystemColor textHighlightText = new
SystemColor((byte)TEXT_HIGHLIGHT_TEXT);
+
+ /**
+ * The text color for inactive text.
+ */
+ public final static SystemColor textInactiveText = new
SystemColor((byte)TEXT_INACTIVE_TEXT);
+
+ /**
+ * The background color for control objects.
+ */
+ public final static SystemColor control = new SystemColor((byte)CONTROL);
+
+ /**
+ * The text color for control objects.
+ */
+ public final static SystemColor controlText = new
SystemColor((byte)CONTROL_TEXT);
+
+ /**
+ * The light highlight color for control objects.
+ */
+ public final static SystemColor controlHighlight = new
SystemColor((byte)CONTROL_HIGHLIGHT);
+
+ /**
+ * The regular highlight color for control objects.
+ */
+ public final static SystemColor controlLtHighlight = new
SystemColor((byte)CONTROL_LT_HIGHLIGHT);
+
+ /**
+ * The regular shadow color for control objects.
+ */
+ public final static SystemColor controlShadow = new
SystemColor((byte)CONTROL_SHADOW);
+
+ /**
+ * The dark shadow color for control objects.
+ */
+ public final static SystemColor controlDkShadow = new
SystemColor((byte)CONTROL_DK_SHADOW);
+
+ /**
+ * The background color for scrollbars.
+ */
+ public final static SystemColor scrollbar = new
SystemColor((byte)SCROLLBAR);
+
+ /**
+ * The background color for info(help) text.
+ */
+ public final static SystemColor info = new SystemColor((byte)INFO);
+
+ /**
+ * The text color for info(help) text.
+ */
+ public final static SystemColor infoText = new
SystemColor((byte)INFO_TEXT);
+
+ /*
+ * System colors with default initial values, overwritten by toolkit if
+ * system values differ and are available.
+ */
+ private static int[] systemColors = {
+ 0xFF005C5C, // desktop = new Color(0,92,92);
+ 0xFF000080, // activeCaption = new Color(0,0,128);
+ 0xFFFFFFFF, // activeCaptionText = Color.white;
+ 0xFFC0C0C0, // activeCaptionBorder = Color.lightGray;
+ 0xFF808080, // inactiveCaption = Color.gray;
+ 0xFFC0C0C0, // inactiveCaptionText = Color.lightGray;
+ 0xFFC0C0C0, // inactiveCaptionBorder = Color.lightGray;
+ 0xFFFFFFFF, // window = Color.white;
+ 0xFF000000, // windowBorder = Color.black;
+ 0xFF000000, // windowText = Color.black;
+ 0xFFC0C0C0, // menu = Color.lightGray;
+ 0xFF000000, // menuText = Color.black;
+ 0xFFC0C0C0, // text = Color.lightGray;
+ 0xFF000000, // textText = Color.black;
+ 0xFF000080, // textHighlight = new Color(0,0,128);
+ 0xFFFFFFFF, // textHighlightText = Color.white;
+ 0xFF808080, // textInactiveText = Color.gray;
+ 0xFFC0C0C0, // control = Color.lightGray;
+ 0xFF000000, // controlText = Color.black;
+ 0xFFFFFFFF, // controlHighlight = Color.white;
+ 0xFFE0E0E0, // controlLtHighlight = new Color(224,224,224);
+ 0xFF808080, // controlShadow = Color.gray;
+ 0xFF000000, // controlDkShadow = Color.black;
+ 0xFFE0E0E0, // scrollbar = new Color(224,224,224);
+ 0xFFE0E000, // info = new Color(224,224,0);
+ 0xFF000000, // infoText = Color.black;
+ };
+
+ /*
+ * JDK 1.1 serialVersionUID
+ */
+ private static final long serialVersionUID = 4503142729533789064L;
+
+ static {
+ updateSystemColors();
+ }
+
+ /**
+ * called from <init> & toolkit to update the above systemColors cache
+ */
+ private static void updateSystemColors() {
+ Toolkit.getDefaultToolkit().loadSystemColors(systemColors);
+ }
+
+ /**
+ * Create a symbolic color that represents an indexed entry into system
+ * color cache. Used by above static system colors.
+ */
+ private SystemColor(byte index) {
+ super(0, 0, 0);
+ value = index;
+ }
+
+ /**
+ * Gets the "current" RGB value representing the symbolic color.
+ * (Bits 24-31 are 0xff, 16-23 are red, 8-15 are green, 0-7 are blue).
+ * @see java.awt.image.ColorModel#getRGBdefault
+ * @see #getRed
+ * @see #getGreen
+ * @see #getBlue
+ */
+ public int getRGB() {
+ return systemColors[value];
+ }
+
+ /**
+ * Returns the String representation of this Color's values.
+ */
+ public String toString() {
+ return getClass().getName() + "[i=" + (value) + "]";
+ }
+
+}
diff --git a/test/etags/java-src/TG.java b/test/etags/java-src/TG.java
new file mode 100644
index 0000000..707c2fc
--- /dev/null
+++ b/test/etags/java-src/TG.java
@@ -0,0 +1,840 @@
+/*
+ * @(#)ThreadGroup.java 1.31 97/01/20
+ *
+ * Copyright (c) 1995, 1996 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * This software is the confidential and proprietary information of Sun
+ * Microsystems, Inc. ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered into
+ * with Sun.
+ *
+ * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
+ * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
+ * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
+ * THIS SOFTWARE OR ITS DERIVATIVES.
+ *
+ * CopyrightVersion 1.1_beta
+ *
+ */
+
+package java.lang;
+
+import java.io.PrintStream;
+import sun.misc.VM;
+
+/**
+ * A thread group represents a set of threads. In addition, a thread
+ * group can also include other thread groups. The thread groups form
+ * a tree in which every thread group except the initial thread group
+ * has a parent.
+ * <p>
+ * A thread is allowed to access information about its own thread
+ * group, but not to access information about its thread group's
+ * parent thread group or any other thread groups.
+ *
+ * @author unascribed
+ * @version 1.31, 20 Jan 1997
+ * @since JDK1.0
+ */
+/* The locking strategy for this code is to try to lock only one level of the
+ * tree wherever possible, but otherwise to lock from the bottom up.
+ * That is, from child thread groups to parents.
+ * This has the advantage of limiting the number of locks that need to be held
+ * and in particular avoids having to grab the lock for the root thread group,
+ * (or a global lock) which would be a source of contention on a
+ * multi-processor system with many thread groups.
+ * This policy often leads to taking a snapshot of the state of a thread group
+ * and working off of that snapshot, rather than holding the thread group
locked
+ * while we work on the children.
+ */
+public
+class ThreadGroup {
+ ThreadGroup parent;
+ String name;
+ int maxPriority;
+ boolean destroyed;
+ boolean daemon;
+ boolean vmAllowSuspension;
+
+ int nthreads;
+ Thread threads[];
+
+ int ngroups;
+ ThreadGroup groups[];
+
+ /**
+ * Creates an empty Thread group that is not in any Thread group.
+ * This method is used to create the system Thread group.
+ */
+ private ThreadGroup() { // called from C code
+ this.name = "system";
+ this.maxPriority = Thread.MAX_PRIORITY;
+ }
+
+ /**
+ * Constructs a new thread group. The parent of this new group is
+ * the thread group of the currently running thread.
+ *
+ * @param name the name of the new thread group.
+ * @since JDK1.0
+ */
+ public ThreadGroup(String name) {
+ this(Thread.currentThread().getThreadGroup(), name);
+ }
+
+ /**
+ * Creates a new thread group. The parent of this new group is the
+ * specified thread group.
+ * <p>
+ * The <code>checkAccess</code> method of the parent thread group is
+ * called with no arguments; this may result in a security exception.
+ *
+ * @param parent the parent thread group.
+ * @param name the name of the new thread group.
+ * @exception NullPointerException if the thread group argument is
+ * <code>null</code>.
+ * @exception SecurityException if the current thread cannot create a
+ * thread in the specified thread group.
+ * @see java.lang.SecurityException
+ * @see java.lang.ThreadGroup#checkAccess()
+ * @since JDK1.0
+ */
+ public ThreadGroup(ThreadGroup parent, String name) {
+ if (parent == null) {
+ throw new NullPointerException();
+ }
+ parent.checkAccess();
+ this.name = name;
+ this.maxPriority = parent.maxPriority;
+ this.daemon = parent.daemon;
+ this.vmAllowSuspension = parent.vmAllowSuspension;
+ this.parent = parent;
+ parent.add(this);
+ }
+
+ /**
+ * Returns the name of this thread group.
+ *
+ * @return the name of this thread group.
+ * @since JDK1.0
+ */
+ public final String getName() {
+ return name;
+ }
+
+ /**
+ * Returns the parent of this thread group.
+ *
+ * @return the parent of this thread group. The top-level thread group
+ * is the only thread group whose parent is <code>null</code>.
+ * @since JDK1.0
+ */
+ public final ThreadGroup getParent() {
+ return parent;
+ }
+
+ /**
+ * Returns the maximum priority of this thread group. Threads that are
+ * part of this group cannot have a higher priority than the maximum
+ * priority.
+ *
+ * @return the maximum priority that a thread in this thread group
+ * can have.
+ * @since JDK1.0
+ */
+ public final int getMaxPriority() {
+ return maxPriority;
+ }
+
+ /**
+ * Tests if this thread group is a daemon thread group. A
+ * daemon thread group is automatically destroyed when its last
+ * thread is stopped or its last thread group is destroyed.
+ *
+ * @return <code>true</code> if this thread group is a daemon thread
group;
+ * <code>false</code> otherwise.
+ * @since JDK1.0
+ */
+ public final boolean isDaemon() {
+ return daemon;
+ }
+
+ /**
+ * Tests if this thread group has not been destroyed.
+ *
+ * @since JDK1.1
+ */
+ public synchronized boolean isDestroyed() {
+ return destroyed;
+ }
+
+ /**
+ * Changes the daemon status of this thread group.
+ * <p>
+ * First, the <code>checkAccess</code> method of this thread group is
+ * called with no arguments; this may result in a security exception.
+ * <p>
+ * A daemon thread group is automatically destroyed when its last
+ * thread is stopped or its last thread group is destroyed.
+ *
+ * @param daemon if <code>true</code>, marks this thread group as
+ * a daemon thread group; otherwise, marks this
+ * thread group as normal.
+ * @exception SecurityException if the current thread cannot modify
+ * this thread.
+ * @see java.lang.SecurityException
+ * @see java.lang.ThreadGroup#checkAccess()
+ * @since JDK1.0
+ */
+ public final void setDaemon(boolean daemon) {
+ checkAccess();
+ this.daemon = daemon;
+ }
+
+ /**
+ * Sets the maximum priority of the group.
+ * <p>
+ * First, the <code>checkAccess</code> method of this thread group is
+ * called with no arguments; this may result in a security exception.
+ * <p>
+ * Threads in the thread group that already have a higher priority
+ * are not affected.
+ *
+ * @param pri the new priority of the thread group.
+ * @exception SecurityException if the current thread cannot modify
+ * this thread group.
+ * @see java.lang.SecurityException
+ * @see java.lang.ThreadGroup#checkAccess()
+ * @since JDK1.0
+ */
+ public final void setMaxPriority(int pri) {
+ int ngroupsSnapshot;
+ ThreadGroup[] groupsSnapshot;
+ synchronized (this) {
+ checkAccess();
+ if (pri < Thread.MIN_PRIORITY) {
+ maxPriority = Thread.MIN_PRIORITY;
+ } else if (pri < maxPriority) {
+ maxPriority = pri;
+ }
+ ngroupsSnapshot = ngroups;
+ if (groups != null) {
+ groupsSnapshot = new ThreadGroup[ngroupsSnapshot];
+ System.arraycopy(groups, 0, groupsSnapshot, 0, ngroupsSnapshot);
+ } else {
+ groupsSnapshot = null;
+ }
+ }
+ for (int i = 0 ; i < ngroupsSnapshot ; i++) {
+ groupsSnapshot[i].setMaxPriority(pri);
+ }
+ }
+
+ /**
+ * Tests if this thread group is either the thread group
+ * argument or one of its ancestor thread groups.
+ *
+ * @param g a thread group.
+ * @return <code>true</code> if this thread group is the thread group
+ * argument or one of its ancestor thread groups;
+ * <code>false</code> otherwise.
+ * @since JDK1.0
+ */
+ public final boolean parentOf(ThreadGroup g) {
+ for (; g != null ; g = g.parent) {
+ if (g == this) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Determines if the currently running thread has permission to
+ * modify this thread group.
+ * <p>
+ * If there is a security manager, its <code>checkAccess</code> method
+ * is called with this thread group as its argument. This may result
+ * in throwing a <code>SecurityException</code>.
+ *
+ * @exception SecurityException if the current thread is not allowed to
+ * access this thread group.
+ * @see java.lang.SecurityManager#checkAccess(java.lang.ThreadGroup)
+ * @since JDK1.0
+ */
+ public final void checkAccess() {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ security.checkAccess(this);
+ }
+ }
+
+ /**
+ * Returns an estimate of the number of active threads in this
+ * thread group.
+ *
+ * @return the number of active threads in this thread group and in any
+ * other thread group that has this thread group as an ancestor.
+ * @since JDK1.0
+ */
+ public int activeCount() {
+ int result;
+ // Snapshot sub-group data so we don't hold this lock
+ // while our children are computing.
+ int ngroupsSnapshot;
+ ThreadGroup[] groupsSnapshot;
+ synchronized (this) {
+ if (destroyed) {
+ return 0;
+ }
+ result = nthreads;
+ ngroupsSnapshot = ngroups;
+ if (groups != null) {
+ groupsSnapshot = new ThreadGroup[ngroupsSnapshot];
+ System.arraycopy(groups, 0, groupsSnapshot, 0, ngroupsSnapshot);
+ } else {
+ groupsSnapshot = null;
+ }
+ }
+ for (int i = 0 ; i < ngroupsSnapshot ; i++) {
+ result += groupsSnapshot[i].activeCount();
+ }
+ return result;
+ }
+
+ /**
+ * Copies into the specified array every active thread in this
+ * thread group and its subgroups.
+ * <p>
+ * An application should use the <code>activeCount</code> method to
+ * get an estimate of how big the array should be. If the array is
+ * too short to hold all the threads, the extra threads are silently
+ * ignored.
+ *
+ * @param list an array into which to place the list of threads.
+ * @return the number of threads put into the array.
+ * @see java.lang.ThreadGroup#activeCount()
+ * @since JDK1.0
+ */
+ public int enumerate(Thread list[]) {
+ return enumerate(list, 0, true);
+ }
+
+ /**
+ * Copies into the specified array every active thread in this
+ * thread group. If the <code>recurse</code> flag is
+ * <code>true</code>, references to every active thread in this
+ * thread's subgroups are also included. If the array is too short to
+ * hold all the threads, the extra threads are silently ignored.
+ * <p>
+ * An application should use the <code>activeCount</code> method to
+ * get an estimate of how big the array should be.
+ *
+ * @param list an array into which to place the list of threads.
+ * @param recurse a flag indicating whether also to include threads
+ * in thread groups that are subgroups of this
+ * thread group.
+ * @return the number of threads placed into the array.
+ * @see java.lang.ThreadGroup#activeCount()
+ * @since JDK1.0
+ */
+ public int enumerate(Thread list[], boolean recurse) {
+ return enumerate(list, 0, recurse);
+ }
+
+ private int enumerate(Thread list[], int n, boolean recurse) {
+ int ngroupsSnapshot = 0;
+ ThreadGroup[] groupsSnapshot = null;
+ synchronized (this) {
+ if (destroyed) {
+ return 0;
+ }
+ int nt = nthreads;
+ if (nt > list.length - n) {
+ nt = list.length - n;
+ }
+ if (nt > 0) {
+ System.arraycopy(threads, 0, list, n, nt);
+ n += nt;
+ }
+ if (recurse) {
+ ngroupsSnapshot = ngroups;
+ if (groups != null) {
+ groupsSnapshot = new ThreadGroup[ngroupsSnapshot];
+ System.arraycopy(groups, 0, groupsSnapshot, 0,
ngroupsSnapshot);
+ } else {
+ groupsSnapshot = null;
+ }
+ }
+ }
+ if (recurse) {
+ for (int i = 0 ; i < ngroupsSnapshot ; i++) {
+ n = groupsSnapshot[i].enumerate(list, n, true);
+ }
+ }
+ return n;
+ }
+
+ /**
+ * Returns an estimate of the number of active groups in this
+ * thread group.
+ *
+ * @return the number of active thread groups with this thread group as
+ * an ancestor.
+ * @since JDK1.0
+ */
+ public int activeGroupCount() {
+ int ngroupsSnapshot;
+ ThreadGroup[] groupsSnapshot;
+ synchronized (this) {
+ if (destroyed) {
+ return 0;
+ }
+ ngroupsSnapshot = ngroups;
+ if (groups != null) {
+ groupsSnapshot = new ThreadGroup[ngroupsSnapshot];
+ System.arraycopy(groups, 0, groupsSnapshot, 0, ngroupsSnapshot);
+ } else {
+ groupsSnapshot = null;
+ }
+ }
+ int n = ngroupsSnapshot;
+ for (int i = 0 ; i < ngroupsSnapshot ; i++) {
+ n += groupsSnapshot[i].activeGroupCount();
+ }
+ return n;
+ }
+
+ /**
+ * Copies into the specified array references to every active
+ * subgroup in this thread group.
+ * <p>
+ * An application should use the <code>activeGroupCount</code>
+ * method to get an estimate of how big the array should be. If the
+ * array is too short to hold all the thread groups, the extra thread
+ * groups are silently ignored.
+ *
+ * @param list an array into which to place the list of thread groups.
+ * @return the number of thread groups put into the array.
+ * @see java.lang.ThreadGroup#activeGroupCount()
+ * @since JDK1.0
+ */
+ public int enumerate(ThreadGroup list[]) {
+ return enumerate(list, 0, true);
+ }
+
+ /**
+ * Copies into the specified array references to every active
+ * subgroup in this thread group. If the <code>recurse</code> flag is
+ * <code>true</code>, references to all active subgroups of the
+ * subgroups and so forth are also included.
+ * <p>
+ * An application should use the <code>activeGroupCount</code>
+ * method to get an estimate of how big the array should be.
+ *
+ * @param list an array into which to place the list of threads.
+ * @param recurse a flag indicating whether to recursively enumerate
+ * all included thread groups.
+ * @return the number of thread groups put into the array.
+ * @see java.lang.ThreadGroup#activeGroupCount()
+ * @since JDK1.0
+ */
+ public int enumerate(ThreadGroup list[], boolean recurse) {
+ return enumerate(list, 0, recurse);
+ }
+
+ private int enumerate(ThreadGroup list[], int n, boolean recurse) {
+ int ngroupsSnapshot = 0;
+ ThreadGroup[] groupsSnapshot = null;
+ synchronized (this) {
+ if (destroyed) {
+ return 0;
+ }
+ int ng = ngroups;
+ if (ng > list.length - n) {
+ ng = list.length - n;
+ }
+ if (ng > 0) {
+ System.arraycopy(groups, 0, list, n, ng);
+ n += ng;
+ }
+ if (recurse) {
+ ngroupsSnapshot = ngroups;
+ if (groups != null) {
+ groupsSnapshot = new ThreadGroup[ngroupsSnapshot];
+ System.arraycopy(groups, 0, groupsSnapshot, 0,
ngroupsSnapshot);
+ } else {
+ groupsSnapshot = null;
+ }
+ }
+ }
+ if (recurse) {
+ for (int i = 0 ; i < ngroupsSnapshot ; i++) {
+ n = groupsSnapshot[i].enumerate(list, n, true);
+ }
+ }
+ return n;
+ }
+
+ /**
+ * Stops all processes in this thread group.
+ * <p>
+ * First, the <code>checkAccess</code> method of this thread group is
+ * called with no arguments; this may result in a security exception.
+ * <p>
+ * This method then calls the <code>stop</code> method on all the
+ * threads in this thread group and in all of its subgroups.
+ *
+ * @exception SecurityException if the current thread is not allowed
+ * to access this thread group or any of the threads in
+ * the thread group.
+ * @see java.lang.SecurityException
+ * @see java.lang.Thread#stop()
+ * @see java.lang.ThreadGroup#checkAccess()
+ * @since JDK1.0
+ */
+ public final void stop() {
+ int ngroupsSnapshot;
+ ThreadGroup[] groupsSnapshot;
+ synchronized (this) {
+ checkAccess();
+ for (int i = 0 ; i < nthreads ; i++) {
+ threads[i].stop();
+ }
+ ngroupsSnapshot = ngroups;
+ if (groups != null) {
+ groupsSnapshot = new ThreadGroup[ngroupsSnapshot];
+ System.arraycopy(groups, 0, groupsSnapshot, 0, ngroupsSnapshot);
+ } else {
+ groupsSnapshot = null;
+ }
+ }
+ for (int i = 0 ; i < ngroupsSnapshot ; i++) {
+ groupsSnapshot[i].stop();
+ }
+ }
+
+ /**
+ * Suspends all processes in this thread group.
+ * <p>
+ * First, the <code>checkAccess</code> method of this thread group is
+ * called with no arguments; this may result in a security exception.
+ * <p>
+ * This method then calls the <code>suspend</code> method on all the
+ * threads in this thread group and in all of its subgroups.
+ *
+ * @exception SecurityException if the current thread is not allowed
+ * to access this thread group or any of the threads in
+ * the thread group.
+ * @see java.lang.SecurityException
+ * @see java.lang.Thread#suspend()
+ * @see java.lang.ThreadGroup#checkAccess()
+ * @since JDK1.0
+ */
+ public final void suspend() {
+ int ngroupsSnapshot;
+ ThreadGroup[] groupsSnapshot;
+ synchronized (this) {
+ checkAccess();
+ for (int i = 0 ; i < nthreads ; i++) {
+ threads[i].suspend();
+ }
+ ngroupsSnapshot = ngroups;
+ if (groups != null) {
+ groupsSnapshot = new ThreadGroup[ngroupsSnapshot];
+ System.arraycopy(groups, 0, groupsSnapshot, 0, ngroupsSnapshot);
+ } else {
+ groupsSnapshot = null;
+ }
+ }
+ for (int i = 0 ; i < ngroupsSnapshot ; i++) {
+ groupsSnapshot[i].suspend();
+ }
+ }
+
+ /**
+ * Resumes all processes in this thread group.
+ * <p>
+ * First, the <code>checkAccess</code> method of this thread group is
+ * called with no arguments; this may result in a security exception.
+ * <p>
+ * This method then calls the <code>resume</code> method on all the
+ * threads in this thread group and in all of its sub groups.
+ *
+ * @exception SecurityException if the current thread is not allowed to
+ * access this thread group or any of the threads in the
+ * thread group.
+ * @see java.lang.SecurityException
+ * @see java.lang.Thread#resume()
+ * @see java.lang.ThreadGroup#checkAccess()
+ * @since JDK1.0
+ */
+ public final void resume() {
+ int ngroupsSnapshot;
+ ThreadGroup[] groupsSnapshot;
+ synchronized (this) {
+ checkAccess();
+ for (int i = 0 ; i < nthreads ; i++) {
+ threads[i].resume();
+ }
+ ngroupsSnapshot = ngroups;
+ if (groups != null) {
+ groupsSnapshot = new ThreadGroup[ngroupsSnapshot];
+ System.arraycopy(groups, 0, groupsSnapshot, 0, ngroupsSnapshot);
+ } else {
+ groupsSnapshot = null;
+ }
+ }
+ for (int i = 0 ; i < ngroupsSnapshot ; i++) {
+ groupsSnapshot[i].resume();
+ }
+ }
+
+ /**
+ * Destroys this thread group and all of its subgroups. This thread
+ * group must be empty, indicating that all threads that had been in
+ * this thread group have since stopped.
+ *
+ * @exception IllegalThreadStateException if the thread group is not
+ * empty or if the thread group has already been destroyed.
+ * @exception SecurityException if the current thread cannot modify this
+ * thread group.
+ * @since JDK1.0
+ */
+ public final void destroy() {
+ int ngroupsSnapshot;
+ ThreadGroup[] groupsSnapshot;
+ synchronized (this) {
+ checkAccess();
+ if (destroyed || (nthreads > 0)) {
+ throw new IllegalThreadStateException();
+ }
+ ngroupsSnapshot = ngroups;
+ if (groups != null) {
+ groupsSnapshot = new ThreadGroup[ngroupsSnapshot];
+ System.arraycopy(groups, 0, groupsSnapshot, 0, ngroupsSnapshot);
+ } else {
+ groupsSnapshot = null;
+ }
+ if (parent != null) {
+ destroyed = true;
+ ngroups = 0;
+ groups = null;
+ nthreads = 0;
+ threads = null;
+ }
+ }
+ for (int i = 0 ; i < ngroupsSnapshot ; i += 1) {
+ groupsSnapshot[i].destroy();
+ }
+ if (parent != null) {
+ parent.remove(this);
+ }
+ }
+
+ /**
+ * Adds the specified Thread group to this group.
+ * @param g the specified Thread group to be added
+ * @exception IllegalThreadStateException If the Thread group has been
destroyed.
+ */
+ private final void add(ThreadGroup g){
+ synchronized (this) {
+ if (destroyed) {
+ throw new IllegalThreadStateException();
+ }
+ if (groups == null) {
+ groups = new ThreadGroup[4];
+ } else if (ngroups == groups.length) {
+ ThreadGroup newgroups[] = new ThreadGroup[ngroups * 2];
+ System.arraycopy(groups, 0, newgroups, 0, ngroups);
+ groups = newgroups;
+ }
+ groups[ngroups] = g;
+
+ // This is done last so it doesn't matter in case the
+ // thread is killed
+ ngroups++;
+ }
+ }
+
+ /**
+ * Removes the specified Thread group from this group.
+ * @param g the Thread group to be removed
+ * @return if this Thread has already been destroyed.
+ */
+ private void remove(ThreadGroup g) {
+ synchronized (this) {
+ if (destroyed) {
+ return;
+ }
+ for (int i = 0 ; i < ngroups ; i++) {
+ if (groups[i] == g) {
+ ngroups -= 1;
+ System.arraycopy(groups, i + 1, groups, i, ngroups - i);
+ // Zap dangling reference to the dead group so that
+ // the garbage collector will collect it.
+ groups[ngroups] = null;
+ break;
+ }
+ }
+ if (nthreads == 0) {
+ notifyAll();
+ }
+ if (daemon && (nthreads == 0) && (ngroups == 0)) {
+ destroy();
+ }
+ }
+ }
+
+ /**
+ * Adds the specified Thread to this group.
+ * @param t the Thread to be added
+ * @exception IllegalThreadStateException If the Thread group has been
destroyed.
+ */
+ void add(Thread t) {
+ synchronized (this) {
+ if (destroyed) {
+ throw new IllegalThreadStateException();
+ }
+ if (threads == null) {
+ threads = new Thread[4];
+ } else if (nthreads == threads.length) {
+ Thread newthreads[] = new Thread[nthreads * 2];
+ System.arraycopy(threads, 0, newthreads, 0, nthreads);
+ threads = newthreads;
+ }
+ threads[nthreads] = t;
+
+ // This is done last so it doesn't matter in case the
+ // thread is killed
+ nthreads++;
+ }
+ }
+
+ /**
+ * Removes the specified Thread from this group.
+ * @param t the Thread to be removed
+ * @return if the Thread has already been destroyed.
+ */
+ void remove(Thread t) {
+ synchronized (this) {
+ if (destroyed) {
+ return;
+ }
+ for (int i = 0 ; i < nthreads ; i++) {
+ if (threads[i] == t) {
+ System.arraycopy(threads, i + 1, threads, i, --nthreads -
i);
+ // Zap dangling reference to the dead thread so that
+ // the garbage collector will collect it.
+ threads[nthreads] = null;
+ break;
+ }
+ }
+ if (nthreads == 0) {
+ notifyAll();
+ }
+ if (daemon && (nthreads == 0) && (ngroups == 0)) {
+ destroy();
+ }
+ }
+ }
+
+ /**
+ * Prints information about this thread group to the standard
+ * output. This method is useful only for debugging.
+ *
+ * @since JDK1.0
+ */
+ public void list() {
+ list(System.out, 0);
+ }
+ void list(PrintStream out, int indent) {
+ int ngroupsSnapshot;
+ ThreadGroup[] groupsSnapshot;
+ synchronized (this) {
+ for (int j = 0 ; j < indent ; j++) {
+ out.print(" ");
+ }
+ out.println(this);
+ indent += 4;
+ for (int i = 0 ; i < nthreads ; i++) {
+ for (int j = 0 ; j < indent ; j++) {
+ out.print(" ");
+ }
+ out.println(threads[i]);
+ }
+ ngroupsSnapshot = ngroups;
+ if (groups != null) {
+ groupsSnapshot = new ThreadGroup[ngroupsSnapshot];
+ System.arraycopy(groups, 0, groupsSnapshot, 0, ngroupsSnapshot);
+ } else {
+ groupsSnapshot = null;
+ }
+ }
+ for (int i = 0 ; i < ngroupsSnapshot ; i++) {
+ groupsSnapshot[i].list(out, indent);
+ }
+ }
+
+ /**
+ * Called by the Java Virtual Machine when a thread in this
+ * thread group stops because of an uncaught exception.
+ * <p>
+ * The <code>uncaughtException</code> method of
+ * <code>ThreadGroup</code> does the following:
+ * <ul>
+ * <li>If this thread group has a parent thread group, the
+ * <code>uncaughtException</code> method of that parent is called
+ * with the same two arguments.
+ * <li>Otherwise, this method determines if the <code>Throwable</code>
+ * argument is an instance of <code>ThreadDeath</code>. If so, nothing
+ * special is done. Otherwise, the <code>Throwable</code>'s
+ * <code>printStackTrace</code> method is called to print a stack
+ * backtrace to the standard error stream.
+ * </ul>
+ * <p>
+ * Applications can override this method in subclasses of
+ * <code>ThreadGroup</code> to provide alternative handling of
+ * uncaught exceptions.
+ *
+ * @param t the thread that is about to exit.
+ * @param e the uncaught exception.
+ * @see java.lang.System#err
+ * @see java.lang.ThreadDeath
+ * @see java.lang.Throwable#printStackTrace(java.io.PrintStream)
+ * @since JDK1.0
+ */
+ public void uncaughtException(Thread t, Throwable e) {
+ if (parent != null) {
+ parent.uncaughtException(t, e);
+ } else if (!(e instanceof ThreadDeath)) {
+ e.printStackTrace(System.err);
+ }
+ }
+
+ /**
+ * Used by VM to control lowmem implicit suspension.
+ *
+ * @since JDK1.1
+ */
+ public boolean allowThreadSuspension(boolean b) {
+ this.vmAllowSuspension = b;
+ if (!b) {
+ VM.unsuspendSomeThreads();
+ }
+ return true;
+ }
+
+ /**
+ * Returns a string representation of this Thread group.
+ *
+ * @return a string representation of this thread group.
+ * @since JDK1.0
+ */
+ public String toString() {
+ return getClass().getName() + "[name=" + getName() + ",maxpri=" +
maxPriority + "]";
+ }
+}
diff --git a/test/etags/lua-src/allegro.lua b/test/etags/lua-src/allegro.lua
new file mode 100644
index 0000000..c316b6f
--- /dev/null
+++ b/test/etags/lua-src/allegro.lua
@@ -0,0 +1,282 @@
+-- ase -- allegro-sprite-editor: the ultimate sprites factory
+-- Copyright (C) 2001-2004 by David A. Capello
+--
+-- Read "LEGAL.txt" for more information.
+
+-- internal routine
+local function get_layer_by_name (sprite, layer, name)
+ if layer.readable == false then
+ return nil;
+ end
+
+ if layer.name and strcmp (layer.name, name) == 0 then
+ return layer;
+ end
+
+ if layer_is_set (layer) then
+ local it, sub;
+
+ it = layer.layers;
+ while it do
+ sub = get_layer_by_name (sprite, it, name)
+ if sub then
+ return sub;
+ end
+ it = it.next
+ end
+ end
+
+ return nil;
+end
+
+-- internal routine
+local function count_layers (layer)
+ local count;
+
+ if layer.parent.type == GFXOBJ_SPRITE then
+ count = 0;
+ else
+ count = 1;
+ end
+
+ if layer_is_set (layer) then
+ local it = layer.layers;
+ while it do
+ count = count + count_layers (it);
+ it = it.next;
+ end
+ end
+
+ return count;
+end
+
+-- Layer *GetLayerByName (const char *name);
+function GetLayerByName (name)
+ local sprite = current_sprite;
+
+ if sprite and name then
+ return get_layer_by_name (sprite, sprite.set, name);
+ else
+ return nil;
+ end
+end
+
+-- const char *GetUniqueLayerName (void);
+function GetUniqueLayerName ()
+ local sprite = current_sprite;
+
+ if sprite then
+ return _("Layer") .. " " .. count_layers (sprite.set);
+ else
+ return nil;
+ end
+end
+
+-- void SelectLayer (Layer *layer);
+function SelectLayer (layer)
+ if current_sprite then
+ sprite_set_layer (current_sprite, layer);
+ end
+end
+
+-- Layer *NewLayer (const char *name, int x, int y, int w, int h);
+-- creates a new layer with the "name" in the current sprite (in the
+-- current frame) with the specified position and size (if w=h=0 the
+-- routine will use the sprite dimension)
+function NewLayer (name, x, y, w, h)
+ local sprite = current_sprite;
+ local layer = nil;
+ local image, frame, index;
+
+ if sprite and name then
+ if not w or w == 0 then w = sprite.w; end
+ if not h or h == 0 then h = sprite.h; end
+
+ -- new image
+ image = image_new (sprite.imgtype, w, h);
+ if not image then
+ return nil;
+ end
+
+ -- new layer
+ layer = layer_image_new (sprite.imgtype, w, h);
+ if not layer then
+ image_free (image);
+ return nil;
+ end
+
+ -- clear with mask color
+ image_clear (image, 0);
+
+ -- configure layer name and blend mode
+ layer_set_name (layer, name);
+ layer_set_blend_mode (layer, BLEND_MODE_NORMAL);
+
+ -- add image in the layer stock
+ index = stock_add_image (layer.stock, image);
+
+ -- create frame (XXX in the current frpos? --dacap)
+ frame = frame_new (sprite.frpos, index, x, y, 255);
+
+ -- add frame
+ layer_add_frame (layer, frame);
+
+ -- undo stuff
+ if undo_is_enabled (sprite.undo) then
+ undo_open (sprite.undo);
+ undo_add_layer (sprite.undo, sprite.set, layer);
+ undo_set_layer (sprite.undo, sprite);
+ undo_close (sprite.undo);
+ end
+
+ -- add the layer in the sprite set
+ layer_add_layer (sprite.set, layer);
+
+ -- select the new layer
+ sprite_set_layer (sprite, layer);
+ end
+
+ return layer;
+end
+
+-- Layer *NewLayerSet (const char *name);
+-- creates a new layer set with the "name" in the current sprite
+function NewLayerSet (name)
+ local sprite = current_sprite;
+ local layer = nil;
+
+ if sprite and name then
+ -- new layer
+ layer = layer_set_new ();
+ if not layer then
+ return nil;
+ end
+
+ -- configure layer name and blend mode
+ layer_set_name (layer, name);
+
+ -- add the layer in the sprite set
+ layer_add_layer (sprite.set, layer);
+
+ -- select the new layer
+ sprite_set_layer (sprite, layer);
+ end
+
+ return layer;
+end
+
+-- void RemoveLayer (void);
+-- removes the current selected layer
+function RemoveLayer ()
+ local sprite = current_sprite;
+
+ if sprite and sprite.layer then
+ local layer = sprite.layer;
+ local parent = layer.parent;
+ local layer_select;
+
+ -- select: previous layer, or next layer, or parent (if it is not
+ -- the main layer of sprite set)
+ if layer.prev then
+ layer_select = layer.prev;
+ elseif layer.next then
+ layer_select = layer.next;
+ elseif parent != sprite.set then
+ layer_select = parent;
+ else
+ layer_select = nil;
+ end
+
+ -- undo stuff
+ if undo_is_enabled (sprite.undo) then
+ undo_open (sprite.undo);
+ undo_set_layer (sprite.undo, sprite);
+ undo_remove_layer (sprite.undo, layer);
+ undo_close (sprite.undo);
+ end
+
+ -- select other layer
+ sprite_set_layer (sprite, layer_select);
+
+ -- remove the layer
+ layer_remove_layer (parent, layer);
+
+ -- destroy the layer
+ layer_free (layer);
+ end
+end
+
+-- void MoveLayerTop (void);
+-- moves the current layer in the top of the main set
+function MoveLayerTop ()
+ if current_sprite and current_sprite.layer then
+ local layer = current_sprite.layer;
+
+ layer_remove_layer (layer.parent, layer);
+
+ layer_add_layer (current_sprite.set, layer);
+ end
+end
+
+-- void MoveLayerBottom (void);
+-- moves the current layer in the bottom of the main set
+function MoveLayerBottom ()
+ if current_sprite and current_sprite.layer then
+ local layer = current_sprite.layer;
+
+ layer_remove_layer (layer.parent, layer);
+
+ layer_add_layer (current_sprite.set, layer);
+ layer_move_layer (current_sprite.set, layer, nil);
+ end
+end
+
+-- void MoveLayerBefore (Layer *this_one);
+-- moves the current layer above the layer "this_one"
+function MoveLayerBefore (this_one)
+ if current_sprite and current_sprite.layer then
+ local layer = current_sprite.layer;
+ local layer_dest;
+
+ if not this_one then
+ layer_dest = current_sprite.set;
+ else
+ layer_dest = this_one;
+ end
+
+ if layer_dest then
+ layer_remove_layer (layer.parent, layer);
+ layer_add_layer (layer_dest.parent, layer);
+ layer_move_layer (layer_dest.parent, layer, layer_dest);
+ end
+ end
+end
+
+-- void MoveLayerAfter (Layer *this_one);
+-- moves the current layer below the layer "this_one" (if that layer
+-- is a set, the layer is put in the top of the layer set)
+function MoveLayerAfter (this_one)
+ if current_sprite and current_sprite.layer then
+ local layer = current_sprite.layer;
+ local layer_dest;
+
+ if not this_one then
+ layer_dest = current_sprite.set;
+ else
+ layer_dest = this_one;
+ end
+
+ if layer_dest then
+ layer_remove_layer (layer.parent, layer);
+
+ -- insert in the first position of the set
+ if layer_is_set (layer_dest) then
+ layer_add_layer (layer_dest, layer);
+ -- insert below the layer
+ else
+ layer_add_layer (layer_dest.parent, layer);
+ layer_move_layer (layer_dest.parent, layer, layer_dest.prev);
+ end
+ end
+ end
+end
diff --git a/test/etags/make-src/Makefile b/test/etags/make-src/Makefile
new file mode 100644
index 0000000..daf605d
--- /dev/null
+++ b/test/etags/make-src/Makefile
@@ -0,0 +1,226 @@
+LATEST=17
address@hidden address@hidden address@hidden address@hidden
+
+ADASRC=etags-test-for.ada 2ataspri.adb 2ataspri.ads waroquiers.ada
+ASRC=empty.zz empty.zz.gz
+CSRC=abbrev.c ../etags/h.h .//c.c torture.c getopt.h etags.c\
+ exit.c exit.strange_suffix sysdep.h tab.c\
+ emacs/src/gmalloc.c emacs/src/regex.h emacs/src/keyboard.c dostorture.c\
+ machsyscalls.c machsyscalls.h fail.c a/b/b.c
+CPSRC=c.C abstract.C abstract.H cfront.H burton.cpp burton.cpp\
+ functions.cpp MDiagArray2.h Pctest.h Range.h\
+ screen.cpp screen.hpp conway.cpp conway.hpp clheir.cpp.gz clheir.hpp.gz fail.C
+ELSRC=TAGTEST.EL emacs/lisp/progmodes/etags.el
+ERLSRC=gs_dialog.erl lines.erl lists.erl
+FORTHSRC=test-forth.fth
+FSRC=entry.for entry.strange_suffix entry.strange
+HTMLSRC=softwarelibero.html index.shtml algrthms.html software.html
+JAVASRC=AWTEMul.java KeyEve.java SMan.java SysCol.java TG.java
+LUASRC=allegro.lua
+MAKESRC=Makefile
+OBJCSRC=Subprocess.h Subprocess.m PackInsp.h PackInsp.m
+OBJCPPSRC=SimpleCalc.H SimpleCalc.M
+PASSRC=common.pas
+PERLSRC=htlmify-cystic yagrip.pl kai-test.pl mirror.pl
+PHPSRC=lce_functions.php ptest.php sendmail.php
+PSSRC=rfc1245.ps
+PROLSRC=ordsets.prolog natded.prolog
+PYTSRC=server.py
+TEXSRC=testenv.tex gzip.texi texinfo.tex nonewline.tex
+YSRC=parse.y parse.c atest.y cccp.c cccp.y
+SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\
+ ${FORTHSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC} ${OBJCSRC}\
+ ${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC} ${PROLSRC} ${PYTSRC}\
+ ${TEXSRC} ${YSRC}
+NONSRCS=entry.strange lists.erl clheir.hpp.gz
+
+VHDLFLAGS=--language=none --regex='/[ \t]*\(ARCHITECTURE\|CONFIGURATION\) +[^
]* +OF/' --regex='/[ \t]*\(ATTRIBUTE\|ENTITY\|FUNCTION\|PACKAGE\(
BODY\)?\|PROCEDURE\|PROCESS\|TYPE\)[ \t]+\([^ \t(]+\)/\3/'
+COBOLFLAGS=--language=none --regex='/.......[a-zA-Z0-9-]+\./'
+POSTSCRIPTFLAGS=--language=none --regex='#/[^ \t{]+#'
+TCLFLAGS=--lang=none --regex='/proc[ \t]+\([^ \t]+\)/\1/'
+
+GETOPTOBJS= #getopt.o getopt1.o
+RXINCLUDE=-Iemacs/src
+REGEXOBJS=regex.o
+
+CHECKOBJS=chkmalloc.o chkxm.o
+CHECKFLAGS=-DDEBUG -Wno-unused-function
+OBJS=${GETOPTOBJS} ${REGEXOBJS} ${CHECKOBJS}
+CPPFLAGS=${CHECKFLAGS} -DSTDC_HEADERS -DHAVE_GETCWD ${RXINCLUDE} -I.
+LDFLAGS=#-static -lc_p
+WARNINGS=-pedantic -Wall -Wpointer-arith -Winline -Wmissing-prototypes
-Wmissing-declarations -Wunused -Wformat -Wno-switch -Wsign-compare
-Wpointer-arith -Wshadow -Wstrict-prototypes
+CFLAGS=${WARNINGS} -ansi -g3 # -pg -O
+#CC=gcc-3.0
+#TARGET_ARCH=
+FASTCFLAGS=-O3 -finline-functions -ffast-math -funroll-loops
+FASTCFLAGSWARN=${WARNINGS} -Werror ${FASTCFLAGS}
+
+FILTER=grep -v '\.[Cchefy][lor]*,[1-9][0-9]*' || true
+REGEX=/[ \t]*DEFVAR_[A-Z_ \t\n(]+"\([^"]+\)"/
+xx="this line is here because of a fontlock bug
+
+MAKE:=$(MAKE) --no-print-directory
+RUN=time --quiet --format '%U + %S: %E'
+RUN=
+OPTIONS=--members --declarations address@hidden
+ARGS=- < srclist
+
+infiles = $(filter-out ${NONSRCS},${SRCS}) srclist regexfile
+
+quiettest:
+ @rm -f /tmp/[0-9][0-9][0-9][0-9][0-9][0-9]malloc
+ @-$(MAKE) OPTIONS='--no-members' ${LATEST}ediff
+ @-$(MAKE) OPTIONS='--declarations --no-members' ${LATEST}ediff
+ @-$(MAKE) OPTIONS='--members' ${LATEST}ediff
+ @-$(MAKE) OPTIONS='address@hidden --no-members' ${LATEST}ediff
+ @-$(MAKE) OPTIONS='nonexistent --members --declarations address@hidden'
${LATEST}ediff
+ @-$(MAKE) ${LATEST}cdiff
+
+test:
+ @rm -f /tmp/[0-9][0-9][0-9][0-9][0-9][0-9]malloc
+ @$(MAKE) OPTIONS='--no-members' ${LATEST}ediff
+ @$(MAKE) OPTIONS='--declarations --no-members' ${LATEST}ediff
+ @$(MAKE) OPTIONS='--members' ${LATEST}ediff
+ @$(MAKE) OPTIONS='address@hidden --no-members' ${LATEST}ediff
+ @$(MAKE) OPTIONS='nonexistent --members --declarations address@hidden'
${LATEST}ediff
+ @$(MAKE) ${LATEST}cdiff
+
+${CHECKOBJS}: CFLAGS=-g3 -DNULLFREECHECK=0
+
+checker:
+ @rm -f /tmp/[0-9][0-9][0-9][0-9][0-9][0-9]malloc ${REGEXOBJS}
+ @env CHECKEROPTS="--trace --profile --Wfree-null" \
+ $(MAKE) CFLAGS= CHECKOBJS= CHECKFLAGS= CC=checkergcc ${LATEST}ediff
+ rm -f $REGEXOBJS
+
+standalone:
+ rm -f etags ctags
+ @$(MAKE) etags "CPPFLAGS=-UVERSION"
+ @$(MAKE) ctags "CPPFLAGS=-UVERSION"
+
+prof: ETAGS
+ prof -xgs etags
+
+fastetags:
+ rm -f etags ${GETOPTOBJS} ${REGEXOBJS}
+ @$(MAKE) CHECKOBJS= CHECKFLAGS= etags "CFLAGS=-ansi ${FASTCFLAGSWARN}"
+
+fastctags:
+ rm -f ctags ${GETOPTOBJS} ${REGEXOBJS}
+ @$(MAKE) CHECKOBJS= CHECKFLAGS= ctags "CFLAGS=-ansi ${FASTCFLAGSWARN}"
+
+staticetags:
+ rm -f etags ${GETOPTOBJS} ${REGEXOBJS}
+ @$(MAKE) etags CHECKOBJS= CHECKFLAGS= REGEXOBJS= GETOPTOBJS= RXINCLUDE=
"CFLAGS=${FASTCFLAGSWARN} -static"
+
+rsynctofly:
+ rsync --exclude "*~" --exclude core --exclude etags -zauRv .
fly:gnu/etags/
+
+rsyncfromfly:
+ rsync --exclude "*~" --exclude core --exclude etags -zauRv
fly:gnu/etags/ ../..
+
+web ftp publish:
+ @-echo -e \\ttesting with debugging enabled...; $(MAKE) quiettest
+ @-echo -e \\ttesting standalone...; $(MAKE) standalone quiettest
+ @-echo -e \\ttesting fast versions...; $(MAKE) fastetags fastctags
quiettest
+ @$(MAKE) /home/www/pub/etags.c.gz
+ @$(MAKE) /home/www/pub/software/unix/etags.tar.gz
+
+release distrib: web
+ cat xemacs-mail | /usr/sbin/sendmail -f address@hidden ${RELEASELIST}
+ mv etags etags${LATEST}
+ mv ctags ctags${LATEST}
+
+tags: TAGS
+
+clean:
+ rm -f ${OBJS} etags ETAGS
+
+srclist: Makefile
+ @for i in $(SRCS); do echo $$i; done > srclist
+ @echo srclist remade
+
+regexfile: Makefile
+ @echo ' -- This is for GNU Emacs source files' > regexfile
+ @echo '${REGEX}' >> regexfile
+ @echo '{c}${REGEX}\\1/m' >> regexfile
+ @echo regexfile remade
+
+/home/www/pub/etags.c.gz: etags.c
+ co -kv etags.c
+ gzip --best -c etags.c > $@
+
+#/home/www/pub/software/unix/etags.tar.gz: Makefile staticetags etags.1.man
ETAGS.EBNF ETAGS.README
+# tar -hzcf $@ COPYING ChangeLog ETAGS.EBNF etags.c etags.1 etags.1.man
etags
+
+/home/www/pub/software/unix/etags.tar.gz: Makefile etags.1.man ETAGS.EBNF
ETAGS.README maintaining.texi
+ tar -hzcf $@ COPYING ChangeLog ETAGS.EBNF ETAGS.README etags.c etags.1
etags.1.man maintaining.texi
+
+regex.o: emacs/src/regex.c
+ $(CC) ${FASTCFLAGS} -c $?
+
+getopt.o: emacs/lib-src/getopt.c
+ $(CC) ${FASTCFLAGS} -c $?
+
+getopt1.o: emacs/lib-src/getopt1.c
+ $(CC) ${FASTCFLAGS} -c $?
+
+etags: etags.c ${OBJS}
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o etags etags.c ${OBJS}
+
+ctags: etags.c ${OBJS}
+ $(CC) $(CFLAGS) $(CPPFLAGS) -DCTAGS $(LDFLAGS) -o ctags etags.c ${OBJS}
+
+man manpage: etags.1.man
+
+etags.1.man: etags.1
+ nroff -man -Tman etags.1 > $@
+
+maintaining.info: maintaining.texi
+ makeinfo --force --no-split maintaining.texi
+
+TAGS: etags.c
+ etags etags.c
+
+%ediff: ETAGS% ETAGS ${infiles}
+ sdiff --suppress-common-lines --width=103 ETAGS$* ETAGS
+
+oediff: OTAGS ETAGS ${infiles}
+ sdiff --suppress-common-lines --width=103 OTAGS ETAGS
+
+%cdiff: CTAGS% CTAGS ${infiles}
+ sdiff --suppress-common-lines --width=103 CTAGS$* CTAGS
+
+xdiff: ETAGS EXTAGS ${infiles}
+ sdiff --suppress-common-lines --width=103 ETAGS EXTAGS
+
+ETAGS: FRC etags ${infiles}
+ ${RUN} ./etags ${OPTIONS} -o $@ ${ARGS}
+
+ETAGS%: FRC etags% ${infiles}
+ ${RUN} etags$* ${OPTIONS} -o $@ ${ARGS}
+
+ETAGS13 ETAGS14 ETAGS15: etags% ${infiles}
+ TEXTAGS=def:newcommand:newenvironment ${RUN} etags$* address@hidden -o
$@ ${ARGS}
+
+ETAGS12: etags12 ${infiles}
+ ${RUN} etags12 --members -o $@ --regex='${REGEX}' ${ARGS}
+
+OTAGS: oetags ${SRCS} srclist
+ ${RUN} ./oetags -o $@ -t ${ARGS}
+
+CTAGS: ctags ${infiles}
+ ${RUN} ./ctags -o $@ address@hidden ${ARGS}
+
+CTAGS%: ctags% ${infiles}
+ ${RUN} ctags$* -wtTd --globals --members -o $@ address@hidden ${ARGS}
+
+CTAGS13 CTAGS14 CTAGS15: ctags% ${infiles}
+ TEXTAGS=def:newcommand:newenvironment ${RUN} ctags$* -wt -o $@
--regex='${REGEX}' ${ARGS}
+
+EXTAGS: extags ${infiles} Makefile
+ ${RUN} ./extags -e --regex-c='${REGEX}' --c++-types=+x --c-types=+x
--if0=yes --line-directives=yes -o $@ -L - < srclist
+
+.PRECIOUS: ETAGS CTAGS ETAGS16 CTAGS16 ETAGS17 CTAGS17
+
+FRC:;
diff --git a/test/etags/objc-src/PackInsp.h b/test/etags/objc-src/PackInsp.h
new file mode 100644
index 0000000..0e3643c
--- /dev/null
+++ b/test/etags/objc-src/PackInsp.h
@@ -0,0 +1,120 @@
+/*+++*
+ * title: PackageInspector.h
+ * abstract: interface definitions for WM PackageInspector
+ * author: T.R.Hageman, Groningen, The Netherlands
+ * created: November 1994
+ * modified: (see RCS Log at end)
+ * copyleft:
+ *
+ * Copyright (C) 1994,1995 Tom R. Hageman.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * description:
+ *
+ *---*/
+
+#import <appkit/appkit.h>
+#import <apps/Workspace.h>
+
+#include <sys/stat.h>
+
+#import "Subprocess.h"
+
+#define NUMSTATS 4
+#define TYPESTOSTAT "bom", "info", "sizes", "tiff"
+
address@hidden PackageInspector:WMInspector
+{
+ // Outlets
+ id packageArchesField;
+ id packageDescriptionText;
+ id packageIconButton;
+ id packageLocationField;
+ id packageSizesField;
+ id packageStatusField;
+ id packageTitleField;
+ id packageVersionField;
+
+ id inspectorVersionField;
+ id infoPanel;
+ id infoVersionField;
+
+ // other variables.
+ NXBundle *bundle; // class bundle.
+ NXBundle *package; // package bundle.
+ struct stat stats[NUMSTATS]; // for lazy inspection.
+ enum { listContents, listDescription } revertButtonState;
+
+ Subprocess *archProcess; // To determine architectures.
+}
+
+// Actions.
+-showInfo:sender;
+
+-open:sender;
+
+// The workhorses
+-(BOOL)shouldLoad;
+-load;
+-toggleDescription;
+
+// Load helper methods
+-loadKeyValuesFrom:(const char *)type inTable:(HashTable *)table;
+-loadContentsOf:(const char *)type inTable:(HashTable *)table;
+-loadImage;
+
+// Support methods
+-(const char *)getPath:(char *)path forType:(const char *)type;
+-setRevertButtonTitle;
+-(const char *)formatSize:(const char *)size inBuf:(char *)buf;
+
+// Determine architectures, in separate subprocess.
+-(void)getArchs;
+// Subprocess [TRH-enhanced] delegate methods:
+// Subprocess delegate methods:
+-subprocess:(Subprocess *)sender output:(char *)buffer;
+-subprocessDone:(Subprocess *)sender;
+
address@hidden // PackageInspector
+
+/*======================================================================
+ * PackageInspector.h,v
+ * Revision 1.7 1995/08/17 22:18:24 tom
+ * (-open:): new method.
+ *
+ * Revision 1.6 1995/07/30 16:59:51 tom
+ * import Subprocess.h; (archProcess): new ivar;
+ * (-getArchs,-subprocess:output:,-subprocessDone:): new methods;
+ * added for asynchronous arch-determination.
+ *
+ * Revision 1.5 1995/07/29 02:59:55 tom
+ * (NUMSTATS,TYPESTOSTAT): new defines, (stats[NUMSTATS]): new ivar, replaces
+ * bomstat, infostat, t ogeneralize lazy-load code.
+ *
+ * Revision 1.4 1995/04/02 02:39:05 tom
+ * (package): NXBundle instead of (const char *). so that localized info files
+ * are found. (this loses out if *.pkg is a symbolic link, though.)
+ *
+ * Revision 1.3 1994/12/07 00:00:36 tom
+ * add GNU copleft comment.
+ *
+ * Revision 1.2 1994/11/25 20:18:56 tom
+ * (package ivar): use (char*) instead of (NXBundle*) to workaround symlink
problems
+ *
+ * Revision 1.1 1994/11/24 22:39:56 tom
+ * Initial revision
+ *
+ *======================================================================*/
diff --git a/test/etags/objc-src/PackInsp.m b/test/etags/objc-src/PackInsp.m
new file mode 100644
index 0000000..41cc876
--- /dev/null
+++ b/test/etags/objc-src/PackInsp.m
@@ -0,0 +1,505 @@
+/*+++*
+ * title: PackageInspector.m
+ * abstract: NEXTSTEP Workspace Manager Inspector for Installer ".pkg" files.
+ * author: T.R.Hageman, Groningen, The Netherlands
+ * created: November 1994
+ * modified: (see RCS Log at end)
+ * copyleft:
+ *
+ * Copyright (C) 1994,1995 Tom R. Hageman.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * description:
+ *
+ *---*/
+
+#ifdef RCS_ID
+static const char RCSid[] =
+"PackageInspector.m,v 1.8 1995/09/01 21:46:27";
+#endif
+
+#define VERSION "0.951"
+
+#ifndef DEBUG
+# define DEBUG 0
+#endif
+#define LISTCONTENTS 0 // List Contents not yet implemented
+
+#import "PackageInspector.h"
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+// Localized strings
+#define OPENBUTTON NXLocalizedStringFromTableInBundle(NULL,
bundle, "Open", NULL, button label)
+#define LISTCONTENTSBUTTON NXLocalizedStringFromTableInBundle(NULL,
bundle, "List Contents", NULL, button label)
+#define LISTDESCRIPTIONBUTTON NXLocalizedStringFromTableInBundle(NULL,
bundle, "Description", NULL, button label)
+
+// States
+#define STATE_UNINSTALLED NXLocalizedStringFromTableInBundle(NULL,
bundle, "Uninstalled", NULL, original package state)
+#define STATE_INSTALLED
NXLocalizedStringFromTableInBundle(NULL, bundle, "installed", "Installed",
package has been uncompressed unto disk)
+#define STATE_COMPRESSD
NXLocalizedStringFromTableInBundle(NULL, bundle, "compressed", "Compressed",
installed package has been recompressed)
+
+// so InfoView.strings can be ripped off from Installer.app
+#define SIZEFORMAT NXLocalizedStringFromTableInBundle("InfoView",
bundle, "%s installed, %s compressed", NULL, Short indication to user about the
size of a package once installed and the size when compressed)
+#define KBYTES NXLocalizedStringFromTableInBundle("InfoView",
bundle, "KB", NULL, Kilobytes -- package size)
+#define MBYTES NXLocalizedStringFromTableInBundle("InfoView",
bundle, "MB", NULL, MegaBytes -- package size)
+
+#define LOCALIZE(s) NXLoadLocalizedStringFromTableInBundle(NULL,
bundle, s, NULL)
+#define LOCALIZE_ARCH(s)
NXLoadLocalizedStringFromTableInBundle("Architectures", bundle, s, NULL)
+
+
address@hidden PackageInspector
+
++new
+{
+ static PackageInspector *instance;
+
+ if (instance == nil) {
+ char path[MAXPATHLEN+1];
+ const char *nibname = [self name];
+
+ instance = [super new];
+
+ instance->bundle = [NXBundle bundleForClass:self];
+
+ if ([instance->bundle getPath:path forResource:nibname
ofType:"nib"] &&
+ [NXApp loadNibFile:path owner:instance]) {
+ [instance->inspectorVersionField
setStringValue:VERSION];
+ [instance->packageDescriptionText
setVertResizable:YES]; // ??Necessary??
+ }
+ else {
+ fprintf(stderr, "Couldn't load %s.nib\n", nibname);
+ [instance free];
+ instance = nil;
+ }
+ }
+ return instance;
+}
+
+-showInfo:sender
+{
+ if (infoPanel == nil) {
+ char path[MAXPATHLEN+1];
+
+ if ([bundle getPath:path forResource:"Info" ofType:"nib"] &&
+ [NXApp loadNibFile:path owner:self]) {
+ [infoVersionField setStringValue:[inspectorVersionField
stringValue]];
+ }
+ }
+ [infoPanel makeKeyAndOrderFront:sender];
+ return self;
+}
+
+-revert:sender
+{
+ [super revert:sender];
+
+ if ([self selectionCount] != 1) {
+ return nil;
+ }
+ if (sender == [self revertButton]) {
+ [self toggleDescription];
+ }
+ else {
+ char path[MAXPATHLEN+1];
+
+ [package free];
+ [self selectionPathsInto:path separator:'\0'];
+ if (!(package = [[NXBundle allocFromZone:[self zone]]
initForDirectory:path])) {
+ return nil;
+ }
+ if ([self shouldLoad]) {
+ [self load];
+ revertButtonState = listContents;
+ }
+ }
+ [[[self okButton] setTitle:OPENBUTTON] setEnabled:YES];
+ [self setRevertButtonTitle];
+
+ return self;
+}
+
+-ok:sender
+{
+ [self perform:@selector(open:) with:sender afterDelay:0
cancelPrevious:NO];
+ [super ok:sender];
+ return self;
+}
+
+-load
+{
+ char buf[256], size[2][20];
+ HashTable *table = [[HashTable alloc] initKeyDesc:"*" valueDesc:"*"];
+
+ [self getArchs];
+ // Collect information about the package in a hashtable.
+ [self loadKeyValuesFrom:"info" inTable:table];
+ [self loadKeyValuesFrom:"sizes" inTable:table];
+ [self loadContentsOf:"location" inTable:table];
+ [self loadContentsOf:"status" inTable:table];
+
+ // Convenience macro.
+#define LOOKUP(key, notfound) ([table isKey:key] ? [table valueForKey:key] : \
+ (notfound))
+#if 0
+ // Set the various controls.
+ sprintf(buf, "<<not yet implemented>>");
+ // Well then, how *DOES* Installer determine this???
+ [packageArchesField setStringValue:buf];
+#endif
+ [packageDescriptionText setText:LOOKUP("Description", "")];
+ [packageLocationField setStringValue:
+ LOOKUP("location", LOOKUP("DefaultLocation", "???"))];
+
+ [self formatSize:[table valueForKey:"InstalledSize"] inBuf:size[0]];
+ [self formatSize:[table valueForKey:"CompressedSize"] inBuf:size[1]];
+ sprintf(buf, SIZEFORMAT, size[0], size[1]);
+ [packageSizesField setStringValue:buf];
+
+ [packageStatusField setStringValue:LOCALIZE(LOOKUP("status",
"Uninstalled"))];
+ [packageTitleField setStringValue:LOOKUP("Title", "???")];
+ [packageVersionField setStringValue:LOOKUP("Version", "???")];
+#undef LOOKUP
+ // Is this how one frees the contents of a hashtable?
+ [table freeKeys:free values:free];
+ [table free];
+
+ [self loadImage];
+
+ return self;
+}
+
+-loadKeyValuesFrom:(const char *)type inTable:(HashTable *)table
+{
+ char path[MAXPATHLEN+1];
+ NXStream *stream;
+
+ if (stream = NXMapFile([self getPath:path forType:type], NX_READONLY)) {
+ int c;
+
+#if DEBUG & 1
+ fprintf(stderr, "loadKeyValuesFrom:%s\n", path);
+#endif
+ while ((c = NXGetc(stream)) >= 0) {
+ // Buffer sizes should be enough, according to doc.
+ char key[1024+1], value[1024+1];
+ char *p;
+
+ if (NXIsSpace(c)) continue;
+ if (c == '#') {
+ while ((c = NXGetc(stream)) >= 0 && c != '\n') ;
+ continue;
+ }
+ // Found key; collect it.
+ p = key;
+ do {
+ if (p < &key[sizeof key-1]) *p++ = c;
+ } while ((c = NXGetc(stream)) >= 0 && !NXIsSpace(c));
+ *p = '\0';
+
+ // Skip over spaces and tabs.
+ while (c == ' ' || c == '\t') c = NXGetc(stream);
+
+ // Value is rest of line, up to newline.
+ p = value;
+ do {
+ if (p < &value[sizeof value-1]) *p++ = c;
+ } while ((c = NXGetc(stream)) >= 0 && c != '\n');
+ *p = '\0';
+
+ // Insert key/value pair in hashtable.
+#if DEBUG & 1
+ fprintf(stderr, "key:%s value:%s\n", key, value);
+#endif
+ [table insertKey:NXCopyStringBuffer(key)
+ value:NXCopyStringBuffer(value)];
+ }
+
+ NXCloseMemory(stream, NX_FREEBUFFER);
+ }
+ return self;
+
+}
+
+-loadContentsOf:(const char *)type inTable:(HashTable *)table
+{
+ char path[MAXPATHLEN+1];
+ NXStream *stream;
+
+ if (stream = NXMapFile([self getPath:path forType:type], NX_READONLY)) {
+ char line[1024+1];
+ int n = NXRead(stream, line, sizeof line);
+
+ if (n > 0 && line[n-1] == '\n') line[n-1] = '\0'; //
remove trailing newline.
+
+ NXCloseMemory(stream, NX_FREEBUFFER);
+
+ [table insertKey:NXCopyStringBuffer(type)
+ value:NXCopyStringBuffer(line)];
+ }
+ return self;
+}
+
+-loadImage
+{
+ char path[MAXPATHLEN+1];
+ NXImage *image;
+
+ // Remove old image from the button.
+ if (image = [packageIconButton image]) {
+ [packageIconButton setImage:nil];
+ [image free];
+ }
+ // Get the image (if any) from the package
+ image = [[NXImage allocFromZone:[self zone]] initFromFile:[self
getPath:path forType:"tiff"]];
+ [packageIconButton setImage:image];
+
+ return self;
+}
+
+
+#define STAT_EQ(s1, s2) ((s1)->st_ino == (s2)->st_ino && \
+ (s1)->st_dev == (s2)->st_dev && \
+ (s1)->st_mtime == (s2)->st_mtime && \
+ (s1)->st_size == (s2)->st_size)
+
+-(BOOL)shouldLoad
+{
+ char path[MAXPATHLEN+1];
+ struct stat newstats[NUMSTATS];
+ static const char * const typesToStat[NUMSTATS] = { TYPESTOSTAT };
+ BOOL result = NO;
+ int i;
+
+ for (i = 0; i < NUMSTATS; i++) {
+ memset(&newstats[i], 0, sizeof(struct stat));
+ if (!(stat([self getPath:path forType:typesToStat[i]],
&newstats[i]) == 0 &&
+ STAT_EQ(&newstats[i], &stats[i]))) {
+ result = YES;
+ ///break; // NOT!!! must stat all for accurate cache.
+ }
+ stats[i] = newstats[i];
+ }
+
+ return result;
+}
+
+-toggleDescription
+{
+ switch (revertButtonState) {
+ case listContents:
+ // TODO: swap views?
+ revertButtonState = listDescription;
+ break;
+ case listDescription:
+ revertButtonState = listContents;
+ break;
+ }
+ return [self setRevertButtonTitle];
+}
+
+
+// Support methods
+-(const char *)getPath:(char *)buf forType:(const char *)type
+{
+ char name[MAXPATHLEN+1];
+
+ // Get package name, sans extension.
+ *strrchr(strcpy(name, strrchr([package directory], '/')+1), '.') = '\0';
+
+ // Now get the full pathname.
+ [package getPath:buf forResource:name ofType:type];
+#if DEBUG & 2
+ fprintf(stderr, "PackageInspector: type=\"%s\" name=\"%s\"
path=\"%s\"\n",
+ type, name, buf);
+#endif
+ return buf;
+}
+
+-setRevertButtonTitle
+{
+#if LISTCONTENTS
+ [[[self revertButton]
+ setTitle:LOCALIZE(revertButtonState == listContents ?
+ "List Contents" : "Description")]
+ setEnabled:YES];
+#endif
+ return self;
+}
+
+-(const char *)formatSize:(const char *)size inBuf:(char *)buf
+{
+ // [TRH] this is very simplistic (but seems consistent with
Installer.app)
+ if (!size) {
+ strcpy(buf, "???");
+ }
+ else {
+ int len = strlen(size);
+ if (len < 4) {
+ sprintf(buf, "%s%s", size, KBYTES);
+ }
+ else if (len < 6) {
+ sprintf(buf, "%.*s.%.*s%s",
+ (len-3), size, 3-(len-3), size+(len-3),
MBYTES);
+ }
+ else {
+ sprintf(buf, "%.*s%s", (len-3), size, MBYTES);
+ }
+ }
+ return buf;
+}
+
+// Determine architectures, in separate subprocess.
+
+#define WORKING " ..." // `I'm still busy' indicator.
+
+-(void)getArchs
+{
+ char command[2*MAXPATHLEN+10+1];
+
+ if (archProcess) [archProcess terminate:self];
+
+ [packageArchesField setStringValue:WORKING];
+
+ [bundle getPath:command forResource:"archbom" ofType:NULL];
+ strcat(command, " ");
+ [self getPath:&command[strlen(command)] forType:"bom"];
+ archProcess = [[Subprocess allocFromZone:[self zone]] init:command
+ withDelegate:self andPtySupport:NO andStdErr:NO];
+}
+
+-(void)addArchs:(const char *)string
+{
+ char result[1024]; // Should be big enough...
+ const char *s;
+ char *d;
+
+ strcpy(result, [packageArchesField stringValue]);
+ if ((d = strstr(result, WORKING)) != NULL) {
+ *d = '\0';
+ }
+ else {
+ d = result + strlen(result);
+ }
+ if ((s = string)) {
+ do {
+ char name[100];
+ char *t = name;
+
+ while (*s && !NXIsAlNum(*s)) {
+ if (*s == '\n') {
+ *d++ = ' ', s++;
+ }
+ else {
+ *d++ = *s++;
+ }
+ }
+ while (NXIsAlNum(*s)) *t++ = *s++;
+ *t = '\0';
+ if (t > name) {
+#if DEBUG & 4
+ fprintf(stderr, "addArchs:\"%s\" localized:
\"%s\"\n", name, LOCALIZE_ARCH(name));
+#endif
+ strcpy(d, LOCALIZE_ARCH(name));
+ d += strlen(d);
+ }
+ } while (*s);
+
+ strcpy(d, WORKING);
+ }
+ [packageArchesField setStringValue:result];
+ [window displayIfNeeded]; // necessary??
+}
+
+-subprocess:(Subprocess *)sender output:(char *)buffer
+{
+ if (sender == archProcess) {
+ [self addArchs:buffer];
+ }
+ return self;
+}
+
+-subprocessDone:(Subprocess *)sender
+{
+ if (sender == archProcess) {
+ archProcess = nil;
+ [self addArchs:NULL];
+ }
+ [sender free];
+ return self;
+}
+
+static void openInWorkspace(const char *filename)
+{
+ // Indirect approach to circumvent Workspace deadlock/timeout.
+ char command[14+3*MAXPATHLEN+1];
+ const char *s;
+ char *d = command;
+
+ for (s = "exec open '"; *s; ) *d++ = *s++;
+ // Escape single quote characters.
+ for (s = filename; *s; ) {
+ if ((*d++ = *s++) == '\'') {
+ *d++ = '\\', *d++ = '\'', *d++ = '\'';
+ }
+ }
+ for (s = "'&"; *d++ = *s++; ) ;
+ system(command);
+}
+
+-open:sender
+{
+ openInWorkspace([package directory]);
+ return self;
+}
+
address@hidden
+
+/*======================================================================
+ * PackageInspector.m,v
+ * Revision 1.8 1995/09/01 21:46:27 tom
+ * Circumvent open deadlock/timeout (when Installer.app is not yet launched);
+ * (openInWorkspace): new private function; (-open:): new method.
+ *
+ * Revision 1.7 1995/07/30 22:20:26 tom
+ * (LOCALIZE_ARCH): new macro; (-addArchs:): new method;
+ * (-subprocess:output:,-subprocessDone:) use it.
+ *
+ * Revision 1.6 1995/07/30 16:59:51 tom
+ * import Subprocess.h; (archProcess): new ivar;
+ * (-getArchs,-subprocess:output:,-subprocessDone:): new methods;
+ * added for asynchronous arch-determination.
+ *
+ * Revision 1.5 1995/07/29 19:13:35 tom
+ * (+new): avoid reassignment of self;
+ * make packageDescriptionText vertically resizable;
+ * (-shouldLoad): rewritten to generalized array-driven approach.
+ *
+ * Revision 1.4 1995/04/02 02:39:01 tom
+ * (package): NXBundle instead of (const char *). so that localized info files
+ * are found. (this loses out if *.pkg is a symbolic link, though.)
+ *
+ * Revision 1.3 1994/12/07 00:00:36 tom
+ * (RCSid): add spaces.
+ *
+ * Revision 1.2 1994/11/25 21:27:18 tom
+ * (package ivar): use (char*) instead of (NXBundle*) to workaround symlink
problems
+ *
+ * Revision 1.1 1994/11/25 16:13:12 tom
+ * Initial revision
+ *
+ *======================================================================*/
diff --git a/test/etags/objc-src/Subprocess.h b/test/etags/objc-src/Subprocess.h
new file mode 100644
index 0000000..7e586a1
--- /dev/null
+++ b/test/etags/objc-src/Subprocess.h
@@ -0,0 +1,81 @@
+/*
+ Subprocess.h (v10)
+ by Charles L. Oei
+ pty support by Joe Freeman
+ with encouragement from Kristofer Younger
+ Subprocess Example, Release 2.0
+ NeXT Computer, Inc.
+
+ You may freely copy, distribute and reuse the code in this example.
+ NeXT disclaims any warranty of any kind, expressed or implied, as to
+ its fitness for any particular use.
+
+ Hacked up for use in PackageInspector by Tom Hageman.
+*/
+
+#import <objc/Object.h>
+#import <stdio.h>
+
+/*
+ This subprocess object sends/receives data to/from any UNIX
+ subprocess asynchronously (via vfork/pipe).
+ Its delegate, if any, will receive the following messages:
+
+ - subprocessDone;
+ // sent when the subprocess exits
+
+ - subprocessOutput:(char *)buffer;
+ // sent whenever there is data on the standard output pipe;
+ // buffer is only valid until next call
+
+ - subprocessError:(const char *)errorString;
+ // sent when an error occurs;
+ // if it ever happens, it's usually only at startup time
+
+ // [TRH] and this is how these should have been done in the first
place...
+ - subprocessDone:(SubProcess *)sender;
+ - subprocess:(SubProcess *)sender output:(char *)buffer;
+*/
+
+// Hack to uniquize classname (to avoid dynload errors.)
+#define Subprocess SubprocessForPackageInspector
+
+#define BUFFERSIZE 2048
+
address@hidden Subprocess:Object
+{
+ FILE *fpToChild;
+ int fromChild;
+ int childPid;
+ id delegate;
+ int masterPty; // file descriptor for master/slave pty
+ int slavePty;
+ int bufferCount;
+ char outputBuffer[BUFFERSIZE];
+}
+
+- init:(const char *)subprocessString;
+ // a cover for the below withDelegate:nil, andPtySupport:NO, andStdErr:YES
+
+- init:(const char *)subprocessString
+ withDelegate:theDelegate
+ andPtySupport:(BOOL)wantsPty
+ andStdErr:(BOOL)wantsStdErr;
+ // optional requests for pseudo terminal support and
+ // redirecting the standard error stream thru standard output
+
+- send:(const char *)string withNewline:(BOOL)wantNewline;
+ // send the string optionally followed by a new line
+- send:(const char *)string;
+ // sends the string followed by a new line
+ // shorthand for above withNewline:YES
+- terminateInput;
+ // sends an end-of-file (EOF) to the subprocess
+ // (and closes input pipe to child)
+- terminate:sender;
+ // forces the subprocess to terminate (w/ SIGTERM)
+
+- setDelegate:anObject;
+- delegate;
+
address@hidden
diff --git a/test/etags/objc-src/Subprocess.m b/test/etags/objc-src/Subprocess.m
new file mode 100644
index 0000000..2d8d586
--- /dev/null
+++ b/test/etags/objc-src/Subprocess.m
@@ -0,0 +1,343 @@
+/*
+ Subprocess.m (v10)
+ by Charles L. Oei
+ pty support by Joe Freeman
+ Subprocess Example, Release 2.0
+ NeXT Computer, Inc.
+
+ You may freely copy, distribute and reuse the code in this example.
+ NeXT disclaims any warranty of any kind, expressed or implied, as to
+ its fitness for any particular use.
+*/
+
+#import "Subprocess.h"
+// #import <sgtty.h> // needed to compile under Release 1.0
+#import <appkit/nextstd.h>
+#import <appkit/Application.h>
+#import <appkit/Panel.h>
+#import <sys/wait.h>
+
+#define PTY_TEMPLATE "/dev/pty??"
+#define PTY_LENGTH 11
+
+static void showError();
+
+
+/*==========================================================
+ *
+ * Private Instance Methods
+ *
+ *==========================================================*/
+
address@hidden Subprocess(Private)
+- childDidExit;
+- fdHandler:(int)theFd;
address@hidden
+
address@hidden Subprocess(Private)
+
+- childDidExit
+ // cleanup after a child process exits
+{
+ if (childPid)
+ {
+ union wait exitstatus;
+ int waitresult;
+
+ DPSRemoveFD(fromChild);
+ close(fromChild);
+ fclose(fpToChild);
+ // Cleanup zombie processes. (blocking wait is too dangerous here...)
+ waitresult = wait4(childPid, &exitstatus, WNOHANG, NULL);
+ if (waitresult != childPid) {
+ /* XXX should handle this gracefully, e.g, timed entry. */
+ }
+ childPid=0; // specify that child is dead
+ if (delegate)
+ {
+ if ([delegate respondsTo:@selector(subprocessDone:)])
+ [delegate perform:@selector(subprocessDone:) with:self];
+ else if ([delegate respondsTo:@selector(subprocessDone)])
+ [delegate perform:@selector(subprocessDone)];
+ }
+ }
+ return self;
+}
+
+- fdHandler:(int)theFd
+ // DPS handler for output from subprocess
+{
+ if ((bufferCount = read(theFd, outputBuffer, BUFFERSIZE-1)) <= 0)
+ {
+ [self childDidExit];
+ return self;
+ }
+ outputBuffer[bufferCount] = '\0';
+ if (delegate)
+ {
+ if ([delegate respondsTo:@selector(subprocess:output:)])
+ [delegate perform:@selector(subprocess:output:)
+ with:self with:(void *)&outputBuffer];
+ else if ([delegate respondsTo:@selector(subprocessOutput:)])
+ [delegate perform:@selector(subprocessOutput:)
+ with:(void *)&outputBuffer];
+ }
+ return self;
+}
+
address@hidden
+
+
+/*==========================================================
+ *
+ * Private Utility Routines
+ *
+ *==========================================================*/
+
+static void
+showError (const char *errorString, id theDelegate)
+ // ensure errors never get dropped on the floor
+{
+ if (theDelegate && [theDelegate respondsTo:@selector(subprocessError:)])
+ [theDelegate
+ perform:@selector(subprocessError:)
+ with:(void *)errorString];
+ else if (NXApp) // no delegate, but we're running w/in an App
+ NXRunAlertPanel(0, errorString, 0, 0, 0);
+ else
+ perror(errorString);
+}
+
+static void
+fdHandler (int theFd, id self)
+ // DPS handler for output from subprocess
+{
+ [self fdHandler:theFd];
+}
+
+static void
+getptys (int *master, int *slave)
+ // attempt to setup the ptys
+{
+ char device[PTY_LENGTH];
+ char *block, *num;
+ char *blockLoc; // specifies the location of block for the device string
+ char *numLoc; // specifies the pty name with the digit ptyxD
+ char *msLoc; // specifies the master (ptyxx) or slave (ttyxx)
+
+ struct sgttyb setp =
+ {B9600, B9600, (char)0x7f, (char)0x15, (CRMOD|ANYP)};
+ struct tchars setc =
+ {CINTR, CQUIT, CSTART, CSTOP, CEOF, CBRK};
+ struct ltchars sltc =
+ {CSUSP, CDSUSP, CRPRNT, CFLUSH, CWERASE, CLNEXT};
+ int lset =
+ (LCRTBS|LCRTERA|LCRTKIL|LCTLECH|LPENDIN|LDECCTQ);
+ int setd = NTTYDISC;
+
+ strcpy(device, PTY_TEMPLATE); // string constants are not writable
+ blockLoc = &device[ strlen("/dev/pty") ];
+ numLoc = &device[ strlen("/dev/pty?") ];
+ msLoc = &device[ strlen("/dev/") ];
+ for (block = "pqrs"; *block; block++)
+ {
+ *blockLoc = *block;
+ for (num = "0123456789abcdef"; *num; num++)
+ {
+ *numLoc = *num;
+ *master = open(device, O_RDWR);
+ if (*master >= 0)
+ {
+ *msLoc = 't';
+ *slave = open(device, O_RDWR);
+ if (*slave >= 0)
+ {
+ (void) ioctl(*slave, TIOCSETP, (char *)&setp);
+ (void) ioctl(*slave, TIOCSETC, (char *)&setc);
+ (void) ioctl(*slave, TIOCSETD, (char *)&setd);
+ (void) ioctl(*slave, TIOCSLTC, (char *)&sltc);
+ (void) ioctl(*slave, TIOCLSET, (char *)&lset);
+ return;
+ } else {
+ // close the master and reset the device
+ // name so that the master opens it properly
+ *msLoc = 'p';
+ close(*master);
+ }
+ }
+ } /* hunting through a bank of ptys */
+ } /* hunting through blocks of ptys in all the right places */
+ *master = -1;
+ *slave = -1;
+}
+
+
address@hidden Subprocess
+
+/*==========================================================
+ *
+ * Public Instance Methods
+ *
+ *==========================================================*/
+
+- init:(const char *)subprocessString
+ // a cover for the below withDelegate:nil, andPtySupport:NO, andStdErr:YES
+{
+ return
+ [self
+ init:subprocessString
+ withDelegate:nil
+ andPtySupport:NO
+ andStdErr:YES];
+}
+
+- init:(const char *)subprocessString
+ withDelegate:theDelegate
+ andPtySupport:(BOOL)wantsPty
+ andStdErr:(BOOL)wantsStdErr
+ // initializes an instance of Subprocess and corresponding UNIX process
+{
+ int pipeTo[2]; // for non-Pty support
+ int pipeFrom[2];
+ int tty, numFds, fd; // for temporary use
+ int processGroup;
+ int pidChild; // needed because childPid does not exist
+ // until Subprocess is instantiated
+
+ if (wantsPty)
+ {
+ tty = open("/dev/tty", O_RDWR);
+ getptys(&masterPty,&slavePty);
+ if (masterPty <= 0 || slavePty <= 0)
+ {
+ showError("Error grabbing ptys for subprocess.", theDelegate);
+ return self;
+ }
+ // remove the controlling tty if launched from a shell,
+ // but not Workspace;
+ // so that we have job control over the parent application in shell
+ // and so that subprocesses can be restarted in Workspace
+ if ((tty<0) && ((tty = open("/dev/tty", 2))>=0))
+ {
+ ioctl(tty, TIOCNOTTY, 0);
+ close(tty);
+ }
+ }
+ else
+ {
+ if (pipe(pipeTo) < 0 || pipe(pipeFrom) < 0)
+ {
+ showError("Error starting UNIX pipes to subprocess.", theDelegate);
+ return self;
+ }
+ }
+
+ switch (pidChild = vfork())
+ {
+ case -1: // error
+ showError("Error starting UNIX vfork of subprocess.", theDelegate);
+ return self;
+
+ case 0: // child
+ if (wantsPty)
+ {
+ dup2(slavePty, 0);
+ dup2(slavePty, 1);
+ if (wantsStdErr)
+ dup2(slavePty, 2);
+ }
+ else
+ {
+ dup2(pipeTo[0], 0);
+ dup2(pipeFrom[1], 1);
+ if (wantsStdErr)
+ dup2(pipeFrom[1], 2);
+ }
+
+ numFds = getdtablesize();
+ for (fd=3; fd<numFds; fd++)
+ close(fd);
+
+ processGroup = getpid();
+ ioctl(0, TIOCSPGRP, (char *)&processGroup);
+ setpgrp (0, processGroup);
+
+ // we exec a /bin/sh so that cmds are easier to specify for the user
+ execl("/bin/sh", "sh", "-c", subprocessString, 0);
+ perror("vfork (child)"); // should never gets here tho
+ exit(1);
+
+ default: // parent
+ [self setDelegate:theDelegate];
+ childPid = pidChild;
+
+ if (wantsPty)
+ {
+ close(slavePty);
+
+ fpToChild = fdopen(masterPty, "w");
+ fromChild = masterPty;
+ }
+ else
+ {
+ close(pipeTo[0]);
+ close(pipeFrom[1]);
+
+ fpToChild = fdopen(pipeTo[1], "w");
+ fromChild = pipeFrom[0];
+ }
+
+ setbuf(fpToChild, NULL);
+ DPSAddFD(
+ fromChild,
+ (DPSFDProc)fdHandler,
+ (id)self,
+ NX_MODALRESPTHRESHOLD+1);
+ return self;
+ }
+}
+
+- send:(const char *)string withNewline:(BOOL)wantNewline
+{
+ fputs(string, fpToChild);
+ if (wantNewline)
+ fputc('\n', fpToChild);
+ return self;
+}
+
+- send:(const char *)string
+{
+ [self send:string withNewline:YES];
+ return self;
+}
+
+- terminateInput
+ // effectively sends an EOF to the child process stdin
+{
+ fclose(fpToChild);
+ return self;
+}
+
+- terminate:sender
+{
+ if (childPid)
+ {
+ //kill(childPid+1, SIGTERM);
+ killpg(childPid, SIGTERM);
+ [self childDidExit];
+ }
+ return self;
+}
+
+- setDelegate:anObject
+{
+ delegate = anObject;
+ return self;
+}
+
+- delegate
+{
+ return delegate;
+}
+
address@hidden
diff --git a/test/etags/objcpp-src/SimpleCalc.H
b/test/etags/objcpp-src/SimpleCalc.H
new file mode 100644
index 0000000..121ae6b
--- /dev/null
+++ b/test/etags/objcpp-src/SimpleCalc.H
@@ -0,0 +1,49 @@
+//
+// SimpleCalc -- Randy Nelson -- NeXT Developer Training
+// A general class that serves as a liaison between a calculator interface
+// and a calculator engine.
+//
+// You may freely copy, distribute and reuse the code in this example.
+// NeXT disclaims any warranty of any kind, expressed or implied, as to
+// its fitness for any particular use.
+//
+// Created 8-8-90
+//
+#import <objc/Object.h>
+
address@hidden SimpleCalc:Object
+{
+ // outlets...the front-end.
+ id display;
+ id enterKey;
+ id minusKey;
+ id infoManager;
+ id myNXStringTable;
+
+ // C++ object's can be a-part-of Objective-C objects.
+ class CalcEngine *cplus_object;
+
+ // record each previous user action
+ SEL previousAction;
+}
+
+// actions.
+
+- numberKeys:sender;
+- decimalKey:sender;
+- operationKeys:sender;
+- equalsKey:sender;
+- clearKey:sender;
+- clearAllKey:sender;
+- infoPanel:sender;
+- helpPanel:sender;
+
+// delegate methods.
+
+- windowWillClose:sender;
+- appDidInit:sender;
+
+- registerAction:(SEL)action;
+- appendToDisplay:(const char *)theString;
+
address@hidden
diff --git a/test/etags/objcpp-src/SimpleCalc.M
b/test/etags/objcpp-src/SimpleCalc.M
new file mode 100644
index 0000000..34846a7
--- /dev/null
+++ b/test/etags/objcpp-src/SimpleCalc.M
@@ -0,0 +1,207 @@
+// SimpleCalc -- Randy Nelson -- NeXT Developer Training
+// A general class that serves as a liaison between a calculator interface
+// and a calculator engine.
+//
+// You may freely copy, distribute and reuse the code in this example.
+// NeXT disclaims any warranty of any kind, expressed or implied, as to
+// its fitness for any particular use.
+//
+// Created 8-22-90
+//
+// C++ "linkage" directive - tells the C++ compiler that the following
+// interface files contain Objective-C code.
+
+extern "Objective-C"
+{
+#import <appkit/Application.h>
+#import <appkit/Panel.h>
+#import <appkit/TextField.h>
+#import <appkit/Button.h>
+}
+
+extern "C"
+{
+#import <appkit/publicWraps.h>
+#import <objc/error.h>
+#import <objc/NXStringTable.h>
+#import <strings.h>
+}
+
+// The C++ "linkage" directive serves two purposes (when importing
+// interface files that contain straight ANSI-C/Objective-C code). It:
+//
+// (a) allows you to link with libraries that have not been compiled with
+// the C++ compiler. Since libraries on the NeXT computer are compiled
+// with the Objective-C compiler (cc, not cc++), you must use the C++
+// linkage directive when importing interface files that represent NeXT
+// libraries (or any library that is not compiled with cc++).
+//
+// (b) tells the compiler to ignore C++ keywords that will result in
+// syntax errors when importing ANSI-C/Objective-C interface files.
+// The linkage directive essentially tells the C++ compiler to treat
+// keywords (such as "new", "delete", etc.) as normal identifiers.
+
+#import "SimpleCalc.h"
+#import "CalcEngine.h"
+#import "InfoManager.h"
+
address@hidden SimpleCalc
+
+// Initialize an instance of the SimpleCalc class. One instance variable of
+// that class is the C++ calculator engine.
+- init
+{
+ cplus_object = new CalcEngine; // new is a keyword in C++.
+ previousAction = 0;
+ return self;
+}
+
+// Append a new digit entered by the user to the text field display.
+- appendToDisplay:(const char *)theDigit
+{
+ char *copyOfDisplay = NXCopyStringBuffer([display stringValue]);
+
+ [display setStringValue: strcat(copyOfDisplay, theDigit)];
+
+ return self;
+}
+
+// We need to keep a history of one action to make decisions about the display.
+- registerAction:(SEL)action
+{
+ previousAction = action;
+ return self;
+}
+
+// The user has pushed the decimal key on the calculator.
+- decimalKey:sender
+{
+ if (previousAction == @selector(operationKeys:))
+ [display setStringValue:"."];
+ else {
+ if (strchr([display stringValue], '.'))
+ NXBeep();
+ else
+ [self appendToDisplay:"."];
+ }
+ return [self registerAction:_cmd];
+}
+
+// One of the number keys was selected by the user.
+- numberKeys:sender
+{
+ char aDigit[2];
+ int digit = [sender selectedTag];
+
+ sprintf(aDigit, "%d", digit);
+
+ if (previousAction == @selector(operationKeys:) ||
+ previousAction == @selector(equalsKey:))
+ {
+ [display setStringValue:aDigit];
+ } else {
+ if ([display doubleValue] == 0 && !strchr([display stringValue], '.'))
+ [display setStringValue:aDigit];
+ else
+ [self appendToDisplay:aDigit];
+ }
+ return [self registerAction:_cmd];
+}
+
+// The user pressed the equals key on the calculator interface.
+- equalsKey:sender
+{
+ if (previousAction == 0)
+ NXBeep();
+ else {
+ NX_DURING
+ [display setDoubleValue:
+ cplus_object->equalsKey([display doubleValue])];
+ NX_HANDLER
+ NXRunAlertPanel(
+ [myNXStringTable valueForStringKey:"operationFailed"],
+ [myNXStringTable valueForStringKey:NXLocalHandler.data1],
+ [myNXStringTable valueForStringKey:"OK"], NULL, NULL);
+ NX_ENDHANDLER
+ }
+ return [self registerAction:_cmd];
+}
+
+// The user pressed one of the operation keys.
+- operationKeys:sender
+{
+ if (previousAction == 0)
+ NXBeep();
+ else if (previousAction == @selector(operationKeys:))
+ cplus_object->setOperation([sender selectedTag]);
+ else {
+ NX_DURING
+ [display setDoubleValue:
+ cplus_object->operationKeys([sender selectedTag],
+ [display doubleValue])];
+ NX_HANDLER
+ NXRunAlertPanel(
+ [myNXStringTable valueForStringKey:"operationFailed"],
+ [myNXStringTable valueForStringKey:NXLocalHandler.data1],
+ [myNXStringTable valueForStringKey:"OK"], NULL, NULL);
+ NX_ENDHANDLER
+ }
+ return [self registerAction:_cmd];
+}
+
+// User pressed the Clear key.
+- clearKey:sender
+{
+ [display setStringValue:"0"];
+ return self;
+}
+
+// User pressed the Clear All key.
+- clearAllKey:sender
+{
+ cplus_object->clear();
+ [self registerAction:0];
+ return [self clearKey:sender];
+}
+
+// Called just after the application initializes and starts up.
+- appDidInit:sender
+{
+ // Set the Enter key on the keypad to be equivalent to the = key.
+ [[display window] addToEventMask:NX_SYMBOLSET];
+ [enterKey setKeyEquivalent:3];
+ [[display window] makeKeyAndOrderFront:self];
+ return self;
+}
+
+// Called just before the window closes.
+- windowWillClose:sender
+{
+ return [NXApp terminate:self];
+}
+
+// Brings up the Info panel. Not done on startup because it's in a separate
+// interface file. Saves startup time for the user if we do this when they ask
+// for it, and not before.
+- infoPanel:sender
+{
+ if(infoManager == nil){
+ infoManager = [[InfoManager alloc] init];
+ }
+ [infoManager orderInfoPanelFront:sender];
+ return self;
+}
+
+// Brings up the Help panel. Not done on startup because it's in a separate
+// interface file. Saves startup time for the user if we do this when they ask
+// for it, and not before.
+- helpPanel:sender
+{
+ if(infoManager == nil){
+ infoManager = [[InfoManager alloc] init];
+ }
+ [infoManager orderHelpPanelFront:sender];
+ return self;
+}
+
address@hidden
diff --git a/test/etags/pas-src/common.pas b/test/etags/pas-src/common.pas
new file mode 100644
index 0000000..ec8e80c
--- /dev/null
+++ b/test/etags/pas-src/common.pas
@@ -0,0 +1,1545 @@
+#include "common.i"
+#include "common.h"
+
+type
+ NSPoolP = ^NSPoolRec;
+ NSPoolRec = record
+ Data: NameStringPointer;
+ Next: NSPoolP;
+ end;
+
+var
+ GlobalNSPool: record
+ Avail, Empty: NSPoolP;
+ end;
+
+var
+ AvailString : TextString;
+ NameList : BinNodePointer;
+ AvailNameList : BinNodePointer;
+
+
+
+(*------------------------------------------------------------------*)
+(* InitializeStringPackage *)
+(*------------------------------------------------------------------*)
+procedure InitializeStringPackage;
+begin (* InitializeStringPackage *)
+ AvailString := nil;
+end; (* InitializeStringPackage *)
+
+(*------------------------------------------------------------------*)
+(* newtextstring *)
+(*------------------------------------------------------------------*)
+function newtextstring; (*: TextString;*)
+var
+ Temp : TextString;
+begin (* newtextstring *)
+ if AvailString = nil then
+ new (Temp)
+ else begin
+ Temp := AvailString;
+ AvailString := Temp^.Next;
+ end;
+ Temp^.String.Length := 0;
+ Temp^.Next := nil;
+ newtextstring := Temp;
+end; (* newtextstring *)
+
+(*------------------------------------------------------------------*)
+(* disposetextstring *)
+(*------------------------------------------------------------------*)
+procedure disposetextstring;(*(
+ var S : TextString);*)
+var
+ Temp : TextString;
+ Temp2 : TextString;
+begin (* disposetextstring *)
+ if S <> nil then begin
+ Temp := S;
+(*
+ while Temp^.Next <> nil do
+ Temp := Temp^.Next;
+ Temp^.Next := AvailString;
+ AvailString := S;
+*)
+ S := nil;
+ repeat
+ Temp2 := Temp^.Next;
+ dispose(Temp);
+ Temp := Temp2;
+ until Temp = nil;
+ end;
+end; (* disposetextstring *)
+
+(*------------------------------------------------------------------*)
+(* ConcatT *)
+(*------------------------------------------------------------------*)
+function ConcatT;(*(
+ ToString : TextString;
+ S : TextString) : TextString;*)
+var
+ Index : integer;
+begin (* ConcatT *)
+ ConcatT := ToString;
+ if ToString = nil then
+ writeln (output, 'Error in ConcatT, ToString is nil')
+ else
+ if S = nil then
+ writeln (output, 'Error in ConcatT, S is nil')
+ else
+ if S^.Next <> nil then
+ writeln (output,
+ 'Error in ConcatT, S contains several linked TextStrings')
+ else begin
+ while ToString^.Next <> nil do
+ ToString := ToString^.Next;
+ if ToString^.String.Length+S^.String.Length > NameStringLength then
begin
+ ToString^.Next := newtextstring;
+ ToString := ToString^.Next;
+ end;
+ with ToString^, String do begin
+ for Index := 1 to S^.String.Length do
+ Value[Length+Index] := S^.String.Value[Index];
+ Length := Length+S^.String.Length;
+ end;
+ end;
+end; (* ConcatT *)
+
+(*------------------------------------------------------------------*)
+(* AppendTextString *)
+(*------------------------------------------------------------------*)
+function AppendTextString;(*(
+ ToString : TextString;
+ S : TextString) : TextString;*)
+begin (* AppendTextString *)
+ AppendTextString := ToString;
+ if ToString = nil then
+ writeln (output, 'Error in AppendTextString, ToString is nil')
+ else
+ if S = nil then
+ writeln (output, 'Error in AppendTextString, S is nil')
+ else begin
+ while ToString^.Next <> nil do
+ ToString := ToString^.Next;
+ ToString^.Next := S;
+ end;
+end; (* AppendTextString *)
+
+(*------------------------------------------------------------------*)
+(* CopyTextString *)
+(*------------------------------------------------------------------*)
+function CopyTextString;(*(
+ S : TextString
+ ) : TextString;*)
+var
+ Temp : TextString;
+begin (* CopyTextString *)
+ if S <> nil then begin
+ Temp := newtextstring;
+ Temp^.String := S^.String;
+ Temp^.Next := CopyTextString(S^.Next);
+ CopyTextString := Temp;
+ end
+ else
+ CopyTextString := nil;
+end; (* CopyTextString *)
+
+(*------------------------------------------------------------------*)
+(* CONVERT_CHARSTRING_TO_VALUE *)
+(*------------------------------------------------------------------*)
+procedure CONVERT_CHARSTRING_TO_VALUE;(*(
+ S : NameString;
+ var V : NameString);*)
+var
+ Pos : integer;
+ VPos : integer;
+ Ch : char;
+begin (* CONVERT_CHARSTRING_TO_VALUE *)
+ VPos := 0;
+ for Pos := 2 to S.Length - 1 do begin
+ Ch := S.Value[Pos];
+ if not ((Ch = '''') and (Pos > 2) and (S.Value[Pos - 1] = '''')) then
+ VPos := VPos + 1;
+ V.Value[VPos] := Ch;
+ end;
+ V.Length := VPos;
+end; (* CONVERT_CHARSTRING_TO_VALUE *)
+
+(*------------------------------------------------------------------*)
+(* append_string *)
+(*------------------------------------------------------------------*)
+procedure append_string;(*(
+ var Txt : TextString;
+ var String : NameString);*)
+var
+ Temp : TextString;
+begin (* append_string *)
+ Temp := newtextstring;
+ Temp^.String := String;
+ if Txt = nil then
+ Txt := Temp
+ else
+ Txt := AppendTextString(Txt, Temp);
+end; (* append_string *)
+
+function To_Upper;(*(ch:char) : char;*)
+begin
+ if ch in ['a'..'z'] then
+ To_Upper := chr(ord(ch) + ord('A')-ord('a'))
+ else
+ To_Upper := ch;
+end;
+
+function To_Lower;(*(ch:char) : char;*)
+begin
+ if ch in ['A'..'Z'] then
+ To_Lower := chr(ord(ch) - ord('A') + ord('a'))
+ else
+ To_Lower := ch;
+end;
+
+(*----------------------------------------------------------------------*)
+(* Operations on NameString *)
+(*----------------------------------------------------------------------*)
+
+(*------------------------------------------------------------------*)
+(* EmptyNmStr *)
+(*------------------------------------------------------------------*)
+function EmptyNmStr(* : NameString*);
+var
+ Nm : NameString;
+begin (* EmptyNmStr *)
+ Nm.Length := 0;
+ EmptyNmStr := Nm;
+end; (* EmptyNmStr *)
+
+
+(* returns a namestring containing one character, the inparameter Ch *)
+function chartonmstr; (*(
+ Ch : Char) : NameString; *)
+var
+ String : NameString;
+begin
+ String.Value[1] := Ch;
+ String.Length := 1;
+ chartonmstr := String;
+end;
+
+(* returns a namestring containing the inparameter Str in lowercase letters *)
+function LowerCaseNmStr; (*(
+ Str : NameString) : NameString; *)
+var
+ i : integer;
+begin (* LowerCaseNmStr *)
+ with Str do
+ for i := 1 to Length do
+ Value[i] := To_Lower(Value[i]);
+ LowerCaseNmStr := Str;
+end; (* LowerCaseNmStr *)
+
+(* returns a namestring containing inparameter S1 concatenated with inpar. S2
*)
+function concatenatenamestrings; (*(
+ S1 : NameString;
+ S2 : NameString) : NameString; *)
+var
+ Temp : NameString;
+ Pos : integer;
+begin (* concatenatenamestrings *)
+ Temp := S1;
+ with Temp do begin
+ Pos := 0;
+ while Pos < S2.Length do begin
+ Pos := Pos + 1;
+ if Length < NameStringLength then begin
+ Length := Length + 1;
+ Value[Length] := S2.Value[Pos];
+ end;
+ end; (* while *)
+ end; (* with *)
+ concatenatenamestrings := Temp;
+end; (* concatenatenamestrings *)
+
+procedure writenamestring;(*(
+ var TextFile : text;
+ var Name : NameString);*)
+var
+ Pos : integer;
+begin
+ with Name do
+ for Pos := 1 to Length do
+ write(TextFile, Value[Pos]);
+end;
+
+(*------------------------------------------------------------------*)
+(* IsControlChar *)
+(*------------------------------------------------------------------*)
+function IsControlChar; (*(
+ Ch : char) : boolean; *)
+begin (* IsControlChar *)
+ IsControlChar := ord(Ch) in [0..32, 127];
+end; (* IsControlChar *)
+
+function namestringequal;(*(var Name1,Name2 : NameString) : Boolean;*)
+var i : Integer;
+ equal : Boolean;
+begin
+ if Name1.Length = Name2.Length then begin
+ equal := true;
+ i := 1;
+ while (i <= Name1.Length) and equal do begin
+ equal := To_Upper(Name1.Value[i]) = To_Upper(Name2.Value[i]);
+ i := i + 1;
+ end;
+ namestringequal := equal;
+ end
+ else
+ namestringequal := false;
+end;
+
+(* Character strings are case sensitive *)
+
+function NameStringLess;(*(var Name1,Name2 : NameString) : Boolean;*)
+var i, minlength : Integer;
+ equal : Boolean;
+ C1, C2 : char;
+ Charstring : boolean;
+begin
+ C1 := ' ';
+ C2 := ' ';
+ if Name1.Length < Name2.Length then
+ minlength := Name1.Length
+ else
+ minlength := Name2.Length;
+ if MinLength > 0 then
+ Charstring := (Name1.Value[1] = '''') or (Name2.Value[1] = '''')
+ else
+ Charstring := false;
+(* Charstring := true; force case sensitive *)
+ i := 1;
+ equal := true;
+ if i <= minlength then
+ while (i <= minlength) and equal do begin
+ if Charstring then begin
+ C1 := Name1.Value[i];
+ C2 := Name2.Value[i];
+ end
+ else begin
+ C1 := To_Upper(Name1.Value[i]);
+ C2 := To_Upper(Name2.Value[i]);
+ end;
+ equal := C1 = C2;
+ i := i + 1;
+ end; (* while *)
+ if equal then
+ NameStringLess := Name1.Length < Name2.Length
+ else
+ NameStringLess := C1 < C2;
+end;
+
+(*------------------------------------------------------------------*)
+(* IsControlCharName *)
+(*------------------------------------------------------------------*)
+function IsControlCharName(
+ Str : NameString;
+ Pos : integer) : boolean;
+begin (* IsControlCharName *)
+ with Str do begin
+ if Pos <= Length then
+ IsControlCharName := IsControlChar(Value[Pos])
+ else
+ IsControlCharName := false;
+ end;
+end; (* IsControlCharName *)
+
+(*------------------------------------------------------------------*)
+(* SubString *)
+(*------------------------------------------------------------------*)
+function SubString; (*(
+ Str : NameString;
+ Start : integer;
+ Len : integer) : NameString; *)
+var
+ i : integer;
+begin (* SubString *)
+ with Str do begin
+ if Len > 0 then
+ for i := Start to Start + Len - 1 do
+ Value[i- Start + 1] := Value[i]
+ else if Len < 0 then
+ Len := 0;
+ Length := Len;
+ end;
+ SubString := Str;
+end; (* SubString *)
+
+(*------------------------------------------------------------------*)
+(* SkipChars *)
+(*------------------------------------------------------------------*)
+function SkipChars; (*(
+ Str : NameString;
+ Start : integer;
+ Len : integer) : NameString; *)
+var
+ i : integer;
+begin (* SkipChars *)
+ with Str do begin
+ for i := Start to Length - Len do
+ Value[i] := Value[i + Len];
+ Length := Length - Len;
+ end;
+ SkipChars := Str;
+end; (* SkipChars *)
+
+(*------------------------------------------------------------------*)
+(* RemoveUnderlineControl *)
+(*------------------------------------------------------------------*)
+function RemoveUnderlineControl; (*(
+ Str : NameString) : NameString; *)
+var
+ Len : integer;
+ i : integer;
+ Start : integer;
+begin (* RemoveUnderlineControl *)
+ with Str do begin
+ i := 1;
+ while i <= Length do begin
+ if Value[i] = '_' then begin
+ Len := 0;
+ Start := i;
+ while IsControlCharName(Str, i + 1 + Len) do
+ Len := Len + 1;
+ if Len > 0 then
+ Str := SkipChars(Str, Start, Len + 1)
+ else
+ i := i + 1;
+ end
+ else
+ i := i + 1;
+ end; (* while *)
+ end; (* with *)
+ RemoveUnderlineControl := Str;
+end; (* RemoveUnderlineControl *)
+
+(*------------------------------------------------------------------*)
+(* First100Chars *)
+(*------------------------------------------------------------------*)
+procedure First100Chars; (*(
+ Txt : TextString;
+ var Str : NameString;
+ var Truncated : boolean); *)
+var
+ Len : integer;
+ i : integer;
+begin (* First100Chars *)
+ Str.Length := 0;
+ if Txt <> nil then begin
+ Str := Txt^.String;
+ Txt := Txt^.Next;
+ end;
+ while (Txt <> nil) and (Str.Length < NameStringLength) do
+ with Txt^, String do begin
+ Str.Length := Str.Length + 1;
+ Str.Value[Str.Length] := ' ';
+ if Str.Length + Length <= NameStringLength then
+ Len := Str.Length + Length
+ else
+ Len := NameStringLength;
+ for i := Str.Length + 1 to Len do
+ Str.Value[i] := Value[i - Str.Length];
+ Str.Length := Len;
+ Txt := Txt^.Next;
+ end; (* while with *)
+ Truncated := Txt <> nil;
+end; (* First100Chars *)
+
+
+(*------------------------------------------------------------------*)
+(* SkipSpaces *)
+(*------------------------------------------------------------------*)
+(* changes I to contain the first index in Str (starting at I) that *)
+(* is not a space *)
+procedure SkipSpaces; (* (Str : NameString; var I : Integer);*)
+var Stop : boolean;
+begin (* SkipSpaces *)
+ Stop := false;
+ while (I < Str.Length) and not Stop do
+ if Str.Value[I] <> ' ' then
+ Stop := true
+ else
+ I := I+1;
+end; (* SkipSpaces *)
+
+
+(*------------------------------------------------------------------*)
+(* SkipBlanks *)
+(*------------------------------------------------------------------*)
+function SkipBlanks; (*(
+ TextLine: NameString) : NameString; *)
+var
+ i : integer;
+ j : integer;
+ SpaceFound : boolean;
+begin (* SkipBlanks *)
+ with TextLine do begin
+ SpaceFound := true;
+ i := 1;
+ while SpaceFound and (i <= Length) do begin
+ SpaceFound := (Value[i] in [' ', chr(9)]);
+ if SpaceFound then
+ i := i + 1;
+ end; (* while *)
+ i := i - 1;
+ if i > 0 then
+ for j := 1 to Length - i do
+ if j <= Length - i then
+ Value[j] := Value[j + i];
+ Length := Length - i;
+ end; (* with *)
+ SkipBlanks := TextLine;
+end; (* SkipBlanks *)
+
+(*------------------------------------------------------------------*)
+(* stripname *)
+(*------------------------------------------------------------------*)
+function stripname; (* (
+ TextLine: NameString) : NameString; *)
+var
+ SpaceFound : boolean;
+begin (* stripname *)
+ TextLine := SkipBlanks(TextLine);
+ with TextLine do begin
+ SpaceFound := true;
+ while SpaceFound and (Length > 0) do begin
+ SpaceFound := (Value[Length ] in [' ', chr(9)]);
+ if SpaceFound then
+ Length := Length - 1;
+ end; (* while *)
+ end; (* with *)
+ stripname := TextLine;
+end; (* stripname *)
+
+function Locate; (*(
+ Str : NameString;
+ Chars : SetOfChar) : integer; *)
+var
+ Pos : integer;
+ Found : boolean;
+begin (* Locate *)
+ Found := false;
+ Pos := 0;
+ with Str do
+ while not Found and (Pos < Length) do begin
+ Pos := Pos + 1;
+ Found := Value[Pos] in Chars;
+ end;
+ Locate := Pos;
+end; (* Locate *)
+
+
+(*------------------------------------------------------------------*)
+(* NameHasChar *)
+(*------------------------------------------------------------------*)
+function NameHasChar; (* (TheName : NameString; TheChar : char) : boolean;*)
+var i : integer;
+ found : boolean;
+
+begin (* NameHasChar *)
+ found := false;
+ i := 0;
+ while not found and (i < TheName.Length) do begin
+ i := i+1;
+ found := TheName.Value[i] = TheChar;
+ end;
+ NameHasChar := found;
+end; (* NameHasChar *)
+
+
+(*------------------------------------------------------------------*)
+(* integertonmstr *)
+(*------------------------------------------------------------------*)
+function integertonmstr; (* (TheInteger : integer) : NameString; *)
+var Nm : NameString;
+ Index,
+ Size,
+ TempNumber : integer;
+begin (* integertonmstr *)
+ Size := 1;
+ TempNumber := TheInteger;
+ while TempNumber div 10 > 0 do begin
+ Size := Size + 1;
+ TempNumber := TempNumber div 10;
+ end;
+ Nm.Length := Size;
+ TempNumber := TheInteger;
+ for Index := Size downto 1 do begin
+ Nm.Value[Index] := chr(TempNumber mod 10 + ord('0'));
+ TempNumber := TempNumber div 10;
+ end;
+ integertonmstr := Nm;
+end; (* integertonmstr *)
+
+(*------------------------------------------------------------------*)
+(* NmStrToInteger *)
+(*------------------------------------------------------------------*)
+function NmStrToInteger; (* (Str : NameString) : integer; *)
+var
+ Index : integer;
+ Numb : integer;
+ Max : integer;
+begin (* NmStrToInteger *)
+ Max := (maxint div 10) - 10;
+ Numb := 0;
+ for Index := 1 to Str.Length do begin
+ if (Numb <= Max) and (Str.Value[Index] in ['0'..'9']) then
+ Numb := 10 * Numb + ord(Str.Value[Index]) - ord('0');
+ end;
+ NmStrToInteger := Numb;
+end; (* NmStrToInteger *)
+
+function AddNullToNmStr; (*(
+ Nm : NameString) : NameString; *)
+begin (* AddNullToNmStr *)
+ with Nm do
+ if Length < NameStringLength then
+ Value[Length + 1] := chr(0)
+ else
+ Value[Length] := chr(0);
+ AddNullToNmStr := Nm;
+end; (* AddNullToNmStr *)
+
+function ValToNmStr; (*(
+ Nm : NameString) : NameString; *)
+begin (* ValToNmStr *)
+ with Nm do begin
+ length := 0;
+ while value[length + 1] <> chr(0) do
+ length := length + 1;
+ end;
+ ValToNmStr := Nm;
+end; (* ValToNmStr *)
+
+(*------------------------------------------------------------------*)
+(* ChangeFileType *)
+(*------------------------------------------------------------------*)
+function ChangeFileType; (*(FileName : NameString;
+ NewType : NameString) : NameString;*)
+var
+ Pos : integer;
+ Found : boolean;
+begin (* ChangeFileType *)
+ with Filename do begin
+ Pos := FileName.Length;
+ Found := false;
+ while not Found and (Pos > 0) do begin
+ Found := Value[Pos] = '.';
+ Pos := Pos - 1;
+ end;
+ if Found then
+ Length := Pos;
+ end; (* with *)
+ ChangeFileType := concatenatenamestrings(FileName, NewType);
+end; (* ChangeFileType*)
+
+(*------------------------------------------------------------------*)
+(* StripPath *)
+(*------------------------------------------------------------------*)
+function StripPath; (*(
+ Str : NameString) : NameString; *)
+var
+ i : integer;
+ Len : integer;
+ Found : boolean;
+begin (* StripPath *)
+ with Str do begin
+ i := Length;
+ Found := false;
+ while not Found and (i > 0) do begin
+ Found := Value[i] in ['/', '\'];
+ if not Found then
+ i := i - 1;
+ end; (* while *)
+ if Found then begin
+ Len := Length - i + 1;
+ if i < Length then begin
+ i := i + 1;
+ Len := Len - 1;
+ end;
+ StripPath := SubString(Str, i, Len);
+ end
+ else
+ StripPath := Str;
+ end; (* with *)
+end; (* StripPath *)
+
+function ReprOfChar; (*( ch : char) : NameString;*)
+var
+ Repr : NameString;
+begin
+ if (ch >= ' ') and (ch <= '~') then
+ Repr := chartonmstr(ch)
+ else
+ Repr := concatenatenamestrings(concatenatenamestrings(chartonmstr('<'),
+ integertonmstr(ord(ch))), chartonmstr('>'));
+ ReprOfChar := Repr;
+end; (* ReprOfChar *)
+
+(*------------------------------------------------------------------*)
+(* ExtractCommentInfo *)
+(*------------------------------------------------------------------*)
+(* check if Comment contains graphic reference or include directive *)
+(* /*#<graphref>*/ or /*#<include-dir>*/ *)
+(* <graphref> =G pagename xcoord ycoord *)
+(* T pagename xcoord ycoord *)
+(* M diagramtype diagramname pagename xcoord ycoord *)
+(* D databankname *)
+(* <include-dir> =INCLUDE 'filename' *)
+(* InfoType will contain the type of the comment *)
+(* Info will contain <graphref> or the filename in <include-dir> if *)
+(* the Comment isn't an ordinary comment *)
+(* /*#E*/ do not count this line *)
+(* /*#S*/ substructure generated from graphic short hand *)
+procedure ExtractCommentInfo; (*(
+ var Comment,
+ Info : NameString;
+ var InfoType : TypeOfComment); *)
+
+const
+ CommentMarkLength = 2;
+ IncludeMarkLength = 7; (* = INCLUDE *)
+ GRRefLen = 6;
+var StartIndex,
+ Index : integer;
+begin (* ExtractCommentInfo *)
+ Info.Length := 0;
+ with Comment do begin
+ InfoType := Ordinary;
+ StartIndex := CommentMarkLength + 1;
+ if Length > StartIndex then
+ if Value[StartIndex] = '#' then
+ if Value[StartIndex+1] in ['I','i', 'S'] then begin
+ if (Value[StartIndex+1] = 'S') and (Length = StartIndex+1+2) then
+ InfoType := SubstrShortHand
+ else if (Value[StartIndex+1] = 'S') and
+ (Length > StartIndex + GRRefLen) then begin
+ if Value[StartIndex+2] = 'D' then
+ if Value[StartIndex+3] = 'T' then
+ if Value[StartIndex+4] = 'R' then
+ if Value[StartIndex+5] = 'E' then
+ if Value[StartIndex+6] = 'F' then
+ InfoType := GRRef;
+ end
+ else begin
+ if Length > StartIndex + IncludeMarkLength then
+ if Value[StartIndex+2] in ['N','n'] then
+ if Value[StartIndex+3] in ['C','c'] then
+ if Value[StartIndex+4] in ['L','l'] then
+ if Value[StartIndex+5] in ['U','u'] then
+ if Value[StartIndex+6] in ['D','d'] then
+ if Value[StartIndex+7] in ['E','e'] then
+ InfoType := IncludeClause;
+ end;
+ end;
+
+ if InfoType = IncludeClause then begin
+ InfoType := Ordinary;
+ StartIndex := StartIndex + IncludeMarkLength + 1;
+ if StartIndex+3 <= Length-2 then (* excluding the comment-end '*/' *)
begin
+ if Value[StartIndex] = ' ' then begin
+ while (StartIndex <= Length-2) and (Value[StartIndex] = ' ') do
+ StartIndex := StartIndex + 1; (* Skip the spaces *)
+ if Value[StartIndex] = '''' then begin
+ Index := StartIndex+1;
+ while (Index <= Length-2) and (Value[Index] <> '''') do begin
+ Info.Value[Index-StartIndex] := Value[Index];
+ Index := Index + 1;
+ end;
+ if Value[Index] = '''' then begin
+ Info.Length := Index - StartIndex - 1;
+ Index := Index + 1;
+ while (Index <= Length-2) and (Value[Index] = ' ') do
+ Index := Index + 1; (* Skip the ending spaces *)
+ if Index = Length-1 then
+ InfoType := IncludeClause; (* => a correct include directive
*)
+ end;
+ end;
+ end;
+ end;
+ end
+ else if InfoType = SubstrShortHand then
+ Info := chartonmstr('S')
+ else if InfoType = GRRef then begin
+ if (Value[Length] = '/') and (Value[Length - 1] = '*') then
+ Info := SubString(Comment, StartIndex, Length - StartIndex + 1 - 2)
+ else (* truncated *)
+ Info := SubString(Comment, StartIndex, Length - StartIndex + 1);
+ end;
+ end;
+end; (* ExtractCommentInfo *)
+
+(*---------------------------------------------------------------------------*)
+(* inserts a node in a binary tree sorted after value. If node
+ is in tree Found returns true. *)
+
+procedure INSERT_TREE_NODE;(*(
+ New_node: BinNodePointer; node to insert
+ var Node: BinNodePointer; tree to insert in
+ var FoundNode : BinNodePointer;
+ var Found : boolean; return status of operation
+ var Higher: boolean); returned true if the subtree height has
+ increased *)
+
+var
+
+ Node_1, (* helpvariable to rotate nodes *)
+ Node_2: BinNodePointer; (* helpvariable to rotate nodes *)
+
+begin
+
+ if Node = nil then
+ begin (* Value is not in tree, insert *)
+ Node:= New_node;
+ FoundNode := Node;
+ Higher:= true;
+ end
+ else
+
+ (* New_node^.Value < Node^.Value *)
+ if NameStringLess(New_node^.NameP^, Node^.NameP^) then
+ begin (* New Value is lower than actual Value *)
+ INSERT_TREE_NODE( New_node, Node^.left, FoundNode, Found, Higher);
+
+ if Higher then (* left bransch has grown higher *)
+ case Node^.bal of
+
+ 1: begin
+ Node^.bal:= 0;
+ Higher:= false;
+ end;
+
+ 0: begin
+ Node^.bal:= -1;
+ end;
+
+ -1: begin (* rebalance *)
+ Node_1:= Node^.left;
+
+ if Node_1^.bal = -1 then
+ begin (* single LL rotation *)
+ Node^.left:= Node_1^.right;
+ Node_1^.right:= Node;
+ Node^.bal:= 0;
+ Node:= Node_1;
+ end
+ else
+
+ begin (* double LR rotation *)
+ Node_2:= Node_1^.right;
+ Node_1^.right:= Node_2^.left;
+ Node_2^.left:= Node_1;
+ Node^.left:= Node_2^.right;
+ Node_2^.right:= Node;
+
+ if Node_2^.bal = -1 then
+ Node^.bal:= 1
+ else
+ Node^.bal:= 0;
+
+ if Node_2^.bal = 1 then
+ Node_1^.bal:= -1
+ else
+ Node_1^.bal:= 0;
+ Node:= Node_2;
+ end;
+ Node^.bal:= 0;
+ Higher:= false;
+ end;
+ end; (* end case Node^.bal of *)
+ end
+ else
+
+ (* New_node^.value > Node^.value *)
+ if NameStringLess(Node^.NameP^, New_Node^.NameP^) then
+ begin (* New value is higher than actual value *)
+ INSERT_TREE_NODE( New_node, Node^.right, FoundNode, Found, Higher);
+
+ if Higher then (* Right bransch has grown higher *)
+ case Node^.bal of
+
+ -1: begin
+ Node^.bal:= 0;
+ Higher:= false;
+ end;
+
+ 0: begin
+ Node^.bal:= 1;
+ end;
+
+ 1: begin (* Rebalance *)
+ Node_1:= Node^.right;
+
+ if Node_1^.bal = 1 then
+ begin (* single RR rotation *)
+ Node^.right:= Node_1^.left;
+ Node_1^.left:= Node;
+ Node^.bal:= 0;
+ Node:= Node_1;
+ end
+ else
+ begin (* double RL rotation *)
+ Node_2:= Node_1^.left;
+ Node_1^.left:= Node_2^.right;
+ Node_2^.right:= Node_1;
+ Node^.right:= Node_2^.left;
+ Node_2^.left:= Node;
+
+ if Node_2^.bal = 1 then
+ Node^.bal:= -1
+ else
+ Node^.bal:= 0;
+
+ if Node_2^.bal = -1 then
+ Node_1^.bal:= 1
+ else
+ Node_1^.bal:= 0;
+ Node:= Node_2;
+ end;
+ Node^.bal:= 0;
+ Higher:= false;
+ end;
+ end; (* end case Node^.bal of *)
+ end
+ else
+ begin (* New value is equal to actual value *)
+ Found := true;
+ FoundNode := Node;
+ Higher:= false;
+ end;
+end; (* end INSERT_TREE_NODE *)
+
+function GetNameList; (* : BinNodePointer;*)
+begin
+ GetNameList := NameList;
+end;
+
+procedure DisposeANameList(
+ var NodeP : BinNodePointer);
+begin (* DisposeANameList *)
+ if NodeP <> nil then begin
+ DisposeANameList(NodeP^.Left);
+ DisposeANameList(NodeP^.Right);
+ NodeP^.Left := AvailNameList;
+ NodeP^.Right := nil;
+ AvailNameList := NodeP;
+ NodeP := nil;
+ end;
+end; (* DisposeANameList *)
+
+procedure DisposeNameList;
+begin
+ DisposeANameList(NameList);
+end;
+
+function GetNewNameListNode;(*(
+ var Name : NameString) : BinNodePointer;*)
+var
+ NodeP : BinNodePointer;
+begin (* GetNewNameListNode *)
+ if AvailNameList = nil then begin
+ new(NodeP);
+ with NodeP^ do begin
+ Left := nil;
+ Right := nil;
+ Bal := 0;
+ new(NameP);
+ Namep^ := Name;
+ end;
+ end
+ else begin
+ NodeP := AvailNameList;
+ AvailNameList := NodeP^.Left;
+ with NodeP^ do begin
+ Left := nil;
+ Bal := 0;
+ Namep^ := Name;
+ end;
+ end;
+ GetNewNameListNode := NodeP;
+end; (* GetNewNameListNode *)
+
+(*---------------------------------------------------------------------------*)
+
+function insertname;(*(
+ Name : NameString;
+ var Found : boolean) : NameStringPointer;*)
+var
+ Higher : boolean;
+ NodeP : BinNodePointer;
+ FoundNode : BinNodePointer;
+begin (* insertname *)
+ NodeP := GetNewNameListNode(Name);
+ Found := false;
+ INSERT_TREE_NODE(NodeP, NameList, FoundNode, Found, Higher);
+ insertname := FoundNode^.NameP;
+ if Found then
+ DisposeANameList(NodeP);
+end; (* insertname *)
+
+procedure InitNameList;
+begin
+ NameList := nil;
+ AvailNameList := nil;
+end;
+
+(********************************************************************)
+(* NameString - Dynamic Memory Allocation *)
+(********************************************************************)
+
+procedure InitNameStringPool;
+begin
+ GlobalNSPool.Avail := nil;
+ GlobalNSPool.Empty := nil;
+end;
+
+procedure NewNameString; (* (var NSP: NameStringPointer );*)
+(*var Temp: NSPoolP;*)
+begin
+(*
+ if GlobalNSPool.Avail=nil then
+ new( NSP )
+ else begin
+ Temp := GlobalNSPool.Avail;
+ GlobalNSPool.Avail := Temp^.Next;
+ Temp^.Next := GlobalNSPool.Empty;
+ GlobalNSPool.Empty := Temp;
+ NSP := Temp^.Data;
+ end;
+*)
+ new(NSP);
+ NSP^.Length := 0;
+end;
+
+procedure ReleaseNameString; (* (var NSP: NameStringPointer );*)
+(*var Temp: NSPoolP;*)
+begin
+ if NSP <> nil then begin
+(*
+ if GlobalNSPool.Empty=nil then begin
+ new(Temp);
+ Temp^.Next := GlobalNSPool.Avail;
+ GlobalNSPool.Avail := Temp;
+ end
+ else begin
+ Temp := GlobalNSPool.Empty;
+ GlobalNSPool.Empty := Temp^.Next;
+ Temp^.Next := GlobalNSPool.Avail;
+ GlobalNSPool.Avail := Temp;
+ end;
+ Temp^.Data := NSP;
+*)
+ dispose(NSP);
+ NSP := nil;
+ end;
+end;
+
+procedure SDTrefStringToRec (* (
+ var S : SDTrefString;
+ var R : SDTrefRec;
+ var Error : integer) *) ;
+
+(* Converts SDTrefString S to a record R (SDTrefRec). If an error is
+ detected Error is on exit the position in S where the error where
+ detected. If correct Error is 0. *)
+
+label 99;
+var
+ Len : integer;
+ ErrorFound, EndFound : Boolean;
+
+procedure SDTrefSkipSpaces;
+var Found : Boolean;
+begin
+ Found := false;
+ while not Found and (Len <= S.Length) do
+ if (S.Value[Len] = ' ') or (S.Value[Len] = chr(9)) then
+ Len := Len+1
+ else
+ Found := true;
+end;
+
+function SDTrefIsEnd : Boolean;
+begin
+ SDTrefIsEnd := false;
+ if S.Value[Len] = ')' then
+ begin
+ Len := Len+1;
+ SDTrefSkipSpaces;
+ if Len > S.Length then
+ SDTrefIsEnd := true;
+ end;
+end;
+
+function SDTrefGetInteger : integer;
+var
+ Temp : NameString;
+ Found : Boolean;
+begin
+ Temp.Length := 0;
+ Found := false;
+ while not Found and (Temp.Length <= NameStringLength) and
+ (Len <= S.Length) do
+ if S.Value[Len] in ['0'..'9'] then
+ begin
+ Temp.Length := Temp.Length+1;
+ Temp.Value[Temp.Length] := S.Value[Len];
+ Len := Len+1;
+ end
+ else
+ Found := true;
+ if Temp.Length > 0 then
+ SDTrefGetInteger := NmStrToInteger(Temp)
+ else
+ SDTrefGetInteger := SDTrefUndefInt;
+end;
+
+begin
+ ErrorFound := true;
+ R.IsSDTGR := true;
+ R.FileName.Length := 0;
+ R.PageName.Length := 0;
+ R.ObjectId := SDTrefUndefInt;
+ R.XCoord := SDTrefUndefInt;
+ R.YCoord := SDTrefUndefInt;
+ R.LineNumber := SDTrefUndefInt;
+ R.Column := SDTrefUndefInt;
+
+ Len := 1;
+ if S.Length = 0 then goto 99;
+ if S.Value[1] <> '#' then goto 99;
+ Len := 2;
+ if S.Value[2] <> 'S' then goto 99;
+ Len := 3;
+ if S.Value[3] <> 'D' then goto 99;
+ Len := 4;
+ if S.Value[4] <> 'T' then goto 99;
+ Len := 5;
+ if S.Value[5] <> 'R' then goto 99;
+ Len := 6;
+ if S.Value[6] <> 'E' then goto 99;
+ Len := 7;
+ if S.Value[7] <> 'F' then goto 99;
+ Len := 8;
+ if S.Value[8] <> '(' then goto 99;
+ Len := 9;
+
+ if S.Value[9] = 'S' then
+ begin
+ Len := 10;
+ if S.Value[10] <> 'D' then goto 99;
+ Len := 11;
+ if S.Value[11] <> 'L' then goto 99;
+ Len := 12; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+
+ (* First comma *)
+ if S.Value[Len] <> ',' then goto 99;
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+
+ (* FileName *)
+ EndFound := false;
+ while not EndFound and (Len <= S.Length) do
+ if S.Value[Len] in [',', ')', '(', ' ', chr(9)] then
+ EndFound := true
+ else
+ begin
+ R.FileName.Length := R.FileName.Length+1;
+ if R.FileName.Length > S.Length then goto 99;
+ R.FileName.Value[R.FileName.Length] := S.Value[Len];
+ Len := Len+1;
+ if Len > S.Length then goto 99;
+ end;
+ SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+
+ (* PageName *)
+ if S.Value[Len] = '(' then
+ begin
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ EndFound := false;
+ while not EndFound and (Len <= S.Length) do
+ if S.Value[Len] in [',', ')', '(', ' ', chr(9)] then
+ EndFound := true
+ else
+ begin
+ R.PageName.Length := R.PageName.Length+1;
+ if R.PageName.Length > NameStringLength then goto 99;
+ R.PageName.Value[R.PageName.Length] := S.Value[Len];
+ Len := Len+1;
+ if Len > S.Length then goto 99;
+ end;
+ SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ if S.Value[Len] <> ')' then goto 99;
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ end;
+ if SDTrefIsEnd then begin ErrorFound := false; goto 99; end;
+
+ if S.Value[Len] <> ',' then goto 99;
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+
+ (* ObjectId *)
+ R.ObjectId := SDTrefGetInteger;
+ SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+
+ (* Object_Coordinates *)
+ if S.Value[Len] = '(' then
+ begin
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ R.XCoord := SDTrefGetInteger;
+ SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ if S.Value[Len] <> ',' then goto 99;
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ R.YCoord := SDTrefGetInteger;
+ SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ if S.Value[Len] <> ')' then goto 99;
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ end;
+ if SDTrefIsEnd then begin ErrorFound := false; goto 99; end;
+
+ if S.Value[Len] <> ',' then goto 99;
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+
+ (* LineNumber *)
+ R.LineNumber := SDTrefGetInteger;
+ SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ if SDTrefIsEnd then begin ErrorFound := false; goto 99; end;
+
+ if S.Value[Len] <> ',' then goto 99;
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+
+ (* Column *)
+ R.Column := SDTrefGetInteger;
+ SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ if SDTrefIsEnd then ErrorFound := false;
+ end
+
+ else if S.Value[9] = 'T' then
+ begin
+ Len := 10;
+ R.IsSDTGR := false;
+ if S.Value[10] <> 'E' then goto 99;
+ Len := 11;
+ if S.Value[11] <> 'X' then goto 99;
+ Len := 12;
+ if S.Value[12] <> 'T' then goto 99;
+ Len := 13; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+
+ (* First comma *)
+ if S.Value[Len] <> ',' then goto 99;
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+
+ (* FileName *)
+ EndFound := false;
+ while not EndFound and (Len <= S.Length) do
+ if S.Value[Len] in [',', ')', '(', ' ', chr(9)] then
+ EndFound := true
+ else
+ begin
+ R.FileName.Length := R.FileName.Length+1;
+ if R.FileName.Length > S.Length then goto 99;
+ R.FileName.Value[R.FileName.Length] := S.Value[Len];
+ Len := Len+1;
+ if Len > S.Length then goto 99;
+ end;
+ SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ if SDTrefIsEnd then begin ErrorFound := false; goto 99; end;
+
+ if S.Value[Len] <> ',' then goto 99;
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+
+ (* LineNumber *)
+ R.LineNumber := SDTrefGetInteger;
+ SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ if SDTrefIsEnd then begin ErrorFound := false; goto 99; end;
+
+ if S.Value[Len] <> ',' then goto 99;
+ Len := Len+1; SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+
+ (* Column *)
+ R.Column := SDTrefGetInteger;
+ SDTrefSkipSpaces;
+ if Len > S.Length then goto 99;
+ if SDTrefIsEnd then ErrorFound := false;
+ end;
+
+99:
+ if ErrorFound then
+ Error := Len
+ else
+ Error := 0;
+end;
+
+
+procedure SDTrefRecToString (* (
+ var R : SDTrefRec;
+ var S : SDTrefString) *) ;
+
+(* Converts SDTrefRec R to a string S (SDTrefString). If an error is
+ detected (string is not long enough) S.Length becomes 0 on exit *)
+
+label 99;
+var
+ Len, I : integer;
+ Temp : NameString;
+begin
+ S.Value[1] := '#';
+ S.Value[2] := 'S';
+ S.Value[3] := 'D';
+ S.Value[4] := 'T';
+ S.Value[5] := 'R';
+ S.Value[6] := 'E';
+ S.Value[7] := 'F';
+ S.Value[8] := '(';
+ S.Length := 8;
+ if R.IsSDTGR then
+ begin
+ Temp.Value[1] := 'S';
+ Temp.Value[2] := 'D';
+ Temp.Value[3] := 'L';
+ Temp.Value[4] := ',';
+ Temp.Length := 4;
+ S := Concatenatenamestrings(S, Temp);
+ Len := S.Length;
+ (* FileName *)
+ for I := 1 to R.FileName.Length do
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := R.FileName.Value[I];
+ end;
+
+ (* PageName *)
+ if R.PageName.Length > 0 then
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := '(';
+ for I := 1 to R.PageName.Length do
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := R.PageName.Value[I];
+ end;
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := ')';
+ end;
+
+ (* ObjectId *)
+ if R.ObjectId <> SDTrefUndefInt then
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := ',';
+ Temp := integertonmstr(R.ObjectId);
+ for I := 1 to Temp.Length do
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := Temp.Value[I];
+ end;
+ end;
+
+ (* Object_Coordinates *)
+ if R.XCoord <> SDTrefUndefInt then
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := '(';
+ Temp := integertonmstr(R.XCoord);
+ for I := 1 to Temp.Length do
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := Temp.Value[I];
+ end;
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := ',';
+ Temp := integertonmstr(R.YCoord);
+ for I := 1 to Temp.Length do
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := Temp.Value[I];
+ end;
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := ')';
+ end;
+
+ (* LineNumber *)
+ if R.LineNumber <> SDTrefUndefInt then
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := ',';
+ Temp := integertonmstr(R.LineNumber);
+ for I := 1 to Temp.Length do
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := Temp.Value[I];
+ end;
+ end;
+
+ (* Column *)
+ if R.Column <> SDTrefUndefInt then
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := ',';
+ Temp := integertonmstr(R.Column);
+ for I := 1 to Temp.Length do
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := Temp.Value[I];
+ end;
+ end;
+
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := ')';
+ end
+
+ else (* if PR *)
+
+ begin
+ Temp.Value[1] := 'T';
+ Temp.Value[2] := 'E';
+ Temp.Value[3] := 'X';
+ Temp.Value[4] := 'T';
+ Temp.Value[5] := ',';
+ Temp.Length := 5;
+ S := Concatenatenamestrings(S, Temp);
+ Len := S.Length;
+ (* FileName *)
+ for I := 1 to R.FileName.Length do
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := R.FileName.Value[I];
+ end;
+
+ (* LineNumber *)
+ if R.LineNumber <> SDTrefUndefInt then
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := ',';
+ Temp := integertonmstr(R.LineNumber);
+ for I := 1 to Temp.Length do
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := Temp.Value[I];
+ end;
+ end;
+
+ (* Column *)
+ if R.Column <> SDTrefUndefInt then
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := ',';
+ Temp := integertonmstr(R.Column);
+ for I := 1 to Temp.Length do
+ begin
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := Temp.Value[I];
+ end;
+ end;
+
+ Len := Len+1;
+ if Len > SDTrefStringLength then goto 99;
+ S.Value[Len] := ')';
+ end;
+
+99:
+ if Len > SDTrefStringLength then
+ S.Length := 0
+ else
+ S.Length := Len;
+end;
+
+function NmStrToErrStr;(*(
+ NmStr : NameString) : ErrorString;*)
+var
+ ErrStr : ErrorString;
+ i : integer;
+begin
+ for i := 1 to NmStr.Length do
+ ErrStr.Value[i] := NmStr.Value[i];
+ ErrStr.Length := NmStr.Length;
+ NmStrToErrStr := ErrStr;
+end;
+
+function ErrStrToNmStr;(*(
+ ErrStr : ErrorString) : NameString;*)
+var
+ NmStr : NameString;
+ i : integer;
+ n : integer;
+begin
+ if ErrStr.Length < NameStringLength then
+ n := ErrStr.Length
+ else
+ n := NameStringLength;
+ for i := 1 to n do
+ NmStr.Value[i] := ErrStr.Value[i];
+ NmStr.Length := n;
+ ErrStrToNmStr := NmStr;
+end;
+
+(*------------------------------------------------------------------*)
+(* GetTextRef *)
+(*------------------------------------------------------------------*)
+function GetTextRef;(*(
+ FNm : NameString;
+ Ln : integer;
+ Col : integer) : NameString;*)
+var
+ Ref : SDTrefRec;
+ S : NameString;
+begin(* GetTextRef *)
+ Ref.IsSDTGR := false;
+ Ref.FileName := FNm;
+ Ref.LineNumber := Ln;
+ Ref.Column := Col;
+ SDTrefRecToString(Ref, S);
+ GetTextRef := S;
+end; (* GetTextRef *)
+
+ (* module COMMON *)
diff --git a/test/etags/perl-src/htlmify-cystic
b/test/etags/perl-src/htlmify-cystic
new file mode 100644
index 0000000..de150a7
--- /dev/null
+++ b/test/etags/perl-src/htlmify-cystic
@@ -0,0 +1,382 @@
+#! /uns/bin/perl -w
+
+# htmlify-cystic-l-faq: turn text version of cystic-l faq into html
+# run like this: htmlify-cystic-l-faq < cystic-l-faq-all
+
+# Ron Trueworthy should put the date on the FAQ.
+
+use English;
+use Carp;
+use strict;
+
+my @section_name;
+my @appendix_name;
+
+my @section_toc;
+my @appendix_toc;
+
+my $new_tag = "[NEW]";
+
+if (! -d "faq")
+{ die "Can't find faq directory"; }
+
+# Initially undefined
+my $appendix;
+my $section;
+my $subsection;
+my $subsubsection;
+
+my $this_file_toc = "";
+my %file_tocs;
+
+my @output_files = ();
+my $file_index = 0;
+
+my $output_file;
+
+my $line;
+while (defined($line = <>))
+{
+ ### Message headers
+ if ($line =~ /^From /)
+ { while ($line ne "\n")
+ { $line = <>; } }
+
+ if ($line =~ /^See PART ONE of this FAQ for/)
+ { while (defined($line = <>) && ($line ne "\n"))
+ { }
+ next; }
+
+ if ($line =~ /^\s*[-+]+$/)
+ { next; }
+
+ ### File headers
+ if ($line =~ /^\s*CYSTIC-L Frequently Asked Questions - PART (.*)\n$/)
+ { # print "part $1\n";
+ if ($1 ne "ONE")
+ { next; }
+ if ($output_file)
+ { die "output_file shouldn't have been set yet: $output_file"; }
+ $output_file = "faq/index.html";
+ open(OUTPUT, ">$output_file") || die "Couldn't open $output_file";
+ select OUTPUT;
+ print "<HEAD>
+<TITLE>CYSTIC-L FAQ Table of Contents
+</TITLE>
+</HEAD>
+<BODY>
+<H1>CYSTIC-L Frequently Asked Questions</H1>
+<h2>Knowledge Is Power</h2>
+";
+ next; }
+
+ if ($line =~ /^\s*~ Knowledge Is Power ~$/)
+ { next; }
+
+ ### Table of contents
+ if ($line =~ /^\s*~ FAQ Table of Contents ~$/)
+ { read_toc();
+ print "<hr><a href=\"../\">Info-Zone</a> <a
href=\"../../\">CF-WEB</a>\n";
+ close(OUTPUT);
+ next;
+ }
+
+ if ($line =~ /^PART /)
+ { next; }
+
+ if ($line =~ s/^>?APPENDIX ([A-Z])\.\s*//)
+ { if (!defined($appendix))
+ { if ($1 ne "A")
+ { die "First appendix is $1"; } }
+ elsif ($1 ne chr(ord($appendix)+1))
+ { die "Appendix $1 follows Appendix $appendix"; }
+
+ file_end();
+ close(OUTPUT);
+ $appendix = $1;
+ $section = undef;
+ $subsection = undef;
+ $subsubsection = undef;
+ $output_file = section_url_base();
+ open(OUTPUT, "> faq/$output_file") || die "Can't open faq/$output_file";
+ select OUTPUT;
+
+ chomp($line);
+ print "<title>$line</title>\n<h1>$line</h1>\n";
+ if (defined($file_tocs{$output_file}) && $file_tocs{$output_file})
+ { print "Contents: $file_tocs{$output_file}\n"; }
+ next; }
+
+ if (($line =~ /^>?([0-9]+)\.\s+/) && (!defined($section) || ($1 ==
$section+1)))
+ { $line =~ s/^>?([0-9]+)\.\s+//;
+ if (!defined($appendix))
+ { # should do some more here
+ if (defined($section))
+ { file_end(); }
+ close(OUTPUT); }
+ $section = $1;
+ $subsection = undef;
+ $subsubsection = undef;
+ $output_file = section_url_base();
+ if (!defined($appendix))
+ { open(OUTPUT, "> faq/$output_file") || die "Can't open
faq/$output_file";
+ select OUTPUT;
+ chomp($line);
+ print "<title>$line</title>\n<h1>$line</h1>\n";
+ if (defined($file_tocs{$output_file}) && $file_tocs{$output_file})
+ { print "Contents: $file_tocs{$output_file}\n"; }
+ next; }
+ }
+
+ if ($line =~ s/^>?o\s+//)
+ { $line =~ s/^>//; # sometimes the > follows the itemization
+ if (!defined($subsection))
+ { $subsection = 1; }
+ else
+ { $subsection++; }
+ $subsubsection = undef;
+ print "<h2>", section_name($line), "</h2>\n";
+ next; }
+
+ if ($line =~ s/^>?-\s+//)
+ { $line =~ s/^>//; # sometimes the > follows the itemization
+ if (!defined($subsubsection))
+ { $subsubsection = 1; }
+ else
+ { $subsubsection++; }
+ print "<h3>", section_name($line), "</h3>\n";
+ next; }
+
+ ### A paragraph of ordinary text
+ if ($line !~ /^\s*$/)
+ { print "<p>$line";
+ while (defined($line = <>) && ($line ne "\n"))
+ { print $line; }
+ print "</p>\n";
+ }
+
+}
+file_end();
+
+my $subsection_marker;
+
+my $new;
+
+sub read_toc ()
+{ # These variables are initially undefined
+ if (defined($appendix)
+ || defined($section)
+ || defined($subsection)
+ || defined($subsubsection))
+ { die "some value should have been undefined when calling read_toc:
`$appendix' `$section' `$subsection' `$subsubsection'"; }
+
+ while (defined($line = <>) && $line)
+ { if ($line =~ /^\s*$/)
+ { next; }
+ if ($line =~ /^\s*\((Portions updated since.*)>\)\n/)
+ { print "$1$new_tag<p>\n";
+ next; }
+ if ($line =~ /^PART (.*)$/)
+ # { if ($MATCH eq "ONE")
+ # { print ... }
+ { next; }
+ if ($line eq "APPENDICES\n")
+ { next; }
+ if ($line =~ /^\s*INDEX/)
+ { next; }
+
+ if ($line =~ /^\s*[-+]+$/)
+ { finish_appendices();
+ if (defined($appendix)
+ || defined($section)
+ || defined($subsection)
+ || defined($subsubsection))
+ { die "some value should have been undefined when exiting read_toc:
`$appendix' `$section' `$subsection' `$subsubsection'"; }
+ return; }
+
+ $new = ($line =~ s/>//);
+
+ # # Not sure if this is the right place to do this.
+ # if (($line !~ /^\s*([-o]|[0-9A-Z]+\.|APPENDIX [A-Z]\.)/)
+ # && ($line !~ /[ .]*[0-9]+$/))
+ # { die "What line? $line"; }
+ while (!($line =~ s/[ .]*[0-9]+$//))
+ { $line .= <>; }
+ chomp($line);
+
+ if ($line =~ s/^\s*APPENDIX ([A-Z])\.\s*//)
+ { finish_sections();
+ if (!defined($appendix))
+ { if ($1 ne "A")
+ { die "First appendix is $1"; }
+ print "Appendices\n";
+ print "<ol type=\"A\" start=\"$1\">\n"; }
+ elsif ($1 ne chr(ord($appendix)+1))
+ { die "Appendix $1 follows Appendix $appendix"; }
+ $appendix = $1;
+ $appendix_name[ord($appendix)-ord('A')+1] = $line;
+ my $entry = toc_line($line);
+ print $entry;
+ push(@output_files,section_url_base());
+ next; }
+
+ if ($line =~ s/^\s*([0-9]+)\.\s*//)
+ { finish_subsections();
+ if (!defined($section))
+ { my $entry = "<ol start=$1>\n";
+ print $entry;
+ if (defined($appendix))
+ { $this_file_toc .= $entry; } }
+ elsif ($1 != $section+1)
+ { die "Section $1 follows section $section"; }
+ $section = $1;
+ $section_name[$section] = $line;
+ my $entry = " " . toc_line($line);
+ print $entry;
+ if (defined($appendix))
+ { $this_file_toc .= $entry; }
+ else
+ { push(@output_files,section_url_base()); }
+ next; }
+
+ if ($line =~ s/^\s*o\s+//)
+ { if (!defined($subsection))
+ { $subsection = 1;
+ my $entry = " <ul>\n";
+ print $entry;
+ $this_file_toc .= $entry;
+ $subsection_marker = "ul"; }
+ else
+ { finish_subsubsections();
+ $subsection++; }
+ my $entry = " " . toc_line($line);
+ print $entry;
+ $this_file_toc .= $entry;
+ next; }
+
+ if ($line =~ s/^\s*([A-Z])\.\s+//)
+ { finish_subsubsections();
+ if (!defined($subsection))
+ { my $entry = " <ol type=\"A\" start=\"$1\">\n";
+ print $entry;
+ $this_file_toc .= $entry;
+ $subsection_marker = "ol"; }
+ else
+ { if ($1 ne chr(ord($subsection)+1))
+ { die "Subsection $1 follows subsection $subsection"; } }
+ $subsection = $1;
+ my $entry = " " . toc_line($line);
+ print $entry;
+ $this_file_toc .= $entry;
+ next; }
+
+ if ($line =~ s/^\s*-\s+//)
+ { if (!defined($subsubsection))
+ { $subsubsection = 1;
+ my $entry = " <ul>\n";
+ print $entry;
+ $this_file_toc .= $entry; }
+ else
+ { $subsubsection++; }
+ my $entry = " " . toc_line($line);
+ print $entry;
+ $this_file_toc .= $entry;
+ next; }
+
+ # Itemized line without leading "o" (grrr).
+ if (!defined($subsection))
+ { my $entry = " <ul>\n";
+ print $entry;
+ $this_file_toc .= $entry;
+ $subsection = 1;
+ $subsection_marker = "ul"; }
+ else
+ { $subsection++; }
+ $line =~ s/^\s*//;
+ my $entry = " " . toc_line($line);
+ $this_file_toc .= $entry;
+ print $entry;
+ }
+}
+
+sub finish_subsubsections ()
+{ if (defined($subsubsection))
+ { my $entry = " </ul>\n";
+ print $entry;
+ $this_file_toc .= $entry;
+ $subsubsection = undef; } }
+
+sub finish_subsections ()
+{ finish_subsubsections();
+ if (defined($subsection))
+ { my $entry = " </$subsection_marker>\n";
+ print $entry;
+ $this_file_toc .= $entry;
+ $subsection = undef;
+ if (!defined($appendix))
+ { $file_tocs{section_url_base()} = $this_file_toc;
+ $this_file_toc = ""; } } }
+
+sub finish_sections ()
+{ finish_subsections();
+ if (defined($section))
+ { my $entry = " </ol>\n";
+ print $entry;
+ if (defined($appendix))
+ { $this_file_toc .= $entry;
+ $file_tocs{section_url_base()} = $this_file_toc;
+ $this_file_toc = ""; }
+ $section = undef; } }
+
+sub finish_appendices ()
+{ finish_sections();
+ if (defined($appendix))
+ { print "</ol>\n";
+ $appendix = undef; } }
+
+sub section_url_base ()
+{ if (!defined($appendix) && !defined($section))
+ { die "undefined appendix and section"; }
+ return (defined($appendix) ? "app-$appendix.html" : "sec-$section.html"); }
+
+sub section_url_name ()
+{ my $sans_subsubsection
+ = (defined($appendix)
+ ? (defined($section)
+ ? "sec-$section" . (defined($subsection)
+ ? "-$subsection" : "")
+ : "")
+ : (defined($subsection) ? "ssec-$subsection" : ""));
+ if (defined($subsubsection))
+ { $sans_subsubsection . "-$subsubsection"; }
+ else
+ { $sans_subsubsection; } }
+
+sub section_url ()
+{ my $base = section_url_base();
+ my $name = section_url_name();
+ if ($name)
+ { return $base . "\#" . $name; }
+ else
+ { return $base; } }
+
+
+sub section_href ($)
+{ my ($text) = @_;
+ return "<a href=\"" . section_url() . "\">$text</a>"; }
+
+sub section_name ($)
+{ my ($text) = @_;
+ return "<a name=\"" . section_url_name() . "\">$text</a>"; }
+
+sub toc_line ($)
+{ return " <LI>" . section_href($line) . ($new ? " $new_tag" : "") . "\n"; }
+
+sub file_end ()
+{ print "\n\n<hr>\n"
+ . (($file_index < $#output_files)
+ ? "<a href=\"$output_files[$file_index+1]\">Next</a> " : "")
+ . (($file_index > 0)
+ ? "<a href=\"$output_files[$file_index-1]\">Previous</a> " : "")
+ . "<a href=\"./\">FAQ</a> <a href=\"../\">Info-Zone</a> <a
href=\"../../\">CF-WEB</a>\n";
+ $file_index++; }
diff --git a/test/etags/perl-src/kai-test.pl b/test/etags/perl-src/kai-test.pl
new file mode 100644
index 0000000..51b6672
--- /dev/null
+++ b/test/etags/perl-src/kai-test.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+sub f1 {
+ print "f1\n";
+}
+
+sub main::f2 {
+ print "f2\n";
+}
+
+package Foo;
+
+sub f3 {
+ print "f3\n";
+}
+
+sub Bar::f4 {
+ print "f4\n";
+}
+
+package Bar;
+
+sub f5 {
+ print "f5\n";
+}
+
+package Foo::Bar;
+
+sub f6 {
+ print "f6\n";
+}
+
+package main;
+
+sub f7 {
+ print "f7\n";
+}
+
+exit 0;
+# end of Perl code
diff --git a/test/etags/perl-src/mirror.pl b/test/etags/perl-src/mirror.pl
new file mode 100644
index 0000000..2bbbb76
--- /dev/null
+++ b/test/etags/perl-src/mirror.pl
@@ -0,0 +1,4149 @@
+#!/usr/bin/perl
+# Make local directories mirror images of a remote sites
+#
+#
+# Copyright (C) 1990 - 1998 Lee McLoughlin
+#
+# Permission to use, copy, and distribute this software and its
+# documentation for any purpose with or without fee is hereby granted,
+# provided that the above copyright notice appear in all copies and
+# that both that copyright notice and this permission notice appear
+# in supporting documentation.
+#
+# Permission to modify the software is granted, but not the right to
+# distribute the modified code. Modifications are to be distributed
+# as patches to released version.
+#
+# This software is provided "as is" without express or implied warranty.
+#
+#
+# The Debian system patched this file after installation to add:
+# ls-lR file patching 2001/09/29
+# Copyright (C) 1999-2001 Ian Maclaine-cross <address@hidden>
+# and other changes.
+# Debian patches are copyright by their authors and you may use them only
+# under the conditions of the General Public License in file GPL.
+#
+# $Id: mirror.pl,v 2.9 1998/05/29 19:01:07 lmjm Exp lmjm $
+# $Log: mirror.pl,v $
+# Revision 2.9 1998/05/29 19:01:07 lmjm
+# Lots of changes. See CHANGES since 2.8 file.
+#
+# Revision 2.8 1995/08/06 14:03:52 lmjm
+# Trap a wider range of signals to aid in debugging under perl5
+# Avoid looping processing symlinks.
+#
+# Revision 2.7 1995/08/06 13:59:00 lmjm
+# No longer require socket.ph in this module.
+# Escape at signs and dollars for perl5
+# Make sure proxy_gateway is at least null.
+# Added ls_fix_mappings, failed_gets_excl, store_remote_listing, passive_ftp
+# and using_socks.
+# Stop using dollar star as perl5 has dropped it.
+# Process local directory listing before connecting to remote.
+# Allow for remote_account pasword.
+# Only one arg to undef, for early perl5's
+# Use all capitals for file descriptors.
+# Use ftp'close not ftp'quit
+# Avoid file renaming under MACos
+# Corrected file deleting.
+#
+# Revision 2.6 1994/06/10 18:28:27 lmjm
+# Dropped debug statement.
+#
+# Revision 2.5 1994/06/06 18:39:21 lmjm
+# Don't have . in the extra_path.
+# Have 'internet-gateway' as the default proxy_gateway when INTERNET_HOST
unset.
+# Allow strip_cr (from Andrew).
+# More symlink handling...
+# Set type for vms correctly.
+# Changed response from ftp'delete, also corrected path used.
+#
+# Revision 2.4 1994/04/29 20:11:09 lmjm
+# Use correct variable for hostname
+#
+# Revision 2.3 1994/01/31 18:31:22 lmjm
+# Allow for funny chars in filenames when calling the shell (Erez).
+# Added compress_size_floor to avoid compressing small files (David).
+# Added get_missing to just delete files not on remote system (Pieter).
+# Don't try to delete old dirs if no time set (Pieter).
+# Zap .dir$$ files, and keep then in $big_temp.
+# Pretty print time in comparisons.
+# Move the large comparision conditionals into routines (David).
+# Allow for sites with limited filename lengths.
+# Allow for deleted files when doing deletes.
+# Don't delete dirs that are really symlinks.
+#
+# Revision 2.2 1993/12/14 11:09:15 lmjm
+# Allow for no flock.
+# Use installed socket.ph.
+# Allow for system 5.
+# Use percentage defaults on max_delete_*
+# Checkout regexps before using.
+# Allow for extra leading | in local_ignore.
+# Return better exit codes.
+# Fixups for recurse_hard.
+# Smarter symlink handling.
+#
+# Revision 2.1 1993/06/28 14:59:00 lmjm
+# Full 2.1 release
+#
+#
+
+$#ARGV >= 0 or die("Try `man mirror` for help.\n");
+
+# Make sure we don't go recursive processing signals
+$sigs = 0;
+$max_sigs = 10;
+
+# Am I on windoze?
+$on_win = ($^O =~ /mswin/i);
+$path_sep = $on_win ? ';' : ':';
+$file_sep = $on_win ? '\\' : '/';
+# Internally mirror uses / but when looking at names from environment allow
+# for either
+$file_sep_pat = $on_win ? "[\\/]" : "/"; # allow for c:\win/fred on windoze
+
+
+# Default settings file loaded from a directory in PERLLIB
+$defaults_file = 'mirror.defaults';
+$load_defaults = 1;
+
+# Try to find the default location of various programs via
+# the users PATH then using $extra_path
+if( ! $on_win ){
+ $extra_path =
'/usr/local/bin:/usr/new/bin:/usr/public/bin:/usr/ucb:/usr/bin:/bin:/etc:/usr/etc:/usr/local/etc';
+}
+if( $extra_path ne '' ){
+ $ENV{ 'PATH' } .= $path_sep . $extra_path;
+}
+
+&trap_signals();
+
+# If compressing a local file to send need somewhere to store the temp
+# compressed version.
+$big_temp = '/var/tmp';
+
+# Hopefully we have flock.
+$can_flock = 1;
+
+# no debugging by default
+$debug = 0;
+
+# NOTE:
+# It is not an error for a program not to be found in the path as the user
+# may be setting it as part of the package details or defaults.
+
+# Used by the save_deletes option
+$mv_prog = 'mv -f';
+
+# compress must be able to take the -d arg to cause it to uncompress.
+$sys_compress_prog = &find_prog( 'compress' );
+$sys_compress_suffix = 'Z';
+
+# Like compress gzip must be able to take -d
+if( $gzip_prog = &find_prog( 'gzip' ) ){
+ # Force maximum compression with gzip
+ $gzip_level = ' -9';
+ $gzip_prog .= $gzip_level;
+ $gzip_suffix = 'gz';
+ $old_gzip_suffix = 'z';
+}
+
+# For remote systems with gzipped patches to their ls-lR.gz file. The
+# gzipped patch file is a unified diff between old and new ls-lR. The
+# times file has modification times in decimal epoch seconds of the
+# old and new ls-lR file on its first and second lines respectively.
+if( $patch_prog = &find_prog( 'patch' ) ){
+ $patch_local = '-usNT';
+ $patch_UTC = '-usNZ';
+}
+$patch_suffix = '.pth'; # These suffices distinct
+$patch_gzip_suffix = '.patch.gz'; # if truncated locally.
+$times_suffix = '.times';
+
+# A mail program that can be called as: "$mail_prog person_list'
+# Can be overridden with the mail_prog keyword.
+# If you use $mail_subject to pass extra arguments then remember that
+# the mail program will need to know how to handle them.
+$mail_prog = &find_prog( 'mailx' );
+if( ! $mail_prog ){
+ $mail_prog = &find_prog( 'Mail' );
+}
+if( ! $mail_prog ){
+ $mail_prog = &find_prog( 'mail' );
+}
+
+# Used to remove directory heirarchies. This program is passed the -rf
+# arguments.
+$rm_prog = &find_prog( 'rm' );
+
+# Generate checksums
+$sum_prog = &find_prog( 'sum' );
+
+# SPECIAL NOTE: This is eval'd, so DONT put double-quotes (") in it.
+# You can get local variables to appear as in the second example:
+$mail_subject = '-s \'mirror update\'';
+# $mail_subject = ' -s \'mirror update of $package\'';
+
+# When scanning the local directory, how often to prod the remote
+# system to keep the connection alive
+$prod_interval = 60;
+
+# Put the directory that mirror is actually in at the start of PERLLIB.
+$dir = &real_dir_from_path( $0 );
+unshift( @INC, $dir );
+
+# Debian GNU/Linux stores mirror.defaults in /etc/mirror
+$debian_defs = '/etc/mirror';
+unshift( @INC, $debian_defs ) if -d $debian_defs;
+
+# This, when eval'd, will get the current dir under windows NT/95
+$win_getcwd = 'Win32::GetCwd';
+
+# Make sure that your PERLLIB environment variable can get you
+# all these or that they are installed.
+require 'ftp.pl';
+require 'lsparse.pl';
+require 'dateconv.pl';
+
+# Find some local details
+# The current directory
+$home = &cwd();
+# The hostname
+$hostname_cmd = &find_prog( 'hostname' );
+if( $hostname_cmd ne '' ){
+ chop( $hostname = `$hostname_cmd` );
+}
+if( $hostname eq '' ){
+ $hostname_cmd = &find_prog( 'uname' );
+ if( $hostname_cmd ne '' ){
+ chop( $hostname = `$hostname_cmd -n` );
+ if( $hostname eq '' ){
+ chop( $hostname = `$hostname_cmd -l` );
+ }
+ }
+}
+if( $hostname eq '' ){
+ $hostname = 'localhost';
+}
+
+if( $hn = (gethostbyname( "$hostname" ))[ 0 ] ){
+ $hostname = $hn;
+}
+
+# Some systems hold the username in $USER, some in $LOGNAME.
+$me = $ENV{'USER'} || $ENV{'LOGNAME'};
+
+# Files matching this pattern are usually compressed.
+$squished = '\.(Z|z|gz)$';
+
+# special /bin/sh chars that must be escaped.
+$shell_metachars = '\"|\$|`|\\\\';
+
+# Remote directory parsing fail if not given input every readtime seconds.
+$parse_time = 600;
+
+# Timeout are not fatal unless you get more than this number of them.
+$max_timeouts = 20;
+
+# If connected to a site then this holds the site name.
+$connected = '';
+
+# Umask setting.
+$curr_umask = sprintf( "0%o", umask );
+
+# mapping from a pathname to a number - just to make the keys to assoc arrays
+# shorter.
+$map_init = 1; # just so I know 0 is invalid
+
+$tmp = "/tmp";
address@hidden = ( 'local_map', 'remote_map' );
+
+# A reasonable set of defaults
+# these are in the same order as the documentation - except where order is
+# important
+$default{ 'hostname' } = $hostname; # The LOCAL hostname
+
+$default{ 'package' } = ''; # should be a unique handle for the "lump" to
be mirrored
+$default{ 'site' } = ''; # site to connect to
+$default{ 'remote_dir' } = ''; # remote directory to mirror
+$default{ 'local_dir' } = ''; # local directory to copy into
+
+$default{ 'remote_user' } = 'anonymous'; # the remote guest account name
+$default{ 'remote_password' } = "address@hidden";
+$default{ 'remote_account' } = ''; # remote account name/passwd (for systems
+ # that use it.)
+# Used for group and gpass. (As in ftp.1 site group/gpass commands.)
+$default{ 'remote_group' } = '';
+$default{ 'remote_gpass' } = '';
+$default{ 'timeout' } = 120; # timeout ftp requests after this many seconds
+$default{ 'failed_gets_excl' } = ''; # failed messages to ignore while getting,
+ # if failed to ftp'get
+$default{ 'ftp_port' } = 21; # port number of remote ftp daemon
+$default{ 'proxy' } = 0; # normally use regular ftp
+$default{ 'proxy_ftp_port' } = 4514; # default from Sun
+$default{ 'proxy_gateway' } = "$ENV{ 'INTERNET_HOST' }";
+ # Gateway to use for proxy
+ # (Null if environment not set.)
+$default{ 'using_socks' } = 0; # Set the default perl version to the non-SOCKS
one.
+$default{ 'passive_ftp' } = 0; # Set the default ftp usage not to use passive
(PASV) ftp.
+$default{ 'retry_call' } = 1; # Retry the call if it fails first time
+$default{ 'disconnect' } = 0; # Force close at end of package EVEN if
+ # next package is to the same site
+$default{ 'remote_idle' } = ''; # Set the remote idle timer to this
+
+$default{ 'get_patt' } = "."; # regex of pathnames to retrieve
+$default{ 'exclude_patt' } = ''; # regex of pathnames to ignore
+$default{ 'local_ignore' } = ''; # regex of local pathnames to totally ignore
+$default{ 'get_newer' } = 1; # get remote file if its date is newer than
local
+$default{ 'get_size_change' } = 1; # get the file if size if different than
local
+$default{ 'make_bad_symlinks' } = 0; # prevent symlinks to non-existant files
+$default{ 'follow_local_symlinks' } = ''; # Follow symlinks to pathnames
matching this regexp.
+$default{ 'get_symlink_files' } = 0; # If true gets file and makes symlink
otherwise bad.
+$default{ 'get_missing' } = 1; # Set get_missing to 0 to just delete files not
on remote system
+$default{ 'get_file' } = 1; # perform get, not put by default
+$default{ 'text_mode' } = 0; # transfer in binary mode by default
+$default{ 'strip_cr' } = 0; # Delete \r (usefull when transfering from
+ # mainframes -- set text_mode and strip_cr)
+$default{ 'vms_keep_versions' } = 1; # Keep multiple VMS versions
+$default{ 'vms_xfer_text' } = 'readme$|info$|listing$|\.c$';
+ # pattern of VMS files to xfer in TEXT mode
+ # (Case insensitive)
+$default{ 'name_mappings' } = '';# remote to local pathname mappings
+ # used to change layout or zap weird chars
+ # (eg s:old:new)
+$default{ 'external_mapping' } = '';# remote to local mapping by external
routine
+$default{ 'update_local' } = 0; # Don't just update local dirs
+$default{ 'max_days' } = 0; # Ignore age of file
+$default{ 'max_size' } = 0; # If non-zero dont get files larger than this
+$default{ 'chmod' } = 1; # perform a chmod after an xfer
+
+$default{ 'user' } = ''; # UID/user name to give to local pathnames
+$default{ 'group' } = ''; # GID/group name to give to local pathnames
+$default{ 'mode_copy' } = 0; # true indicates to copy the mode bits
+$default{ 'file_mode' } = 0444; # Mode to give files created locally
+$default{ 'dir_mode' } = 0755; # mode to give directories created locally
+$default{ 'force' } = 0; # don't force by default
+$default{ 'umask' } = 07000; # DONT allow setuid things by default
+$default{ 'use_timelocal' } = 1; # Use local time NOT gmt to timestamp files.
(See also the -T flag.)
+$default{ 'force_times' } = 1; # Force local file times to match the original
+
+$default{ 'do_deletes' } = 0; # delete dest files if not in src tree
+$default{ 'delete_patt' } = '.';# delete only files which match this pattern
+$default{ 'delete_get_patt' } = 0;# true: set delete_patt to get_patt
+$default{ 'delete_excl' } = ''; # regex of local pathnames to ignore when
deleting
+$default{ 'max_delete_files' } = '10%'; # Any more than this and DONT delete
+$default{ 'max_delete_dirs' } = '10%'; # Any more than this and DONT delete
+$default{ 'save_deletes' } = 0; # save local files if not in remote
+$default{ 'save_dir' } = 'Old'; # directory in which to create tree for
keeping
+ # files no longer in remote
+$default{ 'store_remote_listing' } = ''; # Where to store remote site listings
on local system
+
+$default{ 'compress_patt' } = ''; # compress files matching this pattern
+$default{ 'compress_excl' } = $squished; # dont compress regexp (case
insensitive)
+$default{ 'compress_prog' } = $sys_compress_prog; # Program to compress files.
+$default{ 'compress_suffix' } = $sys_compress_suffix; # Suffix on compressed
files
+$default{ 'compress_conv_patt' } = '(\.Z|\.taz)$';
+ # compress->gzip files matching this pattern
+$default{ 'compress_conv_expr' } = 's/\.Z$/.gz/;s/\.taz$/.tgz/';
+ # perl expressions to convert names of files from compress->gzip
+$default{ 'compress_size_floor' } = 0; # don't compress files < this size
+
+$default{ 'split_max' } = 0; # Files > this size can be split up.
+$default{ 'split_patt' } = ''; # Files must match this pattern to be split
+$default{ 'split_chunk' } = 100 * 1024; # Size of split-up chunks
+
+$default{ 'remote_fs' } = 'unix'; # Remote filestore
+ # Other posibilies dls, netware and vms
+$default{ 'ls_lR_file' } = ''; # remote file containing ls-lR, patch or
+ # times - else use remote ls
+$default{ 'local_ls_lR_file' } = ''; # local file containing ls-lR
+ # used when first copying a large remote package
+ # or ls_lR_file is a remote ls-lR patch or times
+$default{ 'recursive' } = 1; # true indicates to do recursive processing
+$default{ 'recurse_hard' } = 0; # true indicates have to cwd+ls for
each remote
+ # subdirectory - AVOID wherever possible.
+$default{ 'flags_recursive' } = '-lRat'; # Flags passed to remote dir
+$default{ 'flags_nonrecursive' } = '-lat'; # Flags passed to remote dir
+$default{ 'ls_fix_mappings' } = '';# Correct pathnames in remote listings
+ # (eg s:usr/spool/pub/::) to match reality
+
+$default{ 'update_log' } = ''; # Filename where an update report is to be kept
+$default{ 'mail_to' } = ''; # Mail a report to these addresses
+$default{ 'mail_prog' } = $mail_prog; # the mail program (see $mail_prog)
+$default{ 'mail_subject' } = $mail_subject; # Subject passed to mail_prog
+
+$default{ 'comment' } = ''; # General comment used in report
+# If mirroring a VERY large directory then it is best to put the assoc
+# arrays in files (use command line switch -F. to turn on).
+$default{ 'use_files' } = 0;
+$default{ 'interactive' } = 0; # noninteractive copy default
+$default{ 'skip' } = ''; # If set then skip this entry giving value as
reason
+$default{ 'verbose' } = 0; # Verbose messages
+$default{ 'algorithm' } = 0; # The mirror algorithm to use
+$default{ 'local_dir_check' } = 0; # Check local_dir exists before mirroring?
+
+# I really want to drop this option.
+$default{ 'delete_source' } = 0;# delete source after xfer (default = NO!!!)
+
address@hidden = ( 'get_newer', 'get_size_change', 'do_deletes',
+ 'update_local', 'force_times', 'retry_call', 'recursive',
+ 'mode_copy', 'disconnect', 'interactive', 'text_mode',
+ 'force', 'get_file', 'verbose', 'proxy', 'delete_get_patt',
+ 'delete_source', 'save_deletes', 'use_files', 'use_timelocal',
+ 'make_bad_symlinks', 'get_symlink_files', 'recurse_hard',
+ 'get_missing', 'strip_cr', 'passive_ftp', 'using_socks',
+ 'local_dir_check' );
+
+%boolean_values = ();
+&set_assoc_from_array( *boolean_values );
+
address@hidden = ( 'get_patt', 'exclude_patt', 'local_ignore',
+ 'delete_patt', 'delete_excl', 'split_patt', 'save_deletes',
+ 'compress_patt', 'compress_excl', 'compress_conv_patt',
+ 'failed_gets_excl', 'store_remote_listing' );
+
+#
+# message levels used by &msg( level, msg )
+# if you call msg as &msg( msg ) the level is presumed to be just $pr.
+$pr = 0; # Always print out messages
+$log = 1; # push this messages onto @log
+
+# The max number of directory failures under algorithm 1 before giving up.
+$max_failed_dirs = 5;
+
+#
+# Exit status
+$exit_status = 0;
+$exit_status_xfers = 0;
+
+# "#defines" for the above
+$exit_xfers = 16; # Add this to the exit code to show xfers took place
+$exit_ok = 0;
+$exit_fail = 1;
+$exit_fail_noconnect = 2;
+
+# -d Turn on debugging - more -d's means more debugging.
+# -ppattern Just do packages matching pattern.
+# -Rpattern Skip till the first package name matches pattern then do all.
+# it and following packages.
+# -n Do nothing, just show what would be done.
+# -F Use files for assoc arrays (see also the variable use_files).
+# -gsite:path
+# Get all files on given site. If path matches .*/.+ then
+# it is the name of the directory and the last part is the
+# pattern of filenames to get. If path matches .*/ then
+# it is the name of a directory and all its contents are
retrieved.
+# Otherwise path is the pattern to be used in '/'.
+# -r Same as "-krecursive=false".
+# -kvar=val set variable to value.
+# -uusername Same as "-kremote_user=username", prompts for remote_password.
+# -v Print version and exit.
+# -T Dont transfer just force local timestamps to match remote.
+# -N Don't load mirror.defaults.
+# -L Generate a pretty list of what is being mirrored.
+# -m Same as "-kmode_copy=true".
+
+# -Cconfig_file
+# -P Same as "-kget_file=false -kinteractive=true".
+# -G Same as "-kget_file=true -kinteractive=true".
+# -t Same as "-ktext_mode=true".
+# -f Same as "-kforce=true".
+# -sSITENAME Same as "-ksite=SITENAME.
+# -ULOGFILE Set the upload log to LOGILE - if none given uses
+# the file $home/upload_log.$mday.$mon.$year
+
+# -DUMP Dump perl - to be later undumped -- THIS DOES NOT YET
WORK!!!
+
+sub msg_version
+{
+ &msg( '$Id: mirror.pl,v 2.9 1998/05/29 19:01:07 lmjm Exp lmjm $' . "\n"
);
+ &msg( 'Debian patch version: mirror (2.9-38) Tue Jan 29 07:06:25 2002
UTC.' . "\n" );
+ &msg( 'Copyright conditions are in file
/usr/share/doc/mirror/copyright.' . "\n" );
+}
+
+parse_args:
+while( $ARGV[ 0 ] =~ /^-/ ){
+ local( $arg ) = shift;
+
+ if( $arg eq '-d' ){
+ if( $debug == 2 ){
+ &msg_version();
+ }
+ $| = 1;
+ $debug++;
+ next;
+ }
+
+ if( $arg =~ /^-(p)(.*)/ || $arg =~ /^-(R)(.*)/ ){
+ local( $flag, $p ) = ($1, $2);
+ if( $flag eq 'R' ){
+ # Skip all packages till a match is made
+ # then process ALL further packages
+ $skip_till = 1;
+ }
+ if( ! $p ){
+ # Must be -p/-R space arg
+ $p = shift;
+ }
+ if( $p !~ /[a-zA-Z0-9]/ ){
+ die "Invalid package name to -p of: $p\n";
+ next;
+ }
+ # Only mirror the named packages
+ $do_packages{ $p } = 1;
+ $limit_packages = 1;
+ next;
+ }
+
+ if( $arg eq '-n' ){
+ # Do nothing - just show what would be done
+ $dont_do = 1;
+ $debug += 2;
+ $| = 1;
+ next;
+ }
+
+ if( $arg eq '-F' ){
+ # Use files for the dir listings assoc lookups
+ $use_files = 1;
+ $command_line{ 'use_files' } = 1;
+ next;
+ }
+
+ if( $arg eq '-T' ){
+ # Don't actually get any files but just force
+ # local timestamps to be the same on the remote system
+ $timestamp = 1;
+ $command_line{ 'force_times' } = 'true';
+ next;
+ }
+
+ if( $arg =~ /^-g(.*)$/ ){
+ # the next arg is the site:path to get
+ local( $site_path ) = $1;
+
+ if( ! $site_path ){
+ # Must be -g space arg
+ $site_path = shift;
+ }
+
+ # DONT use the system defaults!
+ $load_defaults = 0;
+
+ # This is probably interactive so print interactively
+ $| = 1;
+
+ if( $site_path =~ /(.*):(.*)?/ ){
+ local( $site, $path ) = ($1, $2);
+ push( @get_sites, $site );
+ # Find the directory and files
+ if( $path =~ m|^(.*)/([^/]*)$| ){
+ if( $1 eq '' && $2 eq '' ){
+ push( @get_paths, '/' );
+ push( @get_patt, '.' );
+ }
+ elsif( $1 eq '' ){
+ push( @get_paths, '/' );
+ }
+ else {
+ push( @get_paths, $1 );
+ }
+ if( $2 eq '' ){
+ push( @get_patt, '.' );
+ }
+ else {
+ push( @get_patt, "^$2\$" );
+ }
+ }
+ else {
+ push( @get_paths, '.' );
+ push( @get_patt, "^$path\$" );
+ }
+ }
+ else {
+ die "expected -gsite:path got $arg";
+ }
+ next;
+ }
+
+ if( $arg eq "-r" ){
+ # no recursive copy
+ $command_line{ 'recursive' } = 0;
+ next;
+ }
+# Debian bug #93853, -k keyword=value did not work, address@hidden
+ if( $arg =~ /^-k(.*)/ ){
+ local( $key_val ) = $1;
+ if( ! $key_val ){
+ # Must be -k space key=val
+ $key_val = shift;
+ }
+ if( $key_val =~ /(.*)=(.*)/ ){
+ # set the keyword = value
+ if( !defined( $default{ "$1" } ) ){
+ warn "Invalid keyword $1\n";
+ } else {
+ $command_line{ "$1" } = $2;
+ }
+ }
+ next;
+ }
+
+ if( $arg =~ /^-u(.*)/ ){
+ local( $user ) = $1;
+
+ if( ! $user ){
+ # must be -u space user
+ $user = shift;
+ }
+
+ # override the user name
+ $command_line{ 'remote_user' } = $user;
+ # and ask for a password
+ $command_line{ 'remote_password' } = &get_passwd( $user );
+ next;
+ }
+
+ if( $arg eq '-N' ){
+ $load_defaults = 0;
+ next;
+ }
+
+ if( $arg eq '-v' ){
+ &msg_version();
+ exit( 0 );
+ }
+
+ if( $arg eq '-L' ){
+ # Generate a pretty list of what is being mirrored
+ $pretty_print = 1;
+ next;
+ }
+
+ if( $arg eq '-m' ){
+ # propagate the mode
+ $command_line{ 'mode_copy' } = 'true';
+ next;
+ }
+
+ # Old command line interface flags
+ if( $arg =~ /^-C(.*)/ ){
+ # specify the config file
+ local( $c ) = $1;
+ if( $c !~ /./ ){
+ die "Must give config file name -Cname ($arg)\n";
+ }
+ # Only mirror the named packages
+ push( @config_files, $c);
+ next;
+ }
+
+ if( $arg eq '-P' ){
+ # put files
+ $command_line{ 'get_file' } = 'false';
+ $command_line{ 'interactive' } = 'true';
+ next;
+ }
+
+ if( $arg eq '-G' ){
+ # get files
+ $command_line{ 'get_file' } = 'true';
+ $command_line{ 'interactive' } = 'true';
+ next;
+ }
+
+ if( $arg eq '-t' ){
+ # set the file mode to text
+ $command_line{ 'text_mode' } = 'true';
+ next;
+ }
+
+ if( $arg eq '-f' ){
+ # force file transfers irregardless of date/size matches
+ $command_line{ 'force' } = 'true';
+ next;
+ }
+
+ if( $arg =~ /^-s(.*)/ ){
+ # override the site name
+ $command_line{ 'site' } = $1;
+ next;
+ }
+
+ if( $arg =~ /^-U(.*)/ ){
+ $upload_log = $1;
+ if( $upload_log eq '' ){
+ local( $sec,$min,$hour,$mday,$mon,$year,
+ $wday,$yday,$isdst )
+ = localtime( time );
+ $mon++;
+ $upload_log = "$home/upload_log.$mday.$mon.$year";
+ }
+
+ next;
+ }
+
+ if( $arg eq '-DUMP' ){
+ # THIS DOES NOT YET WORK!!!!!
+ $dumped_version = 1;
+ warn "Dumping perl\n";
+ dump parse_args;
+ }
+
+ warn "Unknown arg $arg, skipping\n";
+}
+
+# Handle multiline buffers in a sane way
+# This is deprecated in perl-5. Someone should add "/m" modifiers to any
+# regexps that *really* need it, not all.
+# $* = 1;
+
+$interactive = $command_line{ 'interactive' };
+
+if( ! $interactive ){
+ local( $c );
+
+ # The remainder of ARGV are package names
+ foreach $c ( @ARGV ){
+ push( @config_files, $c );
+ }
+}
+
+if( $interactive && $limit_packages){
+ die "Can not mix -p and interactive";
+}
+
+$value{ 'remote_user' } = $default{ 'remote_user' };
+%value = ();
+&set_defaults();
+
+if( $load_defaults ){
+ local( $dir, $mp );
+ foreach $dir ( @INC ){
+ local( $f ) = "$dir/$defaults_file";
+ if( -f $f ){
+ $mp = $f;
+ last;
+ }
+ }
+ if( $mp ){
+ &msg( "defaults from $mp\n" ) if $debug > 2;
+ splice( @config_files, 0, 0, $mp );
+ }
+ else {
+ warn "No $defaults_file found in perl library path\n";
+ }
+}
+elsif( $debug > 1 ){
+ &msg( "not loading $defaults_file\n" );
+}
+
+
+&interpret_config_files();
+
+# Shut down any remaining ftp session
+&disconnect();
+
+&msg( "All done, Exiting\n" ) if $debug;
+exit( $exit_status + $exit_status_xfers );
+
+
+$key = ''; # The current keyword
+$value = ''; # the value for the keyword
+
+sub interpret_config_files
+{
+ local( $fname );
+
+ if( $#get_sites >= 0 ){
+ while( $#get_sites >= 0 ){
+ $value{ 'site' } = pop( @get_sites );
+ $value{ 'remote_dir' } = pop( @get_paths );
+ $value{ 'get_patt' } = pop( @get_patt );
+ $value{ 'local_dir' } = '.';
+ $value{ 'remote_user' } = 'anonymous';
+ $exit_status = &do_mirror();
+ }
+ return;
+ }
+
+
+ if( $command_line{ 'interactive' } ){
+ # No config file to read
+ $value{ 'package' } = 'interactive';
+ $exit_status = &do_mirror();
+ return;
+ }
+
+ # if no configuration files were specified use standard input
+ @ARGV = @config_files;
+ &interpret_config();
+}
+
+sub interpret_config
+{
+ while( <> ){
+ # Ignore comment and blank lines
+ next if /^\s*#/ || /^\s*$/;
+
+ &parse_line();
+
+ # Is this a new package?
+ if( $value{ 'package' } && $key eq 'package' ){
+ # mirror the existing package
+ $exit_status = &do_mirror();
+
+ # reset
+ &set_defaults();
+
+ # Make sure I'm at the right place for <> to work!
+ chdir $home;
+ }
+
+ if( $debug > 3 ){
+ &msg( "$key \"$value\"\n" );
+ }
+
+ $value{ $key } = $value;
+
+ # do an explicit close for each file so $. gets reset
+ if( eof( ARGV ) ){
+ if( $debug > 3 ){
+ &msg( "-- end of config file \"$ARGV\"\n" );
+ }
+ close( ARGV );
+ }
+ }
+
+ # Mirror the last package in the file
+ if( $value{ 'package' } ){
+ $exit_status = &do_mirror();
+ }
+}
+
+# parse each line for keyword=value
+sub parse_line
+{
+ local( $eqpl );
+ local( $cont ) = '&';
+
+ chop;
+ if( /^\s*([^\s=+]+)\s*([=+])(.*)?$/ ){
+ ($key, $eqpl, $value) = ($1, $2, $3);
+ # If the value ends in the continuation character then
+ # tag the next line on the end (ignoring any leading ws).
+ while( $value =~ /^(.*)$cont$/o && !eof ){
+ $_ = <>;
+ local( $v ) = $1;
+ if( /^\s*(.*)$/ ){
+ $value = $v . $1;
+ }
+ }
+ if( $debug > 3 ){
+ &msg( "read: $key$eqpl$value\n" );
+ }
+ }
+ else {
+ warn "unknown input in \"$ARGV\" line $. of: $_\n";
+ }
+ if( ! defined( $default{ "$key" } ) ){
+ die "unknown keyword in \"$ARGV\" line $. of: $key\n";
+ }
+ if( $eqpl eq '+' ){
+ $value = $value{ $key } . $value;
+ }
+}
+
+# Initialise the key values to the default settings
+sub set_defaults
+{
+ %value = %default;
+ undef( $uid );
+ undef( $gid );
+}
+
+# Override the current settings with command line values
+sub command_line_override
+{
+ local( $key, $val, $overrides );
+
+ while( ($key, $val) = each %command_line ){
+ $overrides++;
+ if( $boolean_values{ $key } ){
+ # a boolean value
+ $value{ $key } = &istrue( $val );
+ } else {
+ # not a boolean value
+ $value{ $key } = $val;
+ }
+ }
+
+ if( $debug > 4 ){
+ if( $overrides ){
+ &pr_variables( "keywords after command line override\n"
);
+ }
+ else {
+ &msg( "No command line overrides\n" );
+ }
+ }
+}
+
+# set each variable $key = $value{ $key }
+sub set_variables
+{
+ local( $key, $val );
+
+ while( ($key, $val) = each %value ){
+ # for things like passwords it is nice to have the
+ # real value in a file
+ if( $val =~ /^\<(.*)$/ ){
+ local( $val_name ) = $1;
+ open( VAL_FILE, $val_name ) ||
+ die "can't open value file $val_name\n";
+ $val = <VAL_FILE>;
+ close( VAL_FILE );
+ chop $val if $val =~ /\n$/;
+ }
+
+ if( $boolean_values{ $key } ){
+ # a boolean value
+ eval "\$$key = &istrue( $val )";
+ }
+ else {
+ # not a boolan value
+ # Change all \ to \\ since \'s will be escaped in
+ # the following string used in the eval.
+ $val =~ s/([^\\])(')/$1\\$2/g;
+ eval "\$$key = '$val'";
+ }
+ if( $key eq 'compress_prog' ){
+ if( $val eq 'compress' ){
+ $compress_prog = $sys_compress_prog;
+ $compress_suffix = $sys_compress_suffix;
+ }
+ elsif( $val eq 'gzip' ){
+ if( ! $gzip_prog ){
+ die "Trying to use gzip but not found
in PATH\n";
+ }
+ $compress_prog = $gzip_prog;
+ $compress_suffix = $gzip_suffix;
+ }
+ elsif( $debug > 2 && $compress_prog ne $gzip_prog &&
+ $compress_prog ne $sys_compress_prog ){
+ &msg( "compress_prog ($compress_prog) not
compress or gzip, presuming program name\n" .
+ "- user must set compress_suffix\n" );
+ }
+ &upd_val( 'compress_prog' );
+ &upd_val( 'compress_suffix' );
+ }
+ }
+ if( $compress_patt ne '' && $compress_prog eq '' ){
+ &msg( "compress_patt set but no compress_prog so compress_patt
reset to nothing" );
+ $compress_patt = '';
+ }
+
+
+ # Reset the umask if needed.
+ # Do it here to try and get it done as early as possible.
+ # If the user doesn't use octal umasks this will cause umask
+ # to be called again unnecessarily - but that is pretty cheap.
+ if( $umask && $umask != $curr_umask ){
+ local( $val ) = $umask;
+ $val = oct( $val ) if $val =~ /^0/;
+ umask( $val );
+ $curr_umask = sprintf( "0%o", umask );
+ }
+
+ &map_user_group();
+}
+
+sub upd_val
+{
+ local( $key ) = @_;
+ if( $package eq 'defaults' ){
+ $default{ $key } = $value{ $key };
+ }
+}
+
+sub pr_variables
+{
+ local( $msg ) = @_;
+ local( $nle ) = 60;
+ local( $out ) = 0;
+ local( $key, $val, $str );
+
+ &msg( $msg );
+ if( $get_file ){
+ &msg( "package=$package $site:$remote_dir -> $local_dir\n\t" );
+ }
+ else {
+ &msg( "package=$package $local_dir -> $site:$remote_dir\n\t" );
+ }
+
+ for $key ( sort keys( %value ) ){
+ next if $key eq 'package' ||
+ $key eq 'site' ||
+ $key eq 'remote_dir' ||
+ # Don't show passwords when interactive
+ ($interactive && $key eq 'remote_password') ||
+ ($interactive && $key eq 'remote_gpass');
+ # Report the value in the actual variable
+ $val = eval "\$$key";
+ $str = "$key=\"$val\" ";
+ &msg( $str );
+ $out += length( $str );
+ # Output newlines when a line is full
+ if( $out > $nle ){
+ $out = 0;
+ &msg( "\n\t" );
+ }
+ }
+ &msg( "\n" );
+}
+
+# Mirror the package, return exit_status
+sub do_mirror
+{
+ local( $get_one_package ) = 0;
+
+ $package = $value{ 'package' };
+
+ if( $package eq 'defaults' ){
+ # This isn't a real site - just a way to change the defaults
+ %default = %value;
+
+ return $exit_ok;
+ }
+
+ # Only do this package if given by a -Ppack argument
+ if( $limit_packages && ! $do_packages{ $package } ){
+ return;
+ }
+
+ if( $skip_till ){
+ # Found a package so process all packages from now on
+ $skip_till = $limit_packages = 0;
+ }
+
+ local( $exit_status ) = $exit_fail_noconnect; # Presume the worse.
+ $timeouts = 0;
+
+ # set things from the command line arguments
+ &command_line_override();
+
+ if( ! &checkout_regexps() ){
+ &msg( "skipping package\n\n" );
+ return $exit_status;
+ }
+
+ # set each variable $key = $value{ $key }
+ &set_variables();
+
+ # don't trash locally glossed over things with stuff from the remote
+ if( $local_ignore ){
+ if( $exclude_patt ){
+ $exclude_patt .= '|' . $local_ignore;
+ }
+ else {
+ $exclude_patt = $local_ignore;
+ }
+ }
+
+ if( $debug > 3 ){
+ &pr_variables( "\n" );
+ }
+ elsif( $package && ! $pretty_print ){
+ if( $get_patt ){
+ &msg( "package=$package $site:$remote_dir ->
$local_dir\n");
+ }
+ else {
+ &msg( "package=$package $local_dir ->
$site:$remote_dir\n" );
+ }
+ &msg( "algorithm=$algorithm\n") if $algorithm != 0;
+ }
+
+ # Don't bother if trying to mirror here!
+ if( !$interactive && !$force && ((gethostbyname( $site ))[0] eq
$hostname) ){
+ &msg( "Skipping $site as it is this local site!\n\n" );
+ return $exit_ok;
+ }
+
+ chdir $home;
+
+ $max_age = 0;
+ if( $value{ 'max_days' } ne '0' ){
+ $max_age = time - ($value{ 'max_days' } * 24 * 60 * 60);
+ &msg( "max_age = $max_age\n" ) if $debug > 1;
+ }
+
+ # pull in external code, if required
+ if( $external_mapping ){
+ &msg( "Loading external mapping from $external_mapping.\n" ) if
$debug > 0 ;
+ do $external_mapping || die "Cannot load from
$external_mapping";
+ }
+
+ if( $debug ){
+ # Keep the ftp debugging lower than the rest.
+ &ftp'debug( $debug - 1);
+ }
+ else {
+ &ftp'debug( $verbose );
+ }
+
+ if( $recurse_hard ){
+ $recursive = 1;
+ }
+ if( $algorithm == 1 ){
+ $recursive = 0;
+ $make_bad_symlinks = 1;
+ $rem_start_len = length( $remote_dir );
+ }
+
+ if( ! $interactive ){
+ $ftp'showfd = 'STDOUT';
+ }
+ &ftp'set_timeout( $timeout );
+ &ftp'set_signals( "main'msg" );
+
+ # set passive ftp mode
+ if( $passive_ftp ){
+ $ftp'use_pasv = 1;
+ }
+
+ # Are we using the SOCKS version of perl?
+ if( $using_socks ){
+ $chat'using_socks = 1;
+ }
+
+ # Useful string in prints
+ $XFER = $get_file ? "get" : "put";
+
+ # create the list of items to copy
+ @transfer_list = ();
+ if( $interactive ){
+ if( $algorithm == 1 ){
+ warn "Cannot use algorithm 1 with interactive, using
0\n";
+ $algorithm = 0;
+ }
+ # copy the remainder of items from argv to the transfer list
+ while( @ARGV ){
+ # copy the local directory
+ if( @ARGV ){
+ push( @transfer_list, shift( @ARGV ) );
+ }
+
+ # copy the remote directory
+ if( @ARGV ){
+ push( @transfer_list, shift( @ARGV ) );
+ }
+ else {
+ die "remote directory must be specified\n";
+ }
+
+ # copy the pattern, if available
+ if( @ARGV ){
+ push( @transfer_list, shift( @ARGV ) );
+ } else {
+ push( @transfer_list, $default{ 'get_patt' } );
+ }
+ }
+
+ if( $debug > 1 ){
+ local( @t );
+ @t = @transfer_list;
+
+ while( @t ){
+ printf( "local_dir=%s remote_dir=%s patt=%s\n",
+ shift( @t ), shift( @t ), shift( @t ) );
+ }
+ }
+ }
+ else {
+ push( @transfer_list, $local_dir );
+ push( @transfer_list, $remote_dir );
+ push( @transfer_list, $get_patt );
+ if( $algorithm != 1 ){
+ $get_one_package = 1;
+ }
+ }
+
+
+ if( $update_local && $get_patt ){
+ if( $get_patt ne $default{ 'get_patt' } ){
+ &msg( "Cannot mix get_patt and update_local. get_patt
ignored\n" );
+ }
+ $get_patt = '';
+ }
+
+
+ if( !$site || (!$interactive && (!$local_dir || !$remote_dir)) ){
+ &msg( "Insufficient details for package to be fetched\n" );
+ &msg( "Must give at least: site, remote_user, remote_dir and
local_dir\n\n" );
+ return $exit_status;
+ }
+
+ if( $pretty_print ){
+ # Don't actually mirror just print a pretty list
+ # of what would be mirrored. This is for mailing to
+ # people
+ if( $skip ){
+ return $exit_ok;
+ }
+ &msg( "$package \"$comment\"\n" );
+ &msg( " $site:$remote_dir --> $local_dir\n\n" );
+ return $exit_ok;
+ }
+
+ if( $skip ){
+ &msg( "Skipping $site:$package because $skip\n\n" );
+ return $exit_ok;
+ }
+
+ $split_max = &to_bytes( $split_max );
+ $split_chunk = &to_bytes( $split_chunk );
+
+ if( $split_max && $split_max <= $split_chunk ){
+ &msg( "split_max <= split_chunk - skipping package\n" );
+ &msg( " $split_max <= $split_chunk\n\n" );
+ return $exit_status;
+ }
+
+ if( $split_chunk && ($split_chunk & 511) ){
+ &msg( "split_chunk bad size - skipping package\n" );
+ &msg( " $split_chunk should be a multiple of 512 bytes\n\n" );
+ return $exit_status;
+ }
+
+ if( $local_dir_check && ! -d $local_dir ){
+ &msg( "local_dir $local_dir does not exist - skipping
package\n" );
+ return $exit_status;
+ }
+
+ if( $get_one_package && $algorithm != 1 ){
+ # If only getting one package may as well parse the
+ # local directory listings before connecting to the
+ # remote site. (With the status_file stuff this info
+ # can then be reused if something goes wrong.)
+ if( $use_files ){
+ &create_assocs();
+ }
+
+ if( !&get_local_directory_details() ){
+ &msg( "Cannot get local directory details
($local_dir)\n" );
+ &disconnect();
+ &msg( "\n" );
+ return $exit_status;
+ }
+ }
+
+ local( $con ) = &connect();
+ if( $con <= 0 ){
+ &msg( "Cannot connect, skipping package\n" );
+ &disconnect();
+ &msg( "\n" );
+ return $exit_status;
+ }
+
+ if( $con == 1 ){
+ &msg( "login as $remote_user\n" ) if $debug > 1;
+ $curr_remote_user = $remote_user;
+ if( ! &ftp'login( $remote_user, $remote_password,
$remote_account ) ){
+ &msg( "Cannot login, skipping package\n" );
+ &disconnect();
+ &msg( "\n" );
+ return $exit_status;
+ }
+ $can_restart = (&ftp'restart(0) == 1);
+ if( $debug > 1 ){
+ &msg( "Can " . ($can_restart ? '' : "not ") . "do
restarts\n" );
+
+ }
+ }
+ else {
+ # Already connected to this site - so no need to login again
+ &msg( "Already connected to site $site\n" ) if $debug;
+ }
+
+ if( ! &ftp'type( $text_mode ? 'A' : 'I' ) ){
+ &msg( "Cannot set type\n" );
+ }
+
+ $exit_status = $exit_fail; # ok this is now the worse case
+
+ # Mirror thinks in terms of Unix pathnames.
+ # Ask ftp.pl to map any remote name it is about to use by
+ # setting the namemap functions.
+ if( $remote_fs =~ /vms/i ){
+ $vms = 1;
+ &ftp'set_namemap( "main'unix2vms", "main'vms2unix" );
+ }
+ else {
+ $vms = 0;
+ # No mapping necessary
+ &ftp'set_namemap( '' );
+ }
+
+ if( ! $get_file || $remote_idle ){
+ local( @rhelp ) = &ftp'site_commands();
+ $remote_has_chmod = grep( $_ eq 'CHMOD', @rhelp);
+ $remote_has_rename = grep( $_ eq 'RNFR', @rhelp) && grep( $_ eq
'RNTO', @rhelp);
+ $remote_has_idle = grep( $_ eq 'IDLE', @rhelp);
+ if( $debug > 2 ){
+ &msg( "remote site " . ($remote_has_chmod ? "has" :
"hasn't") . " got chmod\n" );
+ &msg( "remote site " . ($remote_has_idle ? "has" :
"hasn't") . " got idle\n" );
+ }
+ }
+
+ if( $remote_has_idle && $remote_idle ){
+ if( ! &ftp'quote( "site idle $remote_idle" ) ){
+ &msg( "Cannot set remote idle\n" );
+ }
+ elsif( $debug > 2 ){
+ &msg( "remote idle has been set to $remote_idle\n" );
+ }
+ }
+
+ if( $remote_group ){
+ if( ! &ftp'quote( "site group $remote_group" ) ){
+ &msg( "Cannot set remote group\n" );
+ }
+ elsif( $debug > 2 ){
+ &msg( "remote group has been set to $remote_group\n" );
+ }
+ }
+
+ if( $remote_gpass ){
+ if( ! &ftp'quote( "site gpass $remote_gpass" ) ){
+ &msg( "Cannot set remote gpass\n" );
+ }
+ elsif( $debug > 2 ){
+ &msg( "remote gpass has been set\n" );
+ }
+ }
+
+ @log = ();
+ $cannot = 0;
+
+ local( @sub_dirs );
+ while( @transfer_list ){
+ # get files
+ $local_dir = shift( @transfer_list );
+ $remote_dir = shift( @transfer_list );
+ $get_patt = shift( @transfer_list );
+
+ # Clear all details
+ undef( @xfer_dest );
+ undef( @xfer_src );
+ undef( @xfer_attribs );
+ undef( @things_to_make );
+ undef( @sub_dirs );
+
+ if( ! $get_one_package ){
+ if( $use_files ){
+ &create_assocs();
+ }
+
+ if( !&get_local_directory_details() ){
+ &msg( "Cannot get local directory details
($local_dir)\n" );
+ &disconnect();
+ &msg( "\n" );
+ return $exit_status;
+ }
+ }
+
+ # Create a get_patt from the contents of the local directory
+ if( $update_local && $#get_top >= 0 ){
+ $get_patt = '^' . join( '|^', @get_top );
+ $get_patt =~ s/$squished//g;
+ &msg( "get_patt = $get_patt\n" ) if $debug;
+ }
+
+ if( !&get_remote_directory_details() ){
+ &msg( "Cannot get remote directory details
($remote_dir)\n" );
+ if( $algorithm == 1 ){
+ # Skip this directory.
+ $cannot++;
+ if( $cannot < $max_failed_dirs ){
+ next;
+ }
+ # Too many failed directories. Fall thru'
+ # into disconnect.
+ }
+ &disconnect();
+ &msg( "\n" );
+ return $exit_status;
+ }
+
+ if( $get_file ){
+ &compare_dirs(
+ *remote_sorted,
+ *remote_map, *remote_time,
+ *remote_size, *remote_type,
+ *local_sorted,
+ *local_map, *local_time,
+ *local_size, *local_type,
+ *local_keep, *local_keep_totals );
+ } else {
+ &compare_dirs(
+ *local_sorted,
+ *local_map, *local_time,
+ *local_size, *local_type,
+ *remote_sorted,
+ *remote_map, *remote_time,
+ *remote_size, *remote_type,
+ *remote_keep, *remote_keep_totals );
+ }
+
+ if( $timestamp ){
+ &set_timestamps();
+ if( $algorithm == 1 ){
+ foreach $sd ( @sub_dirs ){
+ push( @transfer_list, "$local_dir/$sd"
);
+ push( @transfer_list, "$remote_dir/$sd"
);
+ push( @transfer_list, $get_patt );
+ }
+ }
+
+ next;
+ }
+
+ &make_dirs();
+ &do_all_transfers();
+
+ $exit_status = $exit_ok; # Everything went ok.
+
+ if( $get_file ){
+ # I must have finished with the remote information
+ # so clear it out.
+ &clear_remote();
+ }
+ else {
+ # clear out local info.
+ &clear_local();
+ }
+
+ if( $save_deletes ){
+ # If $save_dir is null, make $save_dir to be
+ # subdirectory 'Old' under
+ # current path
+ if( ( ! defined( $save_dir ) ) || ( $save_dir eq '' ) ){
+ $save_dir = "$cwd/Old";
+ }
+
+ # If $save_dir is not absolute, take it as
+ # subdirectory of current path
+ if( $save_dir !~ m,^/, ){
+ $save_dir = "$cwd/$save_dir";
+ }
+ }
+
+ if( $do_deletes || $save_deletes ){
+ if( $get_file ){
+ &do_deletes(
+ *local_sorted,
+ *local_map,
+ *local_type, *local_keep,
+ *local_totals, *local_keep_totals );
+ }
+ else {
+ &do_deletes(
+ *remote_sorted,
+ *remote_map,
+ *remote_type, *remote_keep,
+ *remote_totals, *remote_keep_totals
);
+ }
+ }
+
+ &make_symlinks();
+ undef( @things_to_make );
+
+ if( $algorithm == 1 ){
+ foreach $sd ( @sub_dirs ){
+ push( @transfer_list, "$local_dir/$sd" );
+ push( @transfer_list, "$remote_dir/$sd" );
+ push( @transfer_list, $get_patt );
+ }
+ }
+
+ # No more transfers if the connection has died.
+ last if ! $connected;
+ }
+
+ &clear_local();
+ &clear_remote();
+
+ if( $use_files ){
+ # Close and zap.
+ &delete_assocs();
+ }
+
+ # Should I force a disconnect now?
+ if( $connected && $disconnect ){
+ &disconnect();
+ }
+
+ if( $dont_do || $timestamp ){
+ # Don't generate logs/email
+ &msg( "\n" );
+ return $exit_status;
+ }
+
+ local( $now ) = &time_to_standard( time );
+ if( $update_log ){
+ if( ! open( LOGG, ">>$update_log" ) ){
+ &msg( "Cannot append to $update_log because: $!\n\n" );
+ # Serious but this shouldn't stop mirroring.
+ # return $exit_fail;
+ }
+ print LOGG "mirroring $package ($site:$remote_dir) completed
successfully \@ $now\n";
+ print LOGG @log;
+ close( LOGG );
+ }
+
+ if( $#log >= 0 && $mail_prog ne '' && $mail_to =~ /./ ){
+ local( $arg );
+ eval "\$arg = \"$mail_subject\"";
+ if( ! open( MAIL, "|$mail_prog $arg $mail_to" ) ){
+ &msg( "Cannot run: $com\n\n" );
+ return $exit_fail;
+ }
+ if( $get_patt ){
+ print MAIL "Mirrored $package ($site:$remote_dir ->
$local_dir) $comment \@ $now\n";
+ }
+ else {
+ print MAIL "Mirrored $package ($local_dir ->
$site:$remote_dir) $comment \@ $now\n";
+ }
+ print MAIL @log;
+ close( MAIL );
+ }
+ undef( @log );
+
+ &msg( "\n" );
+ return $exit_status;
+}
+
+
+sub disconnect
+{
+ if( $connected ){
+ &msg( "disconnecting from $connected\n" ) if $debug;
+ if( ! $ftp'fatalerror ){
+ &ftp'close();
+ }
+ else {
+ &ftp'service_closed();
+ }
+ }
+ $connected = '';
+}
+
+# Connect to the site
+# Return 0 on a fail,
+# 1 if a connection was successfully made,
+# 2 if already connected to the site
+sub connect
+{
+ local( $attempts ) = 1; # Retry ONCE! Be friendly.
+ local( $res );
+
+ if( $connected eq $site && $curr_remote_user eq $remote_user ){
+ # Already connected to this site!
+ return 2;
+ }
+
+ # Clear out any session active session
+ &disconnect();
+
+ if( $proxy ){
+ $ftp'proxy = $proxy;
+ $ftp'proxy_gateway = $proxy_gateway;
+ $ftp'proxy_ftp_port = $proxy_ftp_port;
+ }
+ $res = &ftp'open( $site, $ftp_port, $retry_call, $attempts );
+ if( $res == 1 ){
+ # Connected
+ $connected = $site;
+ }
+ return $res;
+}
+
+# This just prods the remote ftpd to prevent time-outs
+sub prod
+{
+ return unless $connected;
+
+ if( $debug > 2 ){
+ &msg( " prodding remote ftpd\n" );
+ }
+ &ftp'pwd();
+}
+
+# checkout and fixup any regexps.
+# return 0 on an error
+sub checkout_regexps
+{
+ local( $ret ) = 1;
+ # Check out the regexps
+ local( $t ) = 'x';
+ foreach $r ( @regexp_values ){
+ # regexps should never begin or end with a | or have
+ # two in a row otherwise the pattern matches everything.
+ # Use null to match everything if thats what you mean.
+ $value{ $r } =~ s/\|+/|/g;
+ $value{ $r } =~ s/^\|//;
+ $value{ $r } =~ s/\|$//;
+ local( $val ) = $value{ $r };
+ next if ! $val;
+ eval '$t =~ /$val/';
+ if( $@ ){
+ local( $err );
+ chop( $err = $@ );
+ &msg( "Problem with regexp $r ($err)\n" );
+ $ret = 0;
+ }
+ }
+ return $ret;
+}
+
+sub clear_local
+{
+ if( ! $use_files ){
+ undef( %local_map );
+ }
+ undef( @local_sorted );
+ undef( @local_time );
+ undef( @local_size );
+ undef( @local_type );
+ undef( @local_mode );
+ undef( @local_keep );
+ undef( @local_totals );
+ undef( @local_keep_totals );
+}
+
+sub clear_remote
+{
+ if( ! $use_files ){
+ undef( %remote_map );
+ }
+ undef( @remote_sorted );
+ undef( @remote_time );
+ undef( @remote_size );
+ undef( @remote_type );
+ undef( @remote_mode );
+ undef( @remote_keep );
+ undef( @remote_totals );
+ undef( @remote_keep_totals );
+}
+
+sub get_local_directory_details
+{
+ local( @dirs, $dir );
+ local( $last_prodded ) = time; # when I last prodded the remote ftpd
+
+ $next_local_mapi = $map_init;
+
+ &clear_local();
+
+ # Make sure the first elem is 0.
+ $local_time[ 0 ] = 0;
+ $local_size[ 0 ] = 0;
+ $local_type[ 0 ] = 0;
+ $local_mode[ 0 ] = 0;
+
+ @get_top = ();
+
+ &msg( "Scanning local directory $local_dir\n" ) if $debug;
+
+ if( ! -d $local_dir ){
+ &msg( "$local_dir no such directory - creating it\n" );
+ if( $dont_do || $timestamp ){
+ return 1;
+ }
+ if( &mkdirs( $local_dir ) ){
+ &msg( $log, "Created local dir $local_dir\n" );
+ $exit_xfer_status |= $exit_xfers;
+ }
+ else {
+ &msg( $log, "FAILED to create local dir $local_dir\n" );
+ }
+ }
+ if( !chdir( $local_dir ) ){
+ &msg( "Cannot change directory to $local_dir\n" );
+ return 0;
+ }
+
+ if( $local_dir =~ m,^/, ){
+ $cwd = $local_dir;
+ }
+ else {
+ &cwd();
+ }
+
+ # @dirs is the list of all directories to scan
+ # As subdirs are found they are added to the end of the list
+ # and as
+ @dirs = ( "." );
+ # Most of these variables should be locals in blocks below but
+ # that seems to tickle a perl bug and causes a lot of memory to
+ # be wasted.
+ local( $dir_level ) = 0;
+ local( $i ) = 0;
+ local( $path, $time, $size, $type, $mode, $name, $isdir, $value,
$follow );
+ local( $dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,
+ $atime,$mtime,$ctime,$blksize,$blocks );
+ while( defined( $dir = shift( @dirs ) ) ){
+
+ if( !opendir( DIR, $dir ) ){
+ &msg( "Cannot open local directory $dir, skipping it\n"
);
+ next;
+ }
+
+ while( defined( $name = readdir( DIR ) ) ){
+ $isdir = 0;
+
+ # Prod the remote system from time to time
+ # To prevent time outs. Only look once every 50 files
+ # to save on unnecessary systems calls.
+ if( ($i % 50 == 0) && time > ($last_prodded +
$prod_interval) ){
+ $last_prodded = time;
+ &prod();
+ }
+ $i ++;
+
+ $path = "$dir/$name";
+ $path =~ s,(^|/)\./,,;
+ next if $name eq '.' || $name eq '..' ||
+ ($local_ignore && $path =~ /$local_ignore/);
+
+ $follow = ($follow_local_symlinks ne '' && $path =~
/$follow_local_symlinks/);
+ if( !$follow && -l $path ){
+ $value = readlink( $path );
+ (
$dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,
+ $atime,$mtime,$ctime,$blksize,$blocks ) =
+ lstat( _ );
+ $size = $ssize;
+ $time = $mtime;
+ $type = "l $value";
+ $mode = $fmode;
+ }
+ elsif( ($isdir = ($follow ? (-d $path) : (-d _))) ||
+ -f _ ){
+ (
$dev,$ino,$fmode,$nlink,$uid,$gid,$rdev,$ssize,
+ $atime,$mtime,$ctime,$blksize,$blocks ) =
+ stat( _ );
+ $size = $ssize;
+ $time = $mtime;
+ $mode = $fmode;
+ if( $isdir ){
+ push( @dirs, $path ) if $recursive;
+ $type = 'd';
+ }
+ else {
+ $type = 'f';
+ }
+ if( $dir_level == 0 && $update_local ){
+ push( @get_top, $path );
+ }
+ }
+ else {
+ &msg( "unknown file type $path, skipping\n" );
+ next;
+ }
+ if( $debug > 2){
+ printf "local: %s %s %s %s 0%o\n",
+ $path, $size, $time, $type, $mode;
+ }
+ if( $max_age && $time != 0 && $time < $max_age ){
+ &msg( " too old: $path\n" ) if $debug > 1;
+ next;
+ }
+
+ local( $mapi ) = $next_local_mapi++;
+ # push( @local_sorted, $path );
+ $local_sorted[ $mapi - 1 ] = $path;
+ $local_map{ $path } = $mapi;
+ $local_time[ $mapi ] = $time;
+ $local_size[ $mapi ] = $size;
+ $local_type[ $mapi ] = $type;
+ $local_mode[ $mapi ] = $mode;
+ if( $type eq 'd' ){
+ $local_totals[ 0 ]++;
+ }
+ else {
+ $local_totals[ 1 ]++;
+ }
+ }
+ closedir( DIR );
+ $dir_level++;
+
+ if( ! $recursive ){
+ last;
+ }
+ }
+ return 1;
+}
+
+# Return true if the remote directory listing was brought back safely.
+sub get_remote_directory_details
+{
+ local( $type_changed ) = 0;
+ local( $udirtmp );
+ local( $storename ) = "/dev/null";
+
+ &msg( "Scanning remote directory $remote_dir\n" ) if $debug;
+
+ if( $store_remote_listing ){
+ eval "\$storename = \"$store_remote_listing\"";
+ }
+
+ $next_remote_mapi = $map_init;
+ &clear_remote();
+
+ # Make sure the first elem is 0.
+ $remote_time[ 0 ] = 0;
+ $remote_size[ 0 ] = 0;
+ $remote_type[ 0 ] = 0;
+ $remote_mode[ 0 ] = 0;
+
+ if( $remote_fs !~ /cms/ && ! &ftp'cwd( $remote_dir ) ){
+ if( $get_file ){
+ # no files to get
+ return 0;
+ }
+
+ &msg( "Failed to change to remote directory ($remote_dir)
trying to create it\n" );
+ &mkdirs( $remote_dir );
+
+ if( ! &ftp'cwd( $remote_dir ) ){
+ &msg( "Cannot change to remote directory ($remote_dir)
because: $ftp'response\n" );
+ return 0;
+ }
+ }
+
+ local( $rls );
+
+ $use_ls = 0;
+
+ if( $local_ls_lR_file ){
+ local( $dirtmp ) = $local_ls_lR_file;
+ &msg( " Using local file $local_ls_lR_file for remote dir
listing\n" ) if $debug;
+ local( $unsquish );
+ if( $dirtmp =~ /\.$sys_compress_suffix$/ ){
+ $unsquish = $sys_compress_prog;
+ }
+ elsif( $dirtmp =~ /\.($gzip_suffix|$old_gzip_suffix)$/ ){
+ $unsquish = $gzip_prog;
+ }
+ if( defined( $unsquish ) ){
+ local( $f );
+ $f = $dirtmp;
+ $f =~ s/($shell_metachars)/\\$1/g;
+ $dirtmp = "$unsquish -d < \"$f\" |";
+ }
+ elsif( $ls_lR_file =~ /($times_suffix|$patch_gzip_suffix)$/ ){
+ return 0 if &patch_ls_lR_file()==0;
+ }
+ if( ! open( DIRTMP, $dirtmp ) ){
+ &msg( "Cannot open $dirtmp\n" );
+ return 0;
+ }
+ $rls = "main'DIRTMP";
+ # Now we don't want to overwrite our input... better test?
+ if( $local_ls_lR_file eq $storename ){
+ $storename = "/dev/null";
+ }
+ }
+ elsif( $ls_lR_file ){
+ local( $dirtmp );
+ $dirtmp = "$big_temp/.dir$$";
+ if( $ls_lR_file =~
/\.($sys_compress_suffix|$gzip_suffix|$old_gzip_suffix)$/ ){
+ $dirtmp .= ".$1";
+ }
+
+ &msg( " Getting directory listing from remote file
$ls_lR_file\n" ) if $debug;
+ if( ! &ftp'get( $ls_lR_file, $dirtmp, 0 ) ){
+ &msg( "Cannot get dir listing file\n" );
+ return 0;
+ }
+ local( $unsquish );
+ if( $dirtmp =~ /\.$sys_compress_suffix$/ ){
+ $unsquish = $sys_compress_prog;
+ }
+ elsif( $dirtmp =~ /\.($gzip_suffix|$old_gzip_suffix)$/ ){
+ $unsquish = $gzip_prog;
+ }
+ if( defined( $unsquish ) ){
+ local( $f, $uf );
+ $uf = $udirtmp = $dirtmp;
+ $dirtmp =~ s/($shell_metachars)/\\$1/g;
+ $f = $dirtmp;
+ $dirtmp =~
s/\.($sys_compress_suffix|$gzip_suffix|$old_gzip_suffix)$//;
+ $udirtmp =~
s/\.($sys_compress_suffix|$gzip_suffix|$ol_gzip_suffix)$//;
+ if( &sys( "$unsquish -d < \"$f\" > \"$dirtmp\"" ) != 0
){
+ &msg( "Cannot uncompress directory listing\n" );
+ return 0;
+ }
+ unlink( $uf );
+ }
+ else {
+ $udirtmp = $dirtmp;
+ }
+
+ open( DIRTMP, $dirtmp ) || die "Cannot open $dirtmp";
+ $rls = "main'DIRTMP";
+ }
+ else {
+ $use_ls = 1;
+ if( ! &ftp'type( 'A' ) ){
+ &msg( "Cannot set type to ascii for dir listing,
ignored\n" );
+ $type_changed = 0;
+ }
+ else {
+ $type_changed = 1;
+ }
+ }
+
+ $lsparse'fstype = $remote_fs;
+ $lsparse'name = "$site:$package";
+
+ if( $use_ls ){
+ local( $flags ) = $flags_nonrecursive;
+ if( $recursive && ! $recurse_hard ){
+ $flags = $flags_recursive;
+ }
+ $lsparse'report_subdirs = (! $recurse_hard && $algorithm == 0);
+ if( !&ftp'dir_open( $flags ) ){
+ &msg( "Cannot get remote directory listing because:
$ftp'response\n" );
+ return 0;
+ }
+
+ $rls = "ftp'NS";
+ }
+
+ $rcwd = '';
+ if( $vms ){
+ # Strip this off all pathnames to make them
+ # relative to the remote_dir
+ $rcwd = $remote_dir;
+ }
+ $dateconv'use_timelocal = $use_timelocal;
+ if( !&lsparse'reset( $rcwd ) ){
+ &msg( "$remote_fs: unknown fstype\n" );
+ return 0;
+ }
+ if( $vms ){
+ # Need to get in terms of the full pathname
+ # so add it back in - see unix2vms at end of mirror
+ $vms_dir = $remote_dir;
+ }
+
+ if( $storename ne "/dev/null" ){
+ open( STORE, ">$storename" ) || die( "Cannot write to
$storename\n" );
+ }
+
+ local( $parse_state ) = &parse_remote_details();
+
+ close( STORE );
+
+
+ if( $local_ls_lR_file ){
+ close( DIRTMP );
+ }
+ elsif( $ls_lR_file ){
+ close( DIRTMP );
+ unlink( $udirtmp );
+ }
+ else {
+ # Could optimise this out - but it makes sure that
+ # the other end gets a command straight after a possibly
+ # long dir listing.
+ if( ! &ftp'type( $text_mode ? 'A' : 'I' ) ){
+ local( $msg ) = "Cannot reset type after dir listing, ";
+ if( $type_changed ){
+ # I changed it before - so I must be able to
+ # change back unless something is wrong
+ $msg .= "aborting\n";
+ &msg( $msg );
+ return 0;
+ }
+ else {
+ $msg .= "ignoring\n";
+ &msg( $msg );
+ }
+ }
+ }
+
+ # If the other end dropped part way thru make sure the
+ # higher routines know!
+ return $parse_state;
+}
+
+# Get remote ls-lR times or mirror gzipped patch files.
+sub patch_ls_lR_file
+{
+ if( ! $patch_prog ){
+ &msg( "No patch program on PATH\n" );
+ return 0;
+ }
+ local( $f, $fr, $flb, $flt, $flp, $flz, $frb, $frt );
+ local( $to , $tn );
+ $frb = $frt = $ls_lR_file;
+ $flb = $dirtmp;
+ &msg( "Patching $flb using $frb\n" ) if $debug;
+ local( $tlb ) = -f $flb?(stat($flb))[9]:0;
+ $dateconv'use_timelocal = $use_timelocal;
+ $flp = "$flb$patch_suffix";
+ $flz = "$flb$patch_gzip_suffix";
+ # Get times and patch.
+ if( $frt =~ /$times_suffix$/ ){
+ # Use remote times file.
+ $frb =~ s/$times_suffix$//;
+ $flt = "$flb$times_suffix";
+ &ftp'get( $frt, $flt, 0 ) ?
+ &msg( "Got $frt\n" ):
+ return 0;
+ open( FT, $flt );
+ for( $to, $tn ){
+ $f = gmtime( <FT> );
+ $_ = &lstime_to_time( $f );
+ }
+ close( FT );
+ $f = "$frb$patch_gzip_suffix";
+ if( $tlb == $to && &ftp'get( $f, $flz, 0 ) &&
+ ! &sys("$gzip_prog -df <$flz >$flp") ){
+ &msg( $log, "Got $f\n" );
+ unlink $flz if ! $debug;
+ }
+ }
+ else {
+ # Get time of remote patch file.
+ $lsparse'fstype = $remote_fs;
+ $lsparse'name = "$site:$package";
+ &lsparse'reset( $remote_dir );
+ if( ! &ftp'dir_open( "$flags_nonrecursive $frb" ) ){
+ &msg( "List remote ls-lR patch: $ftp'response\n" );
+ &ftp'dir_close();
+ return 0;
+ }
+ local( $p, $s, $trz, $t, $m ) = &lsparse'line( ftp'NS );
+ &msg( "Remote ls-lR patch:\n$p $s $trz $t $m\n" ) if $debug;
+ if( ! &ftp'dir_close() ){
+ &msg( "List remote ls-lR patch: $ftp'response\n" );
+ return 0;
+ }
+ # If remote time does not match local get remote patch file.
+ local( $tlz ) = -f $flz?(stat($flz))[9]:0;
+ if( $trz == $tlz ){
+ &msg( "No new $frb\n" );
+ &msg( "age $trz same as $flz\n" ) if $debug;
+ }
+ else {
+ &ftp'get( $frb, $flz, 0 )?
+ &msg( $log, "Got $frb $s\n" ):
+ return 0;
+ &utime( $trz, $trz, $flz );
+ }
+ # unzip patch and read times.
+ $frb =~ s/$patch_gzip_suffix$//;
+ &sys( "$gzip_prog -df <$flz >$flp" ) ?
+ return 0:
+ open( FT, $flp );
+ for( $to, $tn ){
+ ( $fr, $f ) = split( /\t/, <FT> );
+ $_ = &lstime_to_time( $f );
+ }
+ close( FT );
+ }
+ # Patch or leave or get new local ls-lR file?
+ $f = "$patch_prog ";
+ $f .= $use_timelocal?$patch_local:$patch_UTC;
+ if( $tlb == $to && ! &sys( "$f $flb $flp" ) ){
+ &msg( "$flb patched\n" );
+ }
+ elsif( $tlb == $tn ){
+ &msg( "$flb up to date\n" );
+ }
+ else {
+ $fr = "$frb.$gzip_suffix";
+ $f = "$flb.$gzip_suffix";
+ if( &ftp'get( $fr, $f, 0 ) &&
+ ! &sys( "$gzip_prog -df $f" ) ){
+ &utime( $tn, $tn, $flb );
+ &msg( $log, "Got $fr for $flb\n" );
+ }
+ else {
+ &msg( "Did not get $fr\nand $ftp'response\n" );
+ return 0;
+ }
+ }
+ unlink $flp, $flt if ! $debug;
+ if( ! $do_deletes && $exclude_patt =~ /^\.($|\|)/ ){
+ &msg( "$flb check complete\n" );
+ next;
+ }
+ return 1;
+}
+
+sub parse_timeout
+{
+ $parse_timed_out = 1;
+ die "timeout: parse_remote_details";
+}
+
+sub parse_remote_details
+{
+ local( $ret );
+ local( $old_sig );
+
+ $parse_timed_out = 0;
+
+ if( ! $use_ls ){
+ # No need to bother with the timers
+ return &parse_remote_details_real();
+ }
+
+ # This may timeout
+ $old_sig = $SIG{ 'ALRM' };
+ $SIG{ 'ALRM' } = "main\'parse_timeout";
+
+ $ret = eval '&parse_remote_details_real()';
+
+ &alarm( 0 );
+
+ $SIG{ 'ALRM' } = $old_sig;
+
+ if( $@ =~ /^timeout/ ){
+ &msg( "timed out parsing directory details\n" );
+ return 0;
+ }
+ return $ret;
+}
+
+
+sub parse_remote_details_real
+{
+ local( $path, $size, $time, $type, $mode, $rdir, $rcwd );
+ local( @dir_list );
+ local( $i ) = 0;
+ local( $old_path );
+
+ if( $use_ls ){
+ &alarm( $parse_time );
+ }
+
+ # Need to loop in case $recurse_hard
+ while( 1 ){
+ while( !eof( $rls ) ){
+ ( $path, $size, $time, $type, $mode ) =
+ &lsparse'line( $rls );
+ last if $path eq '';
+ if( $ls_fix_mappings ){
+ local( $old_path ) = $path;
+ $_ = $path;
+ eval $ls_fix_mappings;
+ if( $_ ne $old_path ){
+ $path = $_;
+ }
+ }
+ next if $name eq '.' || $name eq '..';
+ if( $debug > 2 ){
+ printf "remote: %s %s %s %s 0%o\n",
+ $path, $size, $time, $type, $mode;
+ }
+ if( $use_ls ){
+ # I just got something so shouldn't timeout
+ &alarm( $parse_time );
+ }
+ else {
+ # Prod the remote system from time to time
+ # To prevent time outs. Only look once every
+ # 50 files
+ # to save on unnecessary systems calls.
+ if( ($i % 50 == 0) &&
+ time > ($last_prodded + $prod_interval) ){
+ $last_prodded = time;
+ &prod();
+ }
+ $i ++;
+ }
+
+ if( $algorithm == 1 ){
+ $path0 = substr( $remote_dir, $rem_start_len );
+ if( $path0 ne '' ){
+ $path0 .= "/";
+ }
+ $path0 .= $path;
+ $path0 =~ s,^/,,;
+ # &msg( "debug: $path0, $remote_dir,
$rem_start_len\n" );
+ }
+ else {
+ $path0 = $path;
+ }
+
+ if( $exclude_patt && $path0 =~ /$exclude_patt/ ){
+ &msg( " exclude: $path0\n" ) if $debug > 1;
+ next;
+ }
+
+ if( $type eq 'd' ){
+ push( @dir_list, $path0 );
+ }
+
+ if( $max_age && $time != 0 && $time < $max_age ){
+ &msg( " too old: $path0\n" ) if $debug > 1;
+ next;
+ }
+
+ # If vms and only keeping the latest version
+ if( $vms && !$vms_keep_versions ){
+ # If we already have a file, pick the newer
+ # TODO: pick the greatest version number
+ local( $ri ) = $remote_map{ $path };
+ if( $ri &&
+ $time > $remote_time[ $ri ] ){
+ $remote_time[ $ri ] = $time;
+ $remote_size[ $ri ] = $size;
+ $remote_type[ $ri ] = $type;
+ $remote_mode[ $ri ] = $mode;
+ next;
+ }
+ }
+
+ local( $mapi ) = $next_remote_mapi++;
+ # push( @remote_sorted, $path );
+ $remote_sorted[ $mapi - 1 ] = $path;
+ $remote_map{ $path } = $mapi;
+ $remote_time[ $mapi ] = $time;
+ $remote_size[ $mapi ] = $size;
+ $remote_type[ $mapi ] = $type;
+ $remote_mode[ $mapi ] = $mode;
+ if( $type eq 'd' ){
+ $remote_totals[ 0 ]++;
+ }
+ else {
+ $remote_totals[ 1 ]++;
+ }
+ }
+
+ if( $use_ls ){
+ if( ! &ftp'dir_close() ){
+ &msg( "Failure at end of remote directory" .
+ " ($rdir) because: $ftp'response\n" );
+ return 0;
+ }
+ }
+
+ if( $recurse_hard ){
+ local( $done ) = 0;
+ while( 1 ){
+ if( $#dir_list < 0 ){
+ # Make sure we end in the right
directory.
+ if( ! &ftp'cwd( $remote_dir ) ){
+ &msg( "Cannot change to remote
directory" .
+ " ($rdir) because:
$ftp'response\n" );
+ return 0;
+ }
+ $done = 1;
+ last;
+ }
+ $rcwd = shift( @dir_list );
+ $rdir = "$remote_dir/$rcwd";
+ if( $debug > 2 ){
+ print "scanning: $remote_dir / $rcwd\n";
+ }
+ if( ! &ftp'cwd( $rdir ) ){
+ &msg( "Cannot change to remote
directory" .
+ " ($rdir) because: $ftp'response\n" );
+ next;
+ }
+ last;
+ }
+ if( $done ){
+ last;
+ }
+ if( !&ftp'dir_open( $flags_nonrecursive ) ){
+ &msg( "Cannot get remote directory" .
+ " listing because: $ftp'response\n" );
+ return 0;
+ }
+ &lsparse'reset( $rcwd );
+
+ # round the loop again.
+ next;
+ }
+
+ # All done - snap the loop
+ last;
+ }
+ return 1;
+}
+
+sub compare_dirs
+{
+ # This declaration must be "local()" because it modifies global data.
+ local( *src_paths,
+ *src_map, *src_time,
+ *src_size, *src_type,
+ *dest_paths,
+ *dest_map, *dest_time,
+ *dest_size, *dest_type,
+ *dest_keep, *dest_keep_totals ) = @_;
+ local( $src_path, $dest_path, $i );
+ local( $last_prodded ) = time; # when I last prodded the remote ftpd
+
+ # Most of these variables should be locals in blocks below but
+ # that seems to tickle a perl bug and causes a lot of memory to
+ # be wasted.
+ local( $desti, $srci, $compress, $srciZ, $srcigz, $split,
$dest_path_real );
+ local( $old_dest_path, $existing_path, $tmp, $restart );
+ local( $sp, $dp ) = ($#src_paths + 1, $#dest_paths + 1);
+
+ &msg( "compare directories (src $sp, dest $dp)\n" ) if $debug;
+ $total_src_size = 0;
+
+ for( $i = 0; $i <= $#src_paths; $i++ ){
+ $dest_path = $src_path = $src_paths[ $i ];
+
+ $desti = $dest_map{ $dest_path };
+ $srci = $i + 1;
+
+ # Prod the remote system from time to time
+ # To prevent time outs. Only look once every 50 files
+ # to save on unnecessary systems calls.
+ if( ($i % 50 == 0) && time > ($last_prodded + $prod_interval) ){
+ $last_prodded = time;
+ &prod();
+ }
+
+ if( $debug > 2 ){
+ &msg( "Compare src $src_path ($srci): " .
+ &t2str( $src_time[ $srci ] ) );
+ &msg( " $src_size[ $srci ] $src_type[ $srci ]\n" );
+ }
+
+ # I'm about to do a lot of matching on this
+ study( $src_path );
+
+ # Should I compress this file?
+ # Don't compress this file if trying to do a compress->gzip
+ # conversion.
+ $compress = 0;
+ if( &will_compress( $src_path, $srci ) ){
+ if( $dest_path !~ /$squished/o ){
+ $srciZ = $src_map{
"$src_path.$sys_compress_suffix" };
+ $srcigz = $src_map{ "$src_path.$gzip_suffix" };
+ if( $srciZ || $srcigz ){
+ # There is a compressed version
+ # too! Skip the uncompressed one
+ &msg( " do not xfer, compressed
version exists: $src_path\n" ) if $debug > 1;
+ next;
+ }
+
+ $compress = 1;
+ $dest_path .= '.' . $compress_suffix;
+ $desti = $dest_map{ $dest_path };
+ }
+ }
+ # need to adjust the symlink pointer?
+ elsif( $src_type[ $srci ] =~ /^l (.*)/ ){
+ # Am I going to squish the file this points to?
+ local( $real, $reali, $reali1 );
+ local( $count ) = 0;
+ while( $count++ <= 10 ){
+ $real = &expand_symlink( $src_path, $1 );
+ $reali = $src_map{ $real };
+ # Look out for when the symlink loops on itself
+ if( defined( $reali1 ) && $reali == $reali1 ){
+ last;
+ }
+ $reali1 = $reali;
+ last if $src_type[ $reali ] !~ /^l (.*)$/;
+ }
+ if( &will_compress( $real, $reali ) ){
+ # real is going to be (at least) squished so
+ # suffix the dest
+ $dest_path .= '.' . $compress_suffix;
+ $desti = $dest_map{ $dest_path };
+ $src_type[ $srci ] .= '.' . $compress_suffix;
+ &msg( " symlink pointer is now $dest_path\n" ) if
$debug > 1;
+ if( $src_map{ $dest_path } ){
+ &msg( "do not xfer, $dest_path exists\n" ) if
$debug > 1;
+ next;
+ }
+ }
+ if( &will_split( $real, $reali ) ){
+ $src_type[ $srci ] .= '-split/README';
+ &msg( " symlink pointer now to $real-split/README'\n"
) if $debug > 1;
+ }
+ }
+
+ # If this is a file that I decided not to compress but the
+ # remote file is compressed and I want a gziped local version
+ # then force compression.
+ # This ignores any compress_excl flags.
+ if( ! $compress &&
+ $compress_suffix eq $gzip_suffix &&
+ $compress_conv_patt && $src_path =~ /$compress_conv_patt/ ){
+ $_ = $dest_path;
+ eval $compress_conv_expr;
+ $dest_path = $_;
+ # check if dest_path exists in the sources. If it
+ # does, ignore this file. This is to avoid the
+ # double mirroring problem if you are using gzip and
+ # the source site has both foo.Z and foo.gz.
+ if( $src_map{ $dest_path } ){
+ &msg( "Skipping $src_path because remote site
also has $dest_path\n" ) if $debug > 2;
+ next;
+ }
+ &msg( " $src_path -> $dest_path\n" ) if $debug > 2;
+ $desti = $dest_map{ $dest_path };
+ $compress = 1;
+ }
+
+ # Am I converting the compression on the file this points to?
+ if( $src_type[ $srci ] =~ /^l (.*)/ &&
+ $compress_suffix eq $gzip_suffix ){
+ local( $value ) = $1;
+ local( $real ) = &expand_symlink( $src_path, $value );
+ local( $reali ) = $src_map{ $real };
+ if( $src_type[ $reali ] ne 'd' &&
+ $src_type[ $reali ] ne /^l .*/ &&
+ $compress_conv_patt && $real =~
/$compress_conv_patt/ ){
+ $dest_path =~ s/$sys_compress_suffix$/$gzip_suffix/;
+ $desti = $dest_map{ $dest_path };
+ $value =~ s/$sys_compress_suffix$/$gzip_suffix/;
+ &msg( " symlink pointer is now $dest_path
(conv)\n")
+ if $debug > 1;
+ }
+ if( $name_mappings || $external_mapping ){
+ local( $old ) = $value;
+ $value = &map_name( $value );
+ if( $value ne $old ){
+ &msg( " Mapped symlink value is $value\n"
) if $debug > 2;
+ }
+
+ }
+ $src_type[ $srci ] = "l ".$value;
+ }
+
+ if( $name_mappings || $external_mapping ){
+ local( $old_dest_path ) = $dest_path;
+ $dest_path = &map_name( $dest_path );
+ if( $dest_path ne $old_dest_path ){
+ $desti = $dest_map{ $dest_path };
+ &msg( " Mapped name is $dest_path\n" ) if
$debug > 2;
+ }
+ }
+
+ # Should this file be split?
+ $split = 0;
+ $dest_path_real = undef;
+ if( &will_split( $src_path, $srci ) ){
+ $split = 1;
+ $dest_path_real = $dest_path;
+ $dest_path .= "-split/part01";
+ $desti = $dest_map{ $dest_path };
+ }
+
+ if( $debug > 2 ){
+ &msg( " dest $dest_path ($desti): " .
+ &t2str( $dest_time[ $desti ] ) );
+ &msg( " $dest_size[ $desti ] $dest_type[ $desti ]" );
+ &msg( " (->$compress_suffix)" ) if $compress;
+ &msg( " (split)" ) if $split;
+ &msg( "\n" );
+ }
+
+ if( $algorithm == 1 ){
+ $src_path0 = substr( $remote_dir, $rem_start_len );
+ if( $src_path0 ne '' ){
+ $src_path0 .= "/";
+ }
+ $src_path0 .= $src_path;
+ $src_path0 =~ s,^/,,;
+ #&msg( "debug: $src_path0, $remote_dir,
$rem_start_len\n" );
+ }
+ else {
+ $src_path0 = $src_path;
+ }
+
+ if( $get_patt && $src_path0 !~ /$get_patt/ ){
+ &msg( " do not xfer: $src_path0\n" ) if $debug > 1;
+ next;
+ }
+
+ # Just create any needed directories (the timestamps
+ # should be ignored)
+ if( $src_type[ $srci ] eq 'd' ){
+ if( $algorithm == 1 ){
+ if( $exclude_patt && $src_path0 =~
/$exclude_patt/ ){
+ &msg( " exclude: $src_path0\n" ) if
$debug > 1;
+ }
+ else {
+ $rel_src_path = $src_path;
+ $rel_src_path =~ s,.*/,,;
+ push( @sub_dirs, $rel_src_path );
+ &msg( " adding $rel_src_path\n" ) if
$debug;
+ }
+ }
+ if( $dest_type[ $desti ] ne 'd' ){
+ push( @things_to_make, "d $dest_path" );
+ &msg( " need to mkdir $dest_path\n" ) if
$debug > 1;
+ }
+ # keep the directory once made
+ # (Also if local is really a symlink elsewhere
+ # it will be kept.)
+ &keep( $desti, $dest_path, *dest_keep,
*dest_keep_totals, *dest_map, 0 );
+ next;
+ }
+
+ # Well that just leaves files and symlinks.
+ # Do various checks on them.
+
+ if( $desti && ! $dest_keep[ $desti ] ){
+ &keep( $desti, $dest_path, *dest_keep,
*dest_keep_totals, *dest_map, 1 );
+ if( $split ){
+ # Mark all the split parts as kept
+ local( $dpp, $dps );
+ ($dpp, $dps) = ($dest_path =~
m,^(.*/)(part[0-9]+)$,);
+ while( 1 ){
+ $dps++;
+ if( !($di = $dest_map{ $dpp . $dps }) ){
+ last;
+ }
+ &keep( $di, $dpp . $dps, *dest_keep,
*dest_keep_totals, *dest_map, 1 );
+ }
+ # And the README
+ $dps = 'README';
+ $di = $dest_map{ $dpp . $dps };
+ if( $di ){
+ &keep( $di, $dpp . $dps, *dest_keep,
*dest_keep_totals, *dest_map, 1 );
+ }
+ # And the directory
+ chop( $dpp );
+ $dps = '';
+ $di = $dest_map{ $dpp . $dps };
+ if( $di ){
+ &keep( $di, $dpp . $dps, *dest_keep,
*dest_keep_totals, *dest_map, 0 );
+ }
+ }
+ }
+
+ local( $update ) = 0;
+
+ if( ! $get_missing ){
+ next;
+ }
+
+ if( ($max_size > 0) && ($src_size[ $srci ] > $max_size) ){
+ &msg( " src is too big, no need to xfer it\n" ) if
$debug > 2;
+ next;
+ }
+
+ if( $force || ! $dest_type[ $desti ] || $timestamp ){
+ # Either I'm forcing xfers or the file doesn't exist
+ # either way I should update
+ $update = 1;
+ }
+ else {
+ # Maybe the src is newer?
+ if( $get_newer &&
+ &compare_times( $src_time[ $srci ], $dest_time[
$desti ] ) ){
+ &msg( " src is newer, xfer it\n" ) if $debug
> 2;
+ $update = 1;
+ }
+ # or maybe its size has changed?
+ # don't bother if file was compressed or split as the
+ # size will have changed anyway
+ if( !$update &&
+ !$compress && !$split &&
+ $get_size_change &&
+ ($src_type[ $srci ] eq 'f') &&
+ ($src_size[ $srci ] != $dest_size[ $desti ]) ){
+ $update = 1;
+ if( $debug > 2 ){
+ &msg( " src is different size, xfer it\n"
);
+ }
+ }
+ # Maybe it has changed type!
+ if( !$update &&
+ $src_type[ $srci ] ne $dest_type[ $desti ] ){
+ $update = 1;
+ if( $debug > 2 ){
+ &msg( " src has different type, xfer
it\n" );
+ }
+ }
+ }
+
+ if( ! $update ){
+ next;
+ }
+
+ if( $src_type[ $srci ] =~ /^l (.*)/ ){
+ # If the symlink hasn't changed then may as well
+ # leave it alone
+ if( $src_type[ $srci ] eq $dest_type[ $desti ] ){
+ next;
+ }
+ # DONT FORGET TO NAME MAP!!!!
+ $existing_path = $1;
+
+ if( $compress_suffix eq $gzip_suffix &&
+ $compress_conv_patt && $existing_path =~
/$compress_conv_patt/ ){
+ $_ = $existing_path;
+ eval $compress_conv_expr;
+ $existing_path = $_;
+ }
+
+ push( @things_to_make, "l $dest_path -> $existing_path"
);
+ &msg( " need to symlink $dest_path ->
$existing_path\n" ) if $debug > 2;
+ next;
+ }
+
+ # Now that the tests are complete use the real dest.
+ if( defined( $dest_path_real ) ){
+ $dest_path = $dest_path_real;
+ $desti = $dest_map{ $dest_path };
+ }
+
+ $total_src_size += $src_size[ $srci ];
+ if( $dont_do ){
+ &msg("Should ");
+ }
+ &msg( "$XFER file $src_path as $dest_path ($src_size[ $srci ])".
+ ($compress ? " (->$compress_suffix)" : "") .
+ ($split ? " (split)" : "") . "\n" ) if $debug > 1;
+ push( @xfer_dest, $dest_path );
+ push( @xfer_src, $src_path );
+
+ # If xfers can be restarted AND
+ # a temporary file exists from a previous attempt at a
+ # transfer AND
+ # the timestamps of the exising temp file and the original
+ # src file match then flag a restart.
+ $tmp = &filename_to_tempname( '', $dest_path );
+ $tmpi = $dest_map{ $tmp };
+ $restart = '';
+#warn "get_file = $get_file, can_restart = $can_restart, dest_size =
$dest_size[ $tmpi ], dest_time = $dest_time[ $tmpi ], src_time = $src_time[
$srci ]\n";
+ if( $get_file &&
+ $can_restart &&
+# Debian bug #24243, mirror-2.9 does not restart, address@hidden
+ $dest_size[ $tmpi ] != 0 ){
+ if ($dest_time[ $tmpi ] eq $src_time[ $srci ]) {
+ # Then this is an xfer of the same file
+ # so just restart where I left off
+ $restart = 'r';
+ } elsif ( $debug > 1 ){
+ &msg ( "Timestamp useless on $tmp\n" );
+ }
+ }
+ # x for xfer, c for compress, s for split
+ push( @xfer_attribs,
+ "x$restart" .
+ ($compress ? "c" : "") .
+ ($split ? "s" : "") );
+ }
+ &msg( "to $XFER $total_src_size bytes\n" ) if $debug > 2;
+}
+
+sub map_name
+{
+ local( $name ) = @_;
+
+ if( $name_mappings ){
+ local( $old_name ) = $name;
+ $_ = $name;
+ eval $name_mappings;
+ if( $_ ne $old_name ){
+ $name = $_;
+ }
+ }
+
+ if( $external_mapping ){
+ $old_name = $name;
+ local( $tmp ) = &extmap'map( $name );
+ if( $tmp ne $old_name ){
+ $name = $tmp;
+ }
+ }
+ return $name;
+}
+
+
+sub set_timestamps
+{
+ local( $src_path );
+
+ &msg( "setting timestamps\n" );
+ if( ! $get_file ){
+ &msg( "Cannot set remote timestamps\n" );
+ return;
+ }
+
+ local( $dest_path, $dest_loc_mapi, $src_rem_mapi, $rtime );
+
+ foreach $src_path ( @xfer_src ){
+ $dest_path = shift( @xfer_dest );
+ $dest_loc_mapi = $local_map{ $dest_path };
+ $src_rem_mapi = $remote_map{ $src_path };
+
+ $rtime = $remote_time[ $src_rem_mapi ];
+ if( $dest_loc_mapi && $local_time[ $dest_loc_mapi ] ne $rtime ){
+ &set_timestamp( $dest_path, $rtime );
+ }
+ }
+}
+
+sub set_timestamp
+{
+ local( $path, $time ) = @_;
+
+ local( $pr_time ) = &t2str( $time );
+
+ if( $dont_do ){
+ &msg( "Should set time of $path to $pr_time\n" );
+ return;
+ }
+
+ if( $timestamp || $debug > 2 ){
+ &msg( "Setting time of $path to $pr_time\n" );
+ }
+
+ if( ! &utime( $time, $time, $path ) ){
+ &msg( $log, "Cannot set file times for $path to $pr_time
because: $!\n" );
+ }
+}
+
+sub make_dirs
+{
+ local( $thing );
+
+ foreach $thing ( @things_to_make ){
+ if( $thing !~ /^d (.*)/ ){
+ next;
+ }
+ if( $dont_do ){
+ &msg( "Should mkdir $1\n" );
+ }
+ else {
+ &mkdirs( $1 );
+ }
+ }
+}
+
+sub make_symlinks
+{
+ local( $thing );
+
+ thing:
+ foreach $thing ( @things_to_make ){
+ if( $thing !~ /^l (.*) -> (.*)/ ){
+ next;
+ }
+ local( $dest, $existing ) = ($1, $2);
+ local( $dirpart ) = &dirpart( $dest );
+ local( $ft ) = &expand_symlink( $dest, $existing );
+ if( -e $ft ){
+ &mkdirs( $dirpart ) if ! -d $dirpart;
+ # symlink to existing file.
+# Debian bug #85353 "bad symlink stops listing with -n" <address@hidden>
+ &mksymlink( $dest, $existing );
+ next;
+ }
+
+ # The existing file doesn't actually exist!
+ # Has it been compressed, gzipped, split? or worse
+ # compressed/gzipped AND split. (OK so it could
+ # be another problem, bad symlink on remote host, file
+ # that hasn't been xfer'd yet... but this is as good as
+ # it gets.)
+ local( $p );
+ foreach $p (
+ "\%s.$sys_compress_suffix",
+ "\%s.$gzip_suffix",
+ "\%s/README",
+ "\%s-split/README",
+ "\%s-split.$sys_compress_suffix/README",
+ "\%s-split.$gzip_suffix/README" ){
+ local( $f ) = sprintf( $p, $existing );
+ if( -e $f ){
+ &msg( "using $p\n" ) if $debug > 2;
+ &mksymlink( $dest, $f );
+ next thing;
+ }
+ }
+ if( $make_bad_symlinks ){
+ &msg( "symlink to non-existant file: $dest ->
$existing\n" );
+ &mksymlink( $dest, $existing );
+ }
+ elsif ( $get_symlink_files ){
+# Get file within $local_dir tree and make symlink, address@hidden, 2001/09/22.
+ if( $ft =~ m|\.\./| ){
+ &msg( "Not getting path $ft\nas not in
remote_dir $remote_dir\n" );
+ &msg( "and not symlinking $dest -> $existing\n"
);
+ next thing;
+ }
+ local( $dl ) = &dirpart( $ft );
+ &mkdirs( $dl ) if ! -d $dl;
+ if( &ftp'get( $ft, $ft, 0 ) ){
+ &msg( $log, "Got $ft\n" );
+ &mksymlink( $dest, $existing );
+ }
+ else {
+ &msg( "Did not get $ft\nbecause
$ftp'response\n" );
+ &msg( "so not symlinking $dest -> $existing\n"
);
+ }
+ }
+ else {
+ &msg( "Not symlinking $dest -> $existing\n" );
+ &msg( "as no path $ft\n" );
+ }
+ }
+}
+
+sub do_all_transfers
+{
+ local( $src_path );
+ local( $dest_path, $attribs );
+ local( $srci );
+
+ if( $#xfer_src < 0 ){
+ &msg( "No files to transfer\n" ) if $algorithm == 0;
+ return;
+ }
+
+ # The Macos ftpd cannot reliably rename files
+ $no_rename = (! $remote_has_rename) || ($remote_fs eq 'macos' && !
$get_file);
+
+ foreach $src_path ( @xfer_src ){
+ if( $get_file ){
+ $srci = $remote_map{ $src_path };
+ }
+ else {
+ $srci = $local_map{ $src_path };
+ }
+
+ $dest_path = shift( @xfer_dest );
+ $attribs = shift( @xfer_attribs );
+
+ if( $dont_do ){
+ # Skip trying to get the file.
+ next;
+ }
+
+ &msg( "Need to $XFER file $src_path as $dest_path ($attribs)\n"
) if $debug > 1;
+
+ local( $newpath ) =
+ &transfer_file( $src_path, $dest_path,
+ $attribs, $remote_time[ $srci ] );
+ if( $get_file && $newpath eq '' ){
+ &msg( $log, "Failed to $XFER file $ftp'response\n" );
+ if( $ftp'response =~ /timeout|timed out/i ){
+ $timeouts++;
+ }
+ if( $ftp'fatalerror || $timeouts > $max_timeouts ){
+ &msg( $log, "Fatal error talking to site,
skipping rest of transfers\n" );
+ &disconnect();
+ return;
+ }
+ next;
+ }
+
+ # File will now have been split up.
+ if( $attribs =~ /s/ ){
+ next;
+ }
+
+ &set_attribs( $newpath, $src_path, 'f' );
+
+ # we can only force time for local files
+ if( $force_times && $get_file ){
+ &set_timestamp( $newpath, $remote_time[ $srci ] );
+ }
+ }
+}
+
+
+sub transfer_file
+{
+ local( $src_path, $dest_path, $attribs, $timestamp ) = @_;
+ local( $dir, $file, $temp, $compress, $split, $restart, $mesg,
$got_mesg );
+
+ # Make sure the required directory exists
+ $dir = "";
+ if( $dest_path =~ /^(.+\/)([^\/]+)$/ ){
+ ($dir, $file) = ($1, $2);
+ if( $dest_type[ $dir ] ne 'd' && &mkdirs( $dir ) ){
+ &msg( $log, "Created dir $dir\n" );
+ }
+ }
+ else {
+ $file = $dest_path;
+ }
+
+ $temp = &filename_to_tempname( $dir, $file );
+
+ # Interpret the attrib characters
+ if( $attribs !~ /x/ ){
+ # Not an xfer!
+ return '';
+ }
+ if( $attribs =~ /c/ ){
+ $compress = 1;
+ $mesg = " and compress";
+ }
+ if( $attribs =~ /s/ ){
+ $split = 1;
+ $mesg = " and split";
+ }
+ if( $attribs =~ /r/ ){
+ $restart = 1;
+ }
+
+ if( $vms ){
+ &ftp'type( ($src_path =~ /$vms_xfer_text/i) ? 'A' : 'I' );
+ }
+
+ if( $remote_fs eq 'macos' && ! $get_file ){
+ &ftp'type( 'A' );
+ }
+
+ if( ! $get_file ){
+ # put the file remotely
+ local( $src_file ) = $src_path;
+ local( $comptemp ) = '';
+
+ if( $compress ){
+ # No easy way to tell wether this was compressed or not
+ # for now just presume that it is.
+ local( $f ) = $src_file;
+ $f =~ s/($shell_metachars)/\\$1/g;
+ $comptemp = "$big_temp/.out$$";
+ &sys( "$compress_prog < \"$f\" > \"$comptemp\"" );
+ $src_file = $comptemp;
+ }
+
+ if( $no_rename ){
+ $temp = $dest_path;
+ }
+
+ if( ! &ftp'put( $src_file, $temp, $restart ) ){
+ &msg( $log, "Failed to put $src_file: $ftp'response\n"
);
+ unlink( $comptemp ) if $comptemp;
+ return '';
+ }
+
+ unlink( $comptemp ) if $comptemp;
+ if( !$no_rename && ! &ftp'rename( $temp, $dest_path ) ){
+ &msg( $log, "Failed to remote rename $temp to
$dest_path: $ftp'response\n" );
+ return '';
+ }
+
+ local($filesize) = &filesize( $src_file );
+ &msg( $log, "Put $src_file $filesize bytes\n" );
+
+ &log_upload( $src_file, $dest_path, "", $filesize );
+
+ # Some transfers done
+ $exit_xfer_status |= $exit_xfers;
+
+ if( $delete_source ){
+ unlink( $src_file );
+ }
+
+ return $dest_path;
+ }
+
+ # Maybe TODO: Paul Szabo suggest that if recurse_hard is set then
+ # mirror should chdir to the directory the file is in before getting
+ # it.
+
+ # Get a file
+ &ftp'dostrip( $strip_cr );
+ $start_time = time;
+ if( ! &ftp'get( $src_path, $temp, $restart ) ){
+ if( !$failed_gets_excl || $ftp'response !~ /$failed_gets_excl/
){
+ &msg( $log, "Failed to get $src_path: $ftp'response\n"
);
+ }
+
+ # Time stamp the temp file to allow for a restart
+ if( -f $temp ){
+ &utime( $timestamp, $timestamp, $temp );
+ # Make sure this file is kept
+ local( $ti ) = $local_map{ $temp };
+ &keep( $ti, $temp, *local_keep, *local_keep_totals,
*local_map, 0 );
+ }
+
+ return '';
+ }
+
+ # Some transfers done
+ $exit_xfer_status |= $exit_xfers;
+
+ # delete source file after successful transfer
+ if( $delete_source ){
+ if( &ftp'delete( $src_path ) ){
+ &msg( $log, "Deleted remote $src_path\n");
+ }
+ else {
+ &msg( $log, "Failed to delete remote $src_path\n");
+ }
+ }
+
+ if( $compress ){
+ # Prevent the shell from expanding characters
+ local( $f ) = $temp;
+ local( $comp );
+ $f =~ s/($shell_metachars)/\\$1/g;
+ $temp = "$f.$compress_suffix";
+ # Am I doing compress to gzip conversion?
+ if( $compress_conv_patt && $src_path =~ /$compress_conv_patt/ &&
+ $compress_suffix eq $gzip_suffix ){
+ $comp = "$sys_compress_prog -d < \"$f\" | $gzip_prog >
\"$temp\"";
+ }
+ else {
+ $comp = "$compress_prog < \"$f\" > \"$temp\"";
+ }
+ &sys( $comp );
+ $temp =~ s/\\($shell_metachars)/$1/g;
+ $f =~ s/\\($shell_metachars)/$1/g;
+ unlink( $f );
+ }
+
+ local( $filesize ) = &filesize( $temp );
+ local( $sizemsg ) = $filesize;
+ local( $srcsize ) = $remote_size[ $remote_map{ $src_path } ];
+ if( $srcsize > $sizemsg && !$compress ){
+ # should never happen, right? right ...
+ $sizemsg .= " (file shrunk from $srcsize!)";
+ }
+ elsif( $srcsize < $sizemsg ){
+ # compression wasn't such a great idea
+ $sizemsg .= " (file grew from $srcsize!)";
+ }
+
+ # Ok - chop it up into bits!
+ if( $split ){
+ local( $time ) = 0;
+ if( $force_times ){
+ $time = $remote_time[ $remote_map{ $src_path } ];
+ }
+ &bsplit( $temp, $dest_path, $time );
+ unlink( $temp );
+ $got_mesg .= " and split";
+ }
+ else {
+ if( -f $dest_path ){
+ unlink( $dest_path );
+ }
+ if( ! rename( $temp, $dest_path ) ){
+ &msg( $log, "Cannot rename $temp to $dest_path: $!\n" );
+ }
+ }
+
+ local( $as ) = '';
+ if( $src_path ne $dest_path ){
+ $as = " as $dest_path";
+ }
+ $time_taken = time - $start_time;
+ &msg( $log, "Got $src_path$as$got_mesg $sizemsg $time_taken\n" );
+ # Make sure to keep what you just got! It may/may not have
+ # been compressed or gzipped..
+ local( $locali ) = $local_map{ $dest_path };
+ &keep( $locali, $dest_path, *local_keep, *local_keep_totals,
*local_map, 1 );
+
+ &log_upload( $src_path, $dest_path, $got_mesg, $filesize );
+
+ return( $dest_path );
+}
+
+sub filename_to_tempname
+{
+ local( $dir, $file ) = @_;
+
+ local ( $dest_path ) = $file;
+
+ if( $dir eq '' ){
+ if( $dest_path =~ /^(.+\/)([^\/]+)$/ ){
+ ($dir, $file) = ($1, $2);
+ }
+ }
+ else {
+ $file = $dest_path;
+ }
+
+ # dir
+# LIMITED NAMELEN
+# if you are really limited in pathname length then
+# change the .in. to just .
+ if( $remote_fs eq 'macos' && ! $get_file ){
+ return $dir . "tmp.$file";
+ }
+ return "$dir.in.$file.";
+}
+
+
+# Open, write, close - to try and ensure that the log will allways be filled
+# in.
+sub log_upload
+{
+ local( $src_path, $dest_path, $got_mesg, $size ) = @_;
+
+ if( ! $upload_log ){
+ return;
+ }
+
+ if( ! open( ULOG, ">>$upload_log" ) ){
+ print STDERR "Cannot write to $upload_log\n";
+ return;
+ }
+
+ &myflock( 'ULOG', $LOCK_EX );
+ if( $get_files ){
+ print ULOG "$site:$remote_dir/$src_path ->
$local_dir/$dest_path $size ";
+ }
+ else {
+ print ULOG "$local_dir/$dest_path ->
$site:$remote_dir/$src_path $size ";
+ }
+ if( $got_mesg ){
+ print ULOG "($got_mesg)";
+ }
+ print ULOG "\n";
+ &myflock( 'ULOG', $LOCK_UN );
+ close( ULOG );
+}
+
+sub do_deletes
+{
+ # This declaration must be "local()" because it modifies global data.
+ local( *src_paths,
+ *src_map,
+ *src_type, *src_keep,
+ *src_totals, *src_keep_totals ) = @_;
+ local( $files_to_go, $dirs_to_go );
+
+ if( ! ($do_deletes || $save_deletes) ){
+ return;
+ }
+
+ local( $src_path, $i );
+ local( $orig_do_deletes ) = $do_deletes;
+ local( $orig_save_deletes ) = $save_deletes;
+
+ local( $del_patt ) = $delete_patt;
+ if( $delete_get_patt ){
+ $del_patt = $get_patt;
+ }
+
+ $files_to_go = $src_totals[ 1 ] - $src_keep_totals[ 1 ];
+ $dirs_to_go = $src_totals[ 0 ] - $src_keep_totals[ 0 ];
+
+ # Adjust totals by considering del_patt
+ for( $i = $#src_paths; $i >= 0; $i-- ){
+ $src_path = $src_paths[ $i ];
+ $srci = $i + 1;
+
+ if( !$src_keep[ $srci ] && $src_path !~ /$del_patt/
+ || $delete_excl && $src_path =~ /$delete_excl/ ){
+ if( $src_type[ $srci ] =~ "d" ){
+ $dirs_to_go--;
+ }
+ else {
+ $files_to_go--;
+ }
+ }
+ }
+
+ # Check out file deletions
+ if( $max_delete_files =~ /^(\d+)\%$/ ){
+ # There is a % in the value - so its a percentage
+ local( $per ) = $1;
+ if( $per <= 0 || 100 < $per ){
+ &msg( "silly percentage $max_delete_files, not
deleting\n" );
+ $do_deletes = 0;
+ $save_deletes = 0;
+ }
+ else {
+ # Don't do more than this percentage of files
+ # Convert max_delete_files into the number of files
+ $max_delete_files =
+ int( $src_totals[ 1 ] * $max_delete_files /100
);
+ }
+ }
+ if( $files_to_go > $max_delete_files ){
+ &msg( "Too many files to delete, not actually deleting
($files_to_go > $max_delete_files)\n" );
+ $do_deletes = 0;
+ $save_deletes = 0;
+ }
+
+ # Check out directory deletions
+ if( $max_delete_dirs =~ /^(\d+)%$/ ){
+ # There is a % in the value - so its a percentage
+ local( $per ) = $1;
+ if( $per <= 0 || 100 < $per ){
+ &msg( "silly percentage $max_delete_dirs, not
deleting\n" );
+ $do_deletes = 0;
+ $save_deletes = 0;
+ }
+ else {
+ # Don't do more than this percentage of dirs
+ # Convert max_delete_dirs into the number of dirs
+ $max_delete_dirs =
+ int( $src_totals[ 0 ] * $max_delete_dirs / 100
);
+ }
+ }
+
+ if( $dirs_to_go > $max_delete_dirs ){
+ &msg( "Too many directories to delete, not actually deleting
($dirs_to_go > $max_delete_dirs)\n" );
+ $do_deletes = 0;
+ $save_deletes = 0;
+ }
+
+ # Scan the list backwards so subdirectories are dealt with first
+ for( $i = $#src_paths; $i >= 0; $i-- ){
+ $src_path = $src_paths[ $i ];
+ $srci = $i + 1;
+
+ if( $src_keep[ $srci ] ){
+ # Keep this for sure;
+ &msg( "Keeping: $src_path\n" ) if $debug > 3;
+ next;
+ }
+
+ if( $src_path !~ /$del_patt/ ){
+ &msg( " not in del_patt: $src_path\n" ) if $debug > 1;
+ next;
+ }
+
+ if( $delete_excl && $src_path =~ /$delete_excl/ ){
+ &msg( " do not delete: $src_path\n" ) if $debug > 1;
+ next;
+ }
+
+ if( $save_deletes && $save_dir =~ m,$cwd/(.*), ){
+ local( $save_dir_tail ) = $1;
+ if( $save_dir_tail && $src_path =~ m,$save_dir_tail/*,
){
+ next;
+ }
+ }
+
+ if( $save_deletes ){
+ &save_delete( $src_path, $src_type[ $srci ] );
+ }
+ else {
+ &do_delete( $src_path, $src_type[ $srci ] );
+ }
+ }
+
+ $do_deletes = $orig_do_deletes;
+ $save_deletes = $orig_save_deletes;
+}
+
+# Move aside the given file. Kind is 'd' for dirs and 'f' for files.
+sub save_delete
+{
+ local( $save, $kind ) = @_;
+
+ local( $real_save_dir, $save_dest );
+ eval "\$real_save_dir = \"$save_dir\"";
+
+
+ if( ! $get_file ){
+ &msg( "NEED TO implement remote save_deletes\n" );
+ return;
+ }
+
+ $save_dest = "$real_save_dir/$save";
+
+ if( $dont_do ){
+ &msg( "Should save_delete $save to $save_dest\n" );
+ return;
+ }
+
+ if( $kind eq 'd' ){
+ $save_dest =~ s,/+$,,;
+
+ # Make sure it exists
+ &save_mkdir( $save_dest );
+
+ # Zap the original
+ if( rmdir( $save ) == 1 ){
+ &msg( $log, "Removed directory $save\n" );
+ }
+ else {
+ &msg( $log, "UNABLE TO REMOVE DIRECTORY $save\n" );
+ }
+ return;
+ }
+
+ # Save a file
+
+ # Make the directories under $save_dir
+ local( $dirname );
+ $dirname = $save_dest;
+ $dirname =~ s/\/[^\/]+$//;
+ # Make sure the directory exists to mv the file into.
+ &save_mkdir( $dirname );
+
+ if( rename( $save, $save_dest ) == 1 ){
+ &msg( $log, "Moved $save to $save_dest\n" );
+ }
+ else {
+ system "$mv_prog '$save' '$save_dest'";
+ if( ( $? >> 8 ) == 0 ){
+ &msg( $log, "Moved $save to $save_dest\n" );
+ }
+ else {
+ &msg( $log, "UNABLE TO MOVE $save TO $save_dest\n" );
+ }
+ }
+}
+
+sub save_mkdir
+{
+ local( $dir ) = @_;
+
+ if( ! -d $dir ){
+ if( &mkdirs( $dir ) ){
+ &msg( $log, "Created save directory $dir\n" );
+ }
+ else {
+ &msg( $log, "UNABLE TO CREATE $dir, aborting saves\n" );
+ $save_deletes = 0;
+ }
+ }
+}
+
+# Delete the given file. Kind is 'd' for dirs and 'f' for files.
+sub do_delete
+{
+ local( $del, $kind ) = @_;
+
+ if( $dont_do ){
+ &msg( "Should delete $del\n" );
+ return;
+ }
+
+ if( $kind eq 'd' ){
+ $del =~ s,/+$,,;
+ if( $do_deletes ){
+ if( $get_file ){
+ &msg( $log, "rmdir $cwd/$del\n" );
+ rmdir( "$cwd/$del" ) ||
+ &msg( $log, "rmdir $cwd/$del failed:
$!\n" );
+ }
+ else {
+ &msg( $log, "delete DIR $del\n" );
+ &ftp'deldir( "$del" ) ||
+ &msg( $log, "ftp delete DIR $del
failed\n" );
+ }
+ }
+ else {
+ if( $get_file ){
+ &msg( $log, "NEED TO rmdir $cwd/$del\n" );
+ }
+ else {
+ &msg( $log, "NEED TO ftp'deldir $del\n" );
+ }
+ }
+ return;
+ }
+
+ # Deleting a file.
+ if( $do_deletes ){
+ if( $get_file ){
+ &msg( $log, "unlink $cwd/$del\n" );
+ unlink( "$cwd/$del" ) ||
+ &msg( $log, "unlink $cwd/$del failed: $!\n" );
+ }
+ else {
+ &msg( $log, "delete FILE $del\n" );
+ &ftp'delete( "$del" ) ||
+ &msg( $log, "ftp delete FILE $del failed\n" );
+ }
+ }
+ else {
+ if( $get_file ){
+ &msg( $log, "NEED TO unlink $cwd/$del\n" );
+ }
+ else {
+ &msg( $log, "NEED TO ftp'delete $del\n" );
+ }
+ }
+}
+
+sub filesize
+{
+ local( $fname ) = @_;
+
+ if( ! -f $fname ){
+ return -1;
+ }
+
+ return (stat( _ ))[ 7 ];
+
+}
+
+# Is the value
+sub istrue
+{
+ local( $val ) = @_;
+
+ return $val eq '1' || $val eq 'yes' || $val eq 'ok' ||
+ $val eq 'true';
+}
+
+sub mksymlink
+{
+ local( $dest_path, $existing_path ) = @_;
+
+ if( ! $get_file ){
+ &msg( "Cannot create symlinks on remote systems ($dest_path ->
$existing_path)\n" );
+ return;
+ }
+
+# Debian bug #85353 "bad symlink stops listing with -n" <address@hidden>
+ if( $dont_do ){
+ &msg( "Should symlink $dest_path to $existing_path\n" );
+ return;
+ }
+
+ # make the symlink locally
+
+ # Zap any exiting file/symlink of that name
+ if( -d $dest_path && ! -l $dest_path ){
+ local( $msg ) = "rmdir( $dest_path ) before symlink";
+ if( ! rmdir( $dest_path ) ){
+ if( $algorithm == 1 ){
+ $msg = "rmdir( $local_dir/$dest_path ) before
symlink";
+ &msg( "$msg failed: $!\n" );
+ }
+ &msg( "$msg failed: $!\n" );
+ return;
+ }
+ elsif( $debug ){
+ &msg( "$msg\n" );
+ }
+ }
+ if( -e $dest_path || -l $dest_path ){
+ local( $msg ) = "unlink( $dest_path ) before symlink";
+ if( ! unlink( $dest_path ) ){
+ &msg( "$msg failed: $!\n" );
+ return;
+ }
+ elsif( $debug ){
+ &msg( "$msg\n" );
+ }
+ }
+
+ if( (eval 'symlink("","")', $@ eq '') ){
+ local( $status ) = '';
+ if( ! symlink( $existing_path, $dest_path ) ){
+ $status = "Failed to ";
+ }
+ &msg( $log, $status . "symlink $existing_path to $dest_path\n"
);
+ &chown( $uid, $gid, $dest_path );
+ }
+ else {
+ &msg( $log, "Tried to create symlink - but not supported
locally\n" );
+ }
+}
+
+
+# Make a full directory heirarchy
+# returns true if the directory doesn't exist
+sub mkdirs
+{
+ local( $dir ) = @_;
+ local( @dir, $d, $path );
+
+ # If the target directory already exists but is a symlink then
+ # zap the symlink to recreate it as a directory
+ if( $get_file && -l $dir ){
+ unlink( $dir );
+ }
+
+ # Very often the directory does exist - so return now
+ return 0 if &dir_exists( $dir );
+
+ # Make sure that the target directory exists
+ @dirs = split( '/', $dir );
+
+ # the root directory always exists
+ $path = '';
+ if( $dirs[ 0 ] eq '' ){
+ shift( @dirs );
+ $path = '/';
+ }
+
+ foreach $d ( @dirs ){
+ $path = $path . $d;
+ if( ! &dir_exists( $path ) ){
+ &msg( "mkdir $path\n" ) if $debug > 2;
+ if( ! &make_dir( $path, 0755 ) ){
+ &msg( "make_dir($path,0755) failed with $err\n"
);
+ return 0;
+ }
+ &set_attribs( $path, $path, 'd' );
+ }
+ $path .= "/";
+ }
+ return 1;
+}
+
+# return 0 on error, 1 on success
+sub make_dir
+{
+ local( $dir, $mode ) = @_;
+ local( $val );
+
+ if( $get_file ){
+ if( $on_win && $dir =~ /^[a-z]:$/i ){
+ return 1;
+ }
+ # make a local directory
+ if( -e $dir || -l $dir ){
+ unlink( $dir );
+ }
+ $val = mkdir( $dir, $mode );
+ $err = "$!";
+ }
+ else {
+ # make a remote directory
+ $val = &ftp'mkdir( $dir );
+
+ # The mkdir might have failed due to bad mode
+ # So try to chmod it anyway
+ if( $remote_has_chmod ){
+ $val = &ftp'chmod( $dir, $mode );
+ }
+ }
+
+ return $val;
+}
+
+# return 1 if $dir exists, 0 if not
+sub dir_exists
+{
+ local( $dir ) = @_;
+ local( $val );
+
+ if( $get_file ){
+ # check if local directory exists
+ $val = (-d $dir);
+ }
+ else {
+ # check if remote directory exists
+ local($old_dir) = &ftp'pwd();
+
+ $val = &ftp'cwd($dir);
+
+ # If I didn't manage to change dir should be where I was!
+ if( $val ){
+ # go back to the original directory
+ &ftp'cwd($old_dir) || die "Cannot cd to original remote
directory";
+ }
+ }
+ return $val;
+}
+
+# Set file/directory attributes
+sub set_attribs
+{
+ local( $path, $src_path, $type ) = @_;
+ local( $mode );
+
+ if( ! $chmod ){
+ &msg( "dont chmod \"$path\"\n" ) if $debug > 2;
+ return;
+ }
+
+ if( $get_file ){
+ local( $pathi ) = $remote_map{ $src_path };
+ $mode = $remote_mode[ $pathi ];
+ }
+ else {
+ local( $pathi ) = $local_map{ $path };
+ $mode = $local_mode[ $pathi ];
+ }
+
+ # If I can't figure out the mode or I'm not copying it
+ # use the default
+ if( !$mode_copy || !$mode ){
+ if( $type eq 'f' ){
+ $mode = $file_mode;
+ }
+ elsif( $type eq 'd' ){
+ $mode = $dir_mode;
+ }
+ }
+
+ # Convert from octal
+ # Suggested patch to limit bits being set
+ # $mode = $mode & 0777;
+ $mode = oct( $mode ) if $mode =~ /^0/;
+
+ if( $get_file ){
+ # Change local
+
+ chmod $mode, $path;
+
+ if( $user ne '' && $group ne '' ){
+ &chown( $uid, $gid, $path );
+ }
+ }
+ else {
+ # change the remote file
+ if( $remote_has_chmod ){
+ &ftp'chmod( $path, $mode );
+ }
+ }
+}
+
+
+sub get_passwd
+{
+ local( $user ) = @_;
+ local( $pass );
+ local( $| ) = 1;
+
+ # prompt for a password
+ $SIG{ 'INT' } = 'IGNORE';
+ $SIG{ 'QUIT' } = 'IGNORE';
+
+ system "stty -echo </dev/tty >/dev/tty 2>&1";
+ print "Password for $user: ";
+
+ $pass = <STDIN>;
+ print "\n";
+ chop( $pass );
+
+ system "stty echo </dev/tty >/dev/tty 2>&1";
+
+ $SIG{ 'INT' } = 'DEFAULT';
+ $SIG{ 'QUIT' } = 'DEFAULT';
+
+ return $pass;
+}
+
+sub compare_times
+{
+ # Try and allow for time zone changes (eg when a site
+ # switches from daylight saving to non daylight saving)
+ # by ignoring differences of exactly one hour
+
+ local( $t1, $t2 ) = @_;
+ local( $diff ) = ($t1 > $t2 ? $t1 - $t2 : $t2 - $t1);
+
+ return ($t1 > $t2) && ($diff != 3600);
+}
+
+sub create_assocs
+{
+ local( $map );
+
+ &delete_assocs();
+
+ &msg( "creating assocs ...\n" ) if $debug > 2;
+ foreach $map ( @assocs ){
+ eval "\$$map = \"\$big_temp/$map.$$\"";
+ eval "dbmopen( $map, \$$map, 0644 )";
+ }
+ &msg( "creating assocs done\n" ) if $debug > 2;
+}
+
+sub delete_assocs
+{
+ local( $map );
+
+ &msg( "deleting assocs ...\n" ) if $debug > 2;
+ foreach $map ( @assocs ){
+ eval "\$$map = \"\$big_temp/$map.$$\"";
+ eval "dbmclose( $map )";
+ &unlink_dbm( eval "\$$map" );
+ eval "\%$map = ()";
+ }
+ &msg( "deleting assocs done\n" ) if $debug > 2;
+}
+
+sub unlink_dbm
+{
+ local( $file ) = @_;
+ unlink "$file.pag" if -e "$file.pag";
+ unlink "$file.dir" if -e "$file.dir";
+ unlink "$file.gdbm" if -e "$file.gdbm";
+ unlink "$file" if -e "$file";
+}
+
+# Chop the tmp file up
+sub bsplit
+{
+ local( $temp, $dest_path, $time ) = @_;
+ local( $dest_dir ) = "$dest_path-split";
+ local( $bufsiz ) = 512;
+ local( $buffer, $in, $sofar );
+
+ &msg( "Splitting up $temp into $dest_dir/ ($time)\n" ) if $debug;
+
+ # Stomp on the original directories
+ local( $d ) = $dest_dir;
+ $d =~ s/($shell_metachars)/\\$1/g;
+ &sys( "$rm_prog -rf \"$d\"" );
+
+ &mkdirs( $dest_dir );
+
+ local( $index ) = "00";
+ local( $part );
+ open( TMP, $temp ) || die "Cannot open $temp!";
+ $sofar = $split_chunk; # Force a new file
+ while( ($in = sysread( TMP, $buffer, $bufsiz )) > 0 ){
+ if( $sofar >= $split_chunk ){
+ if( $part ){
+ close( PART );
+ if( $time ){
+ &set_timestamp( $part, $time );
+ }
+ }
+ $index++;
+ $part = "$dest_dir/part$index";
+ &msg( "creating $part\n" ) if $debug;
+ open( PART, ">$part" ) || die "Cannot create $part";
+ # Make sure to keep this!
+ local( $locali ) = $local_map{ $part };
+ &keep( $locali, $part, *local_keep, *local_keep_totals,
*local_map, 1 );
+ $sofar = 0;
+ }
+ if( ($out = syswrite( PART, $buffer, $in )) != $in ){
+ die "Failed to write data to $part";
+ }
+ $sofar += $in;
+ }
+ close( PART );
+ if( $time ){
+ &set_timestamp( $part, $time );
+ }
+ close( TMP );
+
+ # Generate a readme file about what is in the split directory
+ local( $readme ) = "$dest_dir/README";
+ open( README, ">$readme" ) || die "Cannot create $readme";
+ print README "This directory contains a splitup version of
$dest_path\n";
+ print README "to recreate the original simply concatenate all the\n";
+ print README "parts back together.\n\nChecksums are:\n\n";
+ close README;
+ &sys( "(cd \"$d\" ; $sum_prog part*)>> $readme" );
+}
+
+sub sys
+{
+ local( $com ) = @_;
+ &msg( "$com\n" ) if $debug > 2;
+ return system( $com ) / 256;
+}
+
+# Set up an associative array given all an array of keys.
+# @fred = ( 'a' );
+# &set_assoc_from_array( *fred )
+# Creates => $fred{ 'a' } = 1
+#
+sub set_assoc_from_array
+{
+ # This declaration must be "local()" because it modifies global data.
+ local( *things ) = @_;
+ foreach $thing ( @things ){
+ $things{ $thing } = 1;
+ }
+}
+
+sub find_prog
+{
+ local( $prog ) = @_;
+ local( $path ) = $ENV{ 'PATH' };
+
+ foreach $dir ( split( /$path_sep/, $path ) ){
+ local( $path ) = $dir . $file_sep . $prog;
+ if( -x $path ){
+ return $path;
+ }
+ if( $on_win ){
+ $path .= ".exe";
+ if( -x $path ){
+ return $path;
+ }
+ }
+ }
+ return '';
+}
+
+sub real_dir_from_path
+{
+ local( $program ) = @_;
+ local( @prog_path ) = split( m:$file_sep_pat: , $program ); # dir
collection
+ local( $dir );
+
+ while( -l $program ){ # follow symlink
+ $program = readlink( $program );
+ if( $program =~ m:^$file_sep_pat: ){ # full path?
+ @prog_path = (); # start dir collection
anew
+ }
+ else {
+ pop( @prog_path ); # discard file name
+ }
+ push( @prog_path, split( m:$file_sep_pat:, $program ) );# add
new parts
+ $program = join( $file_sep, @prog_path ); # might be a symlink
again...
+ }
+ pop( @prog_path );
+ $dir = join( $file_sep, @prog_path );
+
+ if( ! $dir ){
+ $dir = '.';
+ }
+
+ return $dir;
+}
+
+sub msg
+{
+ local( $todo, $msg ) = (0, "");
+
+ if( $#_ == 1 ){
+ ($todo, $msg) = @_;
+ }
+ else {
+ $todo = 0;
+ $msg = $_[ 0 ];
+ }
+
+ # Assign to $0 so when you do a 'ps' it says this!
+ if( defined $package &&
+ defined $site &&
+ defined $remote_dir ){
+ $0 = "mirror $package:$site:$remote_dir $msg";
+ }
+ else {
+ $0 = "mirror $msg";
+ }
+
+ if( $todo & $log ){
+ push( @log, $msg );
+ }
+# Not sure about this one. always print the message even if its a log msg.
+# else {
+ print $msg;
+# }
+}
+
+sub to_bytes
+{
+ local( $size ) = @_;
+ if( $size =~ /^(\d+)\s*(k|b|m)s*$/i ){
+ $size = $1;
+ if( $2 =~ /[mM]/ ){
+ $size *= (1024*1024);
+ }
+ elsif( $2 =~ /[bB]/ ){
+ $size *= 512;
+ }
+ elsif( $2 =~ /[kK]/ ){
+ $size *= 1024;
+ }
+ }
+ return $size;
+}
+
+# Given a unix filename map it into a vms name.
+# $kind is 'f' for files and 'd' for directories
+sub unix2vms
+{
+ local( $v, $kind ) = @_;
+
+ if( $v eq '.' || $v eq '/' ){
+ return "[]";
+ }
+
+ if( $vms_dir ){
+ $v = $vms_dir . '/' . $v;
+ }
+
+ if( $kind eq 'f' ){
+ # Map a/b/c.txt into [a.b]c.txt
+ if( $v =~ m,(.*)/([^/]+), ){
+ local( $dir, $rest ) = ($1, $2);
+ $dir =~ s,/,.,g;
+ $v = "[$dir]$rest";
+ }
+ }
+ else {
+ # Map a/b/c into [a.b.c]
+ $v =~ s,/,.,g;
+ $v = "[$v]";
+ }
+ return $v;
+}
+
+sub dirpart
+{
+ local( $path ) = @_;
+ if( $path =~ m:/: ){
+ $path =~ s:^(.*)/[^/]+$:$1:;
+ }
+ else {
+ $path = '.';
+ }
+ return $path;
+}
+
+# Given a filename (not a directory) and what path it symlinks to
+# return a, hopefully, non-relative pathname that the symlink
+# really points to. This is so it can be used to index into the $src_path
+# map.
+sub expand_symlink
+{
+ local( $orig_path, $points_to ) = @_;
+ local( $dirpart ) = &dirpart( $orig_path );
+
+ return &flatten_path( "$dirpart/$points_to" );
+}
+
+# flatten out the effects of dir/.. and /./
+# The problem is not flattening out ../.. into nothing! Hence
+# the contortions below.
+sub flatten_path
+{
+ local( $path ) = @_;
+ local( $changed ) = 1;
+ local( $i );
+
+ local( $rooted ) = $path =~ m:^/:;
+ local( $count ) = 0;
+ local( $orig_path ) = $path;
+
+ $path =~ s:^/::;
+ $path =~ s:(^|/)\.(/|$)::g;
+ $path =~ s:/+:/:g;
+
+ while( $changed ){
+ if( $count++ > 100 ){
+ &msg( $log, "LOOPING in flatten_path orig = $orig_path,
path now $path\n" );
+ last;
+ }
+ local( $in ) = $path;
+ local( @parts ) = split( /\//, $path );
+ for( $i = 0; $i <= $#parts; $i++ ){
+ if( $parts[ $i ] eq '.' ){
+ $parts[ $i ] = undef;
+ next;
+ }
+ if( $i > 0 && $parts[ $i ] eq '..' &&
+ $parts[ $i - 1 ] && $parts[ $i - 1 ] ne '..' ){
+ $parts[ $i - 1 ] = $parts[ $i ] = undef;
+ next;
+ }
+ }
+ $path = '';
+ for( $i = 0; $i <= $#parts; $i++ ){
+ next unless $parts[ $i ];
+ $path .= '/' if $path ne '';
+ $path .= $parts[ $i ];
+ }
+ $changed = $in ne $path;
+ }
+ if( $rooted ){
+ $path = "/$path";
+ }
+ return $path;
+}
+
+
+# Fix up a package name.
+# strip trailing and leading ws and replace awkward characters
+# This doesn't guarentee a unique filename.
+sub fix_package
+{
+ local( $package ) = @_;
+ $package =~ s:[\s/']:_:g;
+ return $package;
+}
+
+sub will_compress
+{
+ $src_type[ $_[1] ] eq 'f' &&
+ $compress_patt && $_[0] =~ /$compress_patt/ &&
+ ( ! $compress_size_floor ||
+ $compress_size_floor < $src_size[ $_[1] ] ) &&
+ !($compress_excl && $_[0] =~ /$compress_excl/i) &&
+ !($compress_suffix eq $gzip_suffix &&
+ $compress_conv_patt && $_[0] =~ /$compress_conv_patt/);
+}
+
+sub will_split
+{
+ $split_max &&
+ $src_size[ $_[1] ] > $split_max &&
+ $src_type[ $_[1] ] eq 'f' &&
+ $split_patt && $_[0] =~ /$split_patt/;
+}
+
+sub myflock
+{
+ local( $file, $kind ) = @_;
+
+ if( ! $can_flock ){
+ return;
+ }
+
+ eval( "flock( \$file, $kind )" );
+ if( $@ =~ /unimplemented/ ){
+ $can_flock = 0;
+ warn "flock not unavialable, running unlocked\n";
+ }
+}
+
+sub t2str
+{
+ local( @t );
+ if( $use_timelocal ){
+ @t = localtime( $_[0] );
+ }
+ else {
+ @t = gmtime( $_[0] );
+ }
+ local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = @t;
+
+# Debian bug #48611, 1969 appeared as 2069, address@hidden
+ $year += 1900;
+
+ return sprintf( "%04d/%02d/%02d-%02d:%02d:%02d",
+ $year, $mon + 1, $mday, $hour, $min, $sec );
+}
+
+sub handler
+{
+ $sigs ++;
+ if( $sigs > $max_sigs ){
+ exit( 0 );
+ }
+
+ local( $sig ) = @_;
+ local( $msg ) = "Caught a SIG$sig shutting down";
+ local( $package, $filename, $line ) = caller;
+ warn "$package:$filename:$line $msg";
+ exit( 0 );
+}
+
+sub trap_signals
+{
+ local( $sig );
+ foreach $sig ( 'HUP', 'INT', 'QUIT', 'ILL',
+ 'TRAP', 'IOT', 'BUS', 'FPE',
+ 'USR1', 'SEGV', 'USR2',
+ 'PIPE', 'ALRM', 'TERM' ){
+ $SIG{ $sig } = "main\'handler";
+ }
+}
+
+sub map_user_group
+{
+ if( ! defined( $uid ) ){
+ if( $user =~ /^\d+$/ ){
+ # User is just a number - presume it is the uid
+ $uid = $user;
+ }
+ else {
+ $uid = (getpwnam( $user ))[ 2 ];
+ }
+ }
+ if( ! defined( $gid ) ){
+ if( $group =~ /\d+$/ ){
+ # Group is just a number - presume it is the gid
+ $gid = $group;
+ }
+ else {
+ $gid = (getgrnam( $group ))[ 2 ];
+ }
+ }
+}
+
+sub keep
+{
+ local( $pathi, $path, *keep, *keep_totals, *keep_map, $kind ) = @_;
+ # If pathi is already kept nothing to do
+ if( $pathi eq '' ){
+ &msg( " keep $path NOTE null pathi\n" ) if $debug > 3;
+ return;
+ }
+ if( $keep[ $pathi ] ){
+ &msg( " keep $path [$pathi] NOTE already kept\n" ) if $debug
> 3;
+ return;
+ }
+
+ $keep[ $pathi ] = 1;
+ $keep_totals[ $kind ]++;
+ &msg( " keep $path\n" ) if $debug > 3;
+
+ # Keep all the parent directories
+ while( $path =~ m,^(.*)/([^/]+)$, ){
+ $path = $1;
+ $pathi = $keep_map{ $path };
+ if( $pathi eq '' ){
+ &msg( " keep $path NOTE null pathi\n" ) if $debug > 3;
+ return;
+ }
+ if( $keep[ $pathi ] ){
+ &msg( " keep $path [$pathi] NOTE already kept\n" ) if
$debug > 3;
+ return;
+ }
+
+ $keep[ $pathi ] = 1;
+ $keep_totals[ 0 ]++;
+ }
+}
+
+sub alarm
+{
+ local( $time_to_sig ) = @_;
+ eval "alarm( $time_to_sig )";
+}
+
+sub chown
+{
+ local( $uid, $gid, $path ) = @_;
+ eval "chown ( \$uid, \$gid, \$path )";
+}
+
+sub utime
+{
+ local( $atime, $mtime, $path ) = @_;
+ if( ! $on_win ){
+ return utime( $atime, $mtime, $path );
+ }
+
+ # On windoze I might have set attribs to allow the time to be changed
first
+ local( $old_mode ) = (stat( $path ))[ 2 ];
+ local( $tmp_mode ) = $old_mode;
+ local( $ret );
+
+ $tmp_mode |= 0700;
+ chmod( $tmp_mode, $path );
+ $ret = utime( $atime, $mtime, $path );
+ chmod( $old_mode, $path );
+ return $ret;
+}
+
+sub cwd
+{
+ local( $lcwd ) = '';
+ eval "\$lcwd = $win_getcwd";
+
+ if( ! ($lcwd eq '' || $lcwd eq $win_getcwd) ){
+ # Must be on windoze!
+ $cwd = $lcwd;
+ }
+ else {
+ # didn't manage it try and run the pwd command instead
+ chop( $cwd = `pwd` );
+ }
+ return $cwd;
+}
diff --git a/test/etags/perl-src/yagrip.pl b/test/etags/perl-src/yagrip.pl
new file mode 100644
index 0000000..be9f09c
--- /dev/null
+++ b/test/etags/perl-src/yagrip.pl
@@ -0,0 +1,54 @@
+#Yet Another Getopt Routine In Perl
+# address@hidden, 89/11/1
+#usage:
+#&getopt("f:bar") ||
+# die &usage("script","f:bar","oo","[files ...]");
+#
+sub getopt {
+ local($_,$flag,$opt,$f,$r,@temp) = @_;
+ @temp = split(/(.):/);
+ while ($#temp >= $[) {
+ $flag .= shift(@temp);
+ $opt .= shift(@temp);
+ }
+ while ($_ = $ARGV[0], /^-(.)(.*)/ && shift(@ARGV)) {
+ ($f,$r) = ($1,$2);
+ last if $f eq '-';
+ if (index($flag,$f) >= $[) {
+ eval "\$opt_$f++;";
+ $r =~ /^(.)(.*)/,redo if $r ne '';
+ }elsif (index($opt,$f) >= $[) {
+ $r = $r eq '' ? shift(@ARGV) : $r;
+ eval "\$opt_$f = \$r;";
+ }else{
+ print STDERR "Unrecognized switch \"-$f\".\n";
+ return 0;
+ }
+ }
+ return 1;
+}
+
+#usage: usage:
+# &usage(progname,arglist,@names,@last);
+#ex:
+# &usage("script","f:bar","oo","[file ...]");
+#would return
+# "usage: script [-f oo] [-bar] [file ...]"
+#
+sub usage {
+ local($prog,$_,@list) = @_;
+ local($string,$flag,@string,@temp,@last) = ();
+ @temp = split(/(.):/);
+ push(@string,"usage:",$prog);
+ while ($#temp >= $[) {
+ if (($flag = shift(@temp)) ne '') {
+ push(@string,"[-$flag]");
+ }
+ if (($flag = shift(@temp)) ne '') {
+ push(@string,sprintf("[-%s %s]",$flag,shift(@list)));
+ }
+ }
+ push(@string,@list) if $#list >= $[;
+ return join(' ',@string) . "\n";
+}
+1;
diff --git a/test/etags/php-src/lce_functions.php
b/test/etags/php-src/lce_functions.php
new file mode 100644
index 0000000..6573813
--- /dev/null
+++ b/test/etags/php-src/lce_functions.php
@@ -0,0 +1,699 @@
+<?php
+if(!defined("LCE_FUNCTIONS"))
+{
+ define("LCE_FUNCTIONS", 1);
+ include("base.php");
+ include("lce_config.php");
+
+ // Unknown line class
+ define("LCE_UNKNOWN", 0);
+ // pure whitespace
+ define("LCE_WS", 1);
+ // a unqualified comment
+ define("LCE_COMMENT", 2);
+ // a user/translator comment
+ define("LCE_COMMENT_USER", 3);
+ // a tool-generated comment
+ define("LCE_COMMENT_TOOL", 4);
+ // A line containing a MSGID
+ define("LCE_MSGID", 5);
+ // A line containing a MSGSTR
+ define("LCE_MSGSTR", 6);
+ // A quoted text string
+ define("LCE_TEXT", 7);
+
+ define("STATE_ABORT", 0);
+ define("STATE_OK", 1);
+ define("STATE_LOOP", 2);
+
+ class POEntryAD extends AD
+ {
+ function validate($value)
+ {
+ // print '"<pre>' . $value . '"<br></pre>';
+ $result = AD::validate(trim($value));
+ //return $result;
+ if($result[0])
+ {
+ $lines = explode("\n", ereg_replace("\r", "", $result[1]));
+ //$lines = explode("\n", $result[1]);
+ /* print "<pre>";
+ print_r($lines);
+ print "</pre>";*/
+ $res = array();
+ for($i = 0; $i < count($lines); $i++)
+ {
+ if(trim($lines[$i]) != "")
+ $res[] = $lines[$i];
+ }
+ $result[1] = join("\n", $res);
+ /* print "<pre>";
+ print_r($result[1]);
+ print "</pre>";*/
+
+ $result[0] = $this->checkQuotation($result[1]);
+ }
+ return $result;
+ }
+
+ function checkQuotation($str)
+ {
+ $rex = "\\\\n|\\\\t|\\\\r|\\\\\"";
+ $str = ereg_replace($rex, "", $str);
+ $str = ereg_replace("\\\\\\\\", "", $str);
+ return !(strstr($str, "\"")
+ || strstr($str, "\\"));
+ }
+ }
+
+
+ class CommentAD extends AD
+ {
+ var $prefix;
+ function CommentAD(
+ $name, // the name of the variable
+ $not_null = 0,
+ $type = "", // as returned by gettype
+ $prefix = "# ")
+ {
+ $this->prefix = $prefix;
+ AD::AD($name, $not_null, $type);
+ }
+
+ function validate($value)
+ {
+ $res = AD::validate($value);
+ return $res;
+ if($res[0] && $res[1] != "")
+ {
+ $mod_lines = array();
+ $lines = explode("\n", $res[1]);
+
+ for($i = 0; $i < count($lines); $i++)
+ {
+ $line = $lines[$i];
+ if(substr($line, 0, 1) != "#")
+ $line = $this->prefix . $line;
+ $mod_lines[] = $line;
+ }
+ $res[1] = join("\n", $mod_lines);
+ }
+ return $res;
+ }
+ }
+
+ class POEntry extends HtmlValidator
+ {
+ var $msgid;
+ var $msgstr;
+ var $user_comment;
+ var $sys_comment;
+ var $unk_comment;
+
+ var $msgid_lc = 0;
+ var $msgstr_lc = 0;
+ var $user_comment_lc = 0;
+ var $sys_comment_lc = 0;
+ var $unk_comment_lc = 0;
+
+ function POEntry()
+ {
+ $this->atts = array(
+ new AD("msgid"),
+ new POEntryAD("msgstr", REQUIRED_ATTRIBUTE),
+ new CommentAD("user_comment"),
+ new POEntryAD("sys_comment"),
+ new POEntryAD("unk_comment"),
+ new AD("msgid_lc", NOT_REQUIRED_ATTRIBUTE, 0),
+ new AD("msgstr_lc", NOT_REQUIRED_ATTRIBUTE, 0),
+ new AD("user_comment_lc", NOT_REQUIRED_ATTRIBUTE, 0),
+ new AD("sys_comment_lc", NOT_REQUIRED_ATTRIBUTE, 0),
+ new AD("unk_comment_lc", NOT_REQUIRED_ATTRIBUTE, 0)
+ );
+ }
+
+ function lineCount($entry)
+ {
+ $lc = count(explode("\n", $entry));
+ return $lc;
+ }
+
+ function serializeToVars($prefix)
+ {
+ $this->user_comment_lc = $this->lineCount($this->user_comment);
+ $this->unk_comment_lc = $this->lineCount($this->sys_comment);
+ $this->sys_comment_lc = $this->lineCount($this->unk_comment);
+ $this->msgid_lc = $this->lineCount($this->msgid);
+ $this->msgstr_lc = $this->lineCount($this->msgstr);
+ return HtmlValidator::serializeToVars($prefix);
+ }
+
+ function write()
+ {
+ $content = "";
+ $content .= $this->user_comment . "\n";
+ $content .= $this->unk_comment . "\n";
+ $content .= $this->sys_comment . "\n";
+ $content .= "msgid \"" . $this->msgid . "\"\n";
+ $content .= 'msgstr "' . join("\"\n\"", explode("\n", $this->msgstr)) .
"\"" . "\n\n";
+ return $content;
+ }
+ }
+
+ class POReader extends HTMLValidator
+ {
+ var $msgid;
+ var $msgstr;
+ var $user_comment;
+ var $sys_comment;
+ var $unk_comment;
+ var $state;
+ var $ignore_ws;
+ var $po_entries;
+ var $poe_num;
+ var $filename;
+ var $domain;
+
+ function gettext($msgid)
+ {
+ if(isset($this->po_entries[$msgid]))
+ {
+ $po = $this->po_entries[$msgid];
+ return StripCSlashes(join("", explode("\n", $po->msgstr)));
+ //return $po->msgstr;
+ }
+ return $msgid;
+ }
+
+
+ function parseFromVars($prefix)
+ {
+ $res = HtmlValidator::parseFromVars($prefix);
+ if($res[0])
+ {
+ $poe_res = true;
+ $this->po_entries = array();
+ for($i = 0; $i < $this->poe_num; $i++)
+ {
+ $poe = new POEntry;
+ $res = $poe->parseFromVars($prefix . "_POE$i");
+ if($res[0])
+ {
+ $msgid = $prefix . "_POE" . $i . "_MSGID";
+ $msgid = $$msgid;
+ $this->po_entries[$prefix . "_POE" . $i . "_MSGID"] =
$res[1];
+ }
+ else
+ $poe_res = false;
+ }
+ }
+ if(!$poe_res)
+ $GLOBALS[$prefix . "_ERR"] = 1;
+ return array($poe_res, $this);
+ }
+
+ function serializeToVars($prefix)
+ {
+ HtmlValidator::serializeToVars($prefix);
+ reset($this->po_entries);
+ $i = 0;
+ while($poe = each($this->po_entries))
+ {
+ $poe = $poe[1];
+ $poe->serializeToVars($prefix . "_POE$i");
+ $i++;
+ }
+ }
+
+
+ function POReader($domain, $filename)
+ {
+ $this->domain = $domain;
+ $this->filename = $filename;
+ $this->ignore_ws = true;
+ $this->po_entries = array();
+ $this->atts = array(
+ new AD("domain", REQUIRED_ATTRIBUTE),
+ new AD("filename", REQUIRED_ATTRIBUTE),
+ new AD("poe_num", REQUIRED_ATTRIBUTE, 0)
+ );
+ }
+
+
+ function read()
+ {
+ if($fh = fopen($this->filename, "r"))
+ {
+ $this->lines = array();
+ while (!feof ($fh))
+ {
+ $line = fgets($fh, 4096);
+ $this->lines[] = $line;
+ }
+ fclose($fh);
+ }
+ $this->createPOEntries();
+ $this->poe_num = count($this->po_entries);
+ }
+
+ function write($save="yes")
+ {
+ reset($this->po_entries);
+ $content = "";
+ while($poe = each($this->po_entries))
+ {
+ $poe = $poe[1];
+ $content .= $poe->write();
+ }
+
+ if(($fh = fopen($this->filename, "w"))
+ && $save == "yes")
+ {
+ fwrite($fh, $content);
+ }
+ return $content;
+ }
+
+ function isComment($class)
+ {
+ if($class == LCE_COMMENT || $class == LCE_COMMENT_USER || $class ==
LCE_COMMENT_TOOL)
+ return true;
+ return false;
+ }
+
+ function comment($line, $class)
+ {
+ if($this->isComment($class))
+ {
+ if($class == LCE_COMMENT_USER)
+ $this->user_comment .= $line;
+ else if($class == LCE_COMMENT_TOOL)
+ $this->sys_comment .= $line;
+ else
+ $this->unk_comment .= $line;
+ return STATE_OK;
+ }
+ if($class == LCE_MSGID)
+ {
+ $this->state = "msgid";
+ return STATE_LOOP;
+ }
+ return STATE_ABORT;
+ }
+
+ function msgid($line, $class)
+ {
+ if($class == LCE_MSGID || $class == LCE_TEXT)
+ {
+ $line = $this->stripLine($line, LCE_MSGID);
+ $this->msgid .= $line;
+ return STATE_OK;
+ }
+ if($class == LCE_MSGSTR)
+ {
+ $this->state = "msgstr";
+ return STATE_LOOP;
+ }
+ return STATE_ABORT;
+ }
+
+ function msgstr($line, $class)
+ {
+ if($class == LCE_MSGSTR || $class == LCE_TEXT)
+ {
+ $line = $this->stripLine($line, $class);
+ $this->msgstr .= $line;
+ return STATE_OK;
+ }
+ // We have a different state, so we have to create a POEntry
+ $poe = new POEntry;
+ $poe->user_comment = trim($this->user_comment);
+ $poe->sys_comment = trim($this->sys_comment);
+ $poe->unk_comment = trim($this->unk_comment);
+ $poe->msgid = trim($this->msgid);
+ $poe->msgstr = trim($this->msgstr);
+ $this->po_entries[trim($this->msgid)] = $poe;
+ $this->state = "start";
+ return STATE_LOOP;
+ }
+
+ function start($line, $class)
+ {
+ $this->user_comment = "";
+ $this->sys_comment = "";
+ $this->unk_comment = "";
+ $this->msgid = "";
+ $this->msgstr = "";
+ if($this->isComment($class))
+ {
+ $this->state = "comment";
+ return STATE_LOOP;
+ }
+ if($class == LCE_MSGID)
+ {
+ $this->state = "msgid";
+ return STATE_LOOP;
+ }
+ return STATE_OK;
+ }
+
+ function createPOEntries()
+ {
+ $this->msgid = "";
+ $this->msgstr = "";
+ $this->user_comment = "";
+ $this->sys_comment = "";
+ $this->state = "start";
+
+ reset($this->lines);
+ for($i = 0; $i < count($this->lines); $i++)
+ {
+ $line = $this->lines[$i];
+ $class = $this->classifyLine($line);
+ if($class != LCE_WS || !$this->ignore_ws)
+ {
+ $state_ret = STATE_LOOP;
+ while($state_ret == STATE_LOOP)
+ {
+ $state = $this->state;
+ //print "$this->state $class:$line <br>";
+ $state_ret = $this->$state($line, $class);
+ }
+ //print "state_ret = $state_ret <br>";
+ }
+ if($state_ret == STATE_ABORT)
+ break;
+ }
+ // Get the last entry
+ if($state_ret != STATE_ABORT)
+ {
+ $this->msgstr("", LCE_UNKNOWN);
+ }
+ }
+
+ function stripLine($line, $class)
+ {
+ switch($class)
+ {
+ case LCE_TEXT:
+ ereg('^"(.*)"', $line, $regs);
+ $line = $regs[1] . "\n";
+ break;
+ case LCE_MSGID:
+ if(substr($line, strlen("msgid")) == "msgid")
+ {
+ $line = substr($line, strlen("msgid") + 1);
+ }
+ ereg('"(.*)"', $line, $regs);
+ $line = $regs[1];
+ break;
+ case LCE_MSGSTR:
+ // TODO: Check if ^ can be removed
+ $line = substr($line, strlen("msgstr") + 1);
+ ereg('^"(.*)"', $line, $regs);
+ $line = $regs[1] . "\n";
+ break;
+
+ }
+ return $line;
+ }
+
+ function printClassification()
+ {
+ reset($this->lines);
+ for($i = 0; $i < count($this->lines); $i++)
+ {
+ $line = $this->lines[$i];
+ $class = $this->classifyLine($line);
+ print "#$i: $class $line<br>";
+ }
+ }
+
+ function classifyLine($line)
+ {
+ if(ereg("^[ \n\r\t]*$", $line))
+ return LCE_WS;
+ if(ereg("^#.*\$", $line))
+ {
+ if(ereg("^[,:-~].*", substr($line, 1)))
+ {
+ return LCE_COMMENT_TOOL;
+ }
+ if(ereg("^[ \n\r\t].*", substr($line, 1)))
+ {
+ return LCE_COMMENT_USER;
+ }
+ return LCE_COMMENT;
+ }
+ if(ereg("^msgid (.*)\$", $line, $regs))
+ {
+ $line = $regs[1];
+ if($this->classifyLine($line) == LCE_TEXT)
+ return LCE_MSGID;
+ }
+ if(ereg("^msgstr (.*)\$", $line, $regs))
+ {
+ $line = $regs[1];
+ if($this->classifyLine($line) == LCE_TEXT)
+ return LCE_MSGSTR;
+ }
+ if(ereg('^".*"', $line))
+ {
+ // TODO: Check correct escapes
+ return LCE_TEXT;
+ }
+
+ return LCE_UNKNOWN;
+ }
+ }
+
+
+ function getTextDomains($lines)
+ {
+ $default_domain = "";
+ $domains = array();
+ while($gl = each($GLOBALS))
+ {
+ $gname = $gl[0];
+ global $$gname;
+ }
+ for($i = 0; $i < count($lines); $i++)
+ {
+ if(ereg("bindtextdomain\(([^,]+),([^\)]+)\)", $lines[$i], $regs))
+ {
+ //print "Line:" . $lines[$i] . " <br>";
+ $name = $regs[1];
+ $ev = "\$directory = ". $regs[2] . ";";
+ print $ev;
+ eval($ev);
+ $domains[] = array($name, $directory);
+ }
+ if(ereg("textdomain\(([^\)]+)\)", $lines[$i], $regs))
+ $default_domain = $regs[1];
+ }
+ return array($default_domain, $domains);
+ }
+
+
+ class PORManager extends HtmlValidator
+ {
+ var $por_a;
+
+ function PORManager()
+ {
+ $this->por_a = array();
+ }
+
+ function addPOReader($d_name, &$por)
+ {
+ $this->por_a[$d_name] = &$por;
+ }
+
+ function &getPOReader($domain)
+ {
+ return $this->por_a[$domain];
+ }
+
+ function getDomainNames()
+ {
+ return array_keys($this->por_a);
+ }
+ }
+
+ function &loadPORManager()
+ {
+ global $LCE_PORMAN;
+ if(!isset($LCE_PORMAN))
+ {
+ $LCE_PORMAN = new PORManager();
+ }
+ return $LCE_PORMAN;
+ }
+
+
+ // More or less intelligent filename joining
+ // As available in PYTHONs os.path
+ function fileJoin()
+ {
+ $numargs = func_num_args();
+ $args = func_get_args();
+ for($i = 0; $i < $numargs - 1; $i++)
+ {
+ if(substr($args[$i], -1) != "/")
+ $args[$i] = $args[$i] . "/";
+ if($i > 0)
+ {
+ if(substr($args[$i],0 , 1) == "/")
+ $args[$i] = substr($args[$i], 1);
+ }
+
+ }
+ return join("", $args);
+ }
+
+ if(defined("LCE_TESTSERVER"))
+ {
+
+ function lce_bindtextdomain($d_name, $d_path)
+ {
+ global $LANG, $LC_MESSAGES, $LC_ALL, $LCE_LANG;
+ global $LCE_ERR;
+ global $LCE_PO_SUFFIX;
+ global $LCE_MANAGER;
+
+ $path_orig = $d_path;
+ // This is not complete and reflects
+ // my not very far going understanding of the
+ // different $LC_x thingies.
+ if(isset($LC_MESSAGES))
+ {
+ //print "LC_MESSAGES<br>";
+ $lang_suffix = $LC_MESSAGES;
+ }
+ else if(isset($LC_ALL))
+ {
+ //print "LC_ALL<br>";
+ $lang_suffix = $LC_ALL;
+ }
+ else if(isset($LANG))
+ {
+ //print "LANG<br>";
+ $lang_suffix = $LANG;
+ }
+ else
+ {
+ //print "LCE_LANG<br>";
+ $lang_suffix = $LCE_LANG;
+ }
+
+ //print "LangSuffix: $lang_suffix \n";
+ //print "D_Path: " . fileJoin($d_path, $lang_suffix, "LC_MESSAGES",
$d_name . $LCE_PO_SUFFIX) . "<br>";
+ // First try: the whole lang_suffix
+
+ if(file_exists(fileJoin($d_path, $lang_suffix, "LC_MESSAGES", $d_name .
$LCE_PO_SUFFIX)))
+ $d_path = fileJoin($d_path, $lang_suffix, "LC_MESSAGES", $d_name .
$LCE_PO_SUFFIX);
+ else
+ {
+ $lang_suffix = substr($lang_suffix, 0, 2);
+ if(file_exists(fileJoin($d_path, $lang_suffix, "LC_MESSAGES",
$d_name. $LCE_PO_SUFFIX)))
+ $d_path = fileJoin(fileJoin($d_path, $lang_suffix, "LC_MESSAGES",
$d_name . $LCE_PO_SUFFIX));
+ else
+ {
+ $LCE_ERR = "No PO-file found";
+ return false;
+ }
+ }
+ //print "D_Path: $d_path \n";
+ $por = new POReader($d_name, $d_path, $path_orig);
+ $por->read();
+ $porman =& loadPORManager();
+ $porman->addPOReader($d_name, $por);
+ return true;
+ }
+
+ function lce_textdomain($domain)
+ {
+ global $LCE_DOMAIN;
+ $LCE_DOMAIN = $domain;
+ }
+
+ function lce_gettext($msgid)
+ {
+ global $LCE_DOMAIN;
+ return lce_dgettext($LCE_DOMAIN, $msgid);
+ }
+
+ function lce_dgettext($domain, $msgid)
+ {
+ $porman =& loadPORManager();
+ if($por = &$porman->getPOReader($domain))
+ return $por->gettext($msgid);
+ return $msgid;
+ }
+
+ function lce()
+ {
+ global $LCE_LCEDITLOC;
+ $porman =& loadPORManager();
+ $domains = $porman->getDomainNames();
+ for($i = 0; $i < count($domains); $i++)
+ {
+ $por =& $porman->getPOReader($domains[$i]);
+ $domain = "domain=" . urlencode($por->domain);
+ $filename = "filename=" . urlencode($por->filename);
+ $url = $LCE_LCEDITLOC . "?" . $domain . "&" . $filename;
+ print "<a target=\"_blank\" href=\"" . $url . "\">Domain:
$por->domain</a><br>";
+ }
+ }
+ }
+ else
+ {
+ function lce_bindtextdomain($domain, $path)
+ {
+ bindtextdomain($domain, $path);
+ }
+
+ function lce_textdomain($domain)
+ {
+ textdomain($domain);
+ }
+
+ function lce_gettext($msgid)
+ {
+ return gettext($msgid);
+ }
+
+ function lce_dgettext($domain, $msgid)
+ {
+ return dgettext($domain, $msgid);
+ }
+ function lce()
+ {
+ }
+ }
+
+
+ function lce_geteditcode($type, $name, $text, $rows=2)
+ {
+ global $LCE_EDIT_LEVEL;
+ $level_map = array("msgid" => 4,
+ "sys_comment" => 3,
+ "user_comment" => 2,
+ "msgstr" => 1
+ );
+ if($level_map[$type] > $LCE_EDIT_LEVEL)
+ {
+ return "<input type=\"hidden\" name=\"" . $name . "\" value=\"" . $text
. "\"><pre>\n" . $text . "\n</pre>";
+ }
+ else
+ {
+ return "<textarea name=\"" . $name . "\" rows=\"" . $rows . "\"
cols=\"60\">" . $text . "</textarea>";
+ }
+ }
+}
+/*
+ ;;; Local Variables: ***
+ ;;; mode:C ***
+ ;;; End: ***
+*/
+?>
diff --git a/test/etags/php-src/ptest.php b/test/etags/php-src/ptest.php
new file mode 100644
index 0000000..9893839
--- /dev/null
+++ b/test/etags/php-src/ptest.php
@@ -0,0 +1,18 @@
+define("TEST", 0);
+
+class
+test
+extends base
+{
+ // use --member to tag
+ var $member;
+ var $memassign="hallo";
+ var $memassign_space ="hallo";
+ // Syntactical wrong, but tagged
+ var $test
+}
+
+function
+foo()
+{
+}
diff --git a/test/etags/php-src/sendmail.php b/test/etags/php-src/sendmail.php
new file mode 100644
index 0000000..1d15e4a
--- /dev/null
+++ b/test/etags/php-src/sendmail.php
@@ -0,0 +1,527 @@
+<?php
+
+/*
+ Classe creata da Santoro Diego.
+ Per aiuti nella programmazione in PHP, PERL, C e ECMAScript contattatemi
+ e-Mail address@hidden oppure address@hidden
+ La classe ? ancora in fase beta.
+*/
+
+final class sendMail {
+
+ const eMailAddressErrorMessage="L' e-Mail indicata non rispetta un formato
valido.";
+ const defaultSubject="this is the subject.";
+ const defaultTextMessage="this is text message.";
+ const defaultHtmlMessage="this is html message.";
+ const defaultHeaderMessage="this is a multi-part message in MIME format.";
+
+ private static $messageProperties=array(
+ "charset" => array(
+ "modifiable" => true,
+ "values" => array(
+ "iso-8859-1",
+ "iso-8859-15",
+ "utf-8",
+ "utf-16"
+ )
+ ),
+ "content-transfer-encoding" => array(
+ "modifiable" => true,
+ "values" => array(
+ "7bit",
+ "8bit",
+ "quoted-printable"
+ )
+ )
+ );
+
+ private $attachmentProperties=array(
+ "content-type" => array(
+ "modifiable" => false,
+ "values" => array(
+ "application/octet-stream"
+ )
+ ),
+ "content-transfer-encoding" => array(
+ "modifiable" => false,
+ "values" => array(
+ "base64"
+ )
+ ),
+ "content-disposition" => array(
+ "modifiable" => true,
+ "values" => array(
+ "attachment",
+ "inline"
+ )
+ )
+ );
+
+ private static $relatedProperties=array(
+ "content-transfer-encoding" => array(
+ "modifiable" => false,
+ "values" => array(
+ "base64"
+ )
+ )
+ );
+
+ private $html;
+ private $text;
+
+ private $related;
+ private $attachments;
+
+ public static function valid_eMailAddress($eMailAddress) {
+ if(ereg("^[^@ address@hidden@ ]+\.[^@ ]+$", $eMailAddress))
+ return true;
+ else
+ return false;
+ }
+
+ public static function validContentId($contentId) {
+ if(ereg("^[a-zA-Z0-9]+$", $contentId))
+ return true;
+ else
+ return false;
+ }
+
+ public static function validContentKey($contentKey) {
+ if(ereg("^[a-zA-Z0-9]+$", $contentKey))
+ return true;
+ else
+ return false;
+ }
+
+ public static function mime_content_type($filename) {
+ $mime=array(
+ '.3dmf' => 'x-world/x-3dmf',
+ '.a' => 'application/octet-stream',
+ '.aab' => 'application/x-authorware-bin',
+ '.xwd' => 'image/x-xwd',
+ '.xyz' => 'chemical/x-pdb',
+ '.z' => 'application/x-compressed',
+ '.zip' => 'application/x-zip-compressed',
+ '.zoo' => 'application/octet-stream',
+ '.zsh' => 'text/x-script.zsh',
+ '.css' => 'text/css'
+ );
+ return $mime[strrchr($filename, '.')];
+ }
+
+ private $from;
+ private $to;
+ private $subject;
+
+ private $finalized;
+
+ private $headerMessage;
+ private $bodyMessage;
+
+ private $boundaries;
+
+ public function __construct($from, $to, $subject=self::defaultSubject) {
+
+ // set from
+ if(!self::valid_eMailAddress($from))
+ die(self::eMailAddressErrorMessage);
+ else
+ $this->from=$from;
+
+ // set to
+ if(!self::valid_eMailAddress($to))
+ die(self::eMailAddressErrorMessage);
+ else
+ $this->to=$to;
+
+ // set subject
+ $this->subject=$subject;
+
+ // set text
+ $this->text=array(
+ "message" => self::defaultTextMessage,
+ "properties" => array(
+ "charset" => self::$messageProperties["charset"]["values"][0],
+ "content-transfer-encoding" =>
self::$messageProperties["content-transfer-encoding"]["values"][0]
+ )
+ );
+
+ // set html
+ $this->html=array(
+ "message" => self::defaultHtmlMessage,
+ "properties" => array(
+ "charset" => self::$messageProperties["charset"]["values"][0],
+ "content-transfer-encoding" =>
self::$messageProperties["content-transfer-encoding"]["values"][1]
+ )
+ );
+
+ // set related and attachments
+ $this->related=array();
+ $this->attachments=array();
+
+ // set finalizater counter
+ $this->finalized=false;
+
+ $this->headerMessage="";
+ $this->bodyMessage="";
+
+ $this->boundaries=array(
+ "multipart/alternative" => md5(uniqid(microtime())),
+ "multipart/related" => md5(uniqid(microtime())),
+ "multipart/mixed" => md5(uniqid(microtime()))
+ );
+
+ }
+
+ public function setTo($to, &$errorString) {
+ if(self::valid_eMailAddress($to)) {
+ $this->to=$to;
+ return true;
+ } else {
+ $errorString=eMailAddressErrorMessage;
+ return false;
+ }
+ }
+
+ public function setFrom($from, &$errorString) {
+ if(self::valid_eMailAddress($from)) {
+ $this->from=$from;
+ return true;
+ } else {
+ $errorString=eMailAddressErrorMessage;
+ return false;
+ }
+ }
+
+ public function setSubject($subject=self::defaultSubject) {
+ $this->subject=$subject;
+ }
+
+ public function setTextMessage($textMessage=self::defaultTextMessage) {
+ $this->text["message"]=$textMessage;
+ }
+
+ public function setTextMessageProperty($key, $value, &$errorString) {
+
+ $key=strtolower($key);
+ $value=strtolower($value);
+
+ if(isset(self::$messageProperties[$key])) {
+ if(in_array($value, self::$messageProperties[$key]["values"])) {
+ if(self::$messageProperties[$key]["modifiable"]) {
+ $this->text["properties"][$key]=$value;
+ return true;
+ } else {
+ $errorString="Il valore della propriet? indicata non ? modificabile.";
+ return false;
+ }
+ } else {
+ $errorString="Il valore indicato per questa propriet? non ? valido.";
+ return false;
+ }
+ } else {
+ $errorString="Non esiste questa propriet? per i messaggi html.";
+ return false;
+ }
+ }
+
+ public function setHtmlMessage($htmlMessage=self::defaultHtmlMessage) {
+ $this->html["message"]=$htmlMessage;
+ }
+
+ public function setHtmlMessageProperty($key, $value, &$errorString) {
+
+ $key=strtolower($key);
+ $value=strtolower($value);
+
+ if(isset(self::$messageProperties[$key])) {
+ if(in_array($value, self::$messageProperties[$key]["values"])) {
+ if(self::$messageProperties[$key]["modifiable"]) {
+ $this->html["properties"][$key]=$value;
+ return true;
+ } else {
+ $errorString="Il valore della propriet? indicata non ? modificabile.";
+ return false;
+ }
+ } else {
+ $errorString="Il valore indicato per questa propriet? non ? valido.";
+ return false;
+ }
+ } else {
+ $errorString="Non esiste questa propriet? per i messaggi html.";
+ return false;
+ }
+ }
+
+ public function addRelated($fileName, $relatedKey, $contentId,
&$errorString) {
+ if(is_file($fileName)) {
+ if($fileHandle=fopen($fileName, "r")) {
+ if(self::validContentId($contentId)) {
+ if(!isset($this->related[$relatedKey])) {
+ if(self::validContentKey($relatedKey)) {
+ $this->related[$relatedKey]=array(
+ "fileName" => basename($fileName),
+ "properties" => array(
+ "content-type" => self::mime_content_type($fileName),
+ "content-transfer-encoding" =>
self::$relatedProperties["content-transfer-encoding"]["values"][0],
+ "content-id" => $contentId
+ ),
+ "source" => base64_encode(
+ fread($fileHandle, filesize($fileName))
+ )
+ );
+ return true;
+ } else {
+ $errorString="L' id specificato non ? valido.";
+ return false;
+ }
+ } else {
+ $errorString="La chiave specificata ? gi? associata ad un altro
related.";
+ return false;
+ }
+ } else {
+ $errorString="La chiave specificata per il related non ? valida.";
+ return false;
+ }
+ } else {
+ $errorString="Non ? possibile aprire il file indicato.";
+ return false;
+ }
+ } else {
+ $errorString="Il nome del file indicato non ? valido.";
+ return false;
+ }
+ }
+
+ public function setRelatedProperty($relatedKey, $key, $value, &$errorString)
{
+
+ $key=strtolower($key);
+ $value=strtolower($value);
+
+ if(isset(self::$relatedProperties[$key])) {
+ if(in_array($value, self::$relatedProperties[$key]["values"])) {
+ if(self::$relatedProperties[$key]["modifiable"]) {
+ if(isset($this->related[$relatedKey])) {
+ $this->related[$relatedKey]["properties"][$key]=$value;
+ return true;
+ } else {
+ $errorString="Il related indicato non esiste.";
+ return false;
+ }
+ } else {
+ $errorString="Il valore della propriet? indicata non ? modificabile.";
+ return false;
+ }
+ } else {
+ $errorString="Il valore indicato per questa propriet? non ? valido.";
+ return false;
+ }
+ } else {
+ $errorString="Non esiste questa propriet? per i related.";
+ return false;
+ }
+ }
+
+ public function addAttachment($fileName, $attachmentKey, &$errorString) {
+ if(is_file($fileName)) {
+ if($fileHandle=fopen($fileName, "r")) {
+ if(self::validContentKey($attachmentKey)) {
+ if(!isset($this->attachments[$attachmentKey])) {
+ $this->attachments[$attachmentKey]=array(
+ "fileName" => basename($fileName),
+ "properties" => array(
+ "content-type" =>
self::$attachmentProperties["content-type"]["values"][0],
+ "content-disposition" =>
self::$attachmentProperties["content-disposition"]["values"][0],
+ "content-transfer-encoding" =>
self::$attachmentProperties["content-transfer-encoding"]["values"][0]
+ ),
+ "source" => base64_encode(
+ fread($fileHandle, filesize($fileName))
+ )
+ );
+ return true;
+ } else {
+ $errorString="La chiave specificata ? gi? associata ad un altro
allegato.";
+ return false;
+ }
+ } else {
+ $errorString="La chiave specificata per l'allegato non ? valida.";
+ return false;
+ }
+ } else {
+ $errorString="Non ? possibile aprire il file indicato.";
+ return false;
+ }
+ } else {
+ $errorString="Il nome del file indicato non ? valido.";
+ return false;
+ }
+ }
+
+ public function setAttachmentProperty($attachmentKey, $key, $value,
&$errorString) {
+
+ $key=strtolower($key);
+ $value=strtolower($value);
+
+ if(isset(self::$attachmentProperties[$key])) {
+ if(in_array($value, self::$attachmentProperties[$key]["values"])) {
+ if(self::$attachmentProperties[$key]["modifiable"]) {
+ if(isset($this->attachments[$attachmentKey])) {
+ $this->attachments[$attachmentKey]["properties"][$key]=$value;
+ return true;
+ } else {
+ $errorString="L'allegato indicato non esiste.";
+ return false;
+ }
+ } else {
+ $errorString="Il valore della propriet? indicata non ? modificabile.";
+ return false;
+ }
+ } else {
+ $errorString="Il valore indicato per questa propriet? non ? valido.";
+ return false;
+ }
+ } else {
+ $errorString="Non esiste questa propriet? per gli allegati.";
+ return false;
+ }
+ }
+
+ public function finalize(&$errorString) {
+ if(!$this->finalized) {
+ $this->headerMessage="from: ".($this->from)."\n";
+ $this->headerMessage.="to: ".($this->to)."\n";
+ $this->headerMessage.="subject: ".($this->subject)."\n";
+ $this->headerMessage.="mime-version: 1.0\n";
+
+ if(($countAttachments=count($this->attachments))>0) {
+ $this->headerMessage.="content-type: multipart/mixed;
boundary=\"".($this->boundaries["multipart/mixed"])."\"\n\n";
+ $this->headerMessage.=self::defaultHeaderMessage;
+ $this->headerMessage.="\n\n";
+
+ $this->bodyMessage="--".($this->boundaries["multipart/mixed"])."\n";
+
+ if(($countRelated=count($this->related))>0) {
+ $this->bodyMessage.="content-type: multipart/related;
type=\"multipart/alternative\";
boundary=\"".($this->boundaries["multipart/related"])."\"\n\n";
+
+ $this->bodyMessage.="--".($this->boundaries["multipart/related"])."\n";
+
+ $this->bodyMessage.="content-type: multipart/alternative;
boundary=\"".($this->boundaries["multipart/alternative"])."\"\n\n";
+
$this->createMultipartAlternativeMessage($this->boundaries["multipart/alternative"]);
+
$this->bodyMessage.="--".($this->boundaries["multipart/alternative"])."--\n\n";
+
+ // aggiungere i related e chiudere
+
+ $relatedCounter=0;
+ while(list($key,)=each($this->related)) {
+ $relatedCounter++;
+
+ $this->bodyMessage.="--".$this->boundaries["multipart/related"]."\n";
+ $this->createMultipartRelatedMessage($key);
+ if($relatedCounter!=$countRelated)
$this->bodyMessage.="--".($this->boundaries["multipart/related"])."\n";
+ else
$this->bodyMessage.="--".($this->boundaries["multipart/related"])."--\n\n";
+ }
+ } else {
+ $this->bodyMessage.="content-type: multipart/alternative;
boundary=\"".($this->boundaries["multipart/alternative"])."\"\n\n";
+ $this->createMultipartAlternativeMessage();
+
$this->bodyMessage.="--".($this->boundaries["multipart/alternative"])."--\n\n";
+ }
+
+ $attachmentsCounter=0;
+ while(list($key,)=each($this->attachments)) {
+ $attachmentsCounter++;
+ $this->bodyMessage.="--".($this->boundaries["multipart/mixed"])."\n";
+ $this->createMultipartMixedMessage($key);
+ if($attachmentsCounter!=$countAttachments)
$this->bodyMessage.="--".($this->boundaries["multipart/mixed"])."\n";
+ else
$this->bodyMessage.="--".($this->boundaries["multipart/mixed"])."--\n\n";
+ }
+ } else {
+ if(($countRelated=count($this->related))>0) {
+ $this->headerMessage.="content-type: multipart/related;
type=\"multipart/alternative\";
boundary=\"".($this->boundaries["multipart/related"])."\"\n\n";
+ $this->headerMessage.=self::defaultHeaderMessage;
+ $this->headerMessage.="\n\n";
+
+ $this->bodyMessage="--".($this->boundaries["multipart/related"])."\n";
+ $this->bodyMessage.="content-type: multipart/alternative;
boundary=\"".($this->boundaries["multipart/alternative"])."\"\n\n";
+ $this->createMultipartAlternativeMessage();
+
$this->bodyMessage.="--".($this->boundaries["multipart/alternative"])."--\n\n";
+
+ $relatedCounter=0;
+ while(list($key,)=each($this->related)) {
+ $relatedCounter++;
+ $this->bodyMessage.="--".$this->boundaries["multipart/related"]."\n";
+ $this->createMultipartRelatedMessage($key);
+ if($relatedCounter!=$countRelated)
$this->bodyMessage.="--".($this->boundaries["multipart/related"])."\n";
+ else
$this->bodyMessage.="--".($this->boundaries["multipart/related"])."--\n\n";
+ }
+ } else {
+ $this->headerMessage.="content-type: multipart/alternative;
boundary=\"".($this->boundaries["multipart/alternative"])."\"\n\n";
+ $this->headerMessage.=self::defaultHeaderMessage;
+ $this->headerMessage.="\n\n";
+
+ $this->createMultipartAlternativeMessage();
+
$this->bodyMessage.="--".($this->boundaries["multipart/alternative"])."--";
+
+ }
+ }
+ $this->finalized=true;
+ return true;
+ } else {
+ $errorString="Al momento non ? possibile finalizzare.";
+ return false;
+ }
+ }
+
+ private function createMultipartAlternativeMessage() {
+ $multipartAlternativeBoundary=$this->boundaries["multipart/alternative"];
+ $this->bodyMessage.="--$multipartAlternativeBoundary\n";
+ $this->bodyMessage.="content-type: text/plain;
charset=\"".($this->text["properties"]["charset"])."\"\n";
+ $this->bodyMessage.="content-transfer-encoding:
".($this->text["properties"]["content-transfer-encoding"])."\n\n";
+ $this->bodyMessage.=$this->text["message"];
+ $this->bodyMessage.="\n\n";
+ $this->bodyMessage.="--$multipartAlternativeBoundary\n";
+ $this->bodyMessage.="content-type: text/html;
charset=\"".($this->html["properties"]["charset"])."\"\n";
+ $this->bodyMessage.="content-transfer-encoding:
".($this->html["properties"]["content-transfer-encoding"])."\n\n";
+ $this->bodyMessage.=$this->html["message"];
+ $this->bodyMessage.="\n\n";
+ }
+
+ private function createMultipartRelatedMessage($key) {
+ $obj=$this->related[$key];
+ $this->bodyMessage.="content-type:
".($obj["properties"]["content-type"])."; name=\"".($obj["fileName"])."\"\n";
+ $this->bodyMessage.="content-transfer-encoding:
".($obj["properties"]["content-transfer-encoding"])."\n";
+ $this->bodyMessage.="content-id:
<".($obj["properties"]["content-id"]).">\n\n";
+ $this->bodyMessage.=$obj["source"];
+ $this->bodyMessage.="\n\n";
+ }
+
+ private function createMultipartMixedMessage($key) {
+ $obj=$this->attachments[$key];
+ $this->bodyMessage.="content-type:
".($obj["properties"]["content-type"])."; name=\"".($obj["fileName"])."\"\n";
+ $this->bodyMessage.="content-transfer-encoding:
".($obj["properties"]["content-transfer-encoding"])."\n";
+ $this->bodyMessage.="content-disposition:
".($obj["properties"]["content-disposition"]).";
filename=\"".($obj["fileName"])."\"\n\n";
+ $this->bodyMessage.=$obj["source"];
+ $this->bodyMessage.="\n\n";
+ }
+
+ public function getSource(&$errorString) {
+ if($this->finalized) {
+ return ($this->headerMessage).($this->bodyMessage);
+ } else {
+ $errorString="Ancora non ? avvenuta la finalizzazione.";
+ return false;
+ }
+ }
+
+ public function sendMail(&$errorString) {
+ if($this->finalized) {
+ mail($this->to, $this->subject, $this->bodyMessage, $this->headerMessage);
+ $this->finalized=false;
+ return true;
+ } else {
+ $errorString="Ancora non ? avvenuta la finalizzazione.";
+ return false;
+ }
+ }
+}
+
+?>
diff --git a/test/etags/prol-src/natded.prolog
b/test/etags/prol-src/natded.prolog
new file mode 100644
index 0000000..f0ee6b4
--- /dev/null
+++ b/test/etags/prol-src/natded.prolog
@@ -0,0 +1,1545 @@
+% $Id: natded.pl,v 1.7 2001/04/26 12:22:56 geertk Exp geertk $
+% NATURAL DEDUCTION CG PARSER WITH SEMANTICS
+% =========================================================================
+% Bob CARPENTER
+% Computational Linguistics Program, Department of Philosophy
+% Carnegie Mellon University, Pittsburgh, PA 15213
+% Net: address@hidden
+% Voice: (412) 268-8043 Fax: (412) 268-1440
+
+% Copyright 1995, Bob Carpenter
+
+% Written: 12 March 1993
+% Revised: 4 February 1994
+% Further Revised: 2 May 1994
+% Revised for CGI: 16 November 1995
+% Revised for Lambek notation: ? Novemeber 1995
+% Revised again: 30 November 1995
+
+
+% Library Includes
+% =========================================================================
+
+:- use_module(library(system)).
+% :- use_module(library(random)).
+
+
+% Data Types
+% =========================================================================
+
+% <lambda_term> ::= <lambda_var>
+% | <lambda_con>
+% | <lambda_term>@<lambda_term>
+% | <lambda_var>^<lambda_term>
+
+% <lambda_var> ::= var(<prolog_var>)
+
+% <lambda_con> ::= con(<prolog_atom>)
+
+% <tree> ::= tree(<rule>,<cat>,<list(<tree>)>)
+% | ass(<syn>,<var>,<index>)
+% | leaf(<word>)
+
+% <rule> ::= <prolog_atom>
+
+% <cat> ::= <syn> : <lambda_term>
+
+% <syn> ::= <basic_syn>
+% | <syn> / <syn> | <syn> \ <syn>
+% | scop(<syn>,<syn>)
+% | <syn> - <syn>
+
+% <basic_syn> ::= bas(<prolog_term>)
+
+% <grammar> ::= <sequence(<lex_entry>)>
+% <sequence(<empty_category>)>
+% <sequence(<grammar_rule>)>
+
+% <lex_entry> ::= <word> ==> <cat>.
+
+% <empty_category> ::= empty <cat>.
+
+% <grammar_rule> ::= <cat> ===> <list(<cat>)> if <prolog_goal>.
+
+% <index> ::= <integer>
+
+% <word> ::= <prolog_atom>
+
+% <chart_edge> ::= edge(<int>, <int>, <cat>)
+
+% Operator Declarations
+% =========================================================================
+
+ :-op(150,yfx,@). % function application
+% :-op(200,xfy,^). % lambda abstraction
+% :-op(400,yfx,/). % forward slash
+ :-op(350,yfx,\). % backward slash
+ :-op(500,xfx,:). % category constructor
+ :-op(600,xfx,==>). % lexical rewriting
+ :-op(600,xfx,===>). % grammar rule
+ :-op(600,fx,empty). % empty categories
+ :- op(600,xfx,macro). % lexical macros
+ :- op(600,xfx,means). % meaning postulates
+ :-op(1200,xfx,if). % conditions on rule schemes
+
+:- dynamic edge/3.
+:- dynamic emptyedge/1.
+:- dynamic active/3.
+
+
+
+
+% Lambda Calculus
+% =========================================================================
+
+% expandmng(+M:<term>, -MExp:<term>)
+% ----------------------------------------------------------------------
+% MExp is the result of recursively replacing constants with their
+% definitions in M; disallows non-determinism
+% ----------------------------------------------------------------------
+expandmng(var(V),var(V)).
+expandmng(con(C),MExp):-
+ con(C) means M, !,
+ expandmng(M,MExp).
+expandmng(con(C),con(C)).
+expandmng(V^M,V^MExp):-
+ expandmng(M,MExp).
+expandmng(address@hidden,address@hidden):-
+ expandmng(M,MExp),
+ expandmng(N,NExp).
+
+
+% normalize(+M:<term>, -MNorm:<term>)
+% ----------------------------------------------------------------------
+% MNorm is the normal form of M; all bound variables renamed
+% ----------------------------------------------------------------------
+normalize(M,MNorm):-
+ fresh_vars(M,MFr),
+ normalize_fresh(MFr,MNorm).
+
+% fresh_vars(+M:<term>, -MFr:<term>)
+% ----------------------------------------------------------------------
+% MFr is the result of renaming all bound variables
+% in M to fresh instances, using alpha-reduction
+% ----------------------------------------------------------------------
+fresh_vars(var(V),var(V)).
+fresh_vars(con(C),con(C)).
+fresh_vars(address@hidden,address@hidden):-
+ fresh_vars(M,MFr),
+ fresh_vars(N,NFr).
+fresh_vars(X^M,var(Y)^MFr):-
+ subst(M,X,var(Y),M2),
+ fresh_vars(M2,MFr).
+
+% substitute(+M:<term>, +X:<var>, +N:<term>, -L:<term>)
+% ----------------------------------------------------------------------
+% L = M[X |--> N]
+% ----------------------------------------------------------------------
+subst(var(Y),var(X),M,N):-
+ ( X == Y
+ -> N=M
+ ; N = var(Y)
+ ).
+subst(con(C),_,_,con(C)).
+subst(address@hidden,X,N,address@hidden):-
+ subst(M,X,N,M2),
+ subst(L,X,N,L2).
+subst(Y^M,X,N,Y^M2):-
+ ( Y == X
+ -> M2 = M
+ ; subst(M,X,N,M2)
+ ).
+
+% normalize_fresh(+M:<term>, -N:<term>)
+% ----------------------------------------------------------------------
+% M is normalized to N
+% -- all bound variables are made fresh
+% -- cut corresponds to leftmost normalization
+% ----------------------------------------------------------------------
+normalize_fresh(M,N):-
+ reduce_subterm(M,L),
+ !, normalize_fresh(L,N).
+normalize_fresh(M,M).
+
+% reduce_subterm(+M:<term>, -N:<term>)
+% ----------------------------------------------------------------------
+% N is the result of performing one beta- or
+% eta-reduction on some subterm of M;
+% -- reduces leftmost subterm first, but provides
+% all reductions on backtracking
+% ----------------------------------------------------------------------
+reduce_subterm(M,M2):-
+ reduce(M,M2).
+reduce_subterm(address@hidden,address@hidden):-
+ reduce_subterm(M,M2).
+reduce_subterm(address@hidden,address@hidden):-
+ reduce_subterm(N,N2).
+reduce_subterm(X^M,X^N):-
+ reduce_subterm(M,N).
+
+% reduce(+M:<term>, -N:<term>)
+% ----------------------------------------------------------------------
+% reduces M to N using beta- or eta-reduction
+% -- assumes no variable clashes
+% ----------------------------------------------------------------------
+reduce((X^M)@N,L):- % beta reduction
+ subst(M,X,N,L).
+reduce(X^(address@hidden),M):- % eta reduction
+ X == Y,
+ \+ ( free_var(M,Z),
+ Z == X ).
+
+% free_var(+M:<term>, -X:<var>)
+% ----------------------------------------------------------------------
+% X is free in M
+% ----------------------------------------------------------------------
+free_var(var(V),var(V)).
+free_var(address@hidden,X):-
+ ( free_var(M,X)
+ ; free_var(N,X)
+ ).
+free_var(X^M,Y):-
+ free_var(M,Y),
+ Y \== X.
+
+% free_for(+N:<term>, +X:<var>, +M:<term>)
+% ----------------------------------------------------------------------
+% M is free for X in N
+% ----------------------------------------------------------------------
+free_for(var(_),_,_).
+free_for(con(_),_,_).
+free_for(address@hidden,X,M):-
+ free_for(L,X,M),
+ free_for(K,X,M).
+free_for(Y^L,X,M):-
+ free_for(L,X,M),
+ ( \+ free_var(L,X)
+ ; \+ free_var(M,Y)
+ ).
+
+
+% Right-Left, Bottom-Up Dynamic Chart Parser (after ALE)
+% =========================================================================
+
+% Lexical Compiler
+% ----------------------------------------------------------------------
+
+% compile_lex(+File:<file>)
+% ----------------------------------------------------------------------
+% compiles lexical entries into file
+% ----------------------------------------------------------------------
+compile_lex(File):-
+ tell(File),
+ write('% Lexical Entries'), nl,
+ write('% ---------------'), nl, nl,
+ lex(W,Syn,Sem),
+ numbervars(lexentry(W,Syn,Sem),0,_),
+ write('lexentry(\''), write(W), write('\','),
+ write(Syn),write(','), write(Sem), write(').'), nl,
+ fail.
+compile_lex(File):-
+ told,
+ compile(File).
+
+% consult_lex
+% ----------------------------------------------------------------------
+% consults lexicon in place
+% ----------------------------------------------------------------------
+consult_lex:-
+ retractall(lexentry(_,_,_)),
+ lex(W,Syn,Sem),
+ assert(lexentry(W,Syn,Sem)),
+ fail.
+consult_lex.
+
+% lex(?W:<word>, ?Syn:<syn>, ?Sem:<lambda_term>)
+% ----------------------------------------------------------------------
+% word W has syntactic category Syn and smenantic term Sem
+% ----------------------------------------------------------------------
+lex(W,SynOut,Sem):-
+ W ==> Syn : Sem,
+ expandsyn(Syn,SynOut).
+
+% expandsyn(+SynIn:<syn>, ?SynOut:<syn>)
+% ----------------------------------------------------------------------
+% the category SynIn is macro expanded recursively to SynOut
+% ----------------------------------------------------------------------
+expandsyn(Syn,Syn):-
+ var(Syn), !.
+expandsyn(SynIn,SynOut):-
+ macro(SynIn,SynMid), % cut means unique macro expansion
+ !, expandsyn(SynMid,SynOut).
+expandsyn(Syn1/Syn2,Syn1Out/Syn2Out):-
+ !, expandsyn(Syn1,Syn1Out),
+ expandsyn(Syn2,Syn2Out).
+expandsyn(Syn1\Syn2,Syn1Out\Syn2Out):-
+ !, expandsyn(Syn1,Syn1Out),
+ expandsyn(Syn2,Syn2Out).
+expandsyn(Syn1-Syn2,Syn1Out-Syn2Out):-
+ !, expandsyn(Syn1,Syn1Out),
+ expandsyn(Syn2,Syn2Out).
+expandsyn(q(Syn1,Syn2,Syn3),q(Syn1Out,Syn2Out,Syn3Out)):-
+ !, expandsyn(Syn1,Syn1Out),
+ expandsyn(Syn2,Syn2Out),
+ expandsyn(Syn3,Syn3Out).
+expandsyn(Syn,Syn):-
+ bas_syn(Syn).
+
+% bas_syn(?Syn:<syn>)
+% ----------------------------------------------------------------------
+% Syn is a basic syntactic category
+% ----------------------------------------------------------------------
+bas_syn(n(_)).
+bas_syn(np(_,_)).
+bas_syn(s(_)).
+bas_syn(coor).
+bas_syn(sc(_)).
+bas_syn(ex(_)).
+
+
+
+
+% Empty Edge Compilation
+% ----------------------------------------------------------------------
+
+% compile_empty
+% ----------------------------------------------------------------------
+% compiles empty categories, asserting all active and inactive edges
+% they can produce by themselves; always succeeds
+% ----------------------------------------------------------------------
+compile_empty:-
+ retractall(emptyedge(_)), retractall(active(_,_,_)),
+ empty SynIn:Sem,
+ expandsyn(SynIn,Syn),
+ complete(cat(Syn,Sem,[],[],empty(Syn,Sem))).
+compile_empty:-
+ bagof(C,emptyedge(C),Cs),
+ length(Cs,N),
+ nl, write(N), write(' complete empty edges'), nl,
+ bagof(D-Ds,G^active(Ds,D,G),Es),
+ length(Es,M),
+ write(M), write(' active rules with empty starts'), nl.
+
+% complete_cat(Cat:+<cat>)
+% ----------------------------------------------------------------------
+% Cat is asserted as empty, and all current active edges are tested to
+% see if Cat can extend them; fails for looping
+% ----------------------------------------------------------------------
+complete(Cat):-
+ assert(emptyedge(Cat)),
+ ( (CatM ===> [Cat|Cats] if Goal)
+ ; active(CatM,[Cat|Cats],Goal)
+ ),
+ add_active(Cats,CatM,Goal).
+
+% add_active(Cats:+<list(<cat>)>, +Cat:<cat>, +Goal:<goal>)
+% ----------------------------------------------------------------------
+% the active edge Cat --> . Cats is asserted, and any extensions
+% computed and themselves asserted; fails for looping
+% ----------------------------------------------------------------------
+add_active([],Cat,Goal):-
+ call(Goal),
+ assert(emptyedge(Cat)),
+ complete(Cat).
+add_active([Cat|Cats],CatM,Goal):-
+ assert(active([Cat|Cats],CatM,Goal)),
+ emptyedge(Cat),
+ add_active(Cats,CatM,Goal).
+
+% parse(Ws:+<list(<word>)>, Cat:?<cat>)
+% ----------------------------------------------------------------------
+% Cat can be derived from Ws
+% ----------------------------------------------------------------------
+parse(Ws,Cat):-
+ derived_analyses(Ws,WsMid),
+ retractall(edge(_,_,_)),
+ reverse(WsMid,[],WsRev),
+ build(WsRev,0,Length),
+ edge(Length,0,Cat).
+
+% derived_analyses(WsIn:+<list(<word>)>, WsOut:-<list(<word>)>)
+% ----------------------------------------------------------------------
+% computes subderivations of WsIn
+% ----------------------------------------------------------------------
+derived_analyses([],[]).
+derived_analyses([der(Ws)|Ws2],[der(Ws,Ass,Syn,Sem)|DerWs2]):-
+ !, parse(Ws,cat(Syn,Sem,Ass,[],_)),
+ \+ member(abs(_,_,_),Ass),
+ derived_analyses(Ws2,DerWs2).
+derived_analyses([W|Ws],[W|DerWs]):-
+ derived_analyses(Ws,DerWs).
+
+% build(Ws:+<list(<word>)>, Right:+<int>, Left:-<int>)
+% ----------------------------------------------------------------------
+% finishes building chart with Ws as remaing word, starting from
+% right position Right and finishing on left position Left
+% -- counts backwards, so Left > Right
+% ----------------------------------------------------------------------
+build([],Left,Left).
+build([W|Ws],Right,FinalLeft):-
+ RightPlus1 is Right+1,
+ ( buildact(W,Right,RightPlus1)
+ ; build(Ws,RightPlus1,FinalLeft)
+ ).
+
+% build_act(+W:<inputword>, +Left:<int>, +Right:<int>)
+% ----------------------------------------------------------------------
+% take action basedon whether input W is:
+% [SynCat] assume hypothetical category with syntax SynCat
+% der(WsSub,Ass,Syn,Sem) add derived result
+% W treat as input word
+% ----------------------------------------------------------------------
+buildact([SynIn],Right,RightPlus1):-
+ mapsyn(SynIn,Syn), % add unspecified features
+ !, add_edge(RightPlus1,Right,cat(Syn,var(X),[abs(Syn,var(X),N)],[],
+ ass(Syn,var(X),N))).
+buildact(der(WsSub,Ass,Syn,Sem),Right,RightPlus1):-
+ !, add_edge(RightPlus1,Right,cat(Syn,Sem,Ass,[],
+ tree(der,Syn:Sem,[ders(WsSub)]))).
+buildact(W,Right,RightPlus1):-
+ lexentry(W,Syn,Sem),
+ add_edge(RightPlus1,Right,cat(Syn,Sem,[l],[],tree(lex,Syn:Sem,[leaf(W)]))).
+buildact(W,_,_):-
+ \+ (W ==> _),
+ nl, write('Input not recognized: '), write(W), write('<br>').
+
+% mapsyn(+SynCat:<syncat>, -SynCatOut:<syncat)
+% ----------------------------------------------------------------------
+% SynCatOut is result of adding default features to subcategories of
+% SynCat if any are missing; allows [SynCat] to specify cats without
+% features for input; ones with features will be passed along
+% ----------------------------------------------------------------------
+mapsyn(A/B,AM/BM):-
+ mapsyn(A,AM), mapsyn(B,BM).
+mapsyn(A\B,AM\BM):-
+ mapsyn(A,AM), mapsyn(B,BM).
+mapsyn(A-B,AM-BM):-
+ mapsyn(A,AM), mapsyn(B,BM).
+mapsyn(scop(A,B),scop(AM,BM)):-
+ mapsyn(A,AM), mapsyn(B,BM).
+mapsyn(q(A,B,C),q(AM,BM,CM)):-
+ mapsyn(A,AM), mapsyn(B,BM), mapsyn(C,CM).
+mapsyn(s,s(_)).
+mapsyn(n,n(ind(sng))).
+mapsyn(np,np(ind(sng),nm(_))).
+mapsyn(np(X,Y),np(X,Y)).
+mapsyn(n(X),n(X)).
+mapsyn(s(X),s(X)).
+
+% add_edge(Left:+<int>, Right:+<int>, Cat:+<cat>)
+% ----------------------------------------------------------------------
+% asserts edge into chart and then tries to extend it in all possible ways
+% -- always fails to force backgracking
+% ----------------------------------------------------------------------
+add_edge(Left,Right,Cat):-
+ asserta(edge(Left,Right,Cat)),
+ ( (MotherCat ===> [Cat|Cats] if Goal)
+ ; active([Cat|Cats],MotherCat,Goal)
+ ),
+ findcats(Cats,Right,NewRight),
+ call(Goal),
+ add_edge(Left,NewRight,MotherCat).
+
+% findcats(Left:+<int>, Cats:+<cats>, Right:-<int>)
+% ----------------------------------------------------------------------
+% Cats is a list of categories spanning Left to Right
+% ----------------------------------------------------------------------
+findcats([],Left,Left).
+findcats([Cat|Cats],Left,Right):-
+ ( edge(Left,Mid,Cat),
+ findcats(Cats,Mid,Right)
+ ; emptyedge(Cat),
+ findcats(Cats,Left,Right)
+ ).
+
+% edge(Left:?<nat>, Right:?<nat>, Cat:?<cat>) (dynamic)
+% ----------------------------------------------------------------------
+% There is an edge with category Cat from Left to Right;
+% ----------------------------------------------------------------------
+
+% normalize_tree(+TreeIn:<tree>, -TreeOut:<tree>)
+% ----------------------------------------------------------------------
+% TreeOut is isomorphic to TreeIn, with normalized semantics at
+% every node
+% ----------------------------------------------------------------------
+normalize_tree(tree(Rule,Syn:Sem,Trees),
+ tree(Rule,Syn:SemNorm,TreesNorm)):-
+ normalize_fresh(Sem,SemNorm),
+ normalize_trees(Trees,TreesNorm).
+normalize_tree(ass(Syn,Var,Index),ass(Syn,Var,Index)).
+normalize_tree(leaf(Word),leaf(Word)).
+normalize_tree(ders(Word),ders(Word)).
+normalize_tree(empty(Syn,Sem),empty(Syn,SemNorm)):-
+ normalize_fresh(Sem,SemNorm).
+
+normalize_trees([],[]).
+normalize_trees([T|Ts],[TNorm|TsNorm]):-
+ normalize_tree(T,TNorm),
+ normalize_trees(Ts,TsNorm).
+
+
+% expandmng_tree(+TreeIn:<tree>, -TreeOut:<tree>)
+% ----------------------------------------------------------------------
+% TreeOut is isomorphic to TreeIn, with expanded semantics
+% every node
+% ----------------------------------------------------------------------
+expandmng_tree(tree(Rule,Syn:Sem,Trees),
+ tree(Rule,Syn:SemNorm,TreesNorm)):-
+ expandmng(Sem,SemNorm),
+ expandmng_trees(Trees,TreesNorm).
+expandmng_tree(ass(Syn,Var,Index),ass(Syn,Var,Index)).
+expandmng_tree(leaf(Word),leaf(Word)).
+expandmng_tree(ders(Word),ders(Word)).
+expandmng_tree(empty(Syn,Sem),empty(Syn,SemNorm)):-
+ expandmng(Sem,SemNorm).
+
+expandmng_trees([],[]).
+expandmng_trees([T|Ts],[TExp|TsExp]):-
+ expandmng_tree(T,TExp),
+ expandmng_trees(Ts,TsExp).
+
+
+% Grammar Rules
+% =========================================================================
+
+% C:<-cat> ===> Cs:<+list(<cat>)>
+% ----------------------------------------------------------------------
+% C can be composed of Cs; may be conditions
+
+% / elimination
+% -------------
+cat(A, address@hidden, Ass3, Qs3, tree(fe,A:address@hidden,[T1,T2]))
+===>
+[ cat(A/B, Alpha, Ass1, Qs1, T1),
+ cat(B, Beta, Ass2, Qs2, T2)
+] if
+ append(Ass1,Ass2,Ass3),
+ append(Qs1,Qs2,Qs3).
+
+% \ elimination
+% -------------
+cat(A, address@hidden, Ass3, Qs3, tree(be,A:address@hidden,[T1,T2]))
+===>
+[ cat(B, Beta, Ass1, Qs1, T1),
+ cat(B\A, Alpha, Ass2, Qs2, T2)
+] if
+ append(Ass1,Ass2,Ass3),
+ append(Qs1,Qs2,Qs3).
+
+% \ introduction
+% --------------
+cat(B\A, X^Alpha, Ass, Qs, tree(bi(N),B\A:X^Alpha,[T1]))
+===>
+[ cat(A, Alpha, [abs(B,X,N)|Ass], Qs, T1)
+] if
+ \+ T1 = tree(be,_,[_,ass(_,_,N)]), % normal
+ at_least_one_member(l,Ass), % non-empty condition
+ \+ ( subtree(tree(AssumeM,_,Ts),T1), % properly nested
+ member(TMid,Ts),
+ subtree(ass(_,_,'$VAR'(J)),TMid),
+ J == N,
+ hypothetical_mem(AssumeM,Ass,Qs) ).
+
+% / introduction
+% --------------
+cat(A/B, X^Alpha, Ass2, Qs, tree(fi(N),A/B:X^Alpha,[T1]))
+===>
+[ cat(A,Alpha,Ass1,Qs,T1)
+] if
+ \+ T1 = tree(fe,_,[_,ass(_,_,N)]), % normal
+ at_least_one_member(l,Ass1), % non-empty condition
+ select_last(Ass1,abs(B,X,N),Ass2),
+ \+ ( subtree(tree(AssumeM,_,Ts),T1), % properly nested
+ member(TMid,Ts),
+ subtree(ass(_,_,'$VAR'(J)),TMid),
+ J == N,
+ hypothetical_mem(AssumeM,Ass1,Qs) ).
+
+% - introduction
+% --------------
+cat(A-B, X^Alpha, Ass2, Qs, tree(gi(N),(A-B):X^Alpha,[T1]))
+===>
+[ cat(A, Alpha, Ass1, Qs, T1)
+] if
+ at_least_one_member(l,Ass1), % non-empty condition
+ select(abs(B,X,N),Ass1,Ass2),
+ \+ ( subtree(tree(AssumeM,_,Ts),T1), % normalized?
+ member(TMid,Ts),
+ subtree(ass(_,_,'$VAR'(J)),TMid),
+ J == N,
+ hypothetical_mem(AssumeM,Ass1,Qs) ).
+
+
+% q quantifier pushing (q-elimination part 1)
+% ----------------------------------------------------------------------
+cat(C, var(X), Ass, [gq(B,A,Q,var(X),N)|Qs],
+ tree(qqpush(N),C:var(X),[T1]))
+===>
+[ cat(q(C,B,A), Q, Ass, Qs, T1)
+] if
+ \+ T1 = tree(qqi,_,_). % normal
+
+% q quantifier popping (q-elimination part 2)
+% ----------------------------------------------------------------------
+cat(A, Q@(X^Alpha), Ass, Qs2, tree(qqpop(N),A:Q@(X^Alpha),[T1]))
+===>
+[ cat(B,Alpha,Ass,Qs1,T1)
+] if
+ select(gq(B,A,Q,X,N),Qs1,Qs2),
+ \+ ( subtree(tree(AssumeM,_,Ts),T1),
+ member(TMid,Ts),
+ subtree(tree(qqpush(J),_,_),TMid),
+ J == N,
+ hypothetical_mem(AssumeM,Ass,Qs1) ).
+
+% q quantifier introduction [restricted to q(np,s,s)]
+% ----------------------------------------------------------------------
+% restricted to A = s(_), B=np case for termination
+cat(q(np(ind(Num),Case),s(VF),s(VF)), var(P)^(var(P)@Alpha), Ass, Qs1,
+ tree(qqi,q(np(ind(Num),Case),s(VF),s(VF)):var(P)^var(P)@Alpha,[T1]))
+===>
+[ cat(np(ind(Num),Case),Alpha,Ass,Qs1,T1)
+] if
+ true.
+
+% coordination elimination
+% ----------------------------------------------------------------------
+cat(C, Sem, [], [], tree(coel,C:Sem,[T1,T2,T3]))
+===>
+[ cat(C, Sem1, Ass1, [], T1),
+ cat(coor, Alpha, Ass2, [],T2),
+ cat(C, Sem2, Ass3, [], T3)
+] if
+ \+ member(abs(_,_,_),Ass1), % coordination condition
+ \+ member(abs(_,_,_),Ass2),
+ \+ member(abs(_,_,_),Ass3),
+ \+ T1 = tree(coel,_,_),
+ \+ T2 = tree(coel,_,_),
+ make_coor(C,Alpha,Sem1,Sem2,Sem).
+
+% non-boolean coordination
+% ----------------------------------------------------------------------
+%cat(np(pl,-), con(union)@address@hidden, [], [],
+% tree(nbc,np(pl,-):con(union)@address@hidden,[T1,T2,T3]))
+%===>
+%[ cat(NP1, Alpha1, Ass1, [], T1),
+% cat(coor, nbc, Ass2, [],T2),
+% cat(NP3, Alpha3, Ass3, [], T3)
+% ]:-
+% \+ member(abs(_,_,_),Ass1), % coordination condition
+% \+ member(abs(_,_,_),Ass2),
+% \+ member(abs(_,_,_),Ass3),
+% make_nb_coor(NP1,Alpha1,Alpha1P),
+% make_nb_coor(NP3,Alpha3,Alpha3P).
+%
+% make_nb_coor(np,Alpha,con(singleton)@Alpha).
+% make_nb_coor(np(pl,+),Alpha,con(singleton)@Alpha).
+% make_nb_coor(np(pl,-),Alpha,Alpha).
+
+
+% subtree(-TSub:<tree>, +T:<tree>)
+% ----------------------------------------------------------------------
+% TSub is a subtree of T
+% ----------------------------------------------------------------------
+subtree(T,T).
+subtree(T,tree(_,_,Ts)):-
+ member(T2,Ts),
+ subtree(T,T2).
+
+% hypothetical_mem(Rule,Assumptions,Qs)
+% ----------------------------------------------------------------------
+% Rule is a member of the assumptions
+% ----------------------------------------------------------------------
+hypothetical_mem(fi(N),Ass,_):-
+ member(abs(_,_,M),Ass), N == M.
+hypothetical_mem(bi(N),Ass,_):-
+ member(abs(_,_,M),Ass), N == M.
+hypothetical_mem(gi(N),Ass,_):-
+ member(abs(_,_,M),Ass), N == M.
+hypothetical_mem(qqpush(N),_,Qs):-
+ member(gq(_,_,_,_,M),Qs), N == M.
+
+% make_coor(Cat,CoorSem,Sem1,Sem2,SemOut)
+% ----------------------------------------------------------------------
+% generalized coordination semantics CoorSem is applied to
+% Sem1 and Sem2 of type Cat, with result SemOut
+% ----------------------------------------------------------------------
+make_coor(s(_),Alpha,Sem1,Sem2,address@hidden@Sem2).
+make_coor(n(_),Alpha,Sem1,Sem2,var(X)^Alpha@(address@hidden(X))@(address@hidden(X))).
+make_coor(A/_,Alpha,Sem1,Sem2,var(X)^Sem):-
+ make_coor(A,Alpha,address@hidden(X),address@hidden(X),Sem).
+make_coor(_\A,Alpha,Sem1,Sem2,var(X)^Sem):-
+ make_coor(A,Alpha,address@hidden(X),address@hidden(X),Sem).
+make_coor(A-_,Alpha,Sem1,Sem2,var(X)^Sem):-
+ make_coor(A,Alpha,address@hidden(X),address@hidden(X),Sem).
+make_coor(q(_,_,A),Alpha,Sem1,Sem2,var(X)^Sem):-
+ make_coor(A,Alpha,address@hidden(X),address@hidden(X),Sem).
+
+
+% General CGI Handling
+% =========================================================================
+
+% start_up
+% ----------------------------------------------------------------------
+% executed when saved state is restarted;
+% tokenizes, parses and sends off input for handling;
+% halts on termination
+% ----------------------------------------------------------------------
+start_up:-
+% getenv('QUERY_STRING', Arg),
+ prolog_flag(argv,[Arg]),
+
+ % write('<p>'), write(Arg), nl, ttyflush,
+ ( tokenizeatom(Arg,TokenList)
+ % ,write('<p>'), write(TokenList),
ttyflush
+ ; write('Input '), write(Arg), write(' could not be tokenized'), ttyflush,
halt
+ ),
+ ( parse_cgi(TokenList,KeyVals)
+ % , write('<p>'), write(KeyVals),
ttyflush
+ ; write('Tokens '), write(TokenList), write(' could not be parsed'), halt
+ ),
+ ( action(KeyVals)
+ ; told, write('Action '), write(KeyVals), write(' could not be executed')
+ ),
+ halt.
+
+% tokenizeatom(+Input:<atom>, -Tokens:<list(<token>)>)
+% ----------------------------------------------------------------------
+% breaks input Input into list of tokens;
+% ----------------------------------------------------------------------
+tokenizeatom(Atom,Ws):-
+ name(Atom,Cs),
+ tokenize(Cs,Xs-Xs,Ws).
+
+% tokenize(+Chars:<list(<char>)>, +CharsSoFar:<d_list(<char>)>,
+% -Tokens:<list(<token>)>)
+% ----------------------------------------------------------------------
+% Tokens is the list of tokens retrieved from Chars; ChrsSoFar
+% accumulates prefixes of atoms being recognized
+% ----------------------------------------------------------------------
+tokenize([C1,C2,C3|Cs],Xs-Ys,TsResult):- % special symbol
+ name('%',[C1]),
+ specialsymbol(C2,C3,SpecialSymbol),
+ !,
+ ( Xs = []
+ -> TsResult = [SpecialSymbol|TsOut]
+ ; Ys = [],
+ name(CsAtom,Xs),
+ TsResult = [CsAtom,SpecialSymbol|TsOut]
+ ),
+ tokenize(Cs,Zs-Zs,TsOut).
+tokenize([C|Cs],Xs-Ys,TsResult):- % one-character operator
+ isoperator(C),
+ !, name(OpToken,[C]),
+ ( Xs = []
+ -> TsResult = [OpToken|Ts]
+ ; Ys = [],
+ name(CsAtom,Xs),
+ TsResult = [CsAtom,OpToken|Ts]
+ ),
+ tokenize(Cs,Zs-Zs,Ts).
+tokenize([C|Cs],Xs-[C|Ys],Ts):- % more of string
+ tokenize(Cs,Xs-Ys,Ts).
+tokenize([],Xs-_,[]):- % no more input; nothing accum.
+ Xs = [], !.
+tokenize([],Xs-[],[CsAtom]):- % no more input; stringg accum.
+ name(CsAtom,Xs).
+
+% isoperator(+Char:<char>)
+% ----------------------------------------------------------------------
+% Char is the name of an operator character
+% ----------------------------------------------------------------------
+isoperator(Char):-
+ name(Op,[Char]),
+ isoptab(Op).
+
+isoptab('%').
+isoptab('+').
+isoptab('&').
+isoptab('=').
+
+% specialsymbol(+C1:<char>, +C2:<char>, -S:<token>)
+% ----------------------------------------------------------------------
+% C1 and C2 are the names of characters completing a % special symbol
+% ----------------------------------------------------------------------
+specialsymbol(C1,C2,S):-
+ name(N1,[C1]), name(N2,[C2]),
+ ( sstab(N1,N2,S), !
+ ; S = spec(N1,N2)
+ ).
+
+sstab(2,'C',',').
+sstab(2,'F','/').
+sstab(2,8,'(').
+sstab(2,9,')').
+sstab(5,'B','[').
+sstab(5,'C','\\').
+sstab(5,'D',']').
+sstab(3,'D','=').
+sstab(3,'E','>').
+
+
+% parse_cgi(+TokenList:<list(<token>)>, -KeyVals:<list(<keyval>)>)
+% ----------------------------------------------------------------------
+% KeyVals is Key/Val list resulting from parsing TokenList using
+% the compiled DCG to perform a top-down parse
+% ----------------------------------------------------------------------
+parse_cgi(TokenList,KeyVals):-
+ keyvalseq(KeyVals,TokenList,[]).
+
+% Grammar for Parser
+% ----------------------------------------------------------------------
+keyvalseq([KeyVal|KeyVals]) -->
+ keyval(KeyVal), andkeyvalseq(KeyVals).
+keyvalseq([]) --> [].
+
+andkeyvalseq(KeyVals) --> ['&'], keyvalseq(KeyVals).
+andkeyvalseq([]) --> [].
+
+keyval(key(Key,Val)) --> [Key,'='], valseq(Val).
+
+% valseq(rec(Ws,Cat)) --> valseq(Ws), as(Cat).
+
+% as('$ANY') --> [].
+% as(Cat) --> optplus, ['=','>'], optplus, val(Cat).
+
+% valseq([]) --> []. % subsumed by plusvalseq([]) --> []
+valseq([Val|Vals]) --> val(Val), plusvalseq(Vals).
+valseq(Vals) --> plusvalseq(Vals).
+
+plusvalseq([]) --> [].
+plusvalseq(Vals) --> ['+'], valseq(Vals).
+
+optplus --> [].
+optplus --> ['+'].
+
+val(X) --> ['['], valseq(X), [']'].
+val(der(X)) --> [der,'('], valseq(X), [')'].
+val(X) --> atomval(X).
+val(X/Y) --> atomval(X), ['/'], atomval(Y).
+val(Y\X) --> atomval(Y), ['\\'], atomval(X).
+val(X-Y) --> atomval(Y), ['-'], atomval(X).
+val(Term) --> atom(Fun), ['('], argvals(Args), [')'], {Term =.. [Fun|Args]}.
+
+argvals([]) --> [].
+argvals([Arg|Args]) -->
+ val(Arg), commaargvals(Args).
+
+commaargvals(Args) -->
+ [','], argvals(Args).
+commaargvals([]) -->
+ [].
+
+atomval(X) --> atom(X).
+atomval(X) --> ['('], val(X), [')'].
+
+atom(X) --> [X], {atomic(X)}.
+
+
+% Specific CGI Query Handling
+% =========================================================================
+
+% action(+KeyVals:<list(<keyval>)>)
+% ----------------------------------------------------------------------
+% take an action based on list of KeyVals
+% ----------------------------------------------------------------------
+action(KeyVals):-
+ retractall(keyvalscgi(_)),
+ assert(keyvalscgi(KeyVals)),
+ member(key(inputfrom,[InputFrom]),KeyVals),
+ ( InputFrom = 'Typing'
+ -> member(key(parsestringone,Ws),KeyVals)
+ ; InputFrom = 'Corpus'
+ -> member(key(parsestringtwo,Ws),KeyVals)
+ ),
+% write('<p>'), write(Ws), nl,
+ nl, write('P<font size=-1>ARSE</font> R<font size=-1>ESULTS FOR:</font>
<cite>'),
+ writelist(Ws),
+ write('</cite><br><br>'), nl,
+ member(key(outputform,[OutForm]),KeyVals),
+ member(key(outputsyn,OutSynSym),KeyVals),
+ outsyn(OutSynSym,OutSyn),
+ act(OutForm,OutSyn,Ws).
+
+keyvalcgi(Key,Val):-
+keyvalscgi(KeyVals),
+ member(key(Key,Val),KeyVals).
+
+outsyn(['Any'],_).
+outsyn(['Finite','S'],s(fin)).
+outsyn(['Noun','Phrase'],np(_,_)).
+
+% act(+Form:<form>, ?Syn:<syn>, +Ws:<list(<word>)>)
+% ----------------------------------------------------------------------
+% the input Ws is parsed and output in form Form;
+% ----------------------------------------------------------------------
+act(OutForm,OutSyn,Ws):-
+ findall(Tree, ( parse(Ws,cat(OutSyn,_,Ass,[],Tree)),
+ \+ member(abs(_,_,_),Ass) ), Trees), % all parses
+ ( Trees = [],
+ !, write('<BR> No Parses Found') % none found
+ ; ( keyvalcgi(expandmng,['Yes']),
+ !, expandmng_trees(Trees,Trees2)
+ ; Trees2 = Trees
+ ),
+ ( keyvalcgi(normalize,['Yes']),
+ !, normalize_trees(Trees2,Trees3)
+ ; Trees3 = Trees2
+ ),
+ write('parse('),
+ write_term(Ws,[quoted(true)]),
+ write(',Cat).<br>'), nl,
+ actout(OutForm,Trees3)
+ ).
+
+
+
+% actout(+Form:<form>, +Ts:<list(<tree>)>)
+% ----------------------------------------------------------------------
+% return output for list of trees Ts in form Form
+% ----------------------------------------------------------------------
+actout('Text',Trees):-
+ write('<PRE>'), nl,
+ texttreelist(Trees),
+ nl, write('</PRE>').
+actout('Prawitz',Ts):-
+ htmltreelist(Ts).
+actout('Fitch',Ts):-
+ fitchtreelist(Ts).
+
+
+
+texttreelist([]).
+texttreelist([T|Ts]):-
+ pp_tree(T),
+ nl, write('<BR>'), nl,
+ texttreelist(Ts).
+
+htmltreelist([]).
+htmltreelist([T|Ts]):-
+ pp_html_table_tree(T),
+ nl, write('<BR>'), nl,
+ htmltreelist(Ts).
+
+fitchtreelist([]).
+fitchtreelist([T|Ts]):-
+ pp_html_table_fitch_tree(T),
+ nl, write('<BR>'), nl,
+ fitchtreelist(Ts).
+
+
+% PRETTY PRINTING ROUTINES
+% ======================================================================
+
+% pp_html_table_tree(+Tree:<tree>)
+% ----------------------------------------------------------------------
+% Tree is output as an HTML table; first numbered
+% ----------------------------------------------------------------------
+pp_html_table_tree(T):-
+ numbervars(T),
+% nl,
+% write_term(T,[quoted(true)]),
+% nl, write('<P>'),
+ pp_html_tree(T).
+
+% pp_html_tree(+Tree:<tree>)
+% ----------------------------------------------------------------------
+% Tree is output as an HTML table; assume numbered
+% ----------------------------------------------------------------------
+pp_html_tree(ass(Syn,V,'$VAR'(N))):-
+ write('['), pp_cat(Syn:V), write(']<sup>'), write(N), write('</sup>').
+pp_html_tree(leaf(Word)):-
+ pp_word(Word).
+pp_html_tree(ders(Words)):-
+ pp_word_list(Words).
+pp_html_tree(empty(Syn,Sem)):-
+ nl, write('<TABLE BORDER=1>'), nl,
+ write('<TR VALIGN=bottom>
+ <TD ALIGN=CENTER>-</TD>
+ <TD ROWSPAN=2 ALIGN=CENTER>Nil</TD>
+ </TR>'),
+ nl,
+ write('<TR VALIGN=bottom>
+ <TD ALIGN=CENTER>'),
+ pp_cat(Syn:Sem),
+ write('</TD></TR>'),
+ nl,
+ write('</TABLE>').
+pp_html_tree(tree(Rule,Root,SubTrees)):-
+ nl, write('<TABLE BORDER=1>'), nl,
+ write('<TR VALIGN=bottom>'), nl,
+ pp_html_trees(SubTrees,0,N),
+ nl,
+ ( Rule = lex
+ -> true
+ ; write('<TD ROWSPAN=2 ALIGN=CENTER>'), pp_rule(Rule), write('</TD>')
+ ),
+ write('</TR>'),
+ write('<TR VALIGN=bottom><TD ALIGN=CENTER COLSPAN='), write(N), write('>'),
+ pp_cat(Root),
+ write('</TD></TR>'),
+ nl, write('</TABLE>').
+
+% pp_html_trees(+Trees: <list(<tree>)>,+N:<int>,-M:<int>)
+% ----------------------------------------------------------------------
+% prints the trees in Trees, where (M-N) is the length of the list (N
+% acts as an accumulator, initialized to 0
+% ----------------------------------------------------------------------
+pp_html_trees([T|Ts],N,M):-
+ write('<TD ALIGN=center>'), pp_html_tree(T),
+ write('</TD>'),
+ K is N+1,
+ pp_html_trees(Ts,K,M).
+pp_html_trees([],N,N).
+
+% pp_html_table_fitch_tree(+T:<tree>)
+% ----------------------------------------------------------------------
+% T is numbered and output as a table Fitch-style
+% ----------------------------------------------------------------------
+pp_html_table_fitch_tree(T):-
+ numbervars(T),
+ nl, write('<TABLE BORDER=1>'),
+ pp_html_fitch_tree(T,1,_,_,_,[],_),
+ nl, write('</TABLE>').
+
+% pp_html_fitch_tree(+Tree:<tree>, +Start:<int>, -Next:<int>, -Me:<int>,
+% +Exp:<exp>,
+% +AssIn:<list(<assgn>)>, -AssOut:<list(<assgn>)>)
+% ----------------------------------------------------------------------
+% the rows of the table for Tree are printed;
+% Start is where the numbering begins; Next is the next available number
+% after last one used; Me is the row representing the output of the
+% derivation; Exp is the expression corresponding to Tree;
+% AssIn are existing assignments coming in and AssOut are assignments
+% going out (an <assgn> is a pair ass(M,X) where M is a row number on the
+% table and X is the abstracted variable)
+% ----------------------------------------------------------------------
+pp_html_fitch_tree(tree(der,Root,[ders(Words)]),M,N,M,Exp,Ass,Ass):-
+ !, nl, write('<TR><TD>'),
+ write(M), write('</TD><TD>'),
+ map_word(Words,Exp), pp_exp(Exp),
+ write('-'), pp_cat(Root),
+ write('</TD><TD>'), write('Der'), write('</TD></TR>'), nl,
+ N is M+1.
+pp_html_fitch_tree(tree(lex,Root,[leaf(Word)]),M,N,M,Word,Ass,Ass):-
+ !, nl, write('<TR><TD>'),
+ write(M), write('</TD><TD>'), pp_exp(Word), write('-'), pp_cat(Root),
+ write('</TD><TD>'), write('Lex'), write('</TD></TR>'), nl,
+ N is M+1.
+pp_html_fitch_tree(tree(fe,Root,[T1,T2]),M,N,L,Exp1+Exp2,AssIn,AssOut):-
+ !, pp_html_fitch_tree(T1,M,K,Source1,Exp1,AssIn,AssMid),
+ pp_html_fitch_tree(T2,K,L,Source2,Exp2,AssMid,AssOut),
+ nl, write('<TR><TD>'),
+ write(L), write('</TD><TD>'), pp_exp(Exp1+Exp2), write('-'), pp_cat(Root),
+ write('</TD><TD>'), write('E/ '), write((Source1,Source2)),
write('</TD></TR>'), nl,
+ N is L + 1.
+pp_html_fitch_tree(tree(be,Root,[T1,T2]),M,N,L,Exp1+Exp2,AssIn,AssOut):-
+ !, pp_html_fitch_tree(T1,M,K,Source1,Exp1,AssIn,AssMid),
+ pp_html_fitch_tree(T2,K,L,Source2,Exp2,AssMid,AssOut),
+ nl, write('<TR><TD>'),
+ write(L), write('</TD><TD>'), pp_exp(Exp1+Exp2), write('-'), pp_cat(Root),
+ write('</TD><TD>'), write('E\\ '), write((Source1,Source2)),
write('</TD></TR>'), nl,
+ N is L + 1.
+pp_html_fitch_tree(tree(qqi,Root,[T]),M,Next,Me,Exp,AssIn,AssOut):-
+ !, pp_html_fitch_tree(T,M,Me,Source,Exp,AssIn,AssOut),
+ nl, write('<TR><TD>'),
+ write(Me), write('</TD><TD>'), pp_exp(Exp), write('-'), pp_cat(Root),
+ write('</TD><TD>'), write('q I '), write(Source), write('</TD></TR>'), nl,
+ Next is Me+1.
+pp_html_fitch_tree(tree(coel,Root,[T1,T2,T3]),M,N,L,Exp1+Exp2+Exp3,AssIn,AssOut):-
+ !, pp_html_fitch_tree(T1,M,K,Source1,Exp1,AssIn,AssMid),
+ pp_html_fitch_tree(T2,K,L1,Source2,Exp2,AssMid,AssMid2),
+ pp_html_fitch_tree(T3,L1,L,Source3,Exp3,AssMid2,AssOut),
+ nl, write('<TR><TD>'),
+ write(L), write('</TD><TD>'), pp_exp(Exp1+Exp2+Exp3), write('-'),
pp_cat(Root),
+ write('</TD><TD>'), write('E co '), write((Source1,Source2,Source3)),
write('</TD></TR>'), nl,
+ N is L + 1.
+pp_html_fitch_tree(tree(fi(_),(C1/C2):(var(X)^Sem),[T]),M,Q,N,ExpNew,AssIn,AssOut):-
+ K is M+1,
+ write('<TR><TD COLSPAN=3><TABLE BORDER=1>'),
+ write('<TR><TD>'), write(M), write('</TD><TD>'),
+ X = '$VAR'(Num),
+ cat_atoms(Num,'</sub>',ExpMid),
+ cat_atoms('e<sub>',ExpMid,ExpNum),
+ pp_exp(ExpNum), write(' - '),
+ pp_cat(C2:var(X)), write('</TD><TD>'), write('Assume</TD></TR>'),
+ pp_html_fitch_tree(T,K,N,L, Exp, [ass(M,X)|AssIn],AssOut),
+ write('<TR><TD>'), write(N), write('</TD><TD>'),
+ removeexp(ExpNum,Exp,ExpNew),
+ pp_exp(ExpNew), write(' - '), pp_cat(C1/C2:var(X)^Sem), write('</TD><TD>'),
+ write('/I '), write((M,L)), write('</TD></TR>'),
+ write('</TD></TR></TABLE>'),
+ Q is N+1.
+pp_html_fitch_tree(tree(bi(_),(C2\C1):(var(X)^Sem),[T]),M,Q,N,ExpNew,AssIn,AssOut):-
+ K is M+1,
+ write('<TR><TD COLSPAN=3><TABLE BORDER=1>'),
+ write('<TR><TD>'), write(M), write('</TD><TD>'),
+ X = '$VAR'(Num),
+ cat_atoms(Num,'</sub>',ExpMid),
+ cat_atoms('e<sub>',ExpMid,ExpNum),
+ pp_exp(ExpNum), write(' - '),
+ pp_cat(C2:var(X)), write('</TD><TD>'), write('Assume</TD></TR>'),
+ pp_html_fitch_tree(T,K,N,L, Exp, [ass(M,X)|AssIn],AssOut),
+ write('<TR><TD>'), write(N), write('</TD><TD>'),
+ removeexp(ExpNum,Exp,ExpNew),
+ pp_exp(ExpNew), write(' - '), pp_cat(C2\C1:var(X)^Sem), write('</TD><TD>'),
+ write('/I '), write((M,L)), write('</TD></TR>'),
+ write('</TD></TR></TABLE>'),
+ Q is N+1.
+pp_html_fitch_tree(tree(gi(_),(C1-C2):var(X)^Sem,[T]),M,Q,N,ExpNew,AssIn,AssOut):-
+ K is M+1,
+ write('<TR><TD COLSPAN=3><TABLE BORDER=1>'),
+ write('<TR><TD>'), write(M), write('</TD><TD>'),
+ X = '$VAR'(Num),
+ cat_atoms(Num,'</sub>',ExpMid),
+ cat_atoms('e<sub>',ExpMid,ExpNum),
+ pp_exp(ExpNum), write(' - '),
+ pp_cat(C2:var(X)), write('</TD><TD>'), write('Assume</TD></TR>'),
+ pp_html_fitch_tree(T,K,N,L,Exp, [ass(M,X)|AssIn],AssOut),
+ write('<TR><TD>'), write(N), write('</TD><TD>'),
+ splitexp(ExpNum,Exp,ExpNew),
+ pp_exp(ExpNew), write(' - '),
+ pp_cat((C1-C2):var(X)^Sem), write('</TD><TD>'),
+ write('I- '), write((M,L)), write('</TD></TR>'),
+ write('</TD></TR></TABLE>'),
+ Q is N+1.
+% pp_html_fitch_tree(tree(qqpop(N),A:(Q@(X^Alpha)),[T1]),M,N,K,Exp,Ass,Ass):-
+% !, replace_qtree(qqpush(N),T1,T1Mid,T1Extract),
+% pp_html_fitch_tree(T1Extract,M,L,J,_,_,_),
+% pp_html_fitch_tree(T1Mid,L,P,I,_,_,_),
+% write('<TR><TD>'), write(P), write('</TD><TD>'),
+% pp_exp(Exp), write(' - '),
+% pp_cat(A:(Q@(X^Alpha))), write('</TD><TD>'),
+% write(' ').
+pp_html_fitch_tree(empty(Syn,Sem),M,N,M,[],Ass,Ass):-
+ !, nl, write('<TR><TD>'),
+ write(M), write('</TD><TD>'), write('NIL'), write(' '), pp_cat(Syn:Sem),
+ write('</TD><TD>'), write('Empty'), write('</TD></TR>'), nl,
+ N is M+1.
+pp_html_fitch_tree(ass(_Syn,var(Var),_),N,N,M,Exp,Ass,Ass):-
+ member(ass(M,Var),Ass),
+ Var = '$VAR'(Num),
+ cat_atoms(Num,'</sub>',ExpMid),
+ cat_atoms('e<sub>',ExpMid,Exp).
+
+% removexp(+ExpRem:<exp>,+Exp:<exp>,-ExpOut:<exp>)
+% ----------------------------------------------------------------------
+% he expression ExpRem is removed from Exp with result ExpOut
+% ----------------------------------------------------------------------
+removeexp(E,E,'NIL'):-!.
+removeexp(E,E+E2,E2):-!.
+removeexp(E,E2+E,E2):-!.
+removeexp(E,E2+E3,E2New+E3New):-
+ !, removeexp(E,E2,E2New),
+ removeexp(E,E3,E3New).
+removeexp(_,E2,E2).
+
+% splitexp(+ExpRem:<exp>, +Exp:<exp>, -ExpOut:<exp>)
+% ----------------------------------------------------------------------
+% ExpRem is removed from Exp with ExpOut left over; the extraction
+% site is represented as a split point
+% ----------------------------------------------------------------------
+splitexp(E,E,('NIL','NIL')):-!.
+splitexp(E,E+E2,('NIL',E2)):-!.
+splitexp(E,E2+E,(E2,'NIL')):-!.
+splitexp(E,E1+E2,(E3,E4+E2)):-
+ splitexp(E,E1,(E3,E4)), !.
+splitexp(E,E1+E2,(E1+E3,E4)):-
+ splitexp(E,E2,(E3,E4)).
+
+% pp_exp(+Exp:<exp>)
+% ----------------------------------------------------------------------
+% the expression Exp is output; concatenations are represented as
+% spaces and split points by (_,_) and empty by '0'
+% ----------------------------------------------------------------------
+pp_exp('NIL'):-
+ !, write(0).
+pp_exp(A+'NIL'):-
+ !, pp_exp(A).
+pp_exp(B+'NIL'):-
+ !, pp_exp(B).
+pp_exp(A+B):-
+ !, pp_exp(A), write(' '), pp_exp(B).
+pp_exp((A,B)):-
+ !, write('('), pp_exp(A), write(', '), pp_exp(B), write(')').
+pp_exp(A):-
+ pp_word(A).
+
+map_word([[_]|Ws],Exp):-
+ !, map_word(Ws,Exp).
+map_word([W|Ws],Exp):-
+ map_word(Ws,W,Exp).
+map_word([],'NIL').
+
+map_word(Ws,[_],W):-
+ !, map_word(Ws,W).
+map_word([],W,W).
+map_word([W|Ws],W1,W1+Exp):-
+ map_word(Ws,W,Exp).
+
+pp_exps([]).
+pp_exps([Exp|Exps]):-
+ pp_exp(Exp), write('+'), pp_exp(Exps).
+
+% pp_tree(+T:<tree>)
+% ----------------------------------------------------------------------
+% tree T is output in indented list notation; first number
+% ----------------------------------------------------------------------
+pp_tree(T):-
+ numbervars(T),
+ pp_tree(T,0).
+
+% pp_tree(+T:<tree>, +Col:<int>)
+% ----------------------------------------------------------------------
+% print tree T beginning at column Col
+% ----------------------------------------------------------------------
+pp_tree(empty(Syn,Sem),Col):-
+ nl, tab(Col), pp_cat(Syn:Sem), write(' via empty').
+pp_tree(ass(Syn,V,'$VAR'(N)),Column):-
+ nl, tab(Column), write('['), pp_cat(Syn:V), write(']'),
+ write('<SUP>'), write(N), write('</SUP>').
+pp_tree(leaf(Word),Column):-
+ nl, tab(Column), pp_word(Word).
+pp_tree(ders(Words),Column):-
+ nl, tab(Column), pp_word_list(Words).
+pp_tree(tree(Rule,Root,SubTrees),Column):-
+ nl, tab(Column),
+ pp_cat(Root),
+ write(' via '), pp_rule(Rule),
+ NewColumn is Column + 2,
+ pp_trees(SubTrees,NewColumn).
+
+% pp_trees(+Ts:<list(<tree>)>, +Col:<int>)
+% ----------------------------------------------------------------------
+% print tree list Ts beginning at column Col
+% ----------------------------------------------------------------------
+pp_trees([T|Ts],Column):-
+ pp_tree(T,Column),
+ pp_trees(Ts,Column).
+pp_trees([],_).
+
+% pp_word_list(+Ws:<list(<word>)>)
+% ----------------------------------------------------------------------
+% the list of words Ws is output, ignoring non-atoms
+% ----------------------------------------------------------------------
+pp_word_list([]).
+pp_word_list([W|Ws]):-
+ atom(W), !, pp_word(W), pp_word_list_rest(Ws).
+pp_word_list([_|Ws]):-
+ pp_word_list(Ws).
+
+pp_word(W):-
+ write('<I>'), write(W), write('</I>').
+
+% pp_word_list_rest(+Ws:<list(<word>)>)
+% ----------------------------------------------------------------------
+% word list Ws is output with an initial blank if Ws is non-empty
+% ----------------------------------------------------------------------
+pp_word_list_rest([]).
+pp_word_list_rest([W|Ws]):-
+ atom(W), !, write(' '), pp_word(W), pp_word_list_rest(Ws).
+pp_word_list_rest([_|Ws]):-
+ pp_word_list_rest(Ws).
+
+% pp_cat(Cat:<cat>)
+% ----------------------------------------------------------------------
+% pretty print category Cat
+% ----------------------------------------------------------------------
+pp_cat(Syn:Sem):-
+ pp_lam(Sem), write(' : '), pp_syn(Syn).
+
+% pp_syn(SynCat:<syncat>)
+% ----------------------------------------------------------------------
+% pretty print syntactic category
+% ----------------------------------------------------------------------
+pp_syn(A/B):-
+ !, pp_syn(A), write('/'), pp_syn_paren(B).
+pp_syn(A-B):-
+ !, pp_syn(A), write('-'), pp_syn_paren(B).
+pp_syn(B\A):-
+ !, pp_syn_paren(B), write('\\'), pp_syn_back(A).
+pp_syn(q(A,B,B)):-
+ !, pp_syn(scop(A,B)).
+pp_syn(q(A,B,C)):-
+ !, write('q('), pp_syn(A), write(','), pp_syn(B), write(','),
+ pp_syn(C), write(')').
+pp_syn(scop(A,B)):-
+ !, pp_syn(A), write('^^'), pp_syn(B).
+pp_syn(C):-
+ pp_bas_cat(C).
+
+% pp_syn_paren(SynCat:<syncat>)
+% ----------------------------------------------------------------------
+% pretty print syntactic category with enclosing parens if it
+% is functional (used for arguments)
+% ----------------------------------------------------------------------
+pp_syn_paren(A/B):-
+ !, pp_paren(A/B).
+pp_syn_paren(A-B):-
+ !, pp_paren(A-B).
+pp_syn_paren(B\A):-
+ !, pp_paren(B\A).
+pp_syn_paren(q(A,B,B)):-
+ !, pp_paren(q(A,B,B)).
+pp_syn_paren(q(A,B,C)):-
+ !, pp_syn(q(A,B,C)).
+pp_syn_paren(C):-
+ pp_bas_cat(C).
+
+% pp_paren(+C:<cat>)
+% ----------------------------------------------------------------------
+% category Cat is pretty printed with surrounding parens
+% ----------------------------------------------------------------------
+pp_paren(C):-
+ write('('), pp_syn(C), write(')').
+
+% pp_syn_back(+Cat:<cat>)
+% ----------------------------------------------------------------------
+% Cat is pretty printed as the result of a backward functor
+% ----------------------------------------------------------------------
+pp_syn_back(A/B):-
+ !, pp_syn_paren(A/B).
+pp_syn_back(A-B):-
+ !, pp_syn_paren(A-B).
+pp_syn_back(A):-
+ pp_syn(A).
+
+% pp_bas_cat(+BasCat:<bascat>)
+% ----------------------------------------------------------------------
+% the basic category BasCat is pretty printed
+% ----------------------------------------------------------------------
+pp_bas_cat(Cat):-
+ writecat(Cat,Atom,Subs,Sups),
+ write(Atom),
+ writesubs(Subs),
+ writesups(Sups).
+
+% writecat(+BasCat:<bascat>,-Root:<atom>,-Subs:<list>,-Sups:<list>)
+% ----------------------------------------------------------------------
+% basic category BasCat is printed as Root with superscripts Sups
+% and subscripts Subs
+% ----------------------------------------------------------------------
+writecat(np(ind(sng),nm(_)),np,[],[]):-!.
+writecat(np(ind(sng),pp(C)),np,[C],[]):-!.
+writecat(np(ind(plu),nm(_)),np,[p],[]):-!.
+writecat(np(ind(plu),pp(C)),np,[p,C],[]):-!.
+writecat(np(ind(_),nm(_)),np,[],[]):-!.
+writecat(np(set,nm(_)),np,[p],['*']):-!.
+writecat(np(set,pp(C)),np,[p,C],['*']):-!.
+writecat(np(_,_),np,[],[]):-!.
+writecat(s(fin),s,[],[]):-!.
+writecat(s('$VAR'(_)),s,[],[]):-!.
+writecat(s(V),s,[V],[]):-!.
+writecat(n(ind(plu)),n,[p],[]):-!.
+writecat(n(set),n,[p],['*']):-!.
+writecat(n(ind(sng)),n,[],[]):-!.
+writecat(n(_),n,[],[]):-!.
+writecat(sc(th(fin)),sc,[th,fin],[]):-!.
+writecat(sc(th(bse)),sc,[th,bse],[]):-!.
+writecat(sc(wh),sc,[wh],[]):-!.
+writecat(sc(if),sc,[if],[]):-!.
+writecat(sc(_),sc,[],[]):-!.
+writecat(ex(it),ex,[it],[]):-!.
+writecat(ex(th(_)),ex,[th],[]):-!.
+writecat(ex(_),ex,[],[]):-!.
+writecat(C,C,[],[]).
+
+% writesubs(+List:<list>)
+% ----------------------------------------------------------------------
+% List is output as a subscript
+% ----------------------------------------------------------------------
+writesubs([]).
+writesubs([X|Xs]):-
+ write('<SUB>'),
+ writelistsubs(Xs,X),
+ write('</SUB>').
+
+% writesups(+List:<list>)
+% ----------------------------------------------------------------------
+% List is output as a superscript
+% ----------------------------------------------------------------------
+writesups([]).
+writesups([X|Xs]):-
+ write('<SUP>'),
+ writelistsubs(Xs,X),
+ write('</SUP>').
+
+% writelistsubs(+Xs:<list>, +X:<term>)
+% ----------------------------------------------------------------------
+% Xs is written as a list with commas as separators
+% ----------------------------------------------------------------------
+writelistsubs([],X):-
+ write(X).
+writelistsubs([X|Xs],Y):-
+ write(Y), write(' ,'), writelistsubs(Xs,X).
+
+% pp_lam(+Term:<lambdaterm>)
+% ----------------------------------------------------------------------
+% lambda term Term is pretty printed
+% ----------------------------------------------------------------------
+pp_lam(Var^Alpha):-
+ !, pp_lam(Var), write('<B>. </B>'), pp_lam(Alpha).
+pp_lam(con(and)@address@hidden):-
+ !, pp_lam_paren(Alpha), write(' & '), pp_lam_paren(Beta).
+pp_lam(con(or)@address@hidden):-
+ !, pp_lam_paren(Alpha), write(' <b>or</b> '), pp_lam_paren(Beta).
+pp_lam(con(not)@Alpha):-
+ !, write(' ¬ '), write('('), pp_lam_paren(Alpha), write(')').
+pp_lam(address@hidden):-
+ !, pp_lam_bracket(Alpha),
+ write('('),
+ pp_lam(Beta),
+ write(')').
+pp_lam(var('$VAR'(N))):-
+ !, write('<I>'), write(x), write('<SUB>'), write(N), write('</SUB></I>').
+pp_lam(con(Con)):-
+ write('<B>'), write(Con), write('</B>').
+
+pp_lam_bracket(A^B):-
+ !, write('('), pp_lam(A^B), write(')').
+pp_lam_bracket(A):-
+ pp_lam(A).
+
+% pp_lam_paren(+Term:<lambdaterm>)
+% ----------------------------------------------------------------------
+% lambda term Term is pretty printed
+% ----------------------------------------------------------------------
+pp_lam_paren(Var^Alpha):-
+ !, pp_lam(Var), write('<B>. </B>'), pp_lam(Alpha).
+pp_lam_paren(con(and)@address@hidden):-
+ !, write('('), pp_lam_paren(Alpha), write(' & '), pp_lam_paren(Beta),
write(')').
+pp_lam_paren(con(or)@address@hidden):-
+ !, write('('), pp_lam_paren(Alpha), write(' <b>or</b> '),
pp_lam_paren(Beta), write(')').
+pp_lam_paren(con(not)@Alpha):-
+ !, write(' ¬ '), write('('), pp_lam_paren(Alpha), write(')').
+pp_lam_paren(address@hidden):-
+ !, pp_lam(Alpha),
+ write('('),
+ pp_lam(Beta),
+ write(')').
+pp_lam_paren(var('$VAR'(N))):-
+ !, write('<I>'), write(x), write('<SUB>'), write(N), write('</SUB></I>').
+pp_lam_paren(con(Con)):-
+ write('<B>'), write(Con), write('</B>').
+
+% pp_rule(+Rule:<rulename>)
+% ----------------------------------------------------------------------
+% rule Rule is pretty printed
+% ----------------------------------------------------------------------
+pp_rule(fe):-write('/E').
+pp_rule(be):-write('\\E').
+pp_rule(fi('$VAR'(N))):-write('/I<sup>'), write(N), write('</sup>').
+pp_rule(bi('$VAR'(N))):-write('\\I<sup>'), write(N), write('</sup>').
+pp_rule(gi('$VAR'(N))):-write('-I<sup>'), write(N), write('</sup>').
+pp_rule(qqpush('$VAR'(N))):-write('qE<sup>'), write(N), write('</sup>').
+pp_rule(qqpop('$VAR'(N))):-write(N).
+pp_rule(qqi):-write(qI).
+pp_rule(coel):-write('coE').
+pp_rule(lex):-write('L').
+pp_rule(der):-write('D').
+pp_rule(nbc):-write('NBC').
+pp_rule(qi):-write('qI').
+
+
+% Standard Utilities
+% ======================================================================
+
+member(X,[X|_]).
+member(X,[_|Xs]):-
+ member(X,Xs).
+
+append_list([],[]).
+append_list([Xs|Xss],Ys):-
+ append(Xs,Zs,Ys),
+ append_list(Xss,Zs).
+
+append([],Xs,Xs).
+append([X|Xs],Ys,[X|Zs]):-
+ append(Xs,Ys,Zs).
+
+at_least_one_member(X,[X|_]):-!.
+at_least_one_member(X,[_|Xs]):-
+ at_least_one_member(X,Xs).
+
+numbervars(X):-
+ numbervars(X,0,_).
+
+reverse([],Ws,Ws).
+reverse([W|Ws],WsAcc,WsRev):-
+ reverse(Ws,[W|WsAcc],WsRev).
+
+select(X,[X|Xs],Xs).
+select(X,[Y|Xs],[Y|Zs]):-
+ select(X,Xs,Zs).
+
+select_last([X],X,[]).
+select_last([X|Xs],Y,[X|Zs]):-
+ select_last(Xs,Y,Zs).
+
+cat_atoms(A1,A2,A3):-
+ name(A1,L1),
+ name(A2,L2),
+ append(L1,L2,L3),
+ name(A3,L3).
+
+writelist([der(Ws)|Ws2]):-
+ !, writelist(Ws), write(' '), writelist(Ws2).
+writelist([W|Ws]):-
+ write(W), write(' '),
+ writelist(Ws).
+writelist([]).
+
+write_lex_cat(File):-
+ tell(File),
+ write('<HTML><HEAD><TITLE>Natural Deduction CG
Parser</TITLE></HEAD><BODY><b> L<FONT SIZE = -1>EXICON</FONT> </b><br><br><FONT
SIZE=-1>'), nl, nl,
+ setof(lexe(W,Syn:Sem),lexentry(W,Syn,Sem),Ws),
+ !, writebreaklex(Ws),
+ nl, write('</FONT></HEAD></HTML>'), nl,
+ told.
+
+writebreaklex([]).
+writebreaklex([W|Ws]):-
+ writebreaklex(Ws,W).
+
+writebreaklex([],lexe(W,Cat)):-
+ write(W), write(' ==> '),
+ pp_cat(Cat), nl.
+writebreaklex([W2|Ws],lexe(W,Cat)):-
+ write(W), write(' ==> '),
+ pp_cat(Cat),
+ write(' <BR> '), nl,
+ writebreaklex(Ws,W2).
+
+write_lex(File):-
+ tell(File),
+ write('<HTML><HEAD><TITLE>Natural Deduction CG
Parser</TITLE></HEAD><BODY><b> L<FONT SIZE = -1>EXICON</FONT> </b><br><FONT
SIZE=-1><BR>'), nl,
+ setof(W,C^(W==>C),Ws),
+ !, writebreak(Ws),
+ nl, write('</FONT></HEAD></HTML>'), nl,
+ told.
+
+writebreak([]).
+writebreak([W|Ws]):-
+ writebreak(Ws,W).
+
+writebreak([],W):-
+ write(W), nl.
+writebreak([W2|Ws],W):-
+ write(W), write(' <BR> '), nl,
+ writebreak(Ws,W2).
+
+tt:-
+ consult(natded), consult(lexicon), consult_lex, compile_empty.
+
+mt:-
+ consult(natded), consult(lexicon), consult_lex, compile_empty, save(test3),
start_up.
+
+cmt:-
+ compile(natded), compile(lexicon), compile_lex('compilelex.pl'),
compile_empty, save(test3), start_up.
+
+
+%%% Local Variables:
+%%% mode: prolog
+%%% prolog-indent-width: 2
+%%% tab-width: 2
+%%% End:
diff --git a/test/etags/prol-src/ordsets.prolog
b/test/etags/prol-src/ordsets.prolog
new file mode 100644
index 0000000..7192129
--- /dev/null
+++ b/test/etags/prol-src/ordsets.prolog
@@ -0,0 +1,337 @@
+/* Copyright(C) 1988, Swedish Institute of Computer Science */
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% File : ORDSETS.PL
%
+% Author : Lena Flood
%
+% Updated: 9 September 1988 %
+% Purpose: Ordered set manipulation utilities
%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+:- module(ordsets, [
+ is_ordset/1,
+ list_to_ord_set/2,
+ ord_add_element/3,
+ ord_del_element/3,
+ ord_disjoint/2,
+ ord_intersect/2,
+ ord_intersection/3,
+ ord_intersection/4,
+ ord_intersection/2,
+ ord_member/2,
+ ord_seteq/2,
+ ord_setproduct/3,
+ ord_subset/2,
+ ord_subtract/3,
+ ord_symdiff/3,
+ ord_union/3,
+ ord_union/4,
+ ord_union/2
+ ]).
+
+% Adapted from shared code written by Richard A O'Keefe.
+
+% In this package, sets are represented by ordered lists with no
+% duplicates. Thus {c,r,a,f,t} would be [a,c,f,r,t]. The ordering
+% is defined by the @< family of term comparison predicates, which
+% is the ordering used by sort/2 and setof/3.
+
+% The benefit of the ordered representation is that the elementary
+% set operations can be done in time proportional to the Sum of the
+% argument sizes rather than their Product.
+
+
+
+% is_ordset(+Set)
+% is true when Set is an ordered set.
+
+is_ordset(X) :- var(X), !, fail.
+is_ordset([]).
+is_ordset([Head|Tail]) :-
+ is_ordset(Tail, Head).
+
+is_ordset(X, _) :- var(X), !, fail.
+is_ordset([], _).
+is_ordset([Head|Tail], Left) :-
+ Left @< Head,
+ is_ordset(Tail, Head).
+
+
+% list_to_ord_set(+List, ?Set)
+% is true when Set is the ordered representation of the set represented
+% by the unordered representation List.
+
+list_to_ord_set(List, Set) :-
+ sort(List, Set).
+
+
+% ord_add_element(+Set1, +Element -Set2)
+% is true when Set2 is Set1 with Element inserted in it, preserving
+% the order.
+
+ord_add_element([], Element, [Element]).
+ord_add_element([Head|Tail], Element, Set) :-
+ compare(Order, Head, Element),
+ ord_add_element(Order, Head, Tail, Element, Set).
+
+ord_add_element(<, Head, Tail, Element, [Head|Set]) :-
+ ord_add_element(Tail, Element, Set).
+ord_add_element(=, Head, Tail, _, [Head|Tail]).
+ord_add_element(>, Head, Tail, Element, [Element,Head|Tail]).
+
+
+% ord_del_element(+Set1, +Element, ?Set2)
+% is true when Set2 is Set1 but with Element removed.
+
+ord_del_element([], _, []).
+ord_del_element([Head|Tail], Element, Set) :-
+ compare(Order, Head, Element),
+ ord_del_element(Order, Head, Tail, Element, Set).
+
+ord_del_element(<, Head, Tail, Element, [Head|Set]) :-
+ ord_del_element(Tail, Element, Set).
+ord_del_element(=, _, Tail, _, Tail).
+ord_del_element(>, Head, Tail, _, [Head|Tail]).
+
+
+
+% ord_disjoint(+Set1, +Set2)
+% is true when the two ordered sets have no element in common.
+
+ord_disjoint(Set1, Set2) :-
+ \+ ord_intersect(Set1, Set2).
+
+
+
+% ord_intersect(+Set1, +Set2)
+% is true when the two ordered sets have at least one element in common.
+
+ord_intersect([Head1|Tail1], [Head2|Tail2]) :-
+ compare(Order, Head1, Head2),
+ ord_intersect(Order, Head1, Tail1, Head2, Tail2).
+
+ord_intersect(<, _, [Head1|Tail1], Head2, Tail2) :-
+ compare(Order, Head1, Head2),
+ ord_intersect(Order, Head1, Tail1, Head2, Tail2).
+ord_intersect(=, _, _, _, _).
+ord_intersect(>, Head1, Tail1, _, [Head2|Tail2]) :-
+ compare(Order, Head1, Head2),
+ ord_intersect(Order, Head1, Tail1, Head2, Tail2).
+
+
+
+% ord_intersection(+Set1, +Set2, ?Intersection)
+% is true when Intersection is the intersecton of Set1
+% and Set2, provided that Set1 and Set2 are ordered sets.
+
+ord_intersection([], _, []).
+ord_intersection([Head1|Tail1], Set2, Intersection) :-
+ ord_intersection3(Set2, Head1, Tail1, Intersection).
+
+ord_intersection3(<, _, Set1, Head2, Tail2, Intersection) :-
+ ord_intersection3(Set1, Head2, Tail2, Intersection).
+ord_intersection3(=, Head, Tail1, _, Tail2, [Head|Intersection]) :-
+ ord_intersection(Tail1, Tail2, Intersection).
+ord_intersection3(>, Head1, Tail1, _, Set2, Intersection) :-
+ ord_intersection3(Set2, Head1, Tail1, Intersection).
+
+% could be a disjunction, but is used in three places
+ord_intersection3([], _, _, []).
+ord_intersection3([Head2|Tail2], Head1, Tail1, Intersection) :-
+ compare(Order, Head1, Head2),
+ ord_intersection3(Order, Head1, Tail1, Head2, Tail2, Intersection).
+
+
+
+% ord_intersection(+Set1, +Set2, ?Intersection, ?Difference)
+% is true when Intersection is the intersection of Set1 and Set2,
+% and Differens is Set2 \ Set1 (like in ord_union/4),
+% provided that Set1 and Set2 are ordered sets.
+
+ord_intersection([], Set2, [], Set2).
+ord_intersection([Head1|Tail1], Set2, Intersection, Difference) :-
+ ord_intersection4(Set2, Head1, Tail1, Intersection, Difference).
+
+ord_intersection4(<, _, Set1, Head2, Tail2, Intersection, Difference) :-
+ ( Set1 = [], Intersection = [], Difference = [Head2|Tail2]
+ ; Set1 = [Head1|Tail1],
+ compare(Order, Head1, Head2),
+ ord_intersection4(Order, Head1, Tail1, Head2, Tail2, Intersection,
Difference)
+ ).
+ord_intersection4(=, Head, Tail1, _, Tail2, [Head|Intersection], Difference) :-
+ ord_intersection(Tail1, Tail2, Intersection, Difference).
+ord_intersection4(>, Head1, Tail1, Head2, Set2, Intersection,
[Head2|Difference]) :-
+ ord_intersection4(Set2, Head1, Tail1, Intersection, Difference).
+
+ord_intersection4([], _, _, [], []).
+ord_intersection4([Head2|Tail2], Head1, Tail1, Intersection, Difference) :-
+ compare(Order, Head1, Head2),
+ ord_intersection4(Order, Head1, Tail1, Head2, Tail2, Intersection,
Difference).
+
+
+
+% ord_intersection(+Sets, ?Intersection)
+% is true when Intersection is the ordered set representation of the
+% intersection of all the sets in Sets.
+
+ord_intersection(Sets, Intersection) :-
+ length(Sets, NumberOfSets),
+ NumberOfSets > 0,
+ ord_intersection2(NumberOfSets, Sets, Intersection, []).
+
+ord_intersection2(1, [Set|Sets], Set0, Sets0) :- !,
+ Set = Set0,
+ Sets = Sets0.
+ord_intersection2(2, [Set,Set2|Sets], Intersection, Sets0) :- !,
+ Sets = Sets0,
+ ord_intersection2(Set, Set2, Intersection).
+ord_intersection2(N, Sets0, Intersection, Sets) :-
+% N > 2,
+ A is N>>1,
+ Z is N-A,
+ ord_intersection2(A, Sets0, X, Sets1),
+ ord_intersection2(Z, Sets1, Y, Sets),
+ ord_intersection(X, Y, Intersection).
+
+
+
+% ord_member(+Elt, +Set)
+% is true when Elt is a member of Set. Suggested by Mark Johnson.
+
+ord_member(X, [E|Es]) :-
+ compare(C, X, E),
+ ord_member(C, X, Es).
+
+ord_member(=, _X, _Es).
+ord_member(>, X, [E|Es]) :-
+ compare(C, X, E),
+ ord_member(C, X, Es).
+
+
+
+% ord_seteq(+Set1, +Set2)
+% is true when the two arguments represent the same set. Since they
+% are assumed to be ordered representations, they must be identical.
+
+
+ord_seteq(Set1, Set2) :-
+ Set1 == Set2.
+
+
+% ord_setproduct(+Set1, +Set2, ?SetProduct)
+% is true when SetProduct is the cartesian product of Set1 and Set2. The
+% product is represented as pairs Elem1-Elem2, where Elem1 is an element
+% from Set1 and Elem2 is an element from Set2.
+
+ord_setproduct([], _, []).
+ord_setproduct([Head|Tail], Set, SetProduct) :-
+ ord_setproduct(Set, Head, SetProduct, Rest),
+ ord_setproduct(Tail, Set, Rest).
+
+ord_setproduct([], _, Set, Set).
+ord_setproduct([Head|Tail], X, [X-Head|TailX], Tl) :-
+ ord_setproduct(Tail, X, TailX, Tl).
+
+
+
+% ord_subset(+Set1, +Set2)
+% is true when every element of the ordered set Set1 appears in the
+% ordered set Set2.
+
+ord_subset([], _).
+ord_subset([Head1|Tail1], [Head2|Tail2]) :-
+ compare(Order, Head1, Head2),
+ ord_subset(Order, Head1, Tail1, Tail2).
+
+ord_subset(=, _, Tail1, Tail2) :-
+ ord_subset(Tail1, Tail2).
+ord_subset(>, Head1, Tail1, [Head2|Tail2]) :-
+ compare(Order, Head1, Head2),
+ ord_subset(Order, Head1, Tail1, Tail2).
+
+
+
+% ord_subtract(+Set1, +Set2, ?Difference)
+% is true when Difference contains all and only the elements of Set1
+% which are not also in Set2, i.e. Set1 \ Set2.
+
+ord_subtract(Set1, Set2, Union) :-
+ prolog:subtract(Set1, Set2, Union).
+
+
+
+% ord_symdiff(+Set1, +Set2, ?Difference)
+% is true when Difference is the symmetric difference of Set1 and Set2.
+
+ord_symdiff([], Set2, Set2).
+ord_symdiff([Head1|Tail1], Set2, Symdiff) :-
+ ord_symdiff(Set2, Head1, Tail1, Symdiff).
+
+ord_symdiff(<, Head1, Set1, Head2, Tail2, [Head1|Symdiff]) :-
+ ord_symdiff(Set1, Head2, Tail2, Symdiff).
+ord_symdiff(=, _, Tail1, _, Tail2, Symdiff) :-
+ ord_symdiff(Tail1, Tail2, Symdiff).
+ord_symdiff(>, Head1, Tail1, Head2, Set2, [Head2|Symdiff]) :-
+ ord_symdiff(Set2, Head1, Tail1, Symdiff).
+
+% could be a disjunction, but is used in three places
+ord_symdiff([], Head1, Tail1, [Head1|Tail1]).
+ord_symdiff([Head2|Tail2], Head1, Tail1, Symdiff) :-
+ compare(Order, Head1, Head2),
+ ord_symdiff(Order, Head1, Tail1, Head2, Tail2, Symdiff).
+
+
+
+% ord_union(+Set1, +Set2, ?Union)
+% is true when Union is the union of Set1 and Set2. Note that when
+% something occurs in both sets, we want to retain only one copy.
+
+ord_union(Set1, Set2, Union) :-
+ prolog:merge(Set1, Set2, Union).
+
+
+
+% ord_union(+Set1, +Set2, ?Union, ?New)
+% is true when Union is the union of Set1 and Set2, and New is
+% Set2 \ Set1. This is useful if you
+% are accumulating members of a set and you want to process new
+% elements as they are added to the set.
+
+ord_union([], Set2, Set2, Set2).
+ord_union([Head1|Tail1], Set2, Union, Difference) :-
+ ord_union4(Set2, Head1, Tail1, Union, Difference).
+
+ord_union4(<, Head, Set1, Head2, Tail2, [Head|Union], Difference) :-
+ ( Set1 = [], Union = [Head2|Tail2], Difference = [Head2|Tail2]
+ ; Set1 = [Head1|Tail1],
+ compare(Order, Head1, Head2),
+ ord_union4(Order, Head1, Tail1, Head2, Tail2, Union, Difference)
+ ).
+ord_union4(=, Head, Tail1, _, Tail2, [Head|Union], Difference) :-
+ ord_union(Tail1, Tail2, Union, Difference).
+ord_union4(>, Head1, Tail1, Head2, Set2, [Head2|Union], [Head2|Difference]) :-
+ ord_union4(Set2, Head1, Tail1, Union, Difference).
+
+ord_union4([], Head1, Tail1, [Head1|Tail1], []).
+ord_union4([Head2|Tail2], Head1, Tail1, Union, Difference) :-
+ compare(Order, Head1, Head2),
+ ord_union4(Order, Head1, Tail1, Head2, Tail2, Union, Difference).
+
+
+
+% ord_union(+Sets, ?Union)
+% is true when Union is the union of all the sets in Sets.
+
+ord_union([], Union) :- !, Union = [].
+ord_union(Sets, Union) :-
+ length(Sets, NumberOfSets),
+ ord_union_all(NumberOfSets, Sets, Union, []).
+
+ord_union_all(1, [Set|Sets], Set, Sets) :- !.
+ord_union_all(2, [Set,Set2|Sets], Union, Sets) :- !,
+ ord_union(Set, Set2, Union).
+ord_union_all(N, Sets0, Union, Sets) :-
+ A is N>>1,
+ Z is N-A,
+ ord_union_all(A, Sets0, X, Sets1),
+ ord_union_all(Z, Sets1, Y, Sets),
+ ord_union(X, Y, Union).
diff --git a/test/etags/ps-src/rfc1245.ps b/test/etags/ps-src/rfc1245.ps
new file mode 100644
index 0000000..ad2244f
--- /dev/null
+++ b/test/etags/ps-src/rfc1245.ps
@@ -0,0 +1,2085 @@
+%!
+%%BoundingBox: (atend)
+%%Pages: (atend)
+%%DocumentFonts: (atend)
+%%EndComments
+%
+% FrameMaker PostScript Prolog 2.0, for use with FrameMaker 2.0
+% Copyright (c) 1986,87,89 by Frame Technology, Inc. All rights reserved.
+%
+% Known Problems:
+% Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
+/FMversion (2.0) def
+% Set up Color vs. Black-and-White
+ /FMPrintInColor systemdict /colorimage known def
+% Uncomment this line to force b&w on color printer
+% /FMPrintInColor false def
+/FrameDict 190 dict def
+systemdict /errordict known not {/errordict 10 dict def
+ errordict /rangecheck {stop} put} if
+% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
+FrameDict /tmprangecheck errordict /rangecheck get put
+errordict /rangecheck {FrameDict /bug true put} put
+FrameDict /bug false put
+mark
+% Some PS machines read past the CR, so keep the following 3 lines together!
+currentfile 5 string readline
+00
+0000000000
+cleartomark
+errordict /rangecheck FrameDict /tmprangecheck get put
+FrameDict /bug get {
+ /readline {
+ /gstring exch def
+ /gfile exch def
+ /gindex 0 def
+ {
+ gfile read pop
+ dup 10 eq {exit} if
+ dup 13 eq {exit} if
+ gstring exch gindex exch put
+ /gindex gindex 1 add def
+ } loop
+ pop
+ gstring 0 gindex getinterval true
+ } def
+ } if
+/FMVERSION {
+ FMversion ne {
+ /Times-Roman findfont 18 scalefont setfont
+ 100 100 moveto
+ (FrameMaker version does not match postscript_prolog!)
+ dup =
+ show showpage
+ } if
+ } def
+/FMLOCAL {
+ FrameDict begin
+ 0 def
+ end
+ } def
+ /gstring FMLOCAL
+ /gfile FMLOCAL
+ /gindex FMLOCAL
+ /orgxfer FMLOCAL
+ /orgproc FMLOCAL
+ /organgle FMLOCAL
+ /orgfreq FMLOCAL
+ /yscale FMLOCAL
+ /xscale FMLOCAL
+ /manualfeed FMLOCAL
+ /paperheight FMLOCAL
+ /paperwidth FMLOCAL
+/FMDOCUMENT {
+ array /FMfonts exch def
+ /#copies exch def
+ FrameDict begin
+ 0 ne dup {setmanualfeed} if
+ /manualfeed exch def
+ /paperheight exch def
+ /paperwidth exch def
+ setpapername
+ manualfeed {true} {papersize} ifelse
+ {manualpapersize} {false} ifelse
+ {desperatepapersize} if
+ /yscale exch def
+ /xscale exch def
+ currenttransfer cvlit /orgxfer exch def
+ currentscreen cvlit /orgproc exch def
+ /organgle exch def /orgfreq exch def
+ end
+ } def
+ /pagesave FMLOCAL
+ /orgmatrix FMLOCAL
+ /landscape FMLOCAL
+/FMBEGINPAGE {
+ FrameDict begin
+ /pagesave save def
+ 3.86 setmiterlimit
+ /landscape exch 0 ne def
+ landscape {
+ 90 rotate 0 exch neg translate pop
+ }
+ {pop pop}
+ ifelse
+ xscale yscale scale
+ /orgmatrix matrix def
+ gsave
+ } def
+/FMENDPAGE {
+ grestore
+ pagesave restore
+ end
+ showpage
+ } def
+/FMDEFINEFONT {
+ FrameDict begin
+ findfont
+ ReEncode
+ 2 index exch
+ definefont exch
+ scalefont
+ FMfonts 3 1 roll
+ put
+ end
+ } bind def
+/FMNORMALIZEGRAPHICS {
+ newpath
+ 0.0 0.0 moveto
+ 1 setlinewidth
+ 0 setlinecap
+ 0 0 0 sethsbcolor
+ 0 setgray
+ } bind def
+ /fx FMLOCAL
+ /fy FMLOCAL
+ /fh FMLOCAL
+ /fw FMLOCAL
+ /llx FMLOCAL
+ /lly FMLOCAL
+ /urx FMLOCAL
+ /ury FMLOCAL
+/FMBEGINEPSF {
+ end
+ /FMEPSF save def
+ /showpage {} def
+ FMNORMALIZEGRAPHICS
+ [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall
+ fx fy translate
+ rotate
+ fw urx llx sub div fh ury lly sub div scale
+ llx neg lly neg translate
+ } bind def
+/FMENDEPSF {
+ FMEPSF restore
+ FrameDict begin
+ } bind def
+FrameDict begin
+/setmanualfeed {
+%%BeginFeature *ManualFeed True
+ statusdict /manualfeed true put
+%%EndFeature
+ } def
+/max {2 copy lt {exch} if pop} bind def
+/min {2 copy gt {exch} if pop} bind def
+/inch {72 mul} def
+/pagedimen {
+ paperheight sub abs 16 lt exch
+ paperwidth sub abs 16 lt and
+ {/papername exch def} {pop} ifelse
+ } def
+ /papersizedict FMLOCAL
+/setpapername {
+ /papersizedict 14 dict def
+ papersizedict begin
+ /papername /unknown def
+ /Letter 8.5 inch 11.0 inch pagedimen
+ /LetterSmall 7.68 inch 10.16 inch pagedimen
+ /Tabloid 11.0 inch 17.0 inch pagedimen
+ /Ledger 17.0 inch 11.0 inch pagedimen
+ /Legal 8.5 inch 14.0 inch pagedimen
+ /Statement 5.5 inch 8.5 inch pagedimen
+ /Executive 7.5 inch 10.0 inch pagedimen
+ /A3 11.69 inch 16.5 inch pagedimen
+ /A4 8.26 inch 11.69 inch pagedimen
+ /A4Small 7.47 inch 10.85 inch pagedimen
+ /B4 10.125 inch 14.33 inch pagedimen
+ /B5 7.16 inch 10.125 inch pagedimen
+ end
+ } def
+/papersize {
+ papersizedict begin
+ /Letter {lettertray} def
+ /LetterSmall {lettertray lettersmall} def
+ /Tabloid {11x17tray} def
+ /Ledger {ledgertray} def
+ /Legal {legaltray} def
+ /Statement {statementtray} def
+ /Executive {executivetray} def
+ /A3 {a3tray} def
+ /A4 {a4tray} def
+ /A4Small {a4tray a4small} def
+ /B4 {b4tray} def
+ /B5 {b5tray} def
+ /unknown {unknown} def
+ papersizedict dup papername known {papername} {/unknown} ifelse get
+ end
+ /FMdicttop countdictstack 1 add def
+ statusdict begin stopped end
+ countdictstack -1 FMdicttop {pop end} for
+ } def
+/manualpapersize {
+ papersizedict begin
+ /Letter {letter} def
+ /LetterSmall {lettersmall} def
+ /Tabloid {11x17} def
+ /Ledger {ledger} def
+ /Legal {legal} def
+ /Statement {statement} def
+ /Executive {executive} def
+ /A3 {a3} def
+ /A4 {a4} def
+ /A4Small {a4small} def
+ /B4 {b4} def
+ /B5 {b5} def
+ /unknown {unknown} def
+ papersizedict dup papername known {papername} {/unknown} ifelse get
+ end
+ stopped
+ } def
+/desperatepapersize {
+ statusdict /setpageparams known
+ {
+ paperwidth paperheight 0 1
+ statusdict begin
+ {setpageparams} stopped pop
+ end
+ } if
+ } def
+/savematrix {
+ orgmatrix currentmatrix pop
+ } bind def
+/restorematrix {
+ orgmatrix setmatrix
+ } bind def
+/dmatrix matrix def
+/dpi 72 0 dmatrix defaultmatrix dtransform
+ dup mul exch dup mul add sqrt def
+/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
+/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
+/DiacriticEncoding [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
+/numbersign /dollar /percent /ampersand /quotesingle /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon
+/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
+/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
+/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
+/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
+/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
+/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
+/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
+/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
+/udieresis /dagger /.notdef /cent /sterling /section /bullet
+/paragraph /germandbls /registered /copyright /trademark /acute
+/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
+/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
+/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
+/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
+/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
+/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
+/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
+/periodcentered /quotesinglbase /quotedblbase /perthousand
+/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
+/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
+/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
+/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
+] def
+/ReEncode {
+ dup
+ length
+ dict begin
+ {
+ 1 index /FID ne
+ {def}
+ {pop pop} ifelse
+ } forall
+ Encoding StandardEncoding eq
+ {
+ /Encoding DiacriticEncoding def
+ }if
+ currentdict
+ end
+ } bind def
+/graymode true def
+ /bwidth FMLOCAL
+ /bpside FMLOCAL
+ /bstring FMLOCAL
+ /onbits FMLOCAL
+ /offbits FMLOCAL
+ /xindex FMLOCAL
+ /yindex FMLOCAL
+ /x FMLOCAL
+ /y FMLOCAL
+/setpattern {
+ /bwidth exch def
+ /bpside exch def
+ /bstring exch def
+ /onbits 0 def /offbits 0 def
+ freq sangle landscape {90 add} if
+ {/y exch def
+ /x exch def
+ /xindex x 1 add 2 div bpside mul cvi def
+ /yindex y 1 add 2 div bpside mul cvi def
+ bstring yindex bwidth mul xindex 8 idiv add get
+ 1 7 xindex 8 mod sub bitshift and 0 ne
+ {/onbits onbits 1 add def 1}
+ {/offbits offbits 1 add def 0}
+ ifelse
+ }
+ setscreen
+ {} settransfer
+ offbits offbits onbits add div FMsetgray
+ /graymode false def
+ } bind def
+/grayness {
+ FMsetgray
+ graymode not {
+ /graymode true def
+ orgxfer cvx settransfer
+ orgfreq organgle orgproc cvx setscreen
+ } if
+ } bind def
+ /HUE FMLOCAL
+ /SAT FMLOCAL
+ /BRIGHT FMLOCAL
+ /Colors FMLOCAL
+FMPrintInColor
+
+ {
+ /HUE 0 def
+ /SAT 0 def
+ /BRIGHT 0 def
+ % array of arrays Hue and Sat values for the separations [HUE BRIGHT]
+ /Colors
+ [[0 0 ] % black
+ [0 0 ] % white
+ [0.00 1.0] % red
+ [0.37 1.0] % green
+ [0.60 1.0] % blue
+ [0.50 1.0] % cyan
+ [0.83 1.0] % magenta
+ [0.16 1.0] % comment / yellow
+ ] def
+
+ /BEGINBITMAPCOLOR {
+ BITMAPCOLOR} def
+ /BEGINBITMAPCOLORc {
+ BITMAPCOLORc} def
+ /K {
+ Colors exch get dup
+ 0 get /HUE exch store
+ 1 get /BRIGHT exch store
+ HUE 0 eq BRIGHT 0 eq and
+ {1.0 SAT sub setgray}
+ {HUE SAT BRIGHT sethsbcolor}
+ ifelse
+ } def
+ /FMsetgray {
+ /SAT exch 1.0 exch sub store
+ HUE 0 eq BRIGHT 0 eq and
+ {1.0 SAT sub setgray}
+ {HUE SAT BRIGHT sethsbcolor}
+ ifelse
+ } bind def
+ }
+
+ {
+ /BEGINBITMAPCOLOR {
+ BITMAPGRAY} def
+ /BEGINBITMAPCOLORc {
+ BITMAPGRAYc} def
+ /FMsetgray {setgray} bind def
+ /K {
+ pop
+ } def
+ }
+ifelse
+/normalize {
+ transform round exch round exch itransform
+ } bind def
+/dnormalize {
+ dtransform round exch round exch idtransform
+ } bind def
+/lnormalize {
+ 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
+ } bind def
+/H {
+ lnormalize setlinewidth
+ } bind def
+/Z {
+ setlinecap
+ } bind def
+/X {
+ fillprocs exch get exec
+ } bind def
+/V {
+ gsave eofill grestore
+ } bind def
+/N {
+ stroke
+ } bind def
+/M {newpath moveto} bind def
+/E {lineto} bind def
+/D {curveto} bind def
+/O {closepath} bind def
+ /n FMLOCAL
+/L {
+ /n exch def
+ newpath
+ normalize
+ moveto
+ 2 1 n {pop normalize lineto} for
+ } bind def
+/Y {
+ L
+ closepath
+ } bind def
+ /x1 FMLOCAL
+ /x2 FMLOCAL
+ /y1 FMLOCAL
+ /y2 FMLOCAL
+ /rad FMLOCAL
+/R {
+ /y2 exch def
+ /x2 exch def
+ /y1 exch def
+ /x1 exch def
+ x1 y1
+ x2 y1
+ x2 y2
+ x1 y2
+ 4 Y
+ } bind def
+/RR {
+ /rad exch def
+ normalize
+ /y2 exch def
+ /x2 exch def
+ normalize
+ /y1 exch def
+ /x1 exch def
+ newpath
+ x1 y1 rad add moveto
+ x1 y2 x2 y2 rad arcto
+ x2 y2 x2 y1 rad arcto
+ x2 y1 x1 y1 rad arcto
+ x1 y1 x1 y2 rad arcto
+ closepath
+ 16 {pop} repeat
+ } bind def
+/C {
+ grestore
+ gsave
+ R
+ clip
+ } bind def
+/U {
+ grestore
+ gsave
+ } bind def
+/F {
+ FMfonts exch get
+ setfont
+ } bind def
+/T {
+ moveto show
+ } bind def
+/RF {
+ rotate
+ 0 ne {-1 1 scale} if
+ } bind def
+/TF {
+ gsave
+ moveto
+ RF
+ show
+ grestore
+ } bind def
+/P {
+ moveto
+ 0 32 3 2 roll widthshow
+ } bind def
+/PF {
+ gsave
+ moveto
+ RF
+ 0 32 3 2 roll widthshow
+ grestore
+ } bind def
+/S {
+ moveto
+ 0 exch ashow
+ } bind def
+/SF {
+ gsave
+ moveto
+ RF
+ 0 exch ashow
+ grestore
+ } bind def
+/B {
+ moveto
+ 0 32 4 2 roll 0 exch awidthshow
+ } bind def
+/BF {
+ gsave
+ moveto
+ RF
+ 0 32 4 2 roll 0 exch awidthshow
+ grestore
+ } bind def
+ /x FMLOCAL
+ /y FMLOCAL
+ /dx FMLOCAL
+ /dy FMLOCAL
+ /dl FMLOCAL
+ /t FMLOCAL
+ /t2 FMLOCAL
+ /Cos FMLOCAL
+ /Sin FMLOCAL
+ /r FMLOCAL
+/W {
+ dnormalize
+ /dy exch def
+ /dx exch def
+ normalize
+ /y exch def
+ /x exch def
+ /dl dx dx mul dy dy mul add sqrt def
+ dl 0.0 gt {
+ /t currentlinewidth def
+ savematrix
+ /Cos dx dl div def
+ /Sin dy dl div def
+ /r [Cos Sin Sin neg Cos 0.0 0.0] def
+ /t2 t 2.5 mul 3.5 max def
+ newpath
+ x y translate
+ r concat
+ 0.0 0.0 moveto
+ dl t 2.7 mul sub 0.0 rlineto
+ stroke
+ restorematrix
+ x dx add y dy add translate
+ r concat
+ t 0.67 mul setlinewidth
+ t 1.61 mul neg 0.0 translate
+ 0.0 0.0 moveto
+ t2 1.7 mul neg t2 2.0 div moveto
+ 0.0 0.0 lineto
+ t2 1.7 mul neg t2 2.0 div neg lineto
+ stroke
+ t setlinewidth
+ restorematrix
+ } if
+ } bind def
+/G {
+ gsave
+ newpath
+ normalize translate 0.0 0.0 moveto
+ dnormalize scale
+ 0.0 0.0 1.0 5 3 roll arc
+ closepath fill
+ grestore
+ } bind def
+/A {
+ gsave
+ savematrix
+ newpath
+ 2 index 2 div add exch 3 index 2 div sub exch
+ normalize 2 index 2 div sub exch 3 index 2 div add exch
+ translate
+ scale
+ 0.0 0.0 1.0 5 3 roll arc
+ restorematrix
+ stroke
+ grestore
+ } bind def
+ /x FMLOCAL
+ /y FMLOCAL
+ /w FMLOCAL
+ /h FMLOCAL
+ /xx FMLOCAL
+ /yy FMLOCAL
+ /ww FMLOCAL
+ /hh FMLOCAL
+ /FMsaveobject FMLOCAL
+ /FMoptop FMLOCAL
+ /FMdicttop FMLOCAL
+/BEGINPRINTCODE {
+ /FMdicttop countdictstack 1 add def
+ /FMoptop count 4 sub def
+ /FMsaveobject save def
+ userdict begin
+ /showpage {} def
+ FMNORMALIZEGRAPHICS
+ 3 index neg 3 index neg translate
+ } bind def
+/ENDPRINTCODE {
+ count -1 FMoptop {pop pop} for
+ countdictstack -1 FMdicttop {pop end} for
+ FMsaveobject restore
+ } bind def
+/gn {
+ 0
+ { 46 mul
+ cf read pop
+ 32 sub
+ dup 46 lt {exit} if
+ 46 sub add
+ } loop
+ add
+ } bind def
+ /str FMLOCAL
+/cfs {
+ /str sl string def
+ 0 1 sl 1 sub {str exch val put} for
+ str def
+ } bind def
+/ic [
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+ 0
+ {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
+ {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
+ {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
+ {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
+ {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
+ {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
+ {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
+ {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
+ {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
+ ] def
+ /sl FMLOCAL
+ /val FMLOCAL
+ /ws FMLOCAL
+ /im FMLOCAL
+ /bs FMLOCAL
+ /cs FMLOCAL
+ /len FMLOCAL
+ /pos FMLOCAL
+/ms {
+ /sl exch def
+ /val 255 def
+ /ws cfs
+ /im cfs
+ /val 0 def
+ /bs cfs
+ /cs cfs
+ } bind def
+400 ms
+/ip {
+ is
+ 0
+ cf cs readline pop
+ { ic exch get exec
+ add
+ } forall
+ pop
+
+ } bind def
+/wh {
+ /len exch def
+ /pos exch def
+ ws 0 len getinterval im pos len getinterval copy pop
+ pos len
+ } bind def
+/bl {
+ /len exch def
+ /pos exch def
+ bs 0 len getinterval im pos len getinterval copy pop
+ pos len
+ } bind def
+/s1 1 string def
+/fl {
+ /len exch def
+ /pos exch def
+ /val cf s1 readhexstring pop 0 get def
+ pos 1 pos len add 1 sub {im exch val put} for
+ pos len
+ } bind def
+/hx {
+ 3 copy getinterval
+ cf exch readhexstring pop pop
+ } bind def
+ /h FMLOCAL
+ /w FMLOCAL
+ /d FMLOCAL
+ /lb FMLOCAL
+ /bitmapsave FMLOCAL
+ /is FMLOCAL
+ /cf FMLOCAL
+/wbytes {
+ dup
+ 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse
+ } bind def
+/BEGINBITMAPBWc {
+ 1 {} COMMONBITMAPc
+ } bind def
+/BEGINBITMAPGRAYc {
+ 8 {} COMMONBITMAPc
+ } bind def
+/BEGINBITMAP2BITc {
+ 2 {} COMMONBITMAPc
+ } bind def
+/COMMONBITMAPc {
+ /r exch def
+ /d exch def
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /lb w d wbytes def
+ sl lb lt {lb ms} if
+ /bitmapsave save def
+ r
+ /is im 0 lb getinterval def
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ w h d [w 0 0 h neg 0 h]
+ {ip} image
+ bitmapsave restore
+ grestore
+ } bind def
+/BEGINBITMAPBW {
+ 1 {} COMMONBITMAP
+ } bind def
+/BEGINBITMAPGRAY {
+ 8 {} COMMONBITMAP
+ } bind def
+/BEGINBITMAP2BIT {
+ 2 {} COMMONBITMAP
+ } bind def
+/COMMONBITMAP {
+ /r exch def
+ /d exch def
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /bitmapsave save def
+ r
+ /is w d wbytes string def
+ /cf currentfile def
+ w h d [w 0 0 h neg 0 h]
+ {cf is readhexstring pop} image
+ bitmapsave restore
+ grestore
+ } bind def
+ /proc1 FMLOCAL
+ /proc2 FMLOCAL
+ /newproc FMLOCAL
+/Fmcc {
+ /proc2 exch cvlit def
+ /proc1 exch cvlit def
+ /newproc proc1 length proc2 length add array def
+ newproc 0 proc1 putinterval
+ newproc proc1 length proc2 putinterval
+ newproc cvx
+} bind def
+/ngrayt 256 array def
+/nredt 256 array def
+/nbluet 256 array def
+/ngreent 256 array def
+ /gryt FMLOCAL
+ /blut FMLOCAL
+ /grnt FMLOCAL
+ /redt FMLOCAL
+ /indx FMLOCAL
+ /cynu FMLOCAL
+ /magu FMLOCAL
+ /yelu FMLOCAL
+ /k FMLOCAL
+ /u FMLOCAL
+/colorsetup {
+ currentcolortransfer
+ /gryt exch def
+ /blut exch def
+ /grnt exch def
+ /redt exch def
+ 0 1 255 {
+ /indx exch def
+ /cynu 1 red indx get 255 div sub def
+ /magu 1 green indx get 255 div sub def
+ /yelu 1 blue indx get 255 div sub def
+ /k cynu magu min yelu min def
+ /u k currentundercolorremoval exec def
+ nredt indx 1 0 cynu u sub max sub redt exec put
+ ngreent indx 1 0 magu u sub max sub grnt exec put
+ nbluet indx 1 0 yelu u sub max sub blut exec put
+ ngrayt indx 1 k currentblackgeneration exec sub gryt exec put
+ } for
+ {255 mul cvi nredt exch get}
+ {255 mul cvi ngreent exch get}
+ {255 mul cvi nbluet exch get}
+ {255 mul cvi ngrayt exch get}
+ setcolortransfer
+ {pop 0} setundercolorremoval
+ {} setblackgeneration
+ } bind def
+ /tran FMLOCAL
+/fakecolorsetup {
+ /tran 256 string def
+ 0 1 255 {/indx exch def
+ tran indx
+ red indx get 77 mul
+ green indx get 151 mul
+ blue indx get 28 mul
+ add add 256 idiv put} for
+ currenttransfer
+ {255 mul cvi tran exch get 255.0 div}
+ exch Fmcc settransfer
+} bind def
+/BITMAPCOLOR {
+ /d 8 def
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /bitmapsave save def
+ colorsetup
+ /is w d wbytes string def
+ /cf currentfile def
+ w h d [w 0 0 h neg 0 h]
+ {cf is readhexstring pop} {is} {is} true 3 colorimage
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPCOLORc {
+ /d 8 def
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /lb w d wbytes def
+ sl lb lt {lb ms} if
+ /bitmapsave save def
+ colorsetup
+ /is im 0 lb getinterval def
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ w h d [w 0 0 h neg 0 h]
+ {ip} {is} {is} true 3 colorimage
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPGRAY {
+ 8 {fakecolorsetup} COMMONBITMAP
+ } bind def
+/BITMAPGRAYc {
+ 8 {fakecolorsetup} COMMONBITMAPc
+ } bind def
+/ENDBITMAP {
+ } bind def
+end
+%%EndProlog
+%%BeginSetup
+(2.0) FMVERSION
+1 1 612 792 0 1 7 FMDOCUMENT
+/fillprocs 32 array def
+fillprocs 0 { 0.000000 grayness } put
+fillprocs 1 { 0.100000 grayness } put
+fillprocs 2 { 0.300000 grayness } put
+fillprocs 3 { 0.500000 grayness } put
+fillprocs 4 { 0.700000 grayness } put
+fillprocs 5 { 0.900000 grayness } put
+fillprocs 6 { 0.970000 grayness } put
+fillprocs 7 { 1.000000 grayness } put
+fillprocs 8 {<0f87c3e1f0783c1e> 8 1 setpattern } put
+fillprocs 9 {<0f1e3c78f0e1c387> 8 1 setpattern } put
+fillprocs 10 {<cccccccccccccccc> 8 1 setpattern } put
+fillprocs 11 {<ffff0000ffff0000> 8 1 setpattern } put
+fillprocs 12 {<8142241818244281> 8 1 setpattern } put
+fillprocs 13 {<8040201008040201> 8 1 setpattern } put
+fillprocs 14 {<03060c183060c081> 8 1 setpattern } put
+fillprocs 15 {} put
+fillprocs 16 { 1.000000 grayness } put
+fillprocs 17 { 0.900000 grayness } put
+fillprocs 18 { 0.700000 grayness } put
+fillprocs 19 { 0.500000 grayness } put
+fillprocs 20 { 0.300000 grayness } put
+fillprocs 21 { 0.100000 grayness } put
+fillprocs 22 { 0.030000 grayness } put
+fillprocs 23 { 0.000000 grayness } put
+fillprocs 24 {<f0783c1e0f87c3e1> 8 1 setpattern } put
+fillprocs 25 {<f0e1c3870f1e3c78> 8 1 setpattern } put
+fillprocs 26 {<3333333333333333> 8 1 setpattern } put
+fillprocs 27 {<0000ffff0000ffff> 8 1 setpattern } put
+fillprocs 28 {<7ebddbe7e7dbbd7e> 8 1 setpattern } put
+fillprocs 29 {<7fbfdfeff7fbfdfe> 8 1 setpattern } put
+fillprocs 30 {<fcf9f3e7cf9f3f7e> 8 1 setpattern } put
+fillprocs 31 {} put
+%%EndSetup
+0 12 /Times-Roman FMDEFINEFONT
+1 24 /Times-Roman FMDEFINEFONT
+2 16 /Times-Bold FMDEFINEFONT
+%%Page: "1" 1
+%%BeginPaperSize: Letter
+%%EndPaperSize
+612 792 0 FMBEGINPAGE
+72 675 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(Network Working Group) 72 712 T
+(J. Moy, Editor) 470.7 712 T
+(Request for Comments: 1245) 72 698 T
+(Proteon, Inc.) 478.38 698 T
+(July 1991) 493.02 684 T
+72 72 540 83.95 R
+7 X
+V
+0 X
+([Moy]) 72 75.95 T
+([Page 1]) 499.7 75.95 T
+72 117 540 603 R
+7 X
+V
+1 F
+0 X
+(OSPF protocol analysis) 192.72 587 T
+2 F
+(Status of this Memo) 72 514.33 T
+0 F
+-0.23 (This memo provides information for the Internet community) 72 487 P
+-0.23 (. It does not specify any Internet stan-) 360.42 487 P
+(dard. Distribution of this memo is unlimited.) 72 473 T
+2 F
+(Abstract) 72 447 T
+0 F
+-0.11 (This is the \336rst of two reports on the OSPF protocol. These reports
are required by the IAB/IESG ) 72 421 P
+(in order for an Internet routing protocol to advance to Draft Standard
Status. OSPF is a TCP/IP ) 72 407 T
+-0.28 (routing protocol, designed to be used internal to an Autonomous System
\050in other words, OSPF is ) 72 393 P
+(an Interior Gateway Protocol\051.) 72 379 T
+-0.09 (V) 72 353 P
+-0.09 (ersion 1 of the OSPF protocol was published in RFC 1) 79.33 353 P
+-0.09 (131. Since then OSPF version 2 has been ) 339.85 353 P
+-0.22 (developed. V) 72 339 P
+-0.22 (ersion 2 has been documented in RFC 1247. The changes between version 1
and ver-) 134.4 339 P
+-0 (sion 2 of the OSPF protocol are explained in Appendix F of RFC 1247. It is
OSPF V) 72 325 P
+-0 (ersion 2 that ) 477.72 325 P
+(is the subject of this report.) 72 311 T
+(This report attempts to summarize the key features of OSPF V2. It also
attempts to analyze how ) 72 285 T
+(the protocol will perform and scale in the Internet.) 72 271 T
+(Please send comments to address@hidden) 72 245 T
+(.umd.edu.) 258.27 245 T
+FMENDPAGE
+%%EndPage: "1" 2
+1 10 /Times-Roman FMDEFINEFONT
+%%Page: "2" 2
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 2]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(T) 72 673.33 T
+(able of Contents) 81.19 673.33 T
+0 F
+(1.0) 72 650 T
+(Introduction) 108 650 T
+(..............................................................................................................)
167.91 650 T
+(3) 498 650 T
+1 F
+(1.1) 108 635.33 T
+(Acknowledgments) 144 635.33 T
+(...............................................................................................................)
219.88 635.33 T
+(3) 499 635.33 T
+0 F
+(2.0) 72 616 T
+(Key features of the OSPF protocol) 108 616 T
+(..........................................................................)
275.85 616 T
+(4) 498 616 T
+(3.0) 72 596 T
+(Cost of the protocol) 108 596 T
+(..................................................................................................)
203.89 596 T
+(7) 498 596 T
+1 F
+(3.1) 108 581.33 T
+( Operational data) 144 581.33 T
+(.................................................................................................................)
214.88 581.33 T
+(7) 499 581.33 T
+(3.2) 108 567.33 T
+(Link bandwidth) 144 567.33 T
+(...................................................................................................................)
209.88 567.33 T
+(9) 499 567.33 T
+(3.3) 108 553.33 T
+(Router memory) 144 553.33 T
+(....................................................................................................................)
207.39 553.33 T
+(9) 499 553.33 T
+(3.4) 108 539.33 T
+(Router CPU) 144 539.33 T
+(.......................................................................................................................)
194.89 539.33 T
+(10) 494.01 539.33 T
+(3.5) 108 525.33 T
+(Role of Designated Router) 144 525.33 T
+(................................................................................................)
252.36 525.33 T
+(1) 494.38 525.33 T
+(1) 499 525.33 T
+(3.6) 108 511.33 T
+(Summary) 144 511.33 T
+(...........................................................................................................................)
184.9 511.33 T
+(1) 494.38 511.33 T
+(1) 499 511.33 T
+0 F
+(4.0) 72 492 T
+(Suitable environments) 108 492 T
+(............................................................................................)
215.88 492 T
+(13) 492.01 492 T
+(5.0) 72 472 T
+(Unsuitable environments) 108 472 T
+(.......................................................................................)
230.87 472 T
+(13) 492.01 472 T
+(6.0) 72 452 T
+(Reference Documents) 108 452 T
+(............................................................................................)
215.88 452 T
+(14) 492.01 452 T
+FMENDPAGE
+%%EndPage: "2" 3
+3 14 /Times-Bold FMDEFINEFONT
+%%Page: "3" 3
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 3]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(1.0 Intr) 72 673.33 T
+(oduction) 127.23 673.33 T
+0 F
+-0.02 (This document addresses, for OSPF V2, the requirements set forth by the
IAB/IESG for an Inter-) 72 646 P
+-0.19 (net routing protocol to advance to Draft Standard state. This
requirements are brie\337y summarized ) 72 632 P
+(below) 72 618 T
+(. The remaining sections of this report document how OSPF V2 satis\336es
these require-) 100.53 618 T
+(ments:) 72 604 T
+(\245) 72 584 T
+(What are the key features and algorithms of the protocol?) 85.54 584 T
+(\245) 72 564 T
+(How much link bandwidth, router memory and router CPU cycles does the
protocol consume ) 85.54 564 T
+(under normal conditions?) 85.54 550 T
+(\245) 72 530 T
+(For these metrics, how does the usage scale as the routing environment grows?
This should ) 85.54 530 T
+(include topologies at least an order of magnitude lar) 85.54 516 T
+(ger than the current environment.) 335.14 516 T
+(\245) 72 496 T
+(What are the limits of the protocol for these metrics? \050i.e., when will
the routing protocol ) 85.54 496 T
+(break?\051 ) 85.54 482 T
+(\245) 72 462 T
+(For what environments is the protocol well suited, and for what is it not
suitable? ) 85.54 462 T
+3 F
+(1.1 Acknowledgments) 72 428.67 T
+0 F
+-0.03 (The OSPF protocol has been developed by the OSPF W) 72 402 P
+-0.03 (orking Group of the Internet Engineering ) 339.64 402 P
+(T) 72 388 T
+(ask Force. ) 78.49 388 T
+FMENDPAGE
+%%EndPage: "3" 4
+4 12 /Times-Bold FMDEFINEFONT
+%%Page: "4" 4
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 4]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(2.0 Key featur) 72 673.33 T
+(es of the OSPF pr) 172.97 673.33 T
+(otocol) 293.49 673.33 T
+0 F
+(This section summarizes the key features of the OSPF protocol. OSPF is an) 72
646 T
+4 F
+( Internal gateway ) 434.78 646 T
+-0.2 (pr) 72 632 P
+-0.2 (otocol) 83.78 632 P
+0 F
+-0.2 (; it is designed to be used internal to a single Autonomous System. OSPF
uses) 114.42 632 P
+4 F
+-0.2 ( link-state ) 486.43 632 P
+-0.36 (or SPF-based) 72 618 P
+0 F
+-0.36 ( technology \050as compared to the distance-vector or Bellman-Ford
technology found ) 140.6 618 P
+-0.48 (in routing protocols such as RIP\051. Individual ) 72 604 P
+4 F
+-0.48 (link state advertisements \050LSAs\051) 285.2 604 P
+0 F
+-0.48 ( describe pieces of ) 449.99 604 P
+-0.13 (the OSPF routing domain \050Autonomous System\051. These LSAs are
\337ooded throughout the routing ) 72 590 P
+(domain, forming the ) 72 576 T
+4 F
+(link state database) 173.27 576 T
+0 F
+(. Each router has an identical link state database; syn-) 268.56 576 T
+(chronization of link state databases is maintained via a ) 72 562 T
+4 F
+(r) 336.81 562 T
+(eliable \337ooding algorithm) 341.92 562 T
+0 F
+(. From this ) 473.2 562 T
+(link state database, each router builds a routing table by calculating a
shortest-path tree, with the ) 72 548 T
+(root of the tree being the calculating router itself. This calculation is
commonly referred to as the ) 72 534 T
+4 F
+(Dijkstra pr) 72 520 T
+(ocedur) 129.41 520 T
+(e) 164.51 520 T
+0 F
+(.) 169.83 520 T
+(Link state advertisements are small. Each advertisement describes a small
pieces of the OSPF ) 72 494 T
+(routing domain, namely either: the neighborhood of a single router) 72 480 T
+(, the neighborhood of a single ) 391.97 480 T
+(transit network, a single inter) 72 466 T
+(-area route \050see below\051 or a single external route.) 212 466 T
+(The other key features of the OSPF protocol are:) 72 440 T
+(\245) 72 420 T
+4 F
+-0.31 (Adjacency bringup) 85.54 420 P
+0 F
+-0.31 (. ) 183.51 420 P
+4 F
+-0.31 (Certain pairs of OSPF r) 189.2 420 P
+-0.31 (outers become \322adjacent\323) 311.01 420 P
+0 F
+-0.31 (. As an adjacency is ) 442.96 420 P
+(formed, the two routers synchronize their link state databases by ) 85.54 406
T
+4 F
+(exchanging database sum-) 397.64 406 T
+(maries) 85.54 392 T
+0 F
+( in the form of OSPF Database Exchange packets. Adjacent routers then
maintain syn-) 120.17 392 T
+(chronization of their link state databases through the ) 85.54 378 T
+4 F
+(r) 340.02 378 T
+(eliable \337ooding algorithm) 345.13 378 T
+0 F
+(. Routers ) 476.41 378 T
+-0.27 (connected by serial lines always become adjacent. On multi-access
networks \050e.g., ethernets or ) 85.54 364 P
+(X.25 PDNs\051, all routers attached to the network become adjacent to both
the Designated ) 85.54 350 T
+(Router and the Backup Designated router) 85.54 336 T
+(.) 283.73 336 T
+(\245) 72 316 T
+4 F
+-0.02 (Designated r) 85.54 316 P
+-0.02 (outer) 150.26 316 P
+-0.02 (.) 176.46 316 P
+0 F
+-0.02 ( A Designated Router is elected on all multi-access networks \050e.g.,
ether-) 179.46 316 P
+(nets or X.25 PDNs\051. The network\325) 85.54 302 T
+(s Designated Router ) 250.42 302 T
+4 F
+(originates the network LSA) 350.69 302 T
+0 F
+( describ-) 492.27 302 T
+(ing the network\325) 85.54 288 T
+(s local environment. It also plays a ) 164.15 288 T
+4 F
+(special r) 334.04 288 T
+(ole in the \337ooding algorithm) 376.8 288 T
+0 F
+(, ) 521.4 288 T
+(since all routers on the network are synchronizing their link state databases
by sending and ) 85.54 274 T
+(receiving LSAs to/from the Designated Router during the \337ooding process.)
85.54 260 T
+(\245) 72 240 T
+4 F
+-0.46 (Backup Designated Router) 85.54 240 P
+0 F
+-0.46 (. A Backup Designated Router is elected on multi-access networks )
221.87 240 P
+(to speed/ease the transition of Designated Routers when the current
Designated Router disap-) 85.54 226 T
+(pears. In that event, the Backup DR takes over) 85.54 212 T
+(, and does not need to go through the adjacency ) 308.22 212 T
+-0.13 (bringup process on the LAN \050since it already had done this in its
Backup capacity\051. Also, even ) 85.54 198 P
+(before the disappearance of the Designated Router is noticed, the Backup DR
will enable the ) 85.54 184 T
+(reliable \337ooding algorithm to proceed in the DR\325) 85.54 170 T
+(s absence.) 320.39 170 T
+FMENDPAGE
+%%EndPage: "4" 5
+%%Page: "5" 5
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 5]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+0 X
+(\245) 72 676 T
+4 F
+(Non-br) 85.54 676 T
+(oadcast multi-access network support.) 122.63 676 T
+0 F
+( OSPF treats these networks \050e.g., X.25 ) 318.51 676 T
+-0.01 (PDNs\051 pretty much as if they were LANs \050i.e., a DR is elected,
and a network LSA is gener-) 85.54 662 P
+-0.29 (ated\051. Additional con\336guration information is needed however for
routers attached to these net-) 85.54 648 P
+(work to initially \336nd each other) 85.54 634 T
+(.) 236.45 634 T
+(\245) 72 614 T
+4 F
+(OSPF ar) 85.54 614 T
+(eas) 130.29 614 T
+0 F
+(. OSPF allows the Autonomous Systems to be broken up into regions call areas.
) 146.28 614 T
+(This is useful for several reasons. First, it provides an extra level of )
85.54 600 T
+4 F
+(r) 411.64 600 T
+(outing pr) 416.75 600 T
+(otection) 464.18 600 T
+0 F
+(: rout-) 504.81 600 T
+-0.29 (ing within an area is protected from all information external to the
area. Second, by splitting an ) 85.54 586 P
+-0.3 (Autonomous System into areas the ) 85.54 572 P
+4 F
+-0.3 (cost of the Dijkstra pr) 254.27 572 P
+-0.3 (ocedur) 365.44 572 P
+-0.3 (e ) 400.53 572 P
+0 F
+-0.3 (\050in terms of CPU cycles\051 is ) 408.55 572 P
+(reduced.) 85.54 558 T
+(\245) 72 538 T
+4 F
+(Flexible import of external r) 85.54 538 T
+(outing information.) 230.55 538 T
+0 F
+( In OSPF) 330.5 538 T
+(, ) 374.19 538 T
+4 F
+(each external r) 380.19 538 T
+(oute) 456.58 538 T
+0 F
+( is imported ) 478.56 538 T
+(into the Autonomous System in ) 85.54 524 T
+4 F
+(a separate LSA) 240.47 524 T
+0 F
+(. This reduces the amount of \337ooding traf) 319.08 524 T
+(\336c ) 518.07 524 T
+(\050since external routes change often, and you want to only \337ood the
changes\051. It also enables ) 85.54 510 T
+4 F
+-0.43 (partial r) 85.54 496 P
+-0.43 (outing table updates) 127.86 496 P
+0 F
+-0.43 ( when only a single external route changes. OSPF external LSAs ) 230.96
496 P
+(also provide the following features. A ) 85.54 482 T
+4 F
+(forwarding addr) 270.4 482 T
+(ess) 355.81 482 T
+0 F
+( can be included in the external ) 370.46 482 T
+(LSA, eliminating extra-hops at the edge of the Autonomous System. There are
two levels of ) 85.54 468 T
+(external metrics that can be speci\336ed, ) 85.54 454 T
+4 F
+(type 1) 269.06 454 T
+0 F
+( and ) 300.04 454 T
+4 F
+(type 2) 323.35 454 T
+0 F
+(. Also, external routes can be tagged ) 354.33 454 T
+(with a 32-bit number \050the ) 85.54 440 T
+4 F
+(external r) 211.12 440 T
+(oute tag) 261.19 440 T
+0 F
+(; commonly used as an AS number of the route\325) 302.16 440 T
+(s ) 531.68 440 T
+(origin\051, simplifying external route management in a transit Autonomous
System.) 85.54 426 T
+(\245) 72 406 T
+4 F
+(Four level r) 85.54 406 T
+(outing hierar) 145.27 406 T
+(chy) 212.69 406 T
+0 F
+(. OSPF has a four level routing hierarchy) 229.9 406 T
+(, or trust model: ) 426.32 406 T
+4 F
+(intra-) 505.94 406 T
+(ar) 85.54 392 T
+(ea) 96.64 392 T
+0 F
+(, ) 107.96 392 T
+4 F
+(inter) 113.96 392 T
+(-ar) 138.16 392 T
+(ea) 153.26 392 T
+0 F
+(, ) 164.59 392 T
+4 F
+(external type 1) 170.58 392 T
+0 F
+( and ) 246.52 392 T
+4 F
+(external type 2) 269.84 392 T
+0 F
+( routes. This enables multiple levels of ) 345.78 392 T
+(routing protection, and simpli\336es routing management in an Autonomous
System.) 85.54 378 T
+(\245) 72 358 T
+4 F
+(V) 85.54 358 T
+(irtual links) 93.75 358 T
+0 F
+(. By allowing the con\336guration of virtual links, OSPF ) 150.07 358 T
+4 F
+(r) 410.94 358 T
+(emoves topological ) 416.05 358 T
+(r) 85.54 344 T
+(estrictions) 90.64 344 T
+0 F
+( on area layout in an Autonomous System.) 143.27 344 T
+(\245) 72 324 T
+4 F
+-0.32 (Authentication of r) 85.54 324 P
+-0.32 (outing pr) 182.62 324 P
+-0.32 (otocol exchanges) 229.74 324 P
+0 F
+-0.32 (. Every time an OSPF router receives a routing ) 315.03 324 P
+(protocol packet, it authenticates the packet before processing it further)
85.54 310 T
+(.) 422.61 310 T
+(\245) 72 290 T
+4 F
+-0.03 (Flexible r) 85.54 290 P
+-0.03 (outing metric.) 134.26 290 P
+0 F
+-0.03 ( In OSPF) 206.18 290 P
+-0.03 (, metric are assigned to outbound router interfaces. The cost ) 249.82
290 P
+(of a path is then the sum of the path\325) 85.54 276 T
+(s component interfaces. The routing metric itself can be ) 260.42 276 T
+(assigned by the system administrator to indicate any combination of network
characteristics ) 85.54 262 T
+(\050e.g., delay) 85.54 248 T
+(, bandwidth, dollar cost, etc.\051.) 138.04 248 T
+(\245) 72 228 T
+4 F
+-0.09 (Equal-cost multipath.) 85.54 228 P
+0 F
+-0.09 ( When multiple best cost routes to a destination exist, OSPF \336nds
them ) 196.73 228 P
+(and they can be then used to load share traf) 85.54 214 T
+(\336c to the destination.) 292.82 214 T
+(\245) 72 194 T
+4 F
+(T) 85.54 194 T
+(OS-based r) 93.32 194 T
+(outing.) 150.74 194 T
+0 F
+( Separate sets of routes can be calculated for each IP type of service. For )
186.4 194 T
+(example, low delay traf) 85.54 180 T
+(\336c could be routed on one path, while high bandwidth traf) 198.56 180 T
+(\336c is routed ) 477.16 180 T
+-0.39 (on another) 85.54 166 P
+-0.39 (. This is done by \050optionally\051 assigning, to each outgoing router
interface, one metric ) 135.44 166 P
+(for each IP T) 85.54 152 T
+(OS.) 148.26 152 T
+(\245) 72 132 T
+4 F
+(V) 85.54 132 T
+(ariable-length subnet support.) 93.09 132 T
+0 F
+( OSPF includes support for variable-length subnet masks by ) 248.02 132 T
+(carrying a network mask with each advertised destination.) 85.54 118 T
+FMENDPAGE
+%%EndPage: "5" 6
+%%Page: "6" 6
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 6]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+0 X
+(\245) 72 676 T
+4 F
+-0.08 (Stub ar) 85.54 676 P
+-0.08 (ea support. ) 123.56 676 P
+0 F
+-0.08 (T) 183.69 676 P
+-0.08 (o support routers having insuf) 190.18 676 P
+-0.08 (\336cient memory) 333.53 676 P
+-0.08 (, areas can be con\336gured as ) 405.63 676 P
+(stubs. External LSAs \050often making up the bulk of the Autonomous
System\051 are not \337ooded ) 85.54 662 T
+(into/throughout stub areas. Routing to external destinations in stub areas is
based solely on ) 85.54 648 T
+(default.) 85.54 634 T
+FMENDPAGE
+%%EndPage: "6" 7
+%%Page: "7" 7
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 7]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(3.0 Cost of the pr) 72 673.33 T
+(otocol) 193.4 673.33 T
+0 F
+-0.1 (This section attempts to analyze how the OSPF protocol will perform and
scale in the Internet. In ) 72 646 P
+(this analysis, we will concentrate on the following four areas:) 72 632 T
+(\245) 72 612 T
+4 F
+(Link bandwidth) 85.54 612 T
+0 F
+(. In OSPF) 168.53 612 T
+(, a reliable \337ooding mechanism is used to ensure that router link ) 215.22
612 T
+(state databases are remained synchronized. Individual components of the link
state databases ) 85.54 598 T
+-0.17 (\050the LSAs\051 are refreshed infrequently \050every 30 minutes\051,
at least in the absence of topological ) 85.54 584 P
+(changes. Still, as the size of the database increases, the amount of link
bandwidth used by the ) 85.54 570 T
+(\337ooding procedure also increases.) 85.54 556 T
+(\245) 72 536 T
+4 F
+-0.03 (Router memory) 85.54 536 P
+0 F
+-0.03 (. The size of an OSPF link state database can get quite lar) 166.32 536
P
+-0.03 (ge, especially in the ) 441.86 536 P
+(presence of many external LSAs. This imposes requirements on the amount of
router memory ) 85.54 522 T
+(available.) 85.54 508 T
+(\245) 72 488 T
+4 F
+(CPU usage) 85.54 488 T
+0 F
+(. In OSPF) 141.83 488 T
+(, this is dominated by the length of time it takes to run the shortest path )
188.52 488 T
+(calculation \050Dijkstra procedure\051. This is a function of the number of
routers in the OSPF sys-) 85.54 474 T
+(tem.) 85.54 460 T
+(\245) 72 440 T
+4 F
+(Role of the Designated Router) 85.54 440 T
+(.) 238.32 440 T
+0 F
+( The Designated router receives and sends more packets on a ) 241.32 440 T
+-0.46 (multi-access networks than the other routers connected to the network.
Also, there is some time ) 85.54 426 P
+(involved in cutting over to a new Designated Router after the old one fails
\050especially when ) 85.54 412 T
+(both the Backup Designated Router and the Designated Router fail at the same
time\051. For this ) 85.54 398 T
+-0.27 (reason, it is possible that you may want to limit the number of routers
connected to a single net-) 85.54 384 P
+(work.) 85.54 370 T
+(The remaining section will analyze these areas, estimating how much resources
the OSPF proto-) 72 344 T
+-0.05 (col will consume, both now and in the future. T) 72 330 P
+-0.05 (o aid in this analysis, the next section will present ) 298.93 330 P
+(some data that have been collected in actual OSPF \336eld deployments.) 72
316 T
+3 F
+(3.1 Operational data) 72 282.67 T
+0 F
+-0.44 (The OSPF protocol has been deployed in a number of places in the
Internet. For a summary of this ) 72 256 P
+(deployment, see [1]. Some statistics have been gathered from this operational
experience, via ) 72 242 T
+-0.03 (local network management facilities. Some of these statistics are
presented in the following table:) 72 228 P
+FMENDPAGE
+%%EndPage: "7" 8
+5 10 /Times-Bold FMDEFINEFONT
+%%Page: "8" 8
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 8]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+72 666.01 540 674 C
+72 671.98 540 671.98 2 L
+0.5 H
+0 Z
+0 X
+0 K
+N
+0 0 612 792 C
+5 F
+0 X
+0 K
+(T) 72 677.33 T
+(ABLE 1. Pertinent operational statistics) 77.93 677.33 T
+(Statistic) 72 655.34 T
+(BARRNet) 216 655.34 T
+(NSI) 324 655.34 T
+(OARnet) 432 655.34 T
+1 F
+(Data gathering \050duration\051) 72 638.34 T
+(99 hours) 216 638.34 T
+(277 hours) 324 638.34 T
+(28 hours) 432 638.34 T
+(Dijkstra frequency) 72 622.34 T
+(50 minutes) 216 622.34 T
+(25 minutes) 324 622.34 T
+(13 minutes) 432 622.34 T
+(External incremental frequency) 72 606.34 T
+(1.2 minutes) 216 606.34 T
+(.98 minutes) 324 606.34 T
+(not gathered) 432 606.34 T
+(Database turnover) 72 590.34 T
+(29.7 minutes) 216 590.34 T
+(30.9 minutes) 324 590.34 T
+(28.2 minutes) 432 590.34 T
+(LSAs per packet) 72 574.34 T
+(3.38) 216 574.34 T
+(3.16) 324 574.34 T
+(2.99) 432 574.34 T
+(Flooding retransmits) 72 558.34 T
+(1.3%) 216 558.34 T
+(1.4%) 324 558.34 T
+(.7%) 432 558.34 T
+0 F
+(The \336rst line in the above table show the length of time that statistics
were gathered on the three ) 72 533.01 T
+(networks. A brief description of the other statistics follows:) 72 519.01 T
+(\245) 72 499.01 T
+4 F
+(Dijkstra fr) 85.54 499.01 T
+(equency) 140.27 499.01 T
+(. ) 181.59 499.01 T
+0 F
+(In OSPF) 187.59 499.01 T
+(, the Dijkstra calculation involves only those routers and transit ) 228.28
499.01 T
+-0.14 (networks belonging to the AS. The Dijkstra is run only when something
in the system changes ) 85.54 485.01 P
+(\050like a serial line between two routers goes down\051. Note that in these
operational systems, the ) 85.54 471.01 T
+(Dijkstra process runs only infrequently \050the most frequent being every 13
minutes\051.) 85.54 457.01 T
+(\245) 72 437.01 T
+4 F
+(External incr) 85.54 437.01 T
+(emental fr) 153.61 437.01 T
+(equency) 206.35 437.01 T
+0 F
+(. In OSPF) 247.54 437.01 T
+(, when an external route changes only its entry in ) 294.23 437.01 T
+-0.13 (the routing table is recalculated. These are called external
incremental updates. Note that these ) 85.54 423.01 P
+(happen much more frequently than the Dijkstra procedure. \050in other words,
incremental ) 85.54 409.01 T
+(updates are saving quite a bit of processor time\051.) 85.54 395.01 T
+(\245) 72 375.01 T
+4 F
+-0.45 (Database turnover) 85.54 375.01 P
+-0.45 (.) 179.58 375.01 P
+0 F
+-0.45 ( In OSPF) 182.58 375.01 P
+-0.45 (, link state advertisements are refreshed at a minimum of every 30 )
225.36 375.01 P
+(minutes. New advertisement instances are sent out more frequently when some
part of the ) 85.54 361.01 T
+-0.2 (topology changes. The table shows that, even taking topological changes
into account, on aver-) 85.54 347.01 P
+(age an advertisement is updated close to only every 30 minutes. This
statistic will be used in ) 85.54 333.01 T
+(the link bandwidth calculations below) 85.54 319.01 T
+(. Note that NSI actually shows advertisements updated ) 267.31 319.01 T
+(every 30.7 \050> 30\051 minutes. This probably means that at one time earlier
in the measurement ) 85.54 305.01 T
+(period, NSI had a smaller link state database that it did at the end.) 85.54
291.01 T
+(\245) 72 271.01 T
+4 F
+-0.39 (LSAs per packet.) 85.54 271.01 P
+0 F
+-0.39 ( In OSPF) 173.04 271.01 P
+-0.39 (, multiple LSAs can be included in either Link State Update or Link )
215.95 271.01 P
+-0.35 (State Acknowledgment packets.The table shows that, on average, around 3
LSAs are carried in ) 85.54 257.01 P
+(a single packet. This statistic is used when calculating the header overhead
in the link band-) 85.54 243.01 T
+(width calculation below) 85.54 229.01 T
+(. This statistic was derived by diving the number of LSAs \337ooded by )
200.01 229.01 T
+(the number of \050non-hello\051 multicasts sent.) 85.54 215.01 T
+(\245) 72 195.01 T
+4 F
+(Flooding r) 85.54 195.01 T
+(etransmits.) 138.97 195.01 T
+0 F
+( This counts both retransmission of LS Update packets and Link State ) 195.92
195.01 T
+(Acknowledgment packets, as a percentage of the original multicast \337ooded
packets. The table ) 85.54 181.01 T
+(shows that \337ooding is working well, and that retransmits can be ignored in
the link bandwidth ) 85.54 167.01 T
+(calculation below) 85.54 153.01 T
+(.) 169.69 153.01 T
+FMENDPAGE
+%%EndPage: "8" 9
+%%Page: "9" 9
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 9]) 499.7 73 T
+72 108 540 684 R
+7 X
+V
+3 F
+0 X
+(3.2 Link bandwidth) 72 674.67 T
+0 F
+-0.02 (In this section we attempt to calculate how much link bandwidth is
consumed by the OSPF \337ood-) 72 648 P
+(ing process. The amount of link bandwidth consumed increases linearly with
the number of ) 72 634 T
+(advertisements present in the OSPF database.W) 72 620 T
+(e assume that the majority of advertisements in ) 300.88 620 T
+(the database will be AS external LSAs \050operationally this is true, see
[1]\051.) 72 606 T
+(From the statistics presented in Section 3.1, any particular advertisement is
\337ooded \050on average\051 ) 72 580 T
+(every 30 minutes. In addition, three advertisements \336t in a single packet.
\050This packet could be ) 72 566 T
+(either a Link State Update packet or a Link State Acknowledgment packet; in
this analysis we ) 72 552 T
+(select the Link State Update packet, which is the lar) 72 538 T
+(ger\051. An AS external LSA is 36 bytes long. ) 320.93 538 T
+(Adding one third of a packet header \050IP header plus OSPF Update packet\051
yields 52 bytes. T) 72 524 T
+(rans-) 515.59 524 T
+(mitting this amount of data every 30 minutes gives an average rate of 23/100
bits/second.) 72 510 T
+-0.05 (If you want to limit your routing traf) 72 484 P
+-0.05 (\336c to 5% of the link\325) 247.03 484 P
+-0.05 (s total bandwidth, you get the following ) 345.75 484 P
+(maximums for database size:) 72 470 T
+72 434.01 540 442 C
+72 439.98 540 439.98 2 L
+0.5 H
+0 Z
+0 X
+0 K
+N
+0 0 612 792 C
+5 F
+0 X
+0 K
+(T) 72 445.33 T
+(ABLE 2. Database size as a function of link speed \0505% utilization\051)
77.93 445.33 T
+(Speed) 180 423.34 T
+(# external advertisements) 288 423.34 T
+1 F
+(9.6 Kb) 180 406.34 T
+(2087) 288 406.34 T
+(56 Kb) 180 390.34 T
+(12,174) 288 390.34 T
+0 F
+-0.46 (Higher line speeds have not been included, because other factors will
then limit database size \050like ) 72 365.01 P
+-0.12 (router memory\051 before line speed becomes a factor) 72 351.01 P
+-0.12 (. Note that in the above calculation, the size of ) 315.32 351.01 P
+-0.06 (the data link header was not taken into account. Also, note that while
the OSPF database is likely ) 72 337.01 P
+(to be mostly external LSAs, other LSAs have a size also. As a ballpark
estimate, router links and ) 72 323.01 T
+-0.01 (network links are generally three times as lar) 72 309.01 P
+-0.01 (ge as an AS external link, with summary link adver-) 287.18 309.01 P
+(tisements being the same size as external link LSAs.) 72 295.01 T
+(OSPF consumes considerably less link bandwidth than RIP) 72 269.01 T
+(. This has been shown experimentally ) 355.51 269.01 T
+(in the NSI network. See Jef) 72 255.01 T
+(frey Bur) 203.69 255.01 T
+(gan\325) 243.77 255.01 T
+(s \322NASA Sciences Internet\323 report in [3].) 264.42 255.01 T
+3 F
+(3.3 Router memory) 72 221.67 T
+0 F
+-0.1 (Memory requirements in OSPF are dominated by the size of the link state
database. As in the pre-) 72 195.01 P
+(vious section, it is probably safe to assume that most of the advertisements
in the database are ) 72 181.01 T
+(external LSAs. While an external LSA is 36 bytes long, it is generally stored
by an OSPF imple-) 72 167.01 T
+-0.34 (mentation together with some support data. So a good estimate of router
memory consumed by an ) 72 153.01 P
+(external LSA is probably 64 bytes. So a database having 10,000 external LSAs
will consume ) 72 139.01 T
+(640K bytes of router memory) 72 125.01 T
+(. OSPF de\336nitely requires more memory than RIP) 213.79 125.01 T
+(.) 452.98 125.01 T
+FMENDPAGE
+%%EndPage: "9" 10
+%%Page: "10" 10
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 10]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+0 X
+-0.35 (Using the Proteon P4200 implementation as an example, the P4200 has
2Mbytes of memory) 72 676 P
+-0.35 (. This ) 510.38 676 P
+-0.02 (is shared between instruction, data and packet buf) 72 662 P
+-0.02 (fer memory) 310.78 662 P
+-0.02 (. The P4200 has enough memory to ) 366.26 662 P
+(store 10, 000 external LSAs, and still have enough packet buf) 72 648 T
+(fer memory available to run a rea-) 367.58 648 T
+(sonable number of interfaces.) 72 634 T
+(Also, note that while the OSPF database is likely to be mostly external LSAs,
other LSAs have a ) 72 608 T
+-0.06 (size also. As a ballpark estimate, router links and network links
consume generally three times as ) 72 594 P
+(much memory as an AS external link, with summary link advertisements being
the same size as ) 72 580 T
+(external link LSAs.) 72 566 T
+3 F
+(3.4 Router CPU) 72 532.67 T
+0 F
+(Assume that, as the size of the OSPF routing domain grows, the number of
interfaces per router ) 72 506 T
+(stays bounded. Then the Dijkstra calculation is of order \050n * log
\050n\051\051, where n is the number of ) 72 492 T
+(routers in the routing domain. \050This is the complexity of the Dijkstra
algorithm in a sparse net-) 72 478 T
+(work\051. Of course, it is implementation speci\336c as to how expensive the
Dijkstra really is.) 72 464 T
+(W) 72 438 T
+(e have no experimental numbers for the cost of the Dijkstra calculation in a
real OSPF imple-) 82.36 438 T
+(mentation. However) 72 424 T
+(, Steve Deering presented results for the Dijkstra calculation in the
\322MOSPF ) 169.45 424 T
+(meeting report\323 in [3]. Steve\325) 72 410 T
+(s calculation was done on a DEC 5000 \05010 mips processor\051, using ) 212.9
410 T
+(the Stanford internet as a model. His graphs are based on numbers of
networks, not number of ) 72 396 T
+(routers. However) 72 382 T
+(, if we extrapolate that the ratio of routers to networks remains the same,
the ) 154.78 382 T
+(time to run Dijkstra for 200 routers in Steve\325) 72 368 T
+(s implementation was around 15 milliseconds.) 285.87 368 T
+-0.46 (This seems a reasonable cost, particularly when you notice that the
Dijkstra calculation is run very ) 72 342 P
+(infrequently in operational deployments. In the three networks presented in
Section 3.1, Dijkstra ) 72 328 T
+-0.35 (was run on average only every 13 to 50 minutes. Since the Dijkstra is
run so infrequently) 72 314 P
+-0.35 (, it seems ) 493.06 314 P
+-0.02 (likely that OSPF overall consumes less CPU than RIP \050because of
RIP\325) 72 300 P
+-0.02 (s frequent updates, requir-) 413.95 300 P
+(ing routing table lookups\051.) 72 286 T
+(As another example, the routing algorithm in MILNET is SPF-based. MILNET\325)
72 260 T
+(s current size is ) 456.42 260 T
+-0.02 (230 nodes, and the routing calculation still consumes less than 5% of
the MILNET switches\325 pro-) 72 246 P
+(cessor bandwidth [4]. Because the routing algorithm in the MILNET adapts to
network load, it ) 72 232 T
+(runs the Dijkstra process quite frequently \050on the order of seconds as
compared to OSPF\325) 72 218 T
+(s min-) 499.7 218 T
+(utes\051. However) 72 204 T
+(, it should be noted that the routing algorithm in MILNET incrementally
updates ) 144.79 204 T
+(the SPF-tree, while OSPF rebuilds it from scratch at each Dijkstra
calculation) 72 190 T
+(OSPF\325) 72 164 T
+(s Area capability provides a way to reduce Dijkstra overhead, if it becomes a
burden. The ) 104 164 T
+-0 (routing domain can be split into areas. The extent of the Dijkstra
calculation \050and its complexity\051 ) 72 150 P
+(is limited to a single area at a time.) 72 136 T
+FMENDPAGE
+%%EndPage: "10" 11
+%%Page: "11" 11
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 11]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+3 F
+0 X
+(3.5 Role of Designated Router) 72 674.67 T
+0 F
+(This section explores the number of routers that can be attached to a single
network. As the num-) 72 648 T
+-0.36 (ber of routers attached to a network grows, so does the amount of OSPF
routing traf) 72 634 P
+-0.36 (\336c seen on the ) 469.48 634 P
+(network. Some of this is Hello traf) 72 620 T
+(\336c, which is generally multicast by each router every 10 sec-) 238.01 620 T
+-0.07 (onds. This burden is borne by all routers attached to the network.
However) 72 606 P
+-0.07 (, because of its special ) 429.77 606 P
+-0.08 (role in the \337ooding process, the Designated router ends up sending
more Link State Updates than ) 72 592 P
+(the other routers on the network. Also, the Designated Router receives Link
State Acknowledg-) 72 578 T
+-0.15 (ments from all attached routers, while the other routers just receive
them from the DR. \050Although ) 72 564 P
+(it is important to note that the rate of Link State Acknowledgments will
generally be limited to ) 72 550 T
+(one per second from each router) 72 536 T
+(, because acknowledgments are generally delayed.\051) 226.38 536 T
+-0.22 (So, if the amount of protocol traf) 72 510 P
+-0.22 (\336c on the LAN becomes a limiting factor) 228.71 510 P
+-0.22 (, the limit is likely to be ) 424.24 510 P
+(detected in the Designated Router \336rst. However) 72 496 T
+(, such a limit is not expected to be reached in ) 305.68 496 T
+(practice. The amount of routing protocol traf) 72 482 T
+(\336c generated by OSPF has been shown to be small ) 286.62 482 T
+-0.11 (\050see Section 3.2\051. Also, if need be OSPF\325) 72 468 P
+-0.11 (s hello timers can be con\336gured to reduce the amount of ) 268.43 468
P
+(protocol traf) 72 454 T
+(\336c on the network. Note that more than 50 routers have been simulated
attached to a ) 131.4 454 T
+(single LAN \050see [1]\051. Also, in interoperability testing 13 routers have
been attached to a single ) 72 440 T
+(ethernet with no problems encountered.) 72 426 T
+-0.02 (Another factor in the number of routers attached to a single network is
the cutover time when the ) 72 400 P
+-0.17 (Designated Router fails. OSPF has a Backup Designated Router so that
the cutover does not have ) 72 386 P
+-0.31 (to wait for the new DR to synchronize \050the adjacency bring-up
process mentioned earlier\051 with all ) 72 372 P
+-0.43 (the other routers on the LAN; as a Backup DR it had already
synchronized. However) 72 358 P
+-0.43 (, in those rare ) 473.46 358 P
+-0.33 (cases when both DR and Backup DR crash at the same time, the new DR
will have to synchronize ) 72 344 P
+(\050via the adjacency bring-up process\051 with all other routers before
becoming functional. Field ) 72 330 T
+-0.44 (experience show that this synchronization process takes place in a
timely fashion \050see the OARnet ) 72 316 P
+(report in [1]\051. However) 72 302 T
+(, this may be an issue in systems that have many routers attached to a sin-)
183.42 302 T
+(gle network.) 72 288 T
+-0.15 (In the unlikely event that the number of routers attached to a LAN
becomes a problem, either due ) 72 262 P
+(to the amount of routing protocol traf) 72 248 T
+(\336c or the cutover time, the LAN can be split into separate ) 251 248 T
+(pieces \050similar to splitting up the AS into separate areas\051.) 72 234 T
+3 F
+(3.6 Summary) 72 200.67 T
+0 F
+(In summary) 72 174 T
+(, it seems like the most likely limitation to the size of an OSPF system is
available ) 128.85 174 T
+-0.4 (router memory) 72 160 P
+-0.4 (. W) 142.43 160 P
+-0.4 (e have given as 10,000 as the number of external LSAs that can be
supported by ) 158.39 160 P
+(the memory available in one con\336guration of a particular implementation
\050the Proteon P4200\051. ) 72 146 T
+-0.09 (Other implementations may vary; nowadays routers are being built with
more and more memory) 72 132 P
+-0.09 (. ) 534.09 132 P
+FMENDPAGE
+%%EndPage: "11" 12
+%%Page: "12" 12
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 12]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+0 X
+(Note that 10,000 routes is considerably lar) 72 676 T
+(ger than the lar) 275.31 676 T
+(gest \336eld implementation \050BARRNet; ) 347.37 676 T
+(which at 1816 external LSAs is still very lar) 72 662 T
+(ge\051.) 283.65 662 T
+(Note that there may be ways to reduce database size in a routing domain.
First, the domain can ) 72 636 T
+-0.19 (make use of default routing, reducing the number of external routes
that need to be imported. Sec-) 72 622 P
+(ondly) 72 608 T
+(, an EGP can be used that will transport its own information through the AS
instead of rely-) 98.54 608 T
+-0.21 (ing on the IGP \050OSPF in this case\051 to do transfer the information
for it \050the EGP\051. Thirdly) 72 594 P
+-0.21 (, routers ) 498.11 594 P
+(having insuf) 72 580 T
+(\336cient memory may be able to be assigned to stub areas \050whose databases
are drasti-) 131.41 580 T
+(cally smaller\051. Lastly) 72 566 T
+(, if the Internet went away from a \337at address space the amount of
external ) 172.82 566 T
+(information imported into an OSPF domain could be reduced drastically) 72 552
T
+(.) 418.67 552 T
+(While not as likely) 72 526 T
+(, there could be other issues that would limit the size of an OSPF routing )
162.17 526 T
+(domain. If there are slow lines \050like 9600 baud\051, the size of the
database will be limited \050see Sec-) 72 512 T
+(tion 3.2\051. Dijkstra may get to be expensive when there are hundreds of
routers in the OSPF ) 72 498 T
+(domain; although at this point the domain can be split into areas. Finally)
72 484 T
+(, when there are many ) 418.69 484 T
+(routers attached to a single network, there may be undue burden imposed upon
the Designated ) 72 470 T
+(Router; although at that point a LAN can be split into separate LANs.) 72 456
T
+FMENDPAGE
+%%EndPage: "12" 13
+%%Page: "13" 13
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 13]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(4.0 Suitable envir) 72 673.33 T
+(onments) 195.21 673.33 T
+0 F
+-0.14 (Suitable environments for the OSPF protocol range from lar) 72 646 P
+-0.14 (ge to small. OSPF is particular suited ) 359.11 646 P
+(for transit Autonomous Systems for the following reasons. OSPF can
accommodate a lar) 72 632 T
+(ge num-) 497.84 632 T
+(ber of external routes. In OSPF the import of external information is very
\337exible, having provi-) 72 618 T
+-0.39 (sions for a forwarding address, two levels of external metrics, and the
ability to tag external routes ) 72 604 P
+-0.29 (with their AS number for easy management. Also OSPF\325) 72 590 P
+-0.29 (s ability to do partial updates when exter-) 343.17 590 P
+(nal information changes is very useful on these networks.) 72 576 T
+(OSPF is also suited for smaller) 72 550 T
+(, either stand alone or stub Autonomous Systems, because of its ) 220.44 550 T
+(wide array of features: fast conver) 72 536 T
+(gence, equal-cost-multipath, T) 235.96 536 T
+(OS routing, areas, etc.) 382.3 536 T
+2 F
+(5.0 Unsuitable envir) 72 469.33 T
+(onments) 212.98 469.33 T
+0 F
+-0.22 (OSPF has a very limited ability to express policy) 72 442 P
+-0.22 (. Basically) 304.62 442 P
+-0.22 (, its only policy mechanisms are in the ) 354.25 442 P
+(establishment of a four level routing hierarchy: intra-area, inter) 72 428 T
+(-area, type 1 and type 2 external ) 374.52 428 T
+(routes. A system wanting more sophisticated policies would have to be split
up into separate ) 72 414 T
+(ASes, running a policy-based EGP between them.) 72 400 T
+FMENDPAGE
+%%EndPage: "13" 14
+%%Page: "14" 14
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 14]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(6.0 Refer) 72 673.33 T
+(ence Documents) 137.87 673.33 T
+0 F
+(The following documents have been referenced by this report:) 72 646 T
+([1]) 72 626 T
+(Moy) 108 626 T
+(, J., \322Experience with the OSPF protocol\323, RFC 1246, July 1991.) 129.88
626 T
+([2]) 72 608 T
+(Moy) 108 608 T
+(, J., \322OSPF V) 129.88 608 T
+(ersion 2\323, RFC 1247, July 1991.) 193.85 608 T
+([3]) 72 590 T
+(Corporation for National Research Initiatives, \322Proceedings of the
Eighteenth Internet ) 108 590 T
+(Engineering T) 108 576 T
+(ask Force\323, University of British Columbia, July 30-August 3, 1990.)
176.11 576 T
+FMENDPAGE
+%%EndPage: "14" 15
+%%Page: "15" 15
+612 792 0 FMBEGINPAGE
+72 702 540 720 R
+7 X
+0 K
+V
+0 F
+0 X
+(RFC 1245) 72 712 T
+(OSPF protocol analysis) 249.36 712 T
+(July 1991) 493.02 712 T
+72 69.05 540 81 R
+7 X
+V
+0 X
+([Moy]) 72 73 T
+([Page 15]) 493.7 73 T
+72 108 540 684 R
+7 X
+V
+2 F
+0 X
+(Security Considerations) 72 673.33 T
+0 F
+(Security issues are not discussed in this memo.) 72 646 T
+2 F
+(Author) 72 617.33 T
+(\325) 122.04 617.33 T
+(s Addr) 126.77 617.33 T
+(ess) 173.13 617.33 T
+0 F
+(John Moy) 72 590 T
+(Proteon Inc.) 72 576 T
+(2 T) 72 562 T
+(echnology Drive) 87.48 562 T
+(W) 72 548 T
+(estborough, MA 01581) 82.36 548 T
+(Phone: \050508\051 898-2800) 72 522 T
+(Email: address@hidden) 72 508 T
+FMENDPAGE
+%%EndPage: "15" 16
+%%Trailer
+%%BoundingBox: 0 0 612 792
+%%Pages: 15 1
+%%DocumentFonts: Times-Roman
+%%+ Times-Bold
diff --git a/test/etags/pyt-src/server.py b/test/etags/pyt-src/server.py
new file mode 100644
index 0000000..68aa29a
--- /dev/null
+++ b/test/etags/pyt-src/server.py
@@ -0,0 +1,819 @@
+#!/usr/bin/python
+#
+# NOTE: THIS PROGRAM DOES NOT WORK!
+# It is intended as a regression test source for the Python support in etags.
+# If you want a working version, you'll find it in the fetchmail distribution.
+#
+
+from Tkinter import *
+from Dialog import *
+import sys
+import time
+import os
+
+#
+# Define the data structures the GUIs will be tossing around
+#
+class Controls:
+ def __init__(self):
+ self.foreground = FALSE; # Run in background
+ self.daemon = 300 # Default to 5-minute timeout
+ self.syslog = FALSE # Use syslogd for logging?
+ self.logfile = None # No logfile, initially
+
+ def __repr__(self):
+ str = "";
+ if self.syslog:
+ str = str + ("set syslog\n")
+ elif self.logfile:
+ str = str + ("set logfile \"%s\"\n" % (self.logfile,));
+ if not self.foreground and self.daemon:
+ str = str + ("set daemon %s\n" % (self.daemon,))
+ return str + "\n"
+
+ def __str__(self):
+ return "[Server: " + repr(self) + "]"
+
+class Server:
+ def __init__(self):
+ self.pollname = None # Poll label
+ self.via = None # True name of host
+ self.active = TRUE # Poll status
+ self.interval = 0 # Skip interval
+ self.protocol = 'auto' # Default to auto protocol
+ self.port = 0 # Port number to use
+ self.uidl = FALSE # Don't use RFC1725 UIDLs by default
+ self.auth = "password" # Default to password authentication
+ self.timeout = 300 # 5-minute timeout
+ self.envelope = "Received" # Envelope-address header
+ self.aka = [] # List of DNS aka names
+ self.dns = TRUE # Enable DNS lookup on multidrop
+ self.localdomains = [] # Domains to be considered local
+ self.interface = None # IP address and range
+ self.monitor = None # IP address and range
+ self.userlist = [] # List of user entries for site
+ self.typemap = (
+ ('pollname', 'String'),
+ ('via', 'String'),
+ ('active', 'Boolean'),
+ ('interval', 'Int'),
+ ('protocol', 'String'),
+ ('interval', 'Int'),
+ ('port', 'Int'),
+ ('uidl', 'Boolean'),
+ ('auth', 'String'),
+ ('timeout', 'Int'),
+ ('envelope', 'String'),
+ # leave aka out
+ ('dns', 'Boolean'),
+ # leave localdomains out
+ ('interface', 'String'),
+ ('monitor', 'String'))
+
+ def dump(self, folded):
+ str = ""
+ if self.active: str = str + "poll"
+ else: str = str + "skip"
+ str = str + (" " + self.pollname)
+ if self.via != self.pollname:
+ str = str + " via " + self.via
+ if self.protocol != ServerDefaults.protocol:
+ str = str + " with proto " + self.protocol
+ if self.port != defaultports[self.protocol]:
+ str = str + " port " + `self.port`
+ if self.timeout != ServerDefaults.timeout:
+ str = str + " timeout " + `self.timeout`
+ if self.interval != ServerDefaults.interval:
+ str = str + " interval " + `self.interval`
+ if self.envelope != ServerDefaults.envelope:
+ str = str + " envelope " + self.envelope
+ if self.auth != ServerDefaults.auth:
+ str = str + " auth " + self.auth
+ if self.dns != ServerDefaults.dns or self.uidl != ServerDefaults.uidl:
+ str = str + " and options"
+ if self.dns != ServerDefaults.dns:
+ str = str + flag2str(self.dns, 'dns')
+ if self.uidl != ServerDefaults.uidl:
+ str = str + flag2str(self.uidl, 'uidl')
+ if folded: str = str + "\n\t"
+ else: str = str + " "
+
+ if self.aka:
+ str = str + "aka"
+ for x in self.aka:
+ str = str + " " + x
+ if self.aka and self.localdomains: str = str + " "
+ if self.localdomains:
+ str = str + ("localdomains")
+ for x in self.localdomains:
+ str = str + " " + x
+ if (self.aka or self.localdomains):
+ if folded:
+ str = str + "\n\t"
+ else:
+ str = str + " "
+
+ if self.interface: str = str + " interface " + self.interface
+ if self.monitor: str = str + " monitor " + self.monitor
+ if (self.interface or self.monitor):
+ if folded:
+ str = str + "\n"
+
+ if str[-1] == "\t": str = str[0:-1]
+ return str;
+
+ def __repr__(self):
+ return self.dump(TRUE)
+
+ def __str__(self):
+ return "[Server: " + self.dump(FALSE) + "]"
+
+class User:
+ def __init__(self):
+ self.username = "" # Remote username
+ self.localnames = None # Local names
+ self.password = "" # Password for mail account access
+ self.smpthost = 'localhost' # Host to forward to
+ self.mda = "" # Mail Delivery Agent
+ self.preconnect = "" # Connection setup
+ self.postconnect = "" # Connection wrapup
+ self.keep = FALSE # Keep messages
+ self.flush = FALSE # Flush messages
+ self.fetchall = FALSE # Fetch old messages
+ self.rewrite = TRUE # Rewrite message headers
+ self.forcecr = FALSE # Force LF -> CR/LF
+ self.stripcr = FALSE # Strip CR
+ self.pass8bits = FALSE # Force BODY=7BIT
+ self.dropstatus = FALSE # Force BODY=7BIT
+ self.limit = 0 # Message size limit
+ self.fetchlimit = 0 # Max messages fetched per batch
+ self.batchlimit = 0 # Max message forwarded per batch
+ self.typemap = (
+ ('username', 'String')
+ ('folder', 'String')
+ # leave out localnames
+ ('password', 'String')
+ ('smtphost', 'String')
+ ('preconnect', 'String')
+ ('postconnect', 'String')
+ ('mda', 'String')
+ ('keep', 'Boolean')
+ ('flush', 'Boolean')
+ ('fetchall', 'Boolean')
+ ('rewrite', 'Boolean')
+ ('forcecr', 'Boolean')
+ ('stripcr', 'Boolean')
+ ('pass8bits', 'Boolean')
+ ('dropstatus', 'Boolean')
+ ('limit', 'Int')
+ ('fetchlimit', 'Int')
+ ('batchlimit', 'Int'))
+
+ def __repr__(self):
+ str = ""
+ str = str + "user " + self.user;
+ if self.password: str = str + "with password " + self.password
+ if self.localnames:
+ str = str + "localnames"
+ for x in self.localnames:
+ str = str + " " + x
+ if (self.keep or self.flush or self.fetchall or self.rewrite or
+ self.forcecr or self.stripcr or self.pass8bits or self.dropstatus):
+ str = str + " options"
+ if self.keep != UserDefaults.keep:
+ str = str + flag2str(self.keep, 'keep')
+ if self.flush != UserDefaults.flush:
+ str = str + flag2str(self.flush, 'flush')
+ if self.fetchall != UserDefaults.fetchall:
+ str = str + flag2str(self.fetchall, 'fetchall')
+ if self.rewrite != UserDefaults.rewrite:
+ str = str + flag2str(self.rewrite, 'rewrite')
+ if self.forcecr != UserDefaults.forcecr:
+ str = str + flag2str(self.forcecr, 'forcecr')
+ if self.stripcr != UserDefaults.stripcr:
+ str = str + flag2str(self.stripcr, 'stripcr')
+ if self.pass8bits != UserDefaults.pass8bits:
+ str = str + flag2str(self.pass8bits, 'pass8bits')
+ if self.dropstatus != UserDefaults.dropstatus:
+ str = str + flag2str(self.dropstatus, 'dropstatus')
+ if self.limit != UserDefaults.limit:
+ str = str + " limit " + `self.limit`
+ if self.fetchlimit != UserDefaults.fetchlimit:
+ str = str + " fetchlimit " + `self.fetchlimit`
+ if self.batchlimit != UserDefaults.batchlimit:
+ str = str + " batchlimit " + `self.batchlimit`
+
+ def __str__(self):
+ return "[User: " + repr(self) + "]"
+
+#
+# Helper code
+#
+
+defaultports = {"auto":0,
+ "POP2":109,
+ "POP3":110, "APOP":110, "KPOP":1109, "IMAP":143,
+ "IMAP-K4":143,
+ "ETRN":25}
+
+protolist = ("auto", "POP2", "POP3", "APOP", "KPOP", "IMAP", "IMAP-K4", "ETRN")
+
+authlist = ("password", "kerberos")
+
+def flag2str(value, string):
+# make a string representation of a .fetchmailrc flag or negated flag
+ str = ""
+ if value != None:
+ str = str + (" ")
+ if value == FALSE: str = str + ("no ")
+ str = str + string;
+ return str
+
+class LabeledEntry(Frame):
+# widget consisting of entry field with caption to left
+ def bind(self, key, action):
+ self.E.bind(key, action)
+ def focus_set(self):
+ self.E.focus_set()
+ def __init__(self, Master, text, textvar, width):
+ Frame.__init__(self, Master)
+ self.L = Label(self, {'text':text, 'width':width, 'anchor':'w'})
+ self.E = Entry(self, {'textvar':textvar})
+ self.L.pack({'side':'left'})
+ self.E.pack({'side':'left', 'expand':'1', 'fill':'x'})
+
+def ButtonBar(frame, legend, ref, alternatives, command):
+# horizontal bar of radio buttons, caption to left, picking from a string list
+ bar = Frame(frame)
+ Label(bar, text=legend).pack(side=LEFT)
+ for alt in alternatives:
+ Radiobutton(bar,
+ {'text':alt, 'variable':ref, 'value':alt,
'command':command}).pack(side=LEFT)
+ bar.pack(side=TOP);
+ return bar
+
+def helpwin(helpdict):
+# help message window with a self-destruct button
+ helpwin = Toplevel()
+ helpwin.title(helpdict['title'])
+ helpwin.iconname(helpdict['title'])
+ Label(helpwin, text=helpdict['banner']).pack()
+ textwin = Message(helpwin, text=helpdict['text'], width=600)
+ textwin.pack()
+ Button(helpwin, text='Done',
+ command=lambda x=helpwin: Widget.destroy(x),
+ relief=SUNKEN, bd=2).pack()
+
+class ListEdit(Frame):
+# edit a list of values (duplicates not allowed) with a supplied editor hook
+ def __init__(self, newlegend, list, editor, master):
+ self.editor = editor
+ self.list = list
+
+ # Set up a widget to accept new sites
+ self.newval = StringVar(master)
+ newwin = LabeledEntry(master, newlegend, self.newval, '16')
+ newwin.bind('<Double-1>', self.handleNew)
+ newwin.bind('<Return>', self.handleNew)
+ newwin.pack(side=TOP, fill=X, anchor=E)
+
+ # Create the sitelist for site-configuration selection
+ listframe = Frame(master)
+ scroll = Scrollbar(listframe)
+ listwidget = Listbox(listframe, height=0, selectmode='browse')
+ if list:
+ for dnsname in list:
+ listwidget.insert('end', dnsname)
+ listframe.pack(side=TOP, expand=YES, fill=BOTH)
+ listwidget.config(yscrollcommand=scroll.set, relief=SUNKEN)
+ listwidget.pack(side=LEFT, expand=YES, fill=BOTH)
+ scroll.config(command=listwidget.yview, relief=SUNKEN)
+ scroll.pack(side=RIGHT, fill=BOTH)
+ listwidget.config(selectmode=SINGLE, setgrid=TRUE)
+ listwidget.bind('<Double-1>', self.handleList);
+ listwidget.bind('<Return>', self.handleList);
+ self.listwidget = listwidget
+
+ bf = Frame(master);
+ if self.editor:
+ Button(bf, text='Edit', command=self.editItem).pack(side=LEFT)
+ Button(bf, text='Delete', command=self.deleteItem).pack(side=RIGHT)
+ bf.pack(fill=X)
+
+ def handleList(self, event):
+ self.editItem();
+
+ def handleNew(self, event):
+ item = self.newval.get()
+ entire = self.listwidget.get(0, self.listwidget.index('end'));
+ if item and (not entire) or (not item in self.listwidget.get(0,
self.listwidget.index('end'))):
+ self.listwidget.insert('end', item)
+ if self.list != None: self.list.append(item)
+ self.newval.set('')
+
+ def editItem(self):
+ index = self.listwidget.curselection()[0]
+ if index and self.editor:
+ label = self.listwidget.get(index);
+ apply(self.editor, (label,))
+
+ def deleteItem(self):
+ index = self.listwidget.curselection()[0]
+ if index:
+ self.listwidget.delete(index)
+ if self.list != None: del self.list[index]
+
+def ConfirmQuit(frame, context):
+ ans = Dialog(frame,
+ title = 'Quit?',
+ text = 'Really quit ' + context + ' without saving?',
+ bitmap = 'question',
+ strings = ('Yes', 'No'),
+ default = 1)
+ return ans.num == 0
+#
+# First, code to set the global fetchmail run controls.
+#
+
+confighelp = {
+ 'title' : 'Fetchmail configurator help',
+ 'banner': 'Configurator help',
+ 'text' : """
+In the `Configurator Controls' panel, you can:
+
+Press `Save' to save the new fetchmail configuration you have created.
+Press `Quit' to exit without saving.
+Press `Help' to bring up this help message.
+
+In the `Configurator Controls' panel, you can set the following options that
+control how fetchmail runs:
+
+Poll interval
+ Number of seconds to wait between polls in the background.
+ Ignored if the `Run in Foreground?' option is on.
+
+Logfile
+ If empty, emit progress and error messages to stderr.
+ Otherwise this gives the name of the files to write to.
+ This field is ignored if the "Log to syslog?" option is on.
+
+In the `Remote Mail Configurations' panel, you can:
+
+1. Enter the name of a new remote mail server you want fetchmail to query.
+
+To do this, simply enter a label for the poll configuration in the
+`New Server:' box. The label should be a DNS name of the server (unless
+you are using ssh or some other tunneling method and will fill in the `via'
+option on the site configuration screen).
+
+2. Change the configuration of an existing site.
+
+To do this, find the site's label in the listbox and double-click it.
+This will take you to a site configuration dialogue.
+"""}
+
+class ControlEdit(Frame):
+ def PostControls(self):
+ self.foreground = BooleanVar(self)
+ self.foreground.set(self.controls.foreground)
+ self.daemon = StringVar(self)
+ self.daemon.set(`self.controls.daemon`)
+ self.syslog = BooleanVar(self)
+ self.syslog.set(self.controls.syslog);
+ self.logfile = StringVar(self)
+ if self.controls.logfile: self.logfile.set(self.controls.logfile);
+
+ gf = Frame(self, relief=RAISED, bd = 5)
+
+ Label(gf,
+ text='Fetchmail Run Controls',
+ bd=2).pack(side=TOP, pady=10)
+
+ df = Frame(gf, relief=RAISED, bd=2)
+
+ # Run in foreground?
+ Checkbutton(df,
+ {'text':'Run in foreground?',
+ 'variable':self.foreground,
+ 'relief':GROOVE}).pack(side=LEFT,anchor=W)
+
+ # Set the poll interval
+ de = LabeledEntry(df, ' Poll interval:', self.daemon, '14')
+ de.pack(side=RIGHT, anchor=E)
+
+ df.pack();
+
+ sf = Frame(gf, relief=RAISED, bd=2)
+
+ # Use syslog for logging?
+ Checkbutton(sf,
+ {'text':'Log to syslog?',
+ 'variable':self.syslog,
+ 'relief':GROOVE}).pack(side=LEFT, anchor=W)
+
+ # Set the logfile
+ log = LabeledEntry(sf, ' Logfile:', self.logfile, '14')
+ log.pack(side=RIGHT, anchor=E)
+
+ sf.pack(fill=X)
+ gf.pack(fill=X)
+
+ def GatherControls(self):
+ self.controls.daemon = self.daemon.get()
+ self.controls.foreground = self.foreground.get()
+ self.controls.logfile = self.logfile.get()
+ self.controls.syslog = self.syslog.get()
+
+#
+# Server editing stuff.
+#
+serverhelp = {
+ 'title' : 'Server options help',
+ 'banner': 'Server Options',
+ 'text' : """
+The server options screen controls fetchmail
+options that apply to one of your mailservers.
+
+Once you have a mailserver configuration set
+up as you like it, you can select `Save' to
+store it in the server list maintained in
+the main configuration window.
+
+If you wish to discard changes to a server
+configuration, select `Quit'.
+"""}
+
+controlhelp = {
+ 'title' : 'Run Control help',
+ 'banner': 'Run Controls',
+ 'text' : """
+If the `Poll normally' checkbox is on, the host is polled as part of
+the normal operation of fetchmail when it is run with no arguments.
+If it is off, fetchmail will only query this host when it is given as
+a command-line argument.
+
+The `True name of server' box should specify the actual DNS name
+to query. By default this is the same as the poll name.
+
+Normally each host described in the file is queried once each
+poll cycle. If `Cycles to skip between polls' is greater than 0,
+that's the number of poll cycles that are skipped between the
+times this post is actually polled.
+
+The `Server timeout' is the number of seconds fetchmail will wait
+for a reply from the mailserver before concluding it is hung and
+giving up.
+"""}
+
+protohelp = {
+ 'title' : 'Protocol and Port help',
+ 'banner': 'Protocol and Port',
+ 'text' : """
+These options control the remote-mail protocol
+and TCP/IP service port used to query this
+server.
+
+The `Protocol' button bar offers you a choice of
+all the different protocols available. The `auto'
+protocol is a special mode that probes the host
+ports for POP3 and IMAP to see if either is
+available.
+
+Normally the TCP/IP service port to use is
+dictated by the protocol choice. The `Port'
+field lets you set a non-standard port.
+"""}
+
+sechelp = {
+ 'title' : 'Security option help',
+ 'banner': 'Security',
+ 'text' : """
+These options control the security procedure used
+to protect mail transfer
+
+Normally the mail fetch is validated using an
+ordinary password logon. If your server speaks
+MIT Kerberos IV it is possible to pre-authenticate
+the exxchange with a Kerberos ticket.
+
+The `interface' and `monitor' options are available
+only for Linux systems. See the fetchmail manual page
+for details on these.
+"""}
+
+multihelp = {
+ 'title' : 'Multidrop option help',
+ 'banner': 'Multidrop',
+ 'text' : """
+These options are only useful with multidrop mode.
+See the manual page for extended discussion.
+"""}
+
+class ServerEdit(Frame):
+ def __init__(self, host, sitelist, master=None):
+ Frame.__init__(self, master)
+ Pack.config(self)
+ self.master.title('Fetchmail host ' + host);
+ self.master.iconname('Fetchmail host ' + host);
+ self.server = Server()
+ self.server.pollname = host
+ self.server.via = host
+ self.sitelist = sitelist
+ self.post()
+ self.createWidgets(host)
+
+ def post(self):
+ # we can't abstract this away, execs would happen in the wrong scope
+ for x in self.server.typemap:
+ target = "self." + x[0]
+ source = "self.server." + x[0]
+ if x[1] == 'Boolean':
+ exec target + " = BooleanVar(self)"
+ if eval(source):
+ exec target + ".set(" + source + ")"
+ elif x[1] == 'String':
+ exec target + " = StringVar(self)"
+ if eval(source):
+ exec target + ".set(" + source + ")"
+ elif x[1] == 'Int':
+ exec target + " = IntVar(self)"
+ if eval(source):
+ exec target + ".set(" + source + ")"
+
+ def gather(self):
+ for x in self.server.typemap:
+ setattr(self.server, x[0], getattr(self, x[0]).get())
+
+ def nosave(self):
+ if ConfirmQuit(self, 'server option editing'):
+ Widget.destroy(self.master)
+
+ def save(self):
+ self.gather()
+ self.sitelist.append(self.server)
+ Widget.destroy(self.master)
+
+ def refreshPort(self):
+ proto = self.protocol.get()
+ self.port.set(defaultports[proto])
+ if not proto in ("POP3", "APOP", "KPOP"): self.uidl = FALSE
+
+ def createWidgets(self, host):
+ topwin = Frame(self, relief=RAISED, bd=5)
+ Label(topwin, text="Server options for " + host).pack(side=TOP,pady=10)
+ Button(topwin, text='Save', fg='blue',
+ command=self.save).pack(side=LEFT)
+ Button(topwin, text='Quit', fg='blue',
+ command=self.nosave).pack(side=LEFT)
+ Button(topwin, text='Help', fg='blue',
+ command=lambda: helpwin(serverhelp)).pack(side=RIGHT)
+ topwin.pack(fill=X)
+
+ ctlwin = Frame(self, relief=RAISED, bd=5)
+ Label(ctlwin, text="Run Controls").pack(side=TOP)
+ Checkbutton(ctlwin, text='Poll ' + host + ' normally?',
variable=self.active).pack(side=TOP)
+ LabeledEntry(ctlwin, 'True name of ' + host + ':',
+ self.via, '30').pack(side=TOP, fill=X)
+ LabeledEntry(ctlwin, 'Cycles to skip between polls:',
+ self.interval, '30').pack(side=TOP, fill=X)
+ LabeledEntry(ctlwin, 'Server timeout (seconds):',
+ self.timeout, '30').pack(side=TOP, fill=X)
+ Button(ctlwin, text='Help', fg='blue',
+ command=lambda: helpwin(controlhelp)).pack(side=RIGHT)
+ ctlwin.pack(fill=X)
+
+ protwin = Frame(self, relief=RAISED, bd=5)
+ Label(protwin, text="Protocol and Port").pack(side=TOP)
+ pb = ButtonBar(protwin, 'Protocol:', self.protocol, protolist,
self.refreshPort)
+ LabeledEntry(protwin, 'TCP/IP service port to query:',
+ self.port, '30').pack(side=TOP, fill=X)
+ Checkbutton(protwin,
+ text="Track seen POP3 messages with client-side UIDL list?",
+ variable=self.uidl).pack(side=TOP)
+ Button(protwin, text='Help', fg='blue',
+ command=lambda: helpwin(protohelp)).pack(side=RIGHT)
+ protwin.pack(fill=X)
+
+ secwin = Frame(self, relief=RAISED, bd=5)
+ Label(secwin, text="Security").pack(side=TOP)
+ ButtonBar(secwin, 'Authorization mode:',
+ self.auth, authlist, None).pack(side=TOP)
+
+ if os.popen("uname").readlines()[0] == 'Linux\n':
+ LabeledEntry(secwin, 'Interface to check before polling:',
+ self.interface, '30').pack(side=TOP, fill=X)
+ LabeledEntry(secwin, 'IP addresses to watch for activity:',
+ self.monitor, '30').pack(side=TOP, fill=X)
+
+ Button(secwin, text='Help', fg='blue',
+ command=lambda: helpwin(sechelp)).pack(side=RIGHT)
+ secwin.pack(fill=X)
+
+ mdropwin = Frame(self, relief=RAISED, bd=5)
+ Label(mdropwin, text="Multidrop options").pack(side=TOP)
+ LabeledEntry(mdropwin, 'Envelope address header:',
+ self.envelope, '30').pack(side=TOP, fill=X)
+ Checkbutton(mdropwin, text="Enable multidrop DNS lookup?",
+ variable=self.dns).pack(side=TOP)
+ Label(mdropwin, text="DNS aliases").pack(side=TOP)
+ ListEdit("New site alias: ", self.server.aka, None, mdropwin)
+ Label(mdropwin, text="Domains to be considered local").pack(side=TOP)
+ ListEdit("New local domain: ", self.server.localdomains, None,mdropwin)
+ Button(mdropwin, text='Help', fg='blue',
+ command=lambda: helpwin(multihelp)).pack(side=RIGHT)
+ mdropwin.pack(fill=X)
+
+ userwin = Frame(self, relief=RAISED, bd=5)
+ Label(userwin, text="User entries for " + host).pack(side=TOP)
+ ListEdit("New user: ", None, self.edituser, userwin)
+ userwin.pack(fill=X)
+
+ def edituser(self, user):
+ UserEdit(user, self.server.userlist, Toplevel())
+
+#
+# User editing stuff
+#
+
+userhelp = {
+ 'title' : 'User option help',
+ 'banner': 'User options',
+ 'text' : """
+FIXME
+"""}
+
+class UserEdit(Frame):
+ def __init__(self, user, userlist, master=None):
+ Frame.__init__(self, master)
+ Pack.config(self)
+ self.master.title('Fetchmail user ' + user);
+ self.master.iconname('Fetchmail user ' + user);
+ self.user = User()
+ self.user.remote = user
+ self.user.localnames = [user]
+ self.userlist = userlist
+ self.post()
+ self.createWidgets(user)
+
+ def post(self):
+ # we can't abstract this away, execs would happen in the wrong scope
+ for x in self.user.typemap:
+ target = "self." + x[0]
+ source = "self.user." + x[0]
+ if x[1] == 'Boolean':
+ exec target + " = BooleanVar(self)"
+ if eval(source):
+ exec target + ".set(" + source + ")"
+ elif x[1] == 'String':
+ exec target + " = StringVar(self)"
+ if eval(source):
+ exec target + ".set(" + source + ")"
+ elif x[1] == 'Int':
+ exec target + " = IntVar(self)"
+ if eval(source):
+ exec target + ".set(" + source + ")"
+
+ def gather(self):
+ for x in self.user.typemap:
+ setattr(self.user, x[0], getattr(self, x[0]).get())
+
+ def nosave(self):
+ if ConfirmQuit(self, 'user option editing'):
+ Widget.destroy(self.master)
+
+ def save(self):
+ self.gather()
+ self.userlist.append(self.user)
+ Widget.destroy(self.master)
+
+ def createWidgets(self):
+ topwin = Frame(self, relief=RAISED, bd=5)
+ Label(topwin,
+ text="User options for " +
self.user.remote).pack(side=TOP,pady=10)
+ Button(topwin, text='Save', fg='blue',
+ command=self.save).pack(side=LEFT)
+ Button(topwin, text='Quit', fg='blue',
+ command=self.nosave).pack(side=LEFT)
+ Button(topwin, text='Help', fg='blue',
+ command=lambda: helpwin(userhelp)).pack(side=RIGHT)
+ topwin.pack(fill=X)
+
+ secwin = Frame(self, relief=RAISED, bd=5)
+ Label(secwin, text="Authentication").pack(side=TOP)
+ LabeledEntry(mdropwin, 'Password:',
+ self.password, '30').pack(side=TOP, fill=X)
+ LabeledEntry(mdropwin, 'Remote folder:',
+ self.folder, '30').pack(side=TOP, fill=X)
+ secwin.pack(fill=X)
+
+ names = Frame(self, relief=RAISED, bd=5)
+ Label(names, text="Local names").pack(side=TOP)
+ ListEdit("New local name: ", self.localnames, None, names)
+ names.pack(fill=X)
+
+ targwin = Frame(self, relief=RAISED, bd=5)
+ Label(targwin, text="Forwarding Options").pack(side=TOP)
+ LabeledEntry(targwin, 'System to forward to:',
+ self.smtphost, '30').pack(side=TOP, fill=X)
+ LabeledEntry(targwin, 'Connection setup command:',
+ self.preconnect, '30').pack(side=TOP, fill=X)
+ LabeledEntry(targwin, 'Connection wrapup command:',
+ self.postconnect, '30').pack(side=TOP, fill=X)
+ LabeledEntry(targwin, 'Local delivery agent:',
+ self.mda, '30').pack(side=TOP, fill=X)
+ targwin.pack(fill=X)
+
+ optwin = Frame(self, relief=RAISED, bd=5)
+ Checkbutton(optwin, "Suppress deletion of messages after reading",
+ self.keep)
+ Checkbutton(optwin, "Flush seen messages before retrieval",
+ self.flush)
+ Checkbutton(optwin, "Fetch old messages as well as new",
+ self.fetchall)
+ Checkbutton(optwin, "Rewrite To/Cc/Bcc messages to enable reply",
+ self.rewrite)
+ Checkbutton(optwin, "Force CR/LF at end of each line",
+ self.forcecr)
+ Checkbutton(optwin, "Strip CR from end of eacgh line",
+ self.stripcr)
+ Checkbutton(optwin, "Pass 8 bits even theough SMTP says 7BIT",
+ self.pass8bits)
+ Checkbutton(optwin, "Drop Status lines from forwarded messages",
+ self.dropstatus)
+ optwin.pack(fill=X)
+
+ limwin = Frame(self, relief=RAISED, bd=5)
+ Label(limwin, text="Resource Limits").pack(side=TOP)
+ LabeledEntry(limwin, 'Message size limit:',
+ self.limit, '30').pack(side=TOP, fill=X)
+ LabeledEntry(limwin, 'Maximum messages to fetch each poll:',
+ self.fetchlimit, '30').pack(side=TOP, fill=X)
+ LabeledEntry(limwin, 'Maximum messages to forward each poll:',
+ self.batchlimit, '30').pack(side=TOP, fill=X)
+ limwin.pack(fill=X)
+
+#
+# Configure drives the configuration dialogue. It may call multiple
+# instances of ServerEdit to do its job.
+#
+
+class Configure(Frame, ControlEdit):
+ def __init__(self, master=None):
+ Frame.__init__(self, master)
+ self.master.title('fetchmail configurator');
+ self.master.iconname('fetchmail configurator');
+ Pack.config(self)
+ self.MakeDispose()
+ self.controls = Controls()
+ self.PostControls()
+ self.MakeSitelist(master)
+ self.sites = []
+
+ def MakeDispose(self):
+ # Set the disposal of the given configuration
+ dispose = Frame(self, relief=RAISED, bd=5);
+ Label(dispose,
+ text='Configurator Controls',
+ bd=2).pack(side=TOP, pady=10)
+ Button(dispose, text='Save', fg='blue',
+ command=self.save).pack(side=LEFT)
+ Button(dispose, text='Quit', fg='blue',
+ command=self.nosave).pack(side=LEFT)
+ Button(dispose, text='Help', fg='blue',
+ command=lambda: helpwin(confighelp)).pack(side=RIGHT)
+ dispose.pack(side=TOP, fill=X);
+
+ def MakeSitelist(self, master):
+ lf = Frame(master, relief=RAISED, bd=5)
+ Label(lf,
+ text='Remote Mail Server Configurations',
+ bd=2).pack(side=TOP, pady=10)
+ ListEdit('New Server:', None, self.editsite, lf)
+ lf.pack(fill=X)
+
+ def editsite(self, site):
+ ServerEdit(site, self.sites, Toplevel())
+
+ def save(self):
+ self.GatherControls()
+ sys.stdout.write("# Configuration created %s\n" %
time.ctime(time.time()))
+ sys.stdout.write(`self.controls`)
+ for site in self.sites:
+ sys.stdout.write(`site`)
+ for user in self.sites.userlist:
+ sys.stdout.write(`user`)
+ self.quit()
+
+ def nosave(self):
+ if ConfirmQuit(self, "configuration editor"):
+ self.quit()
+
+if __name__ == '__main__':
+ ServerDefaults = Server()
+ UserDefaults = User()
+ Configure().mainloop()
+
+# The following sets edit modes for GNU EMACS
+# Local Variables:
+# mode:python
+# End:
diff --git a/test/etags/tex-src/gzip.texi b/test/etags/tex-src/gzip.texi
new file mode 100644
index 0000000..07be371
--- /dev/null
+++ b/test/etags/tex-src/gzip.texi
@@ -0,0 +1,479 @@
+\input texinfo @c -*-texinfo-*-
address@hidden %**start of header
address@hidden gzip.info
address@hidden Gzip User's Manual
address@hidden
address@hidden odd
address@hidden %**end of header
+
address@hidden
+This file documents the the GNU @code{gzip} command for compressing files.
+
+Copyright (C) 1992-1993 Jean-loup Gailly
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
address@hidden
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
address@hidden ignore
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
address@hidden ifinfo
+
address@hidden
address@hidden gzip
address@hidden The data compression program
address@hidden Edition 1.2.4, for Gzip Version 1.2.4
address@hidden July 1993
address@hidden by Jean-loup Gailly
+
address@hidden
address@hidden 0pt plus 1filll
+Copyright @copyright{} 1992-1993 Jean-loup Gailly
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
address@hidden titlepage
+
address@hidden Top, , , (dir)
+
address@hidden
+This file documents the @code{gzip} command to compress files.
address@hidden ifinfo
+
address@hidden
+* Copying:: How you can copy and share @code{gzip}.
+* Overview:: Preliminary information.
+* Sample:: Sample output from @code{gzip}.
+* Invoking gzip:: How to run @code{gzip}.
+* Advanced usage:: Concatenated files.
+* Environment:: The @code{GZIP} environment variable
+* Tapes:: Using @code{gzip} on tapes.
+* Problems:: Reporting bugs.
+* Concept Index:: Index of concepts.
address@hidden menu
+
address@hidden Copying, Overview, , Top
address@hidden gpl.texinfo
+
address@hidden Overview, Sample, Copying, Top
address@hidden Overview
address@hidden overview
+
address@hidden reduces the size of the named files using Lempel-Ziv coding
+(LZ77). Whenever possible, each file is replaced by one with the
+extension @samp{.gz}, while keeping the same ownership modes, access and
+modification times. (The default extension is @samp{-gz} for VMS,
address@hidden for MSDOS, OS/2 FAT and Atari.) If no files are specified or
+if a file name is "-", the standard input is compressed to the standard
+output. @code{gzip} will only attempt to compress regular files. In
+particular, it will ignore symbolic links.
+
+If the new file name is too long for its file system, @code{gzip}
+truncates it. @code{gzip} attempts to truncate only the parts of the
+file name longer than 3 characters. (A part is delimited by dots.) If
+the name consists of small parts only, the longest parts are truncated.
+For example, if file names are limited to 14 characters, gzip.msdos.exe
+is compressed to gzi.msd.exe.gz. Names are not truncated on systems
+which do not have a limit on file name length.
+
+By default, @code{gzip} keeps the original file name and timestamp in
+the compressed file. These are used when decompressing the file with the
address@hidden option. This is useful when the compressed file name was
+truncated or when the time stamp was not preserved after a file
+transfer.
+
+Compressed files can be restored to their original form using @samp{gzip -d}
+or @code{gunzip} or @code{zcat}. If the original name saved in the
+compressed file is not suitable for its file system, a new name is
+constructed from the original one to make it legal.
+
address@hidden takes a list of files on its command line and replaces
+each file whose name ends with @samp{.gz}, @samp{.z}, @samp{.Z},
address@hidden, @samp{-z} or @samp{_z} and which begins with the correct
+magic number with an uncompressed file without the original extension.
address@hidden also recognizes the special extensions @samp{.tgz} and
address@hidden as shorthands for @samp{.tar.gz} and @samp{.tar.Z}
+respectively. When compressing, @code{gzip} uses the @samp{.tgz}
+extension if necessary instead of truncating a file with a @samp{.tar}
+extension.
+
address@hidden can currently decompress files created by @code{gzip},
address@hidden, @code{compress} or @code{pack}. The detection of the input
+format is automatic. When using the first two formats, @code{gunzip}
+checks a 32 bit CRC (cyclic redundancy check). For @code{pack},
address@hidden checks the uncompressed length. The @code{compress} format
+was not designed to allow consistency checks. However @code{gunzip} is
+sometimes able to detect a bad @samp{.Z} file. If you get an error when
+uncompressing a @samp{.Z} file, do not assume that the @samp{.Z} file is
+correct simply because the standard @code{uncompress} does not complain.
+This generally means that the standard @code{uncompress} does not check
+its input, and happily generates garbage output. The SCO @samp{compress
+-H} format (@code{lzh} compression method) does not include a CRC but
+also allows some consistency checks.
+
+Files created by @code{zip} can be uncompressed by @code{gzip} only if
+they have a single member compressed with the 'deflation' method. This
+feature is only intended to help conversion of @code{tar.zip} files to
+the @code{tar.gz} format. To extract @code{zip} files with several
+members, use @code{unzip} instead of @code{gunzip}.
+
address@hidden is identical to @samp{gunzip -c}. @code{zcat}
+uncompresses either a list of files on the command line or its standard
+input and writes the uncompressed data on standard output. @code{zcat}
+will uncompress files that have the correct magic number whether they
+have a @samp{.gz} suffix or not.
+
address@hidden uses the Lempel-Ziv algorithm used in @code{zip} and PKZIP.
+The amount of compression obtained depends on the size of the input and
+the distribution of common substrings. Typically, text such as source
+code or English is reduced by 60-70%. Compression is generally much
+better than that achieved by LZW (as used in @code{compress}), Huffman
+coding (as used in @code{pack}), or adaptive Huffman coding
+(@code{compact}).
+
+Compression is always performed, even if the compressed file is slightly
+larger than the original. The worst case expansion is a few bytes for
+the @code{gzip} file header, plus 5 bytes every 32K block, or an expansion
+ratio of 0.015% for large files. Note that the actual number of used
+disk blocks almost never increases. @code{gzip} preserves the mode,
+ownership and timestamps of files when compressing or decompressing.
+
address@hidden Sample, Invoking gzip, Overview, Top
address@hidden Sample Output
address@hidden sample
+
+Here are some realistic examples of running @code{gzip}.
+
+This is the output of the command @samp{gzip -h}:
+
address@hidden
+gzip 1.2.4 (18 Aug 93)
+usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...]
+ -c --stdout write on standard output, keep original files unchanged
+ -d --decompress decompress
+ -f --force force overwrite of output file and compress links
+ -h --help give this help
+ -l --list list compressed file contents
+ -L --license display software license
+ -n --no-name do not save or restore the original name and time stamp
+ -N --name save or restore the original name and time stamp
+ -q --quiet suppress all warnings
+ -r --recursive operate recursively on directories
+ -S .suf --suffix .suf use suffix .suf on compressed files
+ -t --test test compressed file integrity
+ -v --verbose verbose mode
+ -V --version display version number
+ -1 --fast compress faster
+ -9 --best compress better
+ file... files to (de)compress. If none given, use standard input.
address@hidden example
+
+This is the output of the command @samp{gzip -v texinfo.tex}:
+
address@hidden
+texinfo.tex: 71.6% -- replaced with texinfo.tex.gz
address@hidden example
+
+The following command will find all @code{gzip} files in the current
+directory and subdirectories, and extract them in place without
+destroying the original:
+
address@hidden
+find . -name '*.gz' -print | sed 's/^\(.*\)[.]gz$/gunzip < "&" > "\1"/' | sh
address@hidden example
+
address@hidden Invoking gzip, Advanced usage, Sample, Top
address@hidden Invoking @code{gzip}
address@hidden invoking
address@hidden options
+
+The format for running the @code{gzip} program is:
+
address@hidden
+gzip @var{option} @dots{}
address@hidden example
+
address@hidden supports the following options:
+
address@hidden @samp
address@hidden --stdout
address@hidden --to-stdout
address@hidden -c
+Write output on standard output; keep original files unchanged.
+If there are several input files, the output consists of a sequence of
+independently compressed members. To obtain better compression,
+concatenate all input files before compressing them.
+
address@hidden --decompress
address@hidden --uncompress
address@hidden -d
+Decompress.
+
address@hidden --force
address@hidden -f
+Force compression or decompression even if the file has multiple links
+or the corresponding file already exists, or if the compressed data
+is read from or written to a terminal. If the input data is not in
+a format recognized by @code{gzip}, and if the option --stdout is also
+given, copy the input data without change to the standard ouput: let
address@hidden behave as @code{cat}. If @samp{-f} is not given, and
+when not running in the background, @code{gzip} prompts to verify
+whether an existing file should be overwritten.
+
address@hidden --help
address@hidden -h
+Print an informative help message describing the options then quit.
+
address@hidden --list
address@hidden -l
+For each compressed file, list the following fields:
+
address@hidden
+compressed size: size of the compressed file
+uncompressed size: size of the uncompressed file
+ratio: compression ratio (0.0% if unknown)
+uncompressed_name: name of the uncompressed file
address@hidden example
+
+The uncompressed size is given as @samp{-1} for files not in @code{gzip}
+format, such as compressed @samp{.Z} files. To get the uncompressed size for
+such a file, you can use:
+
address@hidden
+zcat file.Z | wc -c
address@hidden example
+
+In combination with the --verbose option, the following fields are also
+displayed:
+
address@hidden
+method: compression method (deflate,compress,lzh,pack)
+crc: the 32-bit CRC of the uncompressed data
+date & time: time stamp for the uncompressed file
address@hidden example
+
+The crc is given as ffffffff for a file not in gzip format.
+
+With --verbose, the size totals and compression ratio for all files
+is also displayed, unless some sizes are unknown. With --quiet,
+the title and totals lines are not displayed.
+
address@hidden --license
address@hidden -L
+Display the @code{gzip} license then quit.
+
address@hidden --no-name
address@hidden -n
+When compressing, do not save the original file name and time stamp by
+default. (The original name is always saved if the name had to be
+truncated.) When decompressing, do not restore the original file name
+if present (remove only the @code{gzip}
+suffix from the compressed file name) and do not restore the original
+time stamp if present (copy it from the compressed file). This option
+is the default when decompressing.
+
address@hidden --name
address@hidden -N
+When compressing, always save the original file name and time stamp; this
+is the default. When decompressing, restore the original file name and
+time stamp if present. This option is useful on systems which have
+a limit on file name length or when the time stamp has been lost after
+a file transfer.
+
address@hidden --quiet
address@hidden -q
+Suppress all warning messages.
+
address@hidden --recursive
address@hidden -r
+Travel the directory structure recursively. If any of the file names
+specified on the command line are directories, @code{gzip} will descend
+into the directory and compress all the files it finds there (or
+decompress them in the case of @code{gunzip}).
+
address@hidden --suffix @var{suf}
address@hidden -S @var{suf}
+Use suffix @address@hidden instead of @samp{.gz}. Any suffix can be
+given, but suffixes other than @samp{.z} and @samp{.gz} should be
+avoided to avoid confusion when files are transferred to other systems.
+A null suffix forces gunzip to try decompression on all given files
+regardless of suffix, as in:
+
address@hidden
+gunzip -S "" * (*.* for MSDOS)
address@hidden example
+
+Previous versions of gzip used the @samp{.z} suffix. This was changed to
+avoid a conflict with @code{pack}.
+
address@hidden --test
address@hidden -t
+Test. Check the compressed file integrity.
+
address@hidden --verbose
address@hidden -v
+Verbose. Display the name and percentage reduction for each file compressed.
+
address@hidden --version
address@hidden -V
+Version. Display the version number and compilation options, then quit.
+
address@hidden --fast
address@hidden --best
address@hidden address@hidden
+Regulate the speed of compression using the specified digit @var{n},
+where @samp{-1} or @samp{--fast} indicates the fastest compression
+method (less compression) and @samp{--best} or @samp{-9} indicates the
+slowest compression method (optimal compression). The default
+compression level is @samp{-6} (that is, biased towards high compression at
+expense of speed).
address@hidden table
+
address@hidden Advanced usage, Environment, Invoking gzip, Top
address@hidden Advanced usage
address@hidden concatenated files
+
+Multiple compressed files can be concatenated. In this case,
address@hidden will extract all members at once. If one member is
+damaged, other members might still be recovered after removal of the
+damaged member. Better compression can be usually obtained if all
+members are decompressed and then recompressed in a single step.
+
+This is an example of concatenating @code{gzip} files:
+
address@hidden
+gzip -c file1 > foo.gz
+gzip -c file2 >> foo.gz
address@hidden example
+
+Then
+
address@hidden
+gunzip -c foo
address@hidden example
+
+is equivalent to
+
address@hidden
+cat file1 file2
address@hidden example
+
+In case of damage to one member of a @samp{.gz} file, other members can
+still be recovered (if the damaged member is removed). However,
+you can get better compression by compressing all members at once:
+
address@hidden
+cat file1 file2 | gzip > foo.gz
address@hidden example
+
+compresses better than
+
address@hidden
+gzip -c file1 file2 > foo.gz
address@hidden example
+
+If you want to recompress concatenated files to get better compression, do:
+
address@hidden
+zcat old.gz | gzip > new.gz
address@hidden example
+
+If a compressed file consists of several members, the uncompressed
+size and CRC reported by the @samp{--list} option applies to the last member
+only. If you need the uncompressed size for all members, you can use:
+
address@hidden
+zcat file.gz | wc -c
address@hidden example
+
+If you wish to create a single archive file with multiple members so
+that members can later be extracted independently, use an archiver such
+as @code{tar} or @code{zip}. GNU @code{tar} supports the @samp{-z}
+option to invoke @code{gzip} transparently. @code{gzip} is designed as a
+complement to @code{tar}, not as a replacement.
+
address@hidden Environment, Tapes, Advanced usage, Top
address@hidden Environment
address@hidden Environment
+
+The environment variable @code{GZIP} can hold a set of default options for
address@hidden These options are interpreted first and can be overwritten by
+explicit command line parameters. For example:
+
address@hidden
+for sh: GZIP="-8v --name"; export GZIP
+for csh: setenv GZIP "-8v --name"
+for MSDOS: set GZIP=-8v --name
address@hidden example
+
+On Vax/VMS, the name of the environment variable is @code{GZIP_OPT}, to
+avoid a conflict with the symbol set for invocation of the program.
+
address@hidden Tapes, Problems, Environment, Top
address@hidden Using @code{gzip} on tapes
address@hidden tapes
+
+When writing compressed data to a tape, it is generally necessary to pad
+the output with zeroes up to a block boundary. When the data is read and
+the whole block is passed to @code{gunzip} for decompression,
address@hidden detects that there is extra trailing garbage after the
+compressed data and emits a warning by default. You have to use the
address@hidden option to suppress the warning. This option can be set in the
address@hidden environment variable, as in:
+
address@hidden
+for sh: GZIP="-q" tar -xfz --block-compress /dev/rst0
+for csh: (setenv GZIP "-q"; tar -xfz --block-compress /dev/rst0)
address@hidden example
+
+In the above example, @code{gzip} is invoked implicitly by the @samp{-z}
+option of GNU @code{tar}. Make sure that the same block size (@samp{-b}
+option of @code{tar}) is used for reading and writing compressed data on
+tapes. (This example assumes you are using the GNU version of
address@hidden)
+
address@hidden Problems, Concept Index, Tapes, Top
address@hidden Reporting Bugs
address@hidden bugs
+
+If you find a bug in @code{gzip}, please send electronic mail to
address@hidden@samp{jloup@@chorus.fr}} or, if this fails, to
address@hidden@samp{bug-gnu-utils@@prep.ai.mit.edu}}. Include the version
number,
+which you can find by running @address@hidden -V}}. Also include in your
+message the hardware and operating system, the compiler used to compile
address@hidden,
+a description of the bug behavior, and the input to @code{gzip} that triggered
+the address@hidden
+
address@hidden Concept Index, , Problems, Top
address@hidden Concept Index
+
address@hidden cp
+
address@hidden
address@hidden
diff --git a/test/etags/tex-src/nonewline.tex b/test/etags/tex-src/nonewline.tex
new file mode 100644
index 0000000..8cc01ce
--- /dev/null
+++ b/test/etags/tex-src/nonewline.tex
@@ -0,0 +1 @@
+% This comment does not end with newline
\ No newline at end of file
diff --git a/test/etags/tex-src/testenv.tex b/test/etags/tex-src/testenv.tex
new file mode 100644
index 0000000..efb83cb
--- /dev/null
+++ b/test/etags/tex-src/testenv.tex
@@ -0,0 +1,15 @@
+\documentclass[11pt]{report}
+\usepackage{verbatim,amsmath,amssymb,morehelp}
+
+\newcommand{\nm}[2]{\nomenclature{#1}{#2}}
+
+
+\begin{document}
+\section{blah}
+
+MAKE PICTURE
+
+To develop notation, we examine a few particular cases.
+
+
+\end{document}
diff --git a/test/etags/tex-src/texinfo.tex b/test/etags/tex-src/texinfo.tex
new file mode 100644
index 0000000..203dca7
--- /dev/null
+++ b/test/etags/tex-src/texinfo.tex
@@ -0,0 +1,3350 @@
+%% TeX macros to handle texinfo files
+
+% Copyright (C) 1985, 1986, 1988, 1990, 1991 Free Software Foundation, Inc.
+
+%This texinfo.tex file is free software; you can redistribute it and/or
+%modify it under the terms of the GNU General Public License as
+%published by the Free Software Foundation; either version 2, or (at
+%your option) any later version.
+
+%This texinfo.tex file is distributed in the hope that it will be
+%useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+%of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%General Public License for more details.
+
+%You should have received a copy of the GNU General Public License
+%along with this texinfo.tex file; see the file COPYING. If not, write
+%to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
+%USA.
+
+
+%In other words, you are welcome to use, share and improve this program.
+%You are forbidden to forbid anyone else to use, share and improve
+%what you give them. Help stamp out software-hoarding!
+
+\def\texinfoversion{2.73}
+\message{Loading texinfo package [Version \texinfoversion]:}
+\message{}
+
+% Print the version number if in a .fmt file.
+\everyjob{\message{[Texinfo version \texinfoversion]}\message{}}
+
+% Save some parts of plain tex whose names we will redefine.
+
+\let\ptexlbrace=\{
+\let\ptexrbrace=\}
+\let\ptexdots=\dots
+\let\ptexdot=\.
+\let\ptexstar=\*
+\let\ptexend=\end
+\let\ptexbullet=\bullet
+\let\ptexb=\b
+\let\ptexc=\c
+\let\ptexi=\i
+\let\ptext=\t
+\let\ptexl=\l
+\let\ptexL=\L
+
+\def\tie{\penalty 10000\ } % Save plain tex definition of ~.
+
+\message{Basics,}
+\chardef\other=12
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+\hyphenation{ap-pen-dix}
+\hyphenation{mini-buf-fer mini-buf-fers}
+\hyphenation{eshell}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen \bindingoffset \bindingoffset=0pt
+\newdimen \normaloffset \normaloffset=\hoffset
+\newdimen\pagewidth \newdimen\pageheight
+\pagewidth=\hsize \pageheight=\vsize
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal. We don't just call \tracingall here,
+% since that produces some useless output on the terminal.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{\tracingcommands2 \tracingstats2
+ \tracingpages1 \tracingoutput1 \tracinglostchars1
+ \tracingmacros2 \tracingparagraphs1 \tracingrestores1
+ \showboxbreadth\maxdimen\showboxdepth\maxdimen
+}%
+
+%---------------------Begin change-----------------------
+%
+%%%% For @cropmarks command.
+% Dimensions to add cropmarks at corners Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\cornerlong \newdimen\cornerthick
+\newdimen \topandbottommargin
+\newdimen \outerhsize \newdimen \outervsize
+\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks
+\outerhsize=7in
+%\outervsize=9.5in
+% Alternative @smallbook page size is 9.25in
+\outervsize=9.25in
+\topandbottommargin=.75in
+%
+%---------------------End change-----------------------
+
+% \onepageout takes a vbox as an argument. Note that \pagecontents
+% does insertions itself, but you have to call it yourself.
+\chardef\PAGE=255 \output={\onepageout{\pagecontents\PAGE}}
+\def\onepageout#1{\hoffset=\normaloffset
+\ifodd\pageno \advance\hoffset by \bindingoffset
+\else \advance\hoffset by -\bindingoffset\fi
+{\escapechar=`\\\relax % makes sure backslash is used in output files.
+\shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}%
+{\let\hsize=\pagewidth \makefootline}}}%
+\advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
+
+%%%% For @cropmarks command %%%%
+
+% Here is a modification of the main output routine for Near East Publications
+% This provides right-angle cropmarks at all four corners.
+% The contents of the page are centerlined into the cropmarks,
+% and any desired binding offset is added as an \hskip on either
+% site of the centerlined box. (P. A. MacKay, 12 November, 1986)
+%
+\def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up
+ \shipout
+ \vbox to \outervsize{\hsize=\outerhsize
+ \vbox{\line{\ewtop\hfill\ewtop}}
+ \nointerlineskip
+ \line{\vbox{\moveleft\cornerthick\nstop}
+ \hfill
+ \vbox{\moveright\cornerthick\nstop}}
+ \vskip \topandbottommargin
+ \centerline{\ifodd\pageno\hskip\bindingoffset\fi
+ \vbox{
+ {\let\hsize=\pagewidth \makeheadline}
+ \pagebody{#1}
+ {\let\hsize=\pagewidth \makefootline}}
+ \ifodd\pageno\else\hskip\bindingoffset\fi}
+ \vskip \topandbottommargin plus1fill minus1fill
+ \boxmaxdepth\cornerthick
+ \line{\vbox{\moveleft\cornerthick\nsbot}
+ \hfill
+ \vbox{\moveright\cornerthick\nsbot}}
+ \nointerlineskip
+ \vbox{\line{\ewbot\hfill\ewbot}}
+ }
+ \advancepageno
+ \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
+%
+% Do @cropmarks to get crop marks
+\def\cropmarks{\let\onepageout=\croppageout }
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
address@hidden \unvbox#1
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
address@hidden \kern-\dimen@ \vfil \fi}
+}
+
+%
+% Here are the rules for the cropmarks. Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+ {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+ {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1.
+% The argument can be delimited with [...] or with "..." or braces
+% or it can be a whole line.
+% #1 should be a macro which expects
+% an ordinary undelimited TeX argument.
+
+\def\parsearg #1{\let\next=#1\begingroup\obeylines\futurelet\temp\parseargx}
+
+\def\parseargx{%
+\ifx \obeyedspace\temp \aftergroup\parseargdiscardspace \else%
+\aftergroup \parseargline %
+\fi \endgroup}
+
+{\obeyspaces %
+\gdef\parseargdiscardspace {\begingroup\obeylines\futurelet\temp\parseargx}}
+
+\gdef\obeyedspace{\ }
+
+\def\parseargline{\begingroup \obeylines \parsearglinex}
+{\obeylines %
+\gdef\parsearglinex #1^^M{\endgroup \next {#1}}}
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+%% These are used to keep @begin/@end levels from running away
+%% Call \inENV within environments (after a \begingroup)
+\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
+\def\ENVcheck{%
+\ifENV\errmessage{Still within an environment. Type Return to continue.}
+\endgroup\fi} % This is not perfect, but it should reduce lossage
+
+% @begin foo is the same as @foo, for now.
+\newhelp\EMsimple{Type <Return> to continue}
+
+\outer\def\begin{\parsearg\beginxxx}
+
+\def\beginxxx #1{%
+\expandafter\ifx\csname #1\endcsname\relax
+{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
+\csname #1\endcsname\fi}
+
+%% @end foo executes the definition of \Efoo.
+%% foo can be delimited by doublequotes or brackets.
+
+\def\end{\parsearg\endxxx}
+
+\def\endxxx #1{%
+\expandafter\ifx\csname E#1\endcsname\relax
+\expandafter\ifx\csname #1\endcsname\relax
+\errmessage{Undefined command @end #1}\else
+\errorE{#1}\fi\fi
+\csname E#1\endcsname}
+\def\errorE#1{
+{\errhelp=\EMsimple address@hidden #1 not within #1 environment}}}
+
+% Single-spacing is done by various environments.
+
+\newskip\singlespaceskip \singlespaceskip = \baselineskip
+\def\singlespace{%
+{\advance \baselineskip by -\singlespaceskip
+\kern \baselineskip}%
+\baselineskip=\singlespaceskip
+}
+
+%% Simple single-character @ commands
+
+% @@ prints an @
+% Kludge this until the fonts are right (grr).
address@hidden \char '100}}
+
+% Define @` and @' to be the same as ` and '
+% but suppressing ligatures.
+\def\`{{`}}
+\def\'{{'}}
+
+% Used to generate quoted braces.
+
+\def\mylbrace {{\tt \char '173}}
+\def\myrbrace {{\tt \char '175}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=3000 }
+
+% @w prevents a word break. Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line. According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0). If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+\def\group{\begingroup
+ \ifnum\catcode13=\active \else
+ \errhelp = \groupinvalidhelp
+ address@hidden invalid in context where filling is enabled}%
+ \fi
+ \def\Egroup{\egroup\endgroup}%
+ \vtop\bgroup
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing address@hidden can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil \mil=0.001in
+
+\def\need{\parsearg\needx}
+
+% Old definition--didn't work.
+%\def\needx #1{\par %
+%% This method tries to make TeX break the page naturally
+%% if the depth of the box does not fit.
+%{\baselineskip=0pt%
+%\vtop to #1\mil{\vfil}\kern -#1\mil\penalty 10000
+%\prevdepth=-1000pt
+%}}
+
+\def\needx#1{%
+ % Go into vertical mode, so we don't make a big box in the middle of a
+ % paragraph.
+ \par
+ %
+ % Don't add any leading before our big empty box, but allow a page
+ % break, since the best break might be right here.
+ \allowbreak
+ \nointerlineskip
+ \vtop to #1\mil{\vfil}%
+ %
+ % TeX does not even consider page breaks if a penalty added to the
+ % main vertical list is 10000 or more. But in order to see if the
+ % empty box we just added fits on the page, we must make it consider
+ % page breaks. On the other hand, we don't want to actually break the
+ % page after the empty box. So we use a penalty of 9999.
+ %
+ % There is an extremely small chance that TeX will actually break the
+ % page at this \penalty, if there are no other feasible breakpoints in
+ % sight. (If the user is using lots of big @group commands, which
+ % almost-but-not-quite fill up a page, TeX will have a hard time doing
+ % good page breaking, for example.) However, I could not construct an
+ % example where a page broke at this \penalty; if it happens in a real
+ % document, then we can reconsider our strategy.
+ \penalty9999
+ %
+ % Back up by the size of the box, whether we did a page break or not.
+ \kern -#1\mil
+ %
+ % Do not allow a page break right after this kern.
+ \nobreak
+}
+
+% @br forces paragraph break
+
+\let\br = \par
+
+% @dots{} output some dots
+
+\def\dots{$\ldots$}
+
+% @page forces the start of a new page
+
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\def\exdent{\parsearg\exdentyyy}
+\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
+
+% This defn is used inside nofill environments such as @example.
+\def\nofillexdent{\parsearg\nofillexdentyyy}
+\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
+\leftline{\hskip\leftskip{\rm#1}}}}
+
+%\hbox{{\rm#1}}\hfil\break}}
+
+% @include file insert text of that file as input.
+
+\def\include{\parsearg\includezzz}
+\def\includezzz #1{{\def\thisfile{#1}\input #1
+}}
+
+\def\thisfile{}
+
+% @center line outputs that line, centered
+
+\def\center{\parsearg\centerzzz}
+\def\centerzzz #1{{\advance\hsize by -\leftskip
+\advance\hsize by -\rightskip
+\centerline{#1}}}
+
+% @sp n outputs n lines of vertical space
+
+\def\sp{\parsearg\spxxx}
+\def\spxxx #1{\par \vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore is another way to write a comment
+
+\def\comment{\catcode 64=\other \catcode 123=\other \catcode 125=\other%
+\parsearg \commentxxx}
+
+\def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 }
+
+\let\c=\comment
+
+% Prevent errors for section commands.
+% Used in @ignore and in failing conditionals.
+\def\ignoresections{%
+\let\chapter=\relax
+\let\unnumbered=\relax
+\let\top=\relax
+\let\unnumberedsec=\relax
+\let\unnumberedsection=\relax
+\let\unnumberedsubsec=\relax
+\let\unnumberedsubsection=\relax
+\let\unnumberedsubsubsec=\relax
+\let\unnumberedsubsubsection=\relax
+\let\section=\relax
+\let\subsec=\relax
+\let\subsubsec=\relax
+\let\subsection=\relax
+\let\subsubsection=\relax
+\let\appendix=\relax
+\let\appendixsec=\relax
+\let\appendixsection=\relax
+\let\appendixsubsec=\relax
+\let\appendixsubsection=\relax
+\let\appendixsubsubsec=\relax
+\let\appendixsubsubsection=\relax
+\let\contents=\relax
+\let\smallbook=\relax
+\let\titlepage=\relax
+}
+
+\def\ignore{\begingroup\ignoresections
+% Make sure that spaces turn into tokens that match what \ignorexxx wants.
+\catcode32=10
+\ignorexxx}
+\long\def\ignorexxx #1\end ignore{\endgroup\ignorespaces}
+
+\def\direntry{\begingroup\direntryxxx}
+\long\def\direntryxxx #1\end direntry{\endgroup\ignorespaces}
+
+% Conditionals to test whether a flag is set.
+
+\def\ifset{\begingroup\ignoresections\parsearg\ifsetxxx}
+
+\def\ifsetxxx #1{\endgroup
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\ifsetfail
+\else \let\temp=\relax \fi
+\temp}
+\def\Eifset{}
+\def\ifsetfail{\begingroup\ignoresections\ifsetfailxxx}
+\long\def\ifsetfailxxx #1\end ifset{\endgroup\ignorespaces}
+
+\def\ifclear{\begingroup\ignoresections\parsearg\ifclearxxx}
+
+\def\ifclearxxx #1{\endgroup
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\relax
+\else \let\temp=\ifclearfail \fi
+\temp}
+\def\Eifclear{}
+\def\ifclearfail{\begingroup\ignoresections\ifclearfailxxx}
+\long\def\ifclearfailxxx #1\end ifclear{\endgroup\ignorespaces}
+
+% @set foo to set the flag named foo.
+% @clear foo to clear the flag named foo.
+\def\set{\parsearg\setxxx}
+\def\setxxx #1{
+\expandafter\let\csname IF#1\endcsname=\set}
+
+\def\clear{\parsearg\clearxxx}
+\def\clearxxx #1{
+\expandafter\let\csname IF#1\endcsname=\relax}
+
+% Some texinfo constructs that are trivial in tex
+
+\def\iftex{}
+\def\Eiftex{}
+\def\ifinfo{\begingroup\ignoresections\ifinfoxxx}
+\long\def\ifinfoxxx #1\end ifinfo{\endgroup\ignorespaces}
+
+\long\def\menu #1\end menu{}
+\def\asis#1{#1}
+
+% @math means output in math mode.
+% We don't use $'s directly in the definition of \math because control
+% sequences like \math are expanded when the toc file is written. Then,
+% we read the toc file back, the $'s will be normal characters (as they
+% should be, according to the definition of Texinfo). So we must use a
+% control sequence to switch into and out of math mode.
+%
+% This isn't quite enough for @math to work properly in indices, but it
+% seems unlikely it will ever be needed there.
+%
+\let\implicitmath = $
+\def\math#1{\implicitmath #1\implicitmath}
+
+\def\node{\ENVcheck\parsearg\nodezzz}
+\def\nodezzz#1{\nodexxx [#1,]}
+\def\nodexxx[#1,#2]{\gdef\lastnode{#1}}
+\let\lastnode=\relax
+
+\def\donoderef{\ifx\lastnode\relax\else
+\expandafter\expandafter\expandafter\setref{\lastnode}\fi
+\let\lastnode=\relax}
+
+\def\unnumbnoderef{\ifx\lastnode\relax\else
+\expandafter\expandafter\expandafter\unnumbsetref{\lastnode}\fi
+\let\lastnode=\relax}
+
+\def\appendixnoderef{\ifx\lastnode\relax\else
+\expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi
+\let\lastnode=\relax}
+
+\let\refill=\relax
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+ \readauxfile
+ \opencontents
+ \openindices
+ \fixbackslash % Turn off hack to swallow `\input texinfo'.
+ \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
+ \comment % Ignore the actual filename.
+}
+
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{See Info file \file{\losespace#3{}},
+ node \samp{\losespace#1{}}}
+\def\losespace #1{#1}
+
+\message{fonts,}
+
+% Font-change commands.
+
+% Texinfo supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf analogous to plain's \rm, etc.
+\newfam\sffam
+\def\sf{\fam=\sffam \tensf}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+%% Try out Computer Modern fonts at \magstephalf
+\let\mainmagstep=\magstephalf
+
+\ifx\bigger\relax
+\let\mainmagstep=\magstep1
+\font\textrm=cmr12
+\font\texttt=cmtt12
+\else
+\font\textrm=cmr10 scaled \mainmagstep
+\font\texttt=cmtt10 scaled \mainmagstep
+\fi
+% Instead of cmb10, you many want to use cmbx10.
+% cmbx10 is a prettier font on its own, but cmb10
+% looks better when embedded in a line with cmr10.
+\font\textbf=cmb10 scaled \mainmagstep
+\font\textit=cmti10 scaled \mainmagstep
+\font\textsl=cmsl10 scaled \mainmagstep
+\font\textsf=cmss10 scaled \mainmagstep
+\font\textsc=cmcsc10 scaled \mainmagstep
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+
+% A few fonts for @defun, etc.
+\font\defbf=cmbx10 scaled \magstep1 %was 1314
+\font\deftt=cmtt10 scaled \magstep1
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
+
+% Fonts for indices and small examples.
+% We actually use the slanted font rather than the italic,
+% because texinfo normally uses the slanted fonts for that.
+% Do not make many font distinctions in general in the index, since they
+% aren't very useful.
+\font\ninett=cmtt9
+\font\indrm=cmr9
+\font\indit=cmsl9
+\let\indsl=\indit
+\let\indtt=\ninett
+\let\indsf=\indrm
+\let\indbf=\indrm
+\let\indsc=\indrm
+\font\indi=cmmi9
+\font\indsy=cmsy9
+
+% Fonts for headings
+\font\chaprm=cmbx12 scaled \magstep2
+\font\chapit=cmti12 scaled \magstep2
+\font\chapsl=cmsl12 scaled \magstep2
+\font\chaptt=cmtt12 scaled \magstep2
+\font\chapsf=cmss12 scaled \magstep2
+\let\chapbf=\chaprm
+\font\chapsc=cmcsc10 scaled\magstep3
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+
+\font\secrm=cmbx12 scaled \magstep1
+\font\secit=cmti12 scaled \magstep1
+\font\secsl=cmsl12 scaled \magstep1
+\font\sectt=cmtt12 scaled \magstep1
+\font\secsf=cmss12 scaled \magstep1
+\font\secbf=cmbx12 scaled \magstep1
+\font\secsc=cmcsc10 scaled\magstep2
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+
+% \font\ssecrm=cmbx10 scaled \magstep1 % This size an font looked bad.
+% \font\ssecit=cmti10 scaled \magstep1 % The letters were too crowded.
+% \font\ssecsl=cmsl10 scaled \magstep1
+% \font\ssectt=cmtt10 scaled \magstep1
+% \font\ssecsf=cmss10 scaled \magstep1
+
+%\font\ssecrm=cmb10 scaled 1315 % Note the use of cmb rather than cmbx.
+%\font\ssecit=cmti10 scaled 1315 % Also, the size is a little larger than
+%\font\ssecsl=cmsl10 scaled 1315 % being scaled magstep1.
+%\font\ssectt=cmtt10 scaled 1315
+%\font\ssecsf=cmss10 scaled 1315
+
+%\let\ssecbf=\ssecrm
+
+\font\ssecrm=cmbx12 scaled \magstephalf
+\font\ssecit=cmti12 scaled \magstephalf
+\font\ssecsl=cmsl12 scaled \magstephalf
+\font\ssectt=cmtt12 scaled \magstephalf
+\font\ssecsf=cmss12 scaled \magstephalf
+\font\ssecbf=cmbx12 scaled \magstephalf
+\font\ssecsc=cmcsc10 scaled \magstep1
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled \magstep1
+% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
+% but that is not a standard magnification.
+
+% Fonts for title page:
+\font\titlerm = cmbx12 scaled \magstep3
+\let\authorrm = \secrm
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families. Since
+% texinfo doesn't allow for producing subscripts and superscripts, we
+% don't bother to reset \scriptfont and \scriptscriptfont (which would
+% also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+ \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy
+ \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf
+ \textfont\ttfam = \tentt \textfont\sffam = \tensf
+}
+
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE. We do this so that font changes will continue to work
+% in math mode, where it is the current \fam that is relevant in most
+% cases, not the current. Plain TeX does, for example,
+% \def\bf{\fam=\bffam \tenbf} By redefining \tenbf, we obviate the need
+% to redefine \bf itself.
+\def\textfonts{%
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+ \resetmathfonts}
+\def\chapfonts{%
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+ \resetmathfonts}
+\def\secfonts{%
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+ \resetmathfonts}
+\def\subsecfonts{%
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+ \resetmathfonts}
+\def\indexfonts{%
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy
+ \resetmathfonts}
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\textfonts
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Fonts for short table of contents.
+\font\shortcontrm=cmr12
+\font\shortcontbf=cmbx12
+\font\shortcontsl=cmsl12
+
+%% Add scribe-like font environments, plus @l for inline lisp (usually sans
+%% serif) and @ii for TeX italic
+
+% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+% unless the following character is such as not to need one.
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
+\def\smartitalic#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\var=\smartitalic
+\let\dfn=\smartitalic
+\let\emph=\smartitalic
+\let\cite=\smartitalic
+
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+\def\t#1{{\tt \exhyphenpenalty=10000\rawbackslash \frenchspacing #1}\null}
+\let\ttfont = \t
+%\def\samp #1{`{\tt \rawbackslash \frenchspacing #1}'\null}
+\def\samp #1{`\tclose{#1}'\null}
+\def\key #1{{\tt \exhyphenpenalty=10000\uppercase{#1}}\null}
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+\let\file=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\newdimen\tclosesave
+\newdimen\tcloserm
+\def\tclose#1{{\rm \tcloserm=\fontdimen2\font \tt \tclosesave=\fontdimen2\font
+\fontdimen2\font=\tcloserm
+% prevent breaking lines at hyphens.
+\exhyphenpenalty=10000
+\def\ {{\fontdimen2\font=\tclosesave{} }}%
+ \rawbackslash \frenchspacing #1\fontdimen2\font=\tclosesave}\null}
+\let\code=\tclose
+%\let\exp=\tclose %Was temporary
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else\tclose{\look}\fi
+\else\tclose{\look}\fi}
+
+% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of
+% @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
+
+\def\l#1{{\li #1}\null} %
+
+\def\r#1{{\rm #1}} % roman font
+% Use of \lowercase was suggested.
+\def\sc#1{{\smallcaps#1}} % smallcaps font
+\def\ii#1{{\it #1}} % italic font
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page. Must do @settitle before @titlepage.
+\def\titlefont#1{{\titlerm #1}}
+
+\newtoks\realeverypar
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+\def\titlepage{\begingroup \parindent=0pt \textfonts
+ \let\subtitlerm=\tenrm
+% I deinstalled the following change because \cmr12 is undefined.
+% This change was not in the ChangeLog anyway. --rms.
+% \let\subtitlerm=\cmr12
+ \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
+ %
+ \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}%
+ %
+ % Leave some space at the very top of the page.
+ \vglue\titlepagetopglue
+ %
+ % Now you can print the title using @title.
+ \def\title{\parsearg\titlezzz}%
+ \def\titlezzz##1{\leftline{\titlefont{##1}}
+ % print a rule at the page bottom also.
+ \finishedtitlepagefalse
+ \vskip4pt \hrule height 4pt \vskip4pt}%
+ % No rule at page bottom unless we print one at the top with @title.
+ \finishedtitlepagetrue
+ %
+ % Now you can put text using @subtitle.
+ \def\subtitle{\parsearg\subtitlezzz}%
+ \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
+ %
+ % @author should come last, but may come many times.
+ \def\author{\parsearg\authorzzz}%
+ \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
+ {\authorfont \leftline{##1}}}%
+ %
+ % Most title ``pages'' are actually two pages long, with space
+ % at the top of the second. We don't want the ragged left on the second.
+ \let\oldpage = \page
+ \def\page{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ \oldpage
+ \let\page = \oldpage
+ \hbox{}}%
+% \def\page{\oldpage \hbox{}}
+}
+
+\def\Etitlepage{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ % It is important to do the page break before ending the group,
+ % because the headline and footline are only empty inside the group.
+ % If we use the new definition of \page, we always get a blank page
+ % after the title page, which we certainly don't want.
+ \oldpage
+ \endgroup
+ \HEADINGSon
+}
+
+\def\finishtitlepage{%
+ \vskip4pt \hrule height 2pt
+ \vskip\titlepagebottomglue
+ \finishedtitlepagetrue
+}
+
+%%% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks \evenheadline % Token sequence for heading line of even pages
+\newtoks \oddheadline % Token sequence for heading line of odd pages
+\newtoks \evenfootline % Token sequence for footing line of even pages
+\newtoks \oddfootline % Token sequence for footing line of odd pages
+
+% Now make Tex use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+ \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+ \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what @headings on does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\everyheading{\parsearg\everyheadingxxx}
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\everyfooting{\parsearg\everyfootingxxx}
+
address@hidden %
+
+\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
+\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
+\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\everyheadingxxx #1{\everyheadingyyy #1@|@|@|@|\finish}
+\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
+\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
+\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
+\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\gdef\everyfootingxxx #1{\everyfootingyyy #1@|@|@|@|\finish}
+\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}
+\global\oddfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+%
+}% unbind the catcode of @.
+
+% @headings double turns headings on for double-sided printing.
+% @headings single turns headings on for single-sided printing.
+% @headings off turns them off.
+% @headings on same as @headings double, retained for compatibility.
+% @headings after turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\HEADINGSoff{
+\global\evenheadline={\hfil} \global\evenfootline={\hfil}
+\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+\HEADINGSoff
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{
+%\pagealignmacro
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{
+%\pagealignmacro
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+}
+
+% Subroutines used in generating headings
+% Produces Day Month Year style of output.
+\def\today{\number\day\space
+\ifcase\month\or
+January\or February\or March\or April\or May\or June\or
+July\or August\or September\or October\or November\or December\fi
+\space\number\year}
+
+% Use this if you want the Month Day, Year style of output.
+%\def\today{\ifcase\month\or
+%January\or February\or March\or April\or May\or June\or
+%July\or August\or September\or October\or November\or December\fi
+%\space\number\day, \number\year}
+
+% @settitle line... specifies the title of the document, for headings
+% It generates no output of its own
+
+\def\thistitle{No Title}
+\def\settitle{\parsearg\settitlezzz}
+\def\settitlezzz #1{\gdef\thistitle{#1}}
+
+\message{tables,}
+
+% @tabs -- simple alignment
+
+% These don't work. For one thing, \+ is defined as outer.
+% So these macros cannot even be defined.
+
+%\def\tabs{\parsearg\tabszzz}
+%\def\tabszzz #1{\settabs\+#1\cr}
+%\def\tabline{\parsearg\tablinezzz}
+%\def\tablinezzz #1{\+#1\cr}
+%\def\&{&}
+
+% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @vtable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\par \parsearg\itemzzz}
+
+\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
+\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \par \parsearg\xitemzzz}
+
+\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
+\def\internalBkitemx{\par \parsearg\kitemzzz}
+
+\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
+ \itemzzz {#1}}
+
+\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
+ \itemzzz {#1}}
+
+\def\itemzzz #1{\begingroup %
+ \advance\hsize by -\rightskip
+ \advance\hsize by -\tableindent
+ \setbox0=\hbox{\itemfont{#1}}%
+ \itemindex{#1}%
+ \nobreak % This prevents a break before @itemx.
+ %
+ % Be sure we are not still in the middle of a paragraph.
+ \parskip=0in
+ \par
+ %
+ % If the item text does not fit in the space we have, put it on a line
+ % by itself, and do not allow a page break either before or after that
+ % line. We do not start a paragraph here because then if the next
+ % command is, e.g., @kindex, the whatsit would get put into the
+ % horizontal list on a line by itself, resulting in extra blank space.
+ \ifdim \wd0>\itemmax
+ \setbox0=\hbox{\hskip \leftskip \hskip -\tableindent \unhbox0}\box0
+ \nobreak
+ \else
+ % The item text fits into the space. Start a paragraph, so that the
+ % following text (if any) will end up on the same line. Since that
+ % text will be indented by \tableindent, we make the item text be in
+ % a zero-width box.
+ \noindent
+ \rlap{\hskip -\tableindent\box0}%
+ \fi
+ \endgroup
+}
+
address@hidden while not in a table}}
address@hidden while not in a table}}
address@hidden while not in a table}}
address@hidden while not in a table}}
address@hidden while not in a table}}
address@hidden while not in a table}}
+
+%% Contains a kludge to get @end[description] to work
+\def\description{\tablez{\dontindex}{1}{}{}{}{}}
+
+\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
+{\obeylines\obeyspaces%
+\gdef\tablex #1^^M{%
+\tabley\dontindex#1 \endtabley}}
+
+\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
+{\obeylines\obeyspaces%
+\gdef\ftablex #1^^M{%
+\tabley\fnitemindex#1 \endtabley
+\def\Eftable{\endgraf\endgroup\afterenvbreak}%
+\let\Etable=\relax}}
+
+\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
+{\obeylines\obeyspaces%
+\gdef\vtablex #1^^M{%
+\tabley\vritemindex#1 \endtabley
+\def\Evtable{\endgraf\endgroup\afterenvbreak}%
+\let\Etable=\relax}}
+
+\def\dontindex #1{}
+\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
+\def\vritemindex #1{\doind {vr}{\code{#1}}}%
+
+{\obeyspaces %
+\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
+\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
+
+\def\tablez #1#2#3#4#5#6{%
+\aboveenvbreak %
+\begingroup %
+\def\Edescription{\Etable}% Neccessary kludge.
+\let\itemindex=#1%
+\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
+\ifnum 0#4>0 \tableindent=#4\mil \fi %
+\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
+\def\itemfont{#2}%
+\itemmax=\tableindent %
+\advance \itemmax by -\itemmargin %
+\advance \leftskip by \tableindent %
+\exdentamount=\tableindent
+\parindent = 0pt
+\parskip = \smallskipamount
+\ifdim \parskip=0pt \parskip=2pt \fi%
+\def\Etable{\endgraf\endgroup\afterenvbreak}%
+\let\item = \internalBitem %
+\let\itemx = \internalBitemx %
+\let\kitem = \internalBkitem %
+\let\kitemx = \internalBkitemx %
+\let\xitem = \internalBxitem %
+\let\xitemx = \internalBxitemx %
+}
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\def\itemize{\parsearg\itemizezzz}
+
+\def\itemizezzz #1{%
+ \begingroup % ended by the @end itemsize
+ \itemizey {#1}{\Eitemize}
+}
+
+\def\itemizey #1#2{%
+\aboveenvbreak %
+\itemmax=\itemindent %
+\advance \itemmax by -\itemmargin %
+\advance \leftskip by \itemindent %
+\exdentamount=\itemindent
+\parindent = 0pt %
+\parskip = \smallskipamount %
+\ifdim \parskip=0pt \parskip=2pt \fi%
+\def#2{\endgraf\endgroup\afterenvbreak}%
+\def\itemcontents{#1}%
+\let\item=\itemizeitem}
+
+\def\bullet{$\ptexbullet$}
+\def\minus{$-$}
+
+% Set sfcode to normal for the chars that usually have another value.
+% These are `.?!:;,'
+\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000
+ \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 }
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list. No
+% argument is the same as `1'.
+%
+\def\enumerate{\parsearg\enumeratezzz}
+\def\enumeratezzz #1{\enumeratey #1 \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+ \begingroup % ended by the @end enumerate
+ %
+ % If we were given no argument, pretend we were given `1'.
+ \def\thearg{#1}%
+ \ifx\thearg\empty \def\thearg{1}\fi
+ %
+ % Detect if the argument is a single token. If so, it might be a
+ % letter. Otherwise, the only valid thing it can be is a number.
+ % (We will always have one token, because of the test we just made.
+ % This is a good thing, since \splitoff doesn't work given nothing at
+ % all -- the first parameter is undelimited.)
+ \expandafter\splitoff\thearg\endmark
+ \ifx\rest\empty
+ % Only one token in the argument. It could still be anything.
+ % A ``lowercase letter'' is one whose \lccode is nonzero.
+ % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+ % not equal to itself.
+ % Otherwise, we assume it's a number.
+ %
+ % We need the \relax at the end of the \ifnum lines to stop TeX from
+ % continuing to look for a <number>.
+ %
+ \ifnum\lccode\expandafter`\thearg=0\relax
+ \numericenumerate % a number (we hope)
+ \else
+ % It's a letter.
+ \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+ \lowercaseenumerate % lowercase letter
+ \else
+ \uppercaseenumerate % uppercase letter
+ \fi
+ \fi
+ \else
+ % Multiple tokens in the argument. We hope it's a number.
+ \numericenumerate
+ \fi
+}
+
+% An @enumerate whose labels are integers. The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+ \itemno = \thearg
+ \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more lowercase letters in @enumerate; get a bigger
+ alphabet}%
+ \fi
+ \char\lccode\itemno
+ }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more uppercase letters in @enumerate; get a bigger
+ alphabet}
+ \fi
+ \char\uccode\itemno
+ }%
+}
+
+% Call itemizey, adding a period to the first argument and supplying the
+% common last two arguments. Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+ \advance\itemno by -1
+ \itemizey{#1.}\Eenumerate\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+% Definition of @item while inside @itemize.
+
+\def\itemizeitem{%
+\advance\itemno by 1
+{\let\par=\endgraf \smallbreak}%
+\ifhmode \errmessage{\in hmode at itemizeitem}\fi
+{\parskip=0in \hskip 0pt
+\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
+\vadjust{\penalty 1200}}%
+\flushcr}
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within \newindex.
address@hidden
address@hidden@@n}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index. The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+
+\def\newindex #1{
+\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
+\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
+\noexpand\doindex {#1}}
+}
+
+% @defindex foo == \newindex{foo}
+
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+
+\def\newcodeindex #1{
+\expandafter\newwrite \csname#1indfile\endcsname% Define number for output file
+\openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
+\noexpand\docodeindex {#1}}
+}
+
+\def\defcodeindex{\parsearg\newcodeindex}
+
+% @synindex foo bar makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+\def\synindex #1 #2 {%
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo
+\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
+\noexpand\doindex {#2}}%
+}
+
+% @syncodeindex foo bar similar, but put all entries made for index foo
+% inside @code.
+\def\syncodeindex #1 #2 {%
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo
+\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex
+\noexpand\docodeindex {#2}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+% and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+\def\indexdummies{%
+\def\_{{\realbackslash _}}%
+\def\w{\realbackslash w }%
+\def\bf{\realbackslash bf }%
+\def\rm{\realbackslash rm }%
+\def\sl{\realbackslash sl }%
+\def\sf{\realbackslash sf}%
+\def\tt{\realbackslash tt}%
+\def\gtr{\realbackslash gtr}%
+\def\less{\realbackslash less}%
+\def\hat{\realbackslash hat}%
+\def\char{\realbackslash char}%
+\def\TeX{\realbackslash TeX}%
+\def\dots{\realbackslash dots }%
+\def\copyright{\realbackslash copyright }%
+\def\tclose##1{\realbackslash tclose {##1}}%
+\def\code##1{\realbackslash code {##1}}%
+\def\samp##1{\realbackslash samp {##1}}%
+\def\t##1{\realbackslash r {##1}}%
+\def\r##1{\realbackslash r {##1}}%
+\def\i##1{\realbackslash i {##1}}%
+\def\b##1{\realbackslash b {##1}}%
+\def\cite##1{\realbackslash cite {##1}}%
+\def\key##1{\realbackslash key {##1}}%
+\def\file##1{\realbackslash file {##1}}%
+\def\var##1{\realbackslash var {##1}}%
+\def\kbd##1{\realbackslash kbd {##1}}%
+}
+
+% \indexnofonts no-ops all font-change commands.
+% This is used when outputting the strings to sort the index by.
+\def\indexdummyfont#1{#1}
+\def\indexdummytex{TeX}
+\def\indexdummydots{...}
+
+\def\indexnofonts{%
+\let\w=\indexdummyfont
+\let\t=\indexdummyfont
+\let\r=\indexdummyfont
+\let\i=\indexdummyfont
+\let\b=\indexdummyfont
+\let\emph=\indexdummyfont
+\let\strong=\indexdummyfont
+\let\cite=\indexdummyfont
+\let\sc=\indexdummyfont
+%Don't no-op \tt, since it isn't a user-level command
+% and is used in the definitions of the active chars like <, >, |...
+%\let\tt=\indexdummyfont
+\let\tclose=\indexdummyfont
+\let\code=\indexdummyfont
+\let\file=\indexdummyfont
+\let\samp=\indexdummyfont
+\let\kbd=\indexdummyfont
+\let\key=\indexdummyfont
+\let\var=\indexdummyfont
+\let\TeX=\indexdummytex
+\let\dots=\indexdummydots
+}
+
+% To define \realbackslash, we must make \ not be an escape.
+% We must first make another character (@) an escape
+% so we do not become unable to do a definition.
+
address@hidden \catcode`\\=\other
address@hidden@realbackslash{\}}
+
+\let\indexbackslash=0 %overridden during \printindex.
+
+\def\doind #1#2{%
+{\count10=\lastpenalty %
+{\indexdummies % Must do this here, since \bf, etc expand at this stage
+\escapechar=`\\%
+{\let\folio=0% Expand all macros now EXCEPT \folio
+\def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
+% so it will be output as is; and it will print as backslash in the indx.
+%
+% Now process the index-string once, with all font commands turned off,
+% to get the string to sort the index by.
+{\indexnofonts
+\xdef\temp1{#2}%
+}%
+% Now produce the complete index entry. We process the index-string again,
+% this time with font commands expanded, to get what to print in the index.
+\edef\temp{%
+\write \csname#1indfile\endcsname{%
+\realbackslash entry {\temp1}{\folio}{#2}}}%
+\temp }%
+}\penalty\count10}}
+
+\def\dosubind #1#2#3{%
+{\count10=\lastpenalty %
+{\indexdummies % Must do this here, since \bf, etc expand at this stage
+\escapechar=`\\%
+{\let\folio=0%
+\def\rawbackslashxx{\indexbackslash}%
+%
+% Now process the index-string once, with all font commands turned off,
+% to get the string to sort the index by.
+{\indexnofonts
+\xdef\temp1{#2 #3}%
+}%
+% Now produce the complete index entry. We process the index-string again,
+% this time with font commands expanded, to get what to print in the index.
+\edef\temp{%
+\write \csname#1indfile\endcsname{%
+\realbackslash entry {\temp1}{\folio}{#2}{#3}}}%
+\temp }%
+}\penalty\count10}}
+
+% The index entry written in the file actually looks like
+% \entry {sortstring}{page}{topic}
+% or
+% \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+% \initial {c}
+% before the first topic whose initial is c
+% \entry {topic}{pagelist}
+% for a topic that is used without subtopics
+% \primary {topic}
+% for the beginning of a topic that is used with subtopics
+% \secondary {subtopic}{pagelist}
+% for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% This is what you call to cause a particular index to get printed.
+% Write
+% @unnumbered Function Index
+% @printindex fn
+
+\def\printindex{\parsearg\doprintindex}
+
+\def\doprintindex#1{%
+ \tex
+ \dobreak \chapheadingskip {10000}
+ \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other
+ \catcode`\$=\other\catcode`\_=\other
+ \catcode`\~=\other
+ %
+ % The following don't help, since the chars were translated
+ % when the raw index was written, and their fonts were discarded
+ % due to \indexnofonts.
+ %\catcode`\"=\active
+ %\catcode`\^=\active
+ %\catcode`\_=\active
+ %\catcode`\|=\active
+ %\catcode`\<=\active
+ %\catcode`\>=\active
+ % %
+ \def\indexbackslash{\rawbackslashxx}
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt
+ \begindoublecolumns
+ %
+ % See if the index file exists and is nonempty.
+ \openin 1 \jobname.#1s
+ \ifeof 1
+ % \enddoublecolumns gets confused if there is no text in the index,
+ % and it loses the chapter title and the aux file entries for the
+ % index. The easiest way to prevent this problem is to make sure
+ % there is some text.
+ (Index is nonexistent)
+ \else
+ %
+ % If the index file exists but is empty, then \openin leaves \ifeof
+ % false. We have to make TeX try to read something from the file, so
+ % it can discover if there is anything in it.
+ \read 1 to \temp
+ \ifeof 1
+ (Index is empty)
+ \else
+ \input \jobname.#1s
+ \fi
+ \fi
+ \closein 1
+ \enddoublecolumns
+ \Etex
+}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+% Same as \bigskipamount except no shrink.
+% \balancecolumns gets confused if there is any shrink.
+\newskip\initialskipamount \initialskipamount 12pt plus4pt
+
+\def\initial #1{%
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+\ifdim\lastskip<\initialskipamount
+\removelastskip \penalty-200 \vskip \initialskipamount\fi
+\line{\secbf#1\hfill}\kern 2pt\penalty10000}}
+
+\def\entry #1#2{\begingroup
+ \parfillskip=0in \parskip=0in \parindent=0in
+ %
+ % \hangindent is only relevant when the page number and the entry text
+ % don't fit on one line. In that case, bob suggests starting the dots
+ % pretty far over on the line.
+ % \hangafter is reset to 1 at the start of each paragraph.
+ \hangindent=.75\hsize
+ \noindent
+ %
+ % Don't break the text of the index entry.
+ \hbox{#1}%
+ %
+ % If we must, put the page number on a line of its own, and fill out
+ % this line with blank space. (The \hfil is overwhelmed with the
+ % fill leaders glue in \indexdotfill if the page number does fit.)
+ \hfil\penalty50
+ \null\nobreak\indexdotfill % Have leaders before the page number.
+ %
+ % The `\ ' here is removed by the implicit \unskip that TeX does as
+ % part of (the primitive) \par. Without, a spurious underfull \hbox ensues.
+ \ #2% The page number ends the paragraph.
+ \par
+\endgroup}
+
+% Like \dotfill except takes at least 1 em.
+\def\indexdotfill{\cleaders
+ \hbox{$\mathsurround=0pt \mkern1.5mu . \mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+
+\def\secondary #1#2{
+{\parfillskip=0in \parskip=0in
+\hangindent =1in \hangafter=1
+\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par
+}}
+
+%% Define two-column mode, which is used in indexes.
+%% Adapted from the TeXBook, page 416
+\catcode address@hidden
+
+\newbox\partialpage
+
+\newdimen\doublecolumnhsize \doublecolumnhsize = 3.11in
+\newdimen\doublecolumnvsize \doublecolumnvsize = 19.1in
+\newdimen\availdimen@
+
+\def\begindoublecolumns{\begingroup
+ \output={\global\setbox\partialpage=
+ \vbox{\unvbox255\kern -\topskip \kern \baselineskip}}\eject
+ \output={\doublecolumnout}%
+ \hsize=\doublecolumnhsize \vsize=\doublecolumnvsize}
+\def\enddoublecolumns{\output={\balancecolumns}\eject
+ \endgroup \pagegoal=\vsize}
+
+\def\doublecolumnout{\splittopskip=\topskip \splitmaxdepth=\maxdepth
+ address@hidden \advance\dimen@ by-\ht\partialpage
+ \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+ \onepageout\pagesofar \unvbox255 \penalty\outputpenalty}
+\def\pagesofar{\unvbox\partialpage %
+ \hsize=\doublecolumnhsize % have to restore this since output routine
+% changes it to set cropmarks (P. A. MacKay, 12 Nov. 1986)
+ \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
+\def\balancecolumns{%
+% Unset the glue.
+ \setbox255=\vbox{\unvbox255}
+ address@hidden
+ \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
+ \divide\dimen@ by2
+ address@hidden \advance\availdimen@ by-\ht\partialpage
+% If the remaining data is too big for one page,
+% output one page normally, then work with what remains.
+ \ifdim \dimen@>\availdimen@
+ {
+ \splittopskip=\topskip \splitmaxdepth=\maxdepth
+ address@hidden \advance\dimen@ by-\ht\partialpage
+ \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+ \onepageout\pagesofar
+ }
+% Recompute size of what remains, in case we just output some of it.
+ address@hidden
+ \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
+ \divide\dimen@ by2
+ \fi
+ \setbox0=\vbox{\unvbox255}
+ \splittopskip=\topskip
+ {\vbadness=10000 \loop \global\setbox3=\copy0
+ \global\setbox1=\vsplit3 to\dimen@
+ \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat}
+ \setbox0=\vbox address@hidden \setbox2=\vbox address@hidden
+ \pagesofar}
+
+\catcode address@hidden
+\message{sectioning,}
+% Define chapters, sections, etc.
+
+\newcount \chapno
+\newcount \secno \secno=0
+\newcount \subsecno \subsecno=0
+\newcount \subsubsecno \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount \appendixno \appendixno = `\@
+\def\appendixletter{\char\the\appendixno}
+
+\newwrite \contentsfile
+% This is called from \setfilename.
+\def\opencontents{\openout \contentsfile = \jobname.toc}
+
+% Each @chapter defines this as the name of the chapter.
+% page headings and footings can use it. @section does likewise
+
+\def\thischapter{} \def\thissection{}
+\def\seccheck#1{\if \pageno<0 %
address@hidden not allowed after generating table of contents}\fi
+%
+}
+
+\def\chapternofonts{%
+\let\rawbackslash=\relax%
+\let\frenchspacing=\relax%
+\def\result{\realbackslash result}
+\def\equiv{\realbackslash equiv}
+\def\expansion{\realbackslash expansion}
+\def\print{\realbackslash print}
+\def\TeX{\realbackslash TeX}
+\def\dots{\realbackslash dots}
+\def\copyright{\realbackslash copyright}
+\def\tt{\realbackslash tt}
+\def\bf{\realbackslash bf }
+\def\w{\realbackslash w}
+\def\less{\realbackslash less}
+\def\gtr{\realbackslash gtr}
+\def\hat{\realbackslash hat}
+\def\char{\realbackslash char}
+\def\tclose##1{\realbackslash tclose {##1}}
+\def\code##1{\realbackslash code {##1}}
+\def\samp##1{\realbackslash samp {##1}}
+\def\r##1{\realbackslash r {##1}}
+\def\b##1{\realbackslash b {##1}}
+\def\key##1{\realbackslash key {##1}}
+\def\file##1{\realbackslash file {##1}}
+\def\kbd##1{\realbackslash kbd {##1}}
+% These are redefined because @smartitalic wouldn't work inside xdef.
+\def\i##1{\realbackslash i {##1}}
+\def\cite##1{\realbackslash cite {##1}}
+\def\var##1{\realbackslash var {##1}}
+\def\emph##1{\realbackslash emph {##1}}
+\def\dfn##1{\realbackslash dfn {##1}}
+}
+
+\def\thischaptername{No Chapter Title}
+\outer\def\chapter{\parsearg\chapterzzz}
+\def\chapterzzz #1{\seccheck{chapter}%
+\secno=0 \subsecno=0 \subsubsecno=0
+\global\advance \chapno by 1 \message{Chapter \the\chapno}%
+\chapmacro {#1}{\the\chapno}%
+\gdef\thissection{#1}%
+\gdef\thischaptername{#1}%
+% We don't substitute the actual chapter name into \thischapter
+% because we don't want its macros evaluated now.
+\xdef\thischapter{Chapter \the\chapno: \noexpand\thischaptername}%
+{\chapternofonts%
+\edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\donoderef %
+\global\let\section = \numberedsec
+\global\let\subsection = \numberedsubsec
+\global\let\subsubsection = \numberedsubsubsec
+}}
+
+\outer\def\appendix{\parsearg\appendixzzz}
+\def\appendixzzz #1{\seccheck{appendix}%
+\secno=0 \subsecno=0 \subsubsecno=0
+\global\advance \appendixno by 1 \message{Appendix \appendixletter}%
+\chapmacro {#1}{Appendix \appendixletter}%
+\gdef\thissection{#1}%
+\gdef\thischaptername{#1}%
+\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}%
+{\chapternofonts%
+\edef\temp{{\realbackslash chapentry
+ {#1}{Appendix \appendixletter}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\appendixnoderef %
+\global\let\section = \appendixsec
+\global\let\subsection = \appendixsubsec
+\global\let\subsubsection = \appendixsubsubsec
+}}
+
+\outer\def\top{\parsearg\unnumberedzzz}
+\outer\def\unnumbered{\parsearg\unnumberedzzz}
+\def\unnumberedzzz #1{\seccheck{unnumbered}%
+\secno=0 \subsecno=0 \subsubsecno=0 \message{(#1)}
+\unnumbchapmacro {#1}%
+\gdef\thischapter{#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbchapentry {#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\unnumbnoderef %
+\global\let\section = \unnumberedsec
+\global\let\subsection = \unnumberedsubsec
+\global\let\subsubsection = \unnumberedsubsubsec
+}}
+
+\outer\def\numberedsec{\parsearg\seczzz}
+\def\seczzz #1{\seccheck{section}%
+\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
+\gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash secentry %
+{#1}{\the\chapno}{\the\secno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\donoderef %
+\penalty 10000 %
+}}
+
+\outer\def\appendixsection{\parsearg\appendixsectionzzz}
+\outer\def\appendixsec{\parsearg\appendixsectionzzz}
+\def\appendixsectionzzz #1{\seccheck{appendixsection}%
+\subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
+\gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash secentry %
+{#1}{\appendixletter}{\the\secno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\appendixnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\unnumberedsec{\parsearg\unnumberedseczzz}
+\def\unnumberedseczzz #1{\seccheck{unnumberedsec}%
+\plainsecheading {#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbsecentry{#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\unnumbnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\numberedsubsec{\parsearg\numberedsubseczzz}
+\def\numberedsubseczzz #1{\seccheck{subsection}%
+\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
+\subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsecentry %
+{#1}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\donoderef %
+\penalty 10000 %
+}}
+
+\outer\def\appendixsubsec{\parsearg\appendixsubseczzz}
+\def\appendixsubseczzz #1{\seccheck{appendixsubsec}%
+\gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
+\subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsecentry %
+{#1}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\appendixnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\unnumberedsubsec{\parsearg\unnumberedsubseczzz}
+\def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}%
+\plainsecheading {#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\unnumbnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\numberedsubsubsec{\parsearg\numberedsubsubseczzz}
+\def\numberedsubsubseczzz #1{\seccheck{subsubsection}%
+\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
+\subsubsecheading {#1}
+ {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsubsecentry %
+ {#1}
+ {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}
+ {\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\donoderef %
+\penalty 10000 %
+}}
+
+\outer\def\appendixsubsubsec{\parsearg\appendixsubsubseczzz}
+\def\appendixsubsubseczzz #1{\seccheck{appendixsubsubsec}%
+\gdef\thissection{#1}\global\advance \subsubsecno by 1 %
+\subsubsecheading {#1}
+ {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
+{\chapternofonts%
+\edef\temp{{\realbackslash subsubsecentry{#1}%
+ {\appendixletter}
+ {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\appendixnoderef %
+\penalty 10000 %
+}}
+
+\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
+\def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}%
+\plainsecheading {#1}\gdef\thissection{#1}%
+{\chapternofonts%
+\edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}%
+\escapechar=`\\%
+\write \contentsfile \temp %
+\unnumbnoderef %
+\penalty 10000 %
+}}
+
+% These are variants which are not "outer", so they can appear in @ifinfo.
+% Actually, they should now be obsolete; ordinary section commands should work.
+\def\infotop{\parsearg\unnumberedzzz}
+\def\infounnumbered{\parsearg\unnumberedzzz}
+\def\infounnumberedsec{\parsearg\unnumberedseczzz}
+\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
+\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
+
+\def\infoappendix{\parsearg\appendixzzz}
+\def\infoappendixsec{\parsearg\appendixseczzz}
+\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
+\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
+
+\def\infochapter{\parsearg\chapterzzz}
+\def\infosection{\parsearg\sectionzzz}
+\def\infosubsection{\parsearg\subsectionzzz}
+\def\infosubsubsection{\parsearg\subsubsectionzzz}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\global\let\section = \numberedsec
+\global\let\subsection = \numberedsubsec
+\global\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and
+% such:
+% 1) We use \vbox rather than the earlier \line to permit
+% overlong headings to fold.
+% 2) \hyphenpenalty is set to 10000 because hyphenation in a
+% heading is obnoxious; this forbids it.
+% 3) Likewise, headings look best if no \parindent is used, and
+% if justification is not attempted. Hence \raggedright.
+
+
+\def\majorheading{\parsearg\majorheadingzzz}
+\def\majorheadingzzz #1{%
+{\advance\chapheadingskip by 10pt \chapbreak }%
+{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}\bigskip \par\penalty 200}
+
+\def\chapheading{\parsearg\chapheadingzzz}
+\def\chapheadingzzz #1{\chapbreak %
+{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}\bigskip \par\penalty 200}
+
+\def\heading{\parsearg\secheadingi}
+
+\def\subheading{\parsearg\subsecheadingi}
+
+\def\subsubheading{\parsearg\subsubsecheadingi}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+%%% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+
+%%% Define plain chapter starts, and page on/off switching for it
+% Parameter controlling skip before chapter headings (if needed)
+
+\newskip \chapheadingskip \chapheadingskip = 30pt plus 8pt minus 4pt
+
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+\def\CHAPFplain{
+\global\let\chapmacro=\chfplain
+\global\let\unnumbchapmacro=\unnchfplain}
+
+\def\chfplain #1#2{%
+ \pchapsepmacro
+ {%
+ \chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #2\enspace #1}%
+ }%
+ \bigskip
+ \penalty5000
+}
+
+\def\unnchfplain #1{%
+\pchapsepmacro %
+{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}\bigskip \par\penalty 10000 %
+}
+\CHAPFplain % The default
+
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}\bigskip \par\penalty 10000 %
+}
+
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+
+\def\CHAPFopen{
+\global\let\chapmacro=\chfopen
+\global\let\unnumbchapmacro=\unnchfopen}
+
+% Parameter controlling skip before section headings.
+
+\newskip \subsecheadingskip \subsecheadingskip = 17pt plus 8pt minus 4pt
+\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
+
+\newskip \secheadingskip \secheadingskip = 21pt plus 8pt minus 4pt
+\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
+
+% @paragraphindent is defined for the Info formatting commands only.
+\let\paragraphindent=\comment
+
+% Section fonts are the base font at magstep2, which produces
+% a size a bit more than 14 points in the default situation.
+
+\def\secheading #1#2#3{\secheadingi {#2.#3\enspace #1}}
+\def\plainsecheading #1{\secheadingi {#1}}
+\def\secheadingi #1{{\advance \secheadingskip by \parskip %
+\secheadingbreak}%
+{\secfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}%
+\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
+
+
+% Subsection fonts are the base font at magstep1,
+% which produces a size of 12 points.
+
+\def\subsecheading #1#2#3#4{\subsecheadingi {#2.#3.#4\enspace #1}}
+\def\subsecheadingi #1{{\advance \subsecheadingskip by \parskip %
+\subsecheadingbreak}%
+{\subsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}%
+\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 }
+
+\def\subsubsecfonts{\subsecfonts} % Maybe this should change:
+ % Perhaps make sssec fonts scaled
+ % magstep half
+\def\subsubsecheading #1#2#3#4#5{\subsubsecheadingi {#2.#3.#4.#5\enspace #1}}
+\def\subsubsecheadingi #1{{\advance \subsecheadingskip by \parskip %
+\subsecheadingbreak}%
+{\subsubsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}%
+\ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000}
+
+
+\message{toc printing,}
+
+% Finish up the main text and prepare to read what we've written
+% to \contentsfile.
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\def\startcontents#1{%
+ \pagealignmacro
+ \immediate\closeout \contentsfile
+ \ifnum \pageno>0
+ \pageno = -1 % Request roman numbered pages.
+ \fi
+ % Don't need to put `Contents' or `Short Contents' in the headline.
+ % It is abundantly clear what they are.
+ \unnumbchapmacro{#1}\def\thischapter{}%
+ \begingroup % Set up to handle contents files properly.
+ \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 address@hidden
+ \raggedbottom % Worry more about breakpoints than the bottom.
+ \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+}
+
+
+% Normal (long) toc.
+\outer\def\contents{%
+ \startcontents{Table of Contents}%
+ \input \jobname.toc
+ \endgroup
+ \vfill \eject
+}
+
+% And just the chapters.
+\outer\def\summarycontents{%
+ \startcontents{Short Contents}%
+ %
+ \let\chapentry = \shortchapentry
+ \let\unnumbchapentry = \shortunnumberedentry
+ % We want a true roman here for the page numbers.
+ \secfonts
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl
+ \rm
+ \advance\baselineskip by 1pt % Open it up a little.
+ \def\secentry ##1##2##3##4{}
+ \def\unnumbsecentry ##1##2{}
+ \def\subsecentry ##1##2##3##4##5{}
+ \def\unnumbsubsecentry ##1##2{}
+ \def\subsubsecentry ##1##2##3##4##5##6{}
+ \def\unnumbsubsubsecentry ##1##2{}
+ \input \jobname.toc
+ \endgroup
+ \vfill \eject
+}
+\let\shortcontents = \summarycontents
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Chapter-level things, for both the long and short contents.
+\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
+
+% See comments in \dochapentry re vbox and related settings
+\def\shortchapentry#1#2#3{%
+ \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\strut\raggedright
+ {#2\labelspace #1}\dotfill\doshortpageno{#3}}%
+}
+
+\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}}
+\def\shortunnumberedentry#1#2{%
+ \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\strut\raggedright
+ #1\dotfill\doshortpageno{#2}}%
+}
+
+% Sections.
+\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
+\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
+
+% Subsections.
+\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
+\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
+
+% And subsubsections.
+\def\subsubsecentry#1#2#3#4#5#6{%
+ \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
+\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
+
+
+% This parameter controls the indentation of the various levels.
+\newdimen\tocindent \tocindent = 3pc
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we would want to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+ \penalty-300 \vskip\baselineskip
+ % This \vbox (and similar ones in dosecentry etc.) used to be a
+ % \line; changed to permit linebreaks for long headings. See
+ % comments above \majorheading. Here we also use \strut to
+ % keep the top end of the vbox from jamming up against the previous
+ % entry in the table of contents.
+ \vbox{\chapentryfonts
+ \hyphenpenalty=10000\tolerance=5000 % this line and next introduced
+ \parindent=0pt\strut\raggedright % with \line -> \vbox change
+ #1\dotfill
+ \dopageno{#2}}%
+ \nobreak\vskip .25\baselineskip
+}
+
+\def\dosecentry#1#2{%
+ \vbox{\secentryfonts \leftskip=\tocindent
+ \hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\strut\raggedright #1\dotfill
+ \dopageno{#2}}%
+}
+
+\def\dosubsecentry#1#2{%
+ \vbox{\subsecentryfonts \leftskip=2\tocindent
+ \hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\strut\raggedright #1\dotfill
+ \dopageno{#2}}%
+}
+
+\def\dosubsubsecentry#1#2{%
+ \vbox{\subsubsecentryfonts \leftskip=3\tocindent
+ \hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\strut\raggedright #1\dotfill
+ \dopageno{#2}}%
+}
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\let\subsecentryfonts = \textfonts
+\let\subsubsecentryfonts = \textfonts
+
+
+\message{environments,}
+
+% Since these characters are used in examples, it should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+% Furthermore, these definitions must come after we define our fonts.
+\newbox\dblarrowbox \newbox\longdblarrowbox
+\newbox\pushcharbox \newbox\bullbox
+\newbox\equivbox \newbox\errorbox
+
+\let\ptexequiv = \equiv
+
+%{\tentt
+%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
+%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
+%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
+%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
+% Adapted from the manmac format (p.420 of TeXbook)
+%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width
.85ex
+% depth .1ex\hfil}
+%}
+
+\def\point{$\star$}
+
+\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+
+\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% Adapted from the TeXbook's \boxit.
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
+
+\global\setbox\errorbox=\hbox to \dimen0{\hfil
+ \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+ \advance\hsize by -2\dimen2 % Rules.
+ \vbox{
+ \hrule height\dimen2
+ \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
+ \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+ \kern3pt\vrule width\dimen2}% Space to right.
+ \hrule height\dimen2}
+ \hfil}
+
+% The @error{} command.
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @tex ... @end tex escapes into raw Tex temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain tex @ character.
+
+\def\tex{\begingroup
+\catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+\catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie
+\catcode `\%=14
+\catcode 43=12
+\catcode`\"=12
+\catcode`\==12
+\catcode`\|=12
+\catcode`\<=12
+\catcode`\>=12
+\escapechar=`\\
+%
+\let\{=\ptexlbrace
+\let\}=\ptexrbrace
+\let\.=\ptexdot
+\let\*=\ptexstar
+\let\dots=\ptexdots
address@hidden@}%
+\let\bullet=\ptexbullet
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl
+\let\L=\ptexL
+%
+\let\Etex=\endgroup}
+
+% Define @lisp ... @endlisp.
+% @lisp does a \begingroup so it can rebind things,
+% including the definition of @endlisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^M gets inside @lisp
+% phr: changed space to \null, to avoid overfull hbox problems.
+{\obeyspaces%
+\gdef\lisppar{\null\endgraf}}
+
+% Cause \obeyspaces to make each Space cause a word-separation
+% rather than the default which is that it acts punctuation.
+% This is because space in tt font looks funny.
+{\obeyspaces %
+\gdef\sepspaces{\def {\ }}}
+
+\newskip\aboveenvskipamount \aboveenvskipamount= 0pt
+\def\aboveenvbreak{{\advance\aboveenvskipamount by \parskip
+\endgraf \ifdim\lastskip<\aboveenvskipamount
+\removelastskip \penalty-50 \vskip\aboveenvskipamount \fi}}
+
+\def\afterenvbreak{\endgraf \ifdim\lastskip<\aboveenvskipamount
+\removelastskip \penalty-50 \vskip\aboveenvskipamount \fi}
+
+% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
+\let\nonarrowing=\relax
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \cartouche: draw rectangle w/rounded corners around argument
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+ \ctl\leaders\hrule height\circthick\hfil\ctr
+ \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+ \cbl\leaders\hrule height\circthick\hfil\cbr
+ \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\long\def\cartouche{%
+\begingroup
+ \lskip=\leftskip \rskip=\rightskip
+ \leftskip=0pt\rightskip=0pt %we want these *outside*.
+ \cartinner=\hsize \advance\cartinner by-\lskip
+ \advance\cartinner by-\rskip
+ \cartouter=\hsize
+ \advance\cartouter by 18pt % allow for 3pt kerns on either
+% side, and for 6pt waste from
+% each corner char
+ \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+ % Flag to tell @lisp, etc., not to narrow margin.
+ \let\nonarrowing=\comment
+ \vbox\bgroup
+ \baselineskip=0pt\parskip=0pt\lineskip=0pt
+ \carttop
+ \hbox\bgroup
+ \hskip\lskip
+ \vrule\kern3pt
+ \vbox\bgroup
+ \hsize=\cartinner
+ \kern3pt
+ \begingroup
+ \baselineskip=\normbskip
+ \lineskip=\normlskip
+ \parskip=\normpskip
+ \vskip -\parskip
+\def\Ecartouche{%
+ \endgroup
+ \kern3pt
+ \egroup
+ \kern3pt\vrule
+ \hskip\rskip
+ \egroup
+ \cartbot
+ \egroup
+\endgroup
+}}
+
+\def\lisp{\aboveenvbreak
+\begingroup\inENV % This group ends at the end of the @lisp body
+\hfuzz=12truept % Don't be fussy
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+% Single space lines
+\singlespace %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+\let\par=\lisppar
+\def\Elisp{\endgroup\afterenvbreak}%
+\parskip=0pt
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
+\advance \leftskip by \lispnarrowing
+\exdentamount=\lispnarrowing
+\let\exdent=\nofillexdent
+\let\nonarrowing=\relax
+\fi
+\parindent=0pt
+\obeyspaces \obeylines \tt \rawbackslash
+\def\next##1{}\next}
+
+
+\let\example=\lisp
+\def\Eexample{\Elisp}
+
+\let\smallexample=\lisp
+\def\Esmallexample{\Elisp}
+
+% Macro for 9 pt. examples, necessary to print with 5" lines.
+% From address@hidden This is not really used unless the
+% @smallbook command is given.
+
+\def\smalllispx{\aboveenvbreak\begingroup\inENV
+% This group ends at the end of the @lisp body
+\hfuzz=12truept % Don't be fussy
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+% Single space lines
+\singlespace %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+\let\par=\lisppar
+\def\Esmalllisp{\endgroup\afterenvbreak}%
+%%%% Smaller baseline skip for small examples.
+\baselineskip 10pt
+\parskip=0pt
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
+\advance \leftskip by \lispnarrowing
+\exdentamount=\lispnarrowing
+\let\exdent=\nofillexdent
+\let\nonarrowing=\relax
+\fi
+\parindent=0pt
+\obeyspaces \obeylines \ninett \indexfonts \rawbackslash
+\def\next##1{}\next}
+
+% This is @display; same as @lisp except use roman font.
+
+\def\display{\begingroup\inENV %This group ends at the end of the @display body
+\aboveenvbreak
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+% Single space lines
+\singlespace %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+\let\par=\lisppar
+\def\Edisplay{\endgroup\afterenvbreak}%
+\parskip=0pt
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
+\advance \leftskip by \lispnarrowing
+\exdentamount=\lispnarrowing
+\let\exdent=\nofillexdent
+\let\nonarrowing=\relax
+\fi
+\parindent=0pt
+\obeyspaces \obeylines
+\def\next##1{}\next}
+
+% This is @format; same as @lisp except use roman font and don't narrow margins
+
+\def\format{\begingroup\inENV %This group ends at the end of the @format body
+\aboveenvbreak
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+\singlespace %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+\let\par=\lisppar
+\def\Eformat{\endgroup\afterenvbreak}
+\parskip=0pt \parindent=0pt
+\obeyspaces \obeylines
+\def\next##1{}\next}
+
+% @flushleft and @flushright
+
+\def\flushleft{%
+\begingroup\inENV %This group ends at the end of the @format body
+\aboveenvbreak
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+% This also causes @ to work when the directive name
+% is terminated by end of line.
+\let\par=\lisppar
+\def\Eflushleft{\endgroup\afterenvbreak}%
+\parskip=0pt \parindent=0pt
+\obeyspaces \obeylines
+\def\next##1{}\next}
+
+\def\flushright{%
+\begingroup\inENV %This group ends at the end of the @format body
+\aboveenvbreak
+% Make spaces be word-separators rather than space tokens.
+\sepspaces %
+% The following causes blank lines not to be ignored
+% by adding a space to the end of each line.
+% This also causes @ to work when the directive name
+% is terminated by end of line.
+\let\par=\lisppar
+\def\Eflushright{\endgroup\afterenvbreak}%
+\parskip=0pt \parindent=0pt
+\advance \leftskip by 0pt plus 1fill
+\obeyspaces \obeylines
+\def\next##1{}\next}
+
+% @quotation - narrow the margins.
+
+\def\quotation{%
+\begingroup\inENV %This group ends at the end of the @quotation body
+{\parskip=0pt % because we will skip by \parskip too, later
+\aboveenvbreak}%
+\singlespace
+\parindent=0pt
+\def\Equotation{\par\endgroup\afterenvbreak}%
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
+\advance \leftskip by \lispnarrowing
+\advance \rightskip by \lispnarrowing
+\exdentamount=\lispnarrowing
+\let\nonarrowing=\relax
+\fi}
+
+\message{defuns,}
+% Define formatter for defuns
+% First, allow user to change definition object font (\df) internally
+\def\setdeffont #1 {\csname DEF#1\endcsname}
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deftypemargin \deftypemargin=12pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+
+\newcount\parencount
+% define \functionparens, which makes ( and ) and & do special things.
+% \functionparens affects the group it is contained in.
+\def\activeparens{%
+\catcode`\(=\active \catcode`\)=\active \catcode`\&=\active
+\catcode`\[=\active \catcode`\]=\active}
+{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
+\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+
+% Definitions of (, ) and & used in args for functions.
+% This is the definition of ( outside of all parentheses.
+\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %
+\global\advance\parencount by 1 }
+%
+% This is the definition of ( when already inside a level of parens.
+\gdef\opnested{\char`\(\global\advance\parencount by 1 }
+%
+\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
+% also in that case restore the outer-level definition of (.
+\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
+\global\advance \parencount by -1 }
+% If we encounter &foo, then turn on ()-hacking afterwards
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }
+%
+\gdef\normalparens{\boldbrax\let&=\ampnr}
+} % End of definition inside \activeparens
+%% These parens (in \boldbrax) actually are a little bolder than the
+%% contained text. This is especially needed for [ and ]
+\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\&}
+\def\lbrb{{\bf\char`\[}} \def\rbrb{{\bf\char`\]}}
+
+% First, defname, which formats the header line itself.
+% #1 should be the function name.
+% #2 should be the type of definition, such as "Function".
+
+\def\defname #1#2{%
+% Get the values of \leftskip and \rightskip as they were
+% outside the @def...
+\dimen2=\leftskip
+\advance\dimen2 by -\defbodyindent
+\dimen3=\rightskip
+\advance\dimen3 by -\defbodyindent
+\noindent %
+\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}%
+\dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
+\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations
+\parshape 2 0in \dimen0 \defargsindent \dimen1 %
+% Now output arg 2 ("Function" or some such)
+% ending at \deftypemargin from the right margin,
+% but stuck inside a box of width 0 so it does not interfere with linebreaking
+{% Adjust \hsize to exclude the ambient margins,
+% so that \rightline will obey them.
+\advance \hsize by -\dimen2 \advance \hsize by -\dimen3
+\rlap{\rightline{{\rm #2}\hskip \deftypemargin}}}%
+% Make all lines underfull and no complaints:
+\tolerance=10000 \hbadness=10000
+\advance\leftskip by -\defbodyindent
+\exdentamount=\defbodyindent
+{\df #1}\enskip % Generate function name
+}
+
+% Actually process the body of a definition
+% #1 should be the terminating control sequence, such as \Edefun.
+% #2 should be the "another name" control sequence, such as \defunx.
+% #3 should be the control sequence that actually processes the header,
+% such as \defunheader.
+
+\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup %
+\catcode 61=\active %
+\obeylines\activeparens\spacesplit#3}
+
+\def\defmethparsebody #1#2#3#4 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
+
+\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 ##2 {\def#4{##1}%
+\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
+
+% These parsing functions are similar to the preceding ones
+% except that they do not make parens into active characters.
+% These are used for "variables" since they have no arguments.
+
+\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2{\begingroup\obeylines\spacesplit#3}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup %
+\catcode 61=\active %
+\obeylines\spacesplit#3}
+
+\def\defvrparsebody #1#2#3#4 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\spacesplit{#3{#4}}}
+
+\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
+\medbreak %
+% Define the end token that this defining construct specifies
+% so that it will exit this group.
+\def#1{\endgraf\endgroup\medbreak}%
+\def#2##1 ##2 {\def#4{##1}%
+\begingroup\obeylines\spacesplit{#3{##2}}}%
+\parindent=0in
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent
+\exdentamount=\defbodyindent
+\begingroup\obeylines\spacesplit{#3{#5}}}
+
+% Split up #2 at the first space token.
+% call #1 with two arguments:
+% the first is all of #2 before the space token,
+% the second is all of #2 after that space token.
+% If #2 contains no space token, all of it is passed as the first arg
+% and the second is passed as empty.
+
+{\obeylines
+\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
+\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
+\ifx\relax #3%
+#1{#2}{}\else #1{#2}{#3#4}\fi}}
+
+% So much for the things common to all kinds of definitions.
+
+% Define @defun.
+
+% First, define the processing that is wanted for arguments of \defun
+% Use this to expand the args and terminate the paragraph they make up
+
+\def\defunargs #1{\functionparens \sl
+% Expand, preventing hyphenation at `-' chars.
+% Note that groups don't affect changes in \hyphenchar.
+\hyphenchar\tensl=0
+#1%
+\hyphenchar\tensl=45
+\ifnum\parencount=0 \else \errmessage{unbalanced parens in @def arguments}\fi%
+\interlinepenalty=10000
+\advance\rightskip by 0pt plus 1fil
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
+}
+
+\def\deftypefunargs #1{%
+% Expand, preventing hyphenation at `-' chars.
+% Note that groups don't affect changes in \hyphenchar.
+\functionparens
+\code{#1}%
+\interlinepenalty=10000
+\advance\rightskip by 0pt plus 1fil
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000%
+}
+
+% Do complete processing of one @defun or @defunx line already parsed.
+
+% @deffn Command forward-char nchars
+
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
+
+\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
+\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @defun == @deffn Function
+
+\def\defun{\defparsebody\Edefun\defunx\defunheader}
+
+\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+\begingroup\defname {#1}{Function}%
+\defunargs {#2}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @deftypefun int foobar (int @var{foo}, float @var{bar})
+
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
+
+% #1 is the data type. #2 is the name and args.
+\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
+% #1 is the data type, #2 the name, #3 the args.
+\def\deftypefunheaderx #1#2 #3\relax{%
+\doind {fn}{\code{#2}}% Make entry in function index
+\begingroup\defname {\code{#1} #2}{Function}%
+\deftypefunargs {#3}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
+
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
+
+% #1 is the classification. #2 is the data type. #3 is the name and args.
+\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
+% #1 is the classification, #2 the data type, #3 the name, #4 the args.
+\def\deftypefnheaderx #1#2#3 #4\relax{%
+\doind {fn}{\code{#3}}% Make entry in function index
+\begingroup\defname {\code{#2} #3}{#1}%
+\deftypefunargs {#4}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @defmac == @deffn Macro
+
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
+
+\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+\begingroup\defname {#1}{Macro}%
+\defunargs {#2}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% @defspec == @deffn Special Form
+
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
+
+\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
+\begingroup\defname {#1}{Special Form}%
+\defunargs {#2}\endgroup %
+\catcode 61=\other % Turn off change made in \defparsebody
+}
+
+% This definition is run if you use @defunx
+% anywhere other than immediately after a @defun or @defunx.
+
+\def\deffnx #1 address@hidden in invalid context}}
+\def\defunx #1 address@hidden in invalid context}}
+\def\defmacx #1 address@hidden in invalid context}}
+\def\defspecx #1 address@hidden in invalid context}}
+\def\deftypefnx #1 address@hidden in invalid context}}
+\def\deftypeunx #1 address@hidden in invalid context}}
+
+% @defmethod, and so on
+
+% @defop {Funny Method} foo-class frobnicate argument
+
+\def\defop #1 {\def\defoptype{#1}%
+\defopparsebody\Edefop\defopx\defopheader\defoptype}
+
+\def\defopheader #1#2#3{%
+\dosubind {fn}{\code{#2}}{on #1}% Make entry in function index
+\begingroup\defname {#2}{\defoptype{} on #1}%
+\defunargs {#3}\endgroup %
+}
+
+% @defmethod == @defop Method
+
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
+
+\def\defmethodheader #1#2#3{%
+\dosubind {fn}{\code{#2}}{on #1}% entry in function index
+\begingroup\defname {#2}{Method on #1}%
+\defunargs {#3}\endgroup %
+}
+
+% @defcv {Class Option} foo-class foo-flag
+
+\def\defcv #1 {\def\defcvtype{#1}%
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
+
+\def\defcvarheader #1#2#3{%
+\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
+\begingroup\defname {#2}{\defcvtype{} of #1}%
+\defvarargs {#3}\endgroup %
+}
+
+% @defivar == @defcv {Instance Variable}
+
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
+
+\def\defivarheader #1#2#3{%
+\dosubind {vr}{\code{#2}}{of #1}% Make entry in var index
+\begingroup\defname {#2}{Instance Variable of #1}%
+\defvarargs {#3}\endgroup %
+}
+
+% These definitions are run if you use @defmethodx, etc.,
+% anywhere other than immediately after a @defmethod, etc.
+
+\def\defopx #1 address@hidden in invalid context}}
+\def\defmethodx #1 address@hidden in invalid context}}
+\def\defcvx #1 address@hidden in invalid context}}
+\def\defivarx #1 address@hidden in invalid context}}
+
+% Now @defvar
+
+% First, define the processing that is wanted for arguments of @defvar.
+% This is actually simple: just print them in roman.
+% This must expand the args and terminate the paragraph they make up
+\def\defvarargs #1{\normalparens #1%
+\interlinepenalty=10000
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000}
+
+% @defvr Counter foo-count
+
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
+
+\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
+\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
+
+% @defvar == @defvr Variable
+
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
+
+\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
+\begingroup\defname {#1}{Variable}%
+\defvarargs {#2}\endgroup %
+}
+
+% @defopt == @defvr {User Option}
+
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
+
+\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
+\begingroup\defname {#1}{User Option}%
+\defvarargs {#2}\endgroup %
+}
+
+% @deftypevar int foobar
+
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
+
+% #1 is the data type. #2 is the name.
+\def\deftypevarheader #1#2{%
+\doind {vr}{\code{#2}}% Make entry in variables index
+\begingroup\defname {\code{#1} #2}{Variable}%
+\interlinepenalty=10000
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000
+\endgroup}
+
+% @deftypevr {Global Flag} int enable
+
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
+
+\def\deftypevrheader #1#2#3{\doind {vr}{\code{#3}}%
+\begingroup\defname {\code{#2} #3}{#1}
+\interlinepenalty=10000
+\endgraf\penalty 10000\vskip -\parskip\penalty 10000
+\endgroup}
+
+% This definition is run if you use @defvarx
+% anywhere other than immediately after a @defvar or @defvarx.
+
+\def\defvrx #1 address@hidden in invalid context}}
+\def\defvarx #1 address@hidden in invalid context}}
+\def\defoptx #1 address@hidden in invalid context}}
+\def\deftypevarx #1 address@hidden in invalid context}}
+\def\deftypevrx #1 address@hidden in invalid context}}
+
+% Now define @deftp
+% Args are printed in bold, a slight difference from @defvar.
+
+\def\deftpargs #1{\bf \defvarargs{#1}}
+
+% @deftp Class window height width ...
+
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}
+
+\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
+\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
+
+% This definition is run if you use @deftpx, etc
+% anywhere other than immediately after a @deftp, etc.
+
+\def\deftpx #1 address@hidden in invalid context}}
+
+\message{cross reference,}
+% Define cross-reference macros
+\newwrite \auxfile
+
+\newif\ifhavexrefs % True if xref values are known.
+\newif\ifwarnedxrefs % True if we warned once that they aren't known.
+
+% \setref{foo} defines a cross-reference point named foo.
+
+\def\setref#1{%
+%\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-pg}{Ypagenumber}%
+\dosetq{#1-snt}{Ysectionnumberandtype}}
+
+\def\unnumbsetref#1{%
+%\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-pg}{Ypagenumber}%
+\dosetq{#1-snt}{Ynothing}}
+
+\def\appendixsetref#1{%
+%\dosetq{#1-title}{Ytitle}%
+\dosetq{#1-pg}{Ypagenumber}%
+\dosetq{#1-snt}{Yappendixletterandtype}}
+
+% \xref, \pxref, and \ref generate cross-references to specified points.
+% For \xrefX, #1 is the node name, #2 the name of the Info
+% cross-reference, #3 the printed node name, #4 the name of the Info
+% file, #5 the name of the printed manual. All but the node name can be
+% omitted.
+%
+\def\pxref#1{see \xrefX[#1,,,,,,,]}
+\def\xref#1{See \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup%
+\def\printedmanual{\ignorespaces #5}%
+\def\printednodename{\ignorespaces #3}%
+%
+\setbox1=\hbox{\printedmanual}%
+\setbox0=\hbox{\printednodename}%
+\ifdim \wd0=0pt%
+\def\printednodename{\ignorespaces #1}%
+%%% Uncommment the following line to make the actual chapter or section title
+%%% appear inside the square brackets.
+%\def\printednodename{#1-title}%
+\fi%
+%
+%
+% If we use \unhbox0 and \unhbox1 to print the node names, TeX does
+% not insert empty discretionaries after hyphens, which means that it
+% will not find a line break at a hyphen in a node names. Since some
+% manuals are best written with fairly long node names, containing
+% hyphens, this is a loss. Therefore, we simply give the text of
+% the node name again, so it is as if TeX is seeing it for the first
+% time.
+\ifdim \wd1>0pt
+section ``\printednodename'' in \cite{\printedmanual}%
+\else%
+\turnoffactive%
+\refx{#1-snt}{} [\printednodename], page\tie\refx{#1-pg}{}%
+\fi
+\endgroup}
+
+% \dosetq is the interface for calls from other macros
+
+% Use \turnoffactive so that punctuation chars such as underscore
+% work in node names.
+\def\dosetq #1#2{{\let\folio=0 \turnoffactive%
+\edef\next{\write\auxfile{\internalsetq {#1}{#2}}}%
+\next}}
+
+% \internalsetq {foo}{page} expands into
+% CHARACTERS 'xrdef {foo}{...expansion of \Ypage...}
+% When the aux file is read, ' is the escape character
+
+\def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}}
+
+% Things to be expanded by \internalsetq
+
+\def\Ypagenumber{\folio}
+
+\def\Ytitle{\thischapter}
+
+\def\Ynothing{}
+
+\def\Ysectionnumberandtype{%
+\ifnum\secno=0 Chapter\xreftie\the\chapno %
+\else \ifnum \subsecno=0 Section\xreftie\the\chapno.\the\secno %
+\else \ifnum \subsubsecno=0 %
+Section\xreftie\the\chapno.\the\secno.\the\subsecno %
+\else %
+Section\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno %
+\fi \fi \fi }
+
+\def\Yappendixletterandtype{%
+\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{}%
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %
+\else \ifnum \subsubsecno=0 %
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %
+\else %
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
+\fi \fi \fi }
+
+\gdef\xreftie{'tie}
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+ \let\linenumber = \empty % Non-3.0.
+\else
+ \def\linenumber{\the\inputlineno:\space}
+\fi
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+
+\def\refx#1#2{%
+ \expandafter\ifx\csname X#1\endcsname\relax
+ % If not defined, say something at least.
+ $\langle$un\-de\-fined$\rangle$%
+ \ifhavexrefs
+ \message{\linenumber Undefined cross reference `#1'.}%
+ \else
+ \ifwarnedxrefs\else
+ \global\warnedxrefstrue
+ \message{Cross reference values unknown; you must run TeX again.}%
+ \fi
+ \fi
+ \else
+ % It's defined, so just use it.
+ \csname X#1\endcsname
+ \fi
+ #2% Output the suffix in any case.
+}
+
+% Read the last existing aux file, if any. No error if none exists.
+
+% This is the macro invoked by entries in the aux file.
+\def\xrdef #1#2{
+{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {#2}}}
+
+\def\readauxfile{%
+\begingroup
+\catcode address@hidden
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\^^C=\other
+\catcode `\^^D=\other
+\catcode `\^^E=\other
+\catcode `\^^F=\other
+\catcode `\^^G=\other
+\catcode `\^^H=\other
+\catcode `\=\other
+\catcode `\^^L=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode `\=\other
+\catcode 26=\other
+\catcode `\^^[=\other
+\catcode `\^^\=\other
+\catcode `\^^]=\other
+\catcode `\^^^=\other
+\catcode `\^^_=\other
+\catcode address@hidden
+\catcode `\^=\other
+\catcode `\~=\other
+\catcode `\[=\other
+\catcode `\]=\other
+\catcode`\"=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode `\$=\other
+\catcode `\#=\other
+\catcode `\&=\other
+% the aux file uses ' as the escape.
+% Turn off \ as an escape so we do not lose on
+% entries which were dumped with control sequences in their names.
+% For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^
+% Reference to such entries still does not work the way one would wish,
+% but at least they do not bomb out when the aux file is read in.
+\catcode `\{=1 \catcode `\}=2
+\catcode `\%=\other
+\catcode `\'=0
+\catcode `\\=\other
+\openin 1 \jobname.aux
+\ifeof 1 \else \closein 1 \input \jobname.aux \global\havexrefstrue
+\fi
+% Open the new aux file. Tex will close it automatically at exit.
+\openout \auxfile=\jobname.aux
+\endgroup}
+
+
+% Footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed.
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for info output only..
+\let\footnotestyle=\comment
+
+\let\ptexfootnote=\footnote
+
+{\catcode address@hidden
+\long\gdef\footnote #1{\global\advance \footnoteno by address@hidden
+\unskip
+\edef\thisfootno{$^{\the\footnoteno}$}%
address@hidden
address@hidden/\fi
address@hidden \footnotezzz{#1}}
+% \parsearg\footnotezzz}
+
+\long\gdef\footnotezzz #1{\insert\footins{
+\interlinepenalty\interfootnotelinepenalty
+\splittopskip\ht\strutbox % top baseline for broken footnotes
+\splitmaxdepth\dp\strutbox address@hidden
address@hidden address@hidden address@hidden address@hidden
+\footstrut\parindent=\defaultparindent\hang\textindent{\thisfootno}#1\strut}}
+
+}%end \catcode address@hidden
+
+% End of control word definitions.
+
+\message{and turning on texinfo input format.}
+
+\def\openindices{%
+ \newindex{cp}%
+ \newcodeindex{fn}%
+ \newcodeindex{vr}%
+ \newcodeindex{tp}%
+ \newcodeindex{ky}%
+ \newcodeindex{pg}%
+}
+
+% Set some numeric style parameters, for 8.5 x 11 format.
+
+%\hsize = 6.5in
+\newdimen\defaultparindent \defaultparindent = 15pt
+\parindent = \defaultparindent
+\parskip 18pt plus 1pt
+\baselineskip 15pt
+\advance\topskip by 1.2cm
+
+% Prevent underfull vbox error messages.
+\vbadness=10000
+
+% Following George Bush, just get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything. We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize. This makes it come to about 9pt for the 8.5x11 format.
+%
+\ifx\emergencystretch\thisisundefined \else
+ \emergencystretch = \hsize
+ \divide\emergencystretch by 45
+\fi
+
+% Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25)
+\def\smallbook{
+\global\lispnarrowing = 0.3in
+\global\baselineskip 12pt
+\advance\topskip by -1cm
+\global\parskip 3pt plus 1pt
+\global\hsize = 5in
+\global\doublecolumnhsize=2.4in \global\doublecolumnvsize=15.0in
+\global\vsize=7.5in
+\global\tolerance=700
+\global\hfuzz=1pt
+\global\contentsrightmargin=0pt
+
+\global\pagewidth=\hsize
+\global\pageheight=\vsize
+
+\global\let\smalllisp=\smalllispx
+\global\let\smallexample=\smalllispx
+\global\def\Esmallexample{\Esmalllisp}
+}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{
+\global\tolerance=700
+\global\hfuzz=1pt
+\global\baselineskip=12pt
+\global\parskip 15pt plus 1pt
+
+\global\vsize= 53\baselineskip
+\advance\vsize by \topskip
+%\global\hsize= 5.85in % A4 wide 10pt
+\global\hsize= 6.5in
+\global\outerhsize=\hsize
+\global\advance\outerhsize by 0.5in
+\global\outervsize=\vsize
+\global\advance\outervsize by 0.6in
+\global\doublecolumnhsize=\hsize
+\global\divide\doublecolumnhsize by 2
+\global\advance\doublecolumnhsize by -0.1in
+\global\doublecolumnvsize=\vsize
+\global\multiply\doublecolumnvsize by 2
+\global\advance\doublecolumnvsize by 0.1in
+
+\global\pagewidth=\hsize
+\global\pageheight=\vsize
+}
+
+%% For a final copy, take out the rectangles
+%% that mark overfull boxes (in case you have decided
+%% that the text looks ok even though it passes the margin).
+\def\finalout{\overfullrule=0pt}
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other
+\catcode`\~=\other
+\catcode`\^=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode`\+=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+
+% This macro is used to make a character print one way in ttfont
+% where it can probably just be output, and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise. Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\the\font=0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt \char '042}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt \char '176}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+% Subroutine for the previous macro.
+\def\_{\lvvmode \kern.06em \vbox{\hrule width.3em height.1ex}}
+
+% \lvvmode is equivalent in function to \leavevmode.
+% Using \leavevmode runs into trouble when written out to
+% an index file due to the expansion of \leavevmode into ``\unhbox
+% address@hidden'' ---which looks to TeX like ``\unhbox \voidb\x'' due to our
+% magic tricks with @.
+\def\lvvmode{\vbox to 0pt{}}
+
+\catcode`\|=\active
+\def|{{\tt \char '174}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+%\catcode 27=\active
+%\def^^[{$\diamondsuit$}
+
+% Used sometimes to turn off (effectively) the active characters
+% even after parsing them.
+\def\turnoffactive{\let"=\normaldoublequote
+\let~=\normaltilde
+\let^=\normalcaret
+\let_=\normalunderscore
+\let|=\normalverticalbar
+\let<=\normalless
+\let>=\normalgreater
+\let+=\normalplus}
+
+% Set up an active definition for =, but don't enable it most of the time.
+{\catcode`\==\active
+\global\def={{\tt \char 61}}}
+
address@hidden
+
+% \rawbackslashxx output one backslash character in current font
+\global\chardef\rawbackslashxx=`\\
+%{\catcode`\\=\other
address@hidden@rawbackslashxx{\}}
+
+% \rawbackslash redefines \ as input to do \rawbackslashxx.
+{\catcode`\\=\active
address@hidden@address@hidden@rawbackslashxx }}
+
+% \normalbackslash outputs one backslash in fixed width font.
+\def\normalbackslash{{\tt\rawbackslashxx}}
+
+% Say @foo, not \foo, in error messages.
+\escapechar=`\@
+
+% \catcode 17=0 % Define control-q
+\catcode`\\=\active
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
address@hidden@eatinput input address@hidden
address@hidden@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\{ in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+%
address@hidden@address@hidden@eatinput @let\ = @normalbackslash @fi}
+
+%% These look ok in all fonts, so just make them not special. The @rm below
+%% makes sure that the current font starts out as the newly loaded cmr10
address@hidden@address@hidden @address@hidden@other @catcode`@&address@hidden
@address@hidden@other
+
address@hidden
address@hidden
+
address@hidden Local variables:
address@hidden page-delimiter: "^\\\\message"
address@hidden End:
diff --git a/test/etags/y-src/atest.y b/test/etags/y-src/atest.y
new file mode 100644
index 0000000..81087b8
--- /dev/null
+++ b/test/etags/y-src/atest.y
@@ -0,0 +1,5 @@
+%%
+exp : exp '*' exp
+ { $$.value = $1.value ? $3.value : $5.value;
+ $$.unsignedp = $3.unsignedp || $5.unsignedp; }
+ ;
diff --git a/test/etags/y-src/cccp.c b/test/etags/y-src/cccp.c
new file mode 100644
index 0000000..6996705
--- /dev/null
+++ b/test/etags/y-src/cccp.c
@@ -0,0 +1,2202 @@
+/* A Bison parser, made from cccp.y
+ by GNU bison 1.32. */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+# define INT 257
+# define CHAR 258
+# define NAME 259
+# define ERROR 260
+# define OR 261
+# define AND 262
+# define EQUAL 263
+# define NOTEQUAL 264
+# define LEQ 265
+# define GEQ 266
+# define LSH 267
+# define RSH 268
+# define UNARY 269
+
+#line 26 "cccp.y"
+
+#include "config.h"
+#include <setjmp.h>
+/* #define YYDEBUG 1 */
+
+#ifdef MULTIBYTE_CHARS
+#include <stdlib.h>
+#include <locale.h>
+#endif
+
+#include <stdio.h>
+
+typedef unsigned char U_CHAR;
+
+/* This is used for communicating lists of keywords with cccp.c. */
+struct arglist {
+ struct arglist *next;
+ U_CHAR *name;
+ int length;
+ int argno;
+};
+
+/* Define a generic NULL if one hasn't already been defined. */
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef GENERIC_PTR
+#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
+#define GENERIC_PTR void *
+#else
+#define GENERIC_PTR char *
+#endif
+#endif
+
+#ifndef NULL_PTR
+#define NULL_PTR ((GENERIC_PTR)0)
+#endif
+
+int yylex ();
+void yyerror ();
+int expression_value;
+
+static jmp_buf parse_return_error;
+
+/* Nonzero means count most punctuation as part of a name. */
+static int keyword_parsing = 0;
+
+/* some external tables of character types */
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[];
+
+extern char *xmalloc ();
+
+/* Flag for -pedantic. */
+extern int pedantic;
+
+/* Flag for -traditional. */
+extern int traditional;
+
+#ifndef CHAR_TYPE_SIZE
+#define CHAR_TYPE_SIZE BITS_PER_UNIT
+#endif
+
+#ifndef INT_TYPE_SIZE
+#define INT_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef LONG_TYPE_SIZE
+#define LONG_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
+#endif
+
+/* Yield nonzero if adding two numbers with A's and B's signs can yield a
+ number with SUM's sign, where A, B, and SUM are all C integers. */
+#define possible_sum_sign(a, b, sum) ((((a) ^ (b)) | ~ ((a) ^ (sum))) < 0)
+
+static void integer_overflow ();
+static long left_shift ();
+static long right_shift ();
+
+#line 111 "cccp.y"
+#ifndef YYSTYPE
+typedef union {
+ struct constant {long value; int unsignedp;} integer;
+ struct name {U_CHAR *address; int length;} name;
+ struct arglist *keywords;
+ int voidval;
+ char *sval;
+} yystype;
+# define YYSTYPE yystype
+#endif
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+
+
+#define YYFINAL 73
+#define YYFLAG -32768
+#define YYNTBASE 34
+
+/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
+#define YYTRANSLATE(x) ((unsigned)(x) <= 269 ? yytranslate[x] : 39)
+
+/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
+static const char yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 29, 2, 31, 2, 27, 14, 2,
+ 32, 33, 25, 23, 9, 24, 2, 26, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 8, 2,
+ 17, 2, 18, 7, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 13, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 12, 2, 30, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 3, 4, 5,
+ 6, 10, 11, 15, 16, 19, 20, 21, 22, 28
+};
+
+#if YYDEBUG
+static const short yyprhs[] =
+{
+ 0, 0, 2, 4, 8, 11, 14, 17, 20, 23,
+ 24, 31, 35, 39, 43, 47, 51, 55, 59, 63,
+ 67, 71, 75, 79, 83, 87, 91, 95, 99, 103,
+ 107, 113, 115, 117, 119, 120, 125
+};
+static const short yyrhs[] =
+{
+ 35, 0, 36, 0, 35, 9, 36, 0, 24, 36,
+ 0, 29, 36, 0, 23, 36, 0, 30, 36, 0,
+ 31, 5, 0, 0, 31, 5, 37, 32, 38, 33,
+ 0, 32, 35, 33, 0, 36, 25, 36, 0, 36,
+ 26, 36, 0, 36, 27, 36, 0, 36, 23, 36,
+ 0, 36, 24, 36, 0, 36, 21, 36, 0, 36,
+ 22, 36, 0, 36, 15, 36, 0, 36, 16, 36,
+ 0, 36, 19, 36, 0, 36, 20, 36, 0, 36,
+ 17, 36, 0, 36, 18, 36, 0, 36, 14, 36,
+ 0, 36, 13, 36, 0, 36, 12, 36, 0, 36,
+ 11, 36, 0, 36, 10, 36, 0, 36, 7, 36,
+ 8, 36, 0, 3, 0, 4, 0, 5, 0, 0,
+ 32, 38, 33, 38, 0, 5, 38, 0
+};
+
+#endif
+
+#if YYDEBUG
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const short yyrline[] =
+{
+ 0, 143, 148, 149, 156, 161, 164, 166, 169, 173,
+ 173, 180, 185, 197, 212, 223, 230, 237, 243, 249,
+ 252, 255, 261, 267, 273, 279, 282, 285, 288, 291,
+ 294, 297, 299, 301, 306, 308, 321
+};
+#endif
+
+
+#if (YYDEBUG) || defined YYERROR_VERBOSE
+
+/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
+static const char *const yytname[] =
+{
+ "$", "error", "$undefined.", "INT", "CHAR", "NAME", "ERROR", "'?'", "':'",
+ "','", "OR", "AND", "'|'", "'^'", "'&'", "EQUAL", "NOTEQUAL", "'<'",
+ "'>'", "LEQ", "GEQ", "LSH", "RSH", "'+'", "'-'", "'*'", "'/'", "'%'",
+ "UNARY", "'!'", "'~'", "'#'", "'('", "')'", "start", "exp1", "exp",
+ "@1", "keywords", NULL
+};
+#endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const short yyr1[] =
+{
+ 0, 34, 35, 35, 36, 36, 36, 36, 36, 37,
+ 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 38, 38, 38
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const short yyr2[] =
+{
+ 0, 1, 1, 3, 2, 2, 2, 2, 2, 0,
+ 6, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 5, 1, 1, 1, 0, 4, 2
+};
+
+/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
+ doesn't specify something else to do. Zero means the default is an
+ error. */
+static const short yydefact[] =
+{
+ 0, 31, 32, 33, 0, 0, 0, 0, 0, 0,
+ 1, 2, 6, 4, 5, 7, 8, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,
+ 3, 0, 29, 28, 27, 26, 25, 19, 20, 23,
+ 24, 21, 22, 17, 18, 15, 16, 12, 13, 14,
+ 34, 0, 34, 34, 0, 30, 36, 0, 10, 34,
+ 35, 0, 0, 0
+};
+
+static const short yydefgoto[] =
+{
+ 71, 10, 11, 38, 64
+};
+
+static const short yypact[] =
+{
+ 31,-32768,-32768,-32768, 31, 31, 31, 31, 4, 31,
+ 3, 80,-32768,-32768,-32768,-32768, 6, 32, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 7,-32768,
+ 80, 59, 97, 113, 128, 142, 155, 25, 25, 162,
+ 162, 162, 162, 167, 167, -19, -19,-32768,-32768,-32768,
+ 5, 31, 5, 5, -20, 80,-32768, 20,-32768, 5,
+ -32768, 40, 56,-32768
+};
+
+static const short yypgoto[] =
+{
+ -32768, 49, -4,-32768, -58
+};
+
+
+#define YYLAST 194
+
+
+static const short yytable[] =
+{
+ 12, 13, 14, 15, 66, 67, 35, 36, 37, 16,
+ 62, 70, 18, 68, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 1, 2, 3, 63, -9, 60,
+ 72, 18, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 69, 4, 5, 73, 65, 17, 0,
+ 6, 7, 8, 9, 0, 39, 19, 61, 0, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 19, 0, 0,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 31, 32, 33, 34, 35, 36, 37,
+ 33, 34, 35, 36, 37
+};
+
+static const short yycheck[] =
+{
+ 4, 5, 6, 7, 62, 63, 25, 26, 27, 5,
+ 5, 69, 9, 33, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 3, 4, 5, 32, 32, 32,
+ 0, 9, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 33, 23, 24, 0, 61, 9, -1,
+ 29, 30, 31, 32, -1, 33, 7, 8, -1, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 7, -1, -1,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 21, 22, 23, 24, 25, 26, 27,
+ 23, 24, 25, 26, 27
+};
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/usr/share/bison/bison.simple"
+
+/* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+/* This is the parser code that is written into each bison parser when
+ the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+#ifdef __cplusplus
+# define YYSTD(x) std::x
+#else
+# define YYSTD(x) x
+#endif
+
+#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# if YYSTACK_USE_ALLOCA
+# define YYSTACK_ALLOC alloca
+# define YYSIZE_T YYSTD (size_t)
+# else
+# ifndef YYSTACK_USE_ALLOCA
+# if defined (alloca) || defined (_ALLOCA_H)
+# define YYSTACK_ALLOC alloca
+# define YYSIZE_T YYSTD (size_t)
+# else
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+# ifdef __cplusplus
+# include <cstdlib> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T std::size_t
+# else
+# ifdef __STDC__
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# endif
+# endif
+# define YYSTACK_ALLOC YYSTD (malloc)
+# define YYSTACK_FREE YYSTD (free)
+# endif
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ short yyss;
+ YYSTYPE yyvs;
+# if YYLSP_NEEDED
+ YYLTYPE yyls;
+# endif
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# if YYLSP_NEEDED
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
+ + 2 * YYSTACK_GAP_MAX)
+# else
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (short) + sizeof (YYSTYPE))
\
+ + YYSTACK_GAP_MAX)
+# endif
+
+/* Relocate the TYPE STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Type, Stack) \
+ do \
+ {
\
+ YYSIZE_T yynewbytes; \
+ yymemcpy ((char *) yyptr, (char *) (Stack), \
+ yysize * (YYSIZE_T) sizeof (Type)); \
+ Stack = &yyptr->Stack; \
+ yynewbytes = yystacksize * sizeof (Type) + YYSTACK_GAP_MAX; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ }
\
+ while (0)
+
+#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
+
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# ifdef __cplusplus
+# include <cstddef> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T std::size_t
+# else
+# ifdef __STDC__
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# endif
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror ("syntax error: cannot back up"); \
+ YYERROR; \
+ } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+ are run).
+
+ When YYLLOC_DEFAULT is run, CURRENT is set the location of the
+ first token. By default, to implement support for ranges, extend
+ its range to the last symbol. */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ Current.last_line = Rhs[N].last_line; \
+ Current.last_column = Rhs[N].last_column;
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#if YYPURE
+# if YYLSP_NEEDED
+# ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
+# else
+# define YYLEX yylex (&yylval, &yylloc)
+# endif
+# else /* !YYLSP_NEEDED */
+# ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, YYLEX_PARAM)
+# else
+# define YYLEX yylex (&yylval)
+# endif
+# endif /* !YYLSP_NEEDED */
+#else /* !YYPURE */
+# define YYLEX yylex ()
+#endif /* !YYPURE */
+
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# ifdef __cplusplus
+# include <cstdio> /* INFRINGES ON USER NAME SPACE */
+# else
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# endif
+# define YYFPRINTF YYSTD (fprintf)
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+/* Nonzero means print parse trace. [The following comment makes no
+ sense to me. Could someone clarify it? --akim] Since this is
+ uninitialized, it does not stop multiple parsers from coexisting.
+ */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+#endif /* !YYDEBUG */
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#if YYMAXDEPTH == 0
+# undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+#if ! defined (yyoverflow) && ! defined (yymemcpy)
+# if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+# define yymemcpy __builtin_memcpy
+# else /* not GNU C or C++ */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+# if defined (__STDC__) || defined (__cplusplus)
+yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T yycount)
+# else
+yymemcpy (yyto, yyfrom, yycount)
+ char *yyto;
+ const char *yyfrom;
+ YYSIZE_T yycount;
+# endif
+{
+ register const char *yyf = yyfrom;
+ register char *yyt = yyto;
+ register YYSIZE_T yyi = yycount;
+
+ while (yyi-- != 0)
+ *yyt++ = *yyf++;
+}
+# endif
+#endif
+
+#ifdef YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined (__GLIBC__) && defined (_STRING_H)
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+static YYSIZE_T
+# if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+# else
+yystrlen (yystr)
+ const char *yystr;
+# endif
+{
+ register const char *yys = yystr;
+
+ while (*yys++ != '\0')
+ continue;
+
+ return yys - yystr - 1;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+static char *
+# if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+# else
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+# endif
+{
+ register char *yyd = yydest;
+ register const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+#endif
+
+#line 341 "/usr/share/bison/bison.simple"
+
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+ into yyparse. The argument should have type void *.
+ It should actually point to an object.
+ Grammar actions can access the variable by casting it
+ to the proper pointer type. */
+
+#ifdef YYPARSE_PARAM
+# ifdef __cplusplus
+# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+# define YYPARSE_PARAM_DECL
+# else /* !__cplusplus */
+# define YYPARSE_PARAM_ARG YYPARSE_PARAM
+# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+# endif /* !__cplusplus */
+#else /* !YYPARSE_PARAM */
+# define YYPARSE_PARAM_ARG
+# define YYPARSE_PARAM_DECL
+#endif /* !YYPARSE_PARAM */
+
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+# ifdef YYPARSE_PARAM
+int yyparse (void *);
+# else
+int yyparse (void);
+# endif
+#endif
+
+/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
+ variables are global, or local to YYPARSE. */
+
+#define YY_DECL_NON_LSP_VARIABLES \
+/* The lookahead symbol. */ \
+int yychar; \
+ \
+/* The semantic value of the lookahead symbol. */ \
+YYSTYPE yylval; \
+ \
+/* Number of parse errors so far. */ \
+int yynerrs;
+
+#if YYLSP_NEEDED
+# define YY_DECL_VARIABLES \
+YY_DECL_NON_LSP_VARIABLES \
+ \
+/* Location data for the lookahead symbol. */ \
+YYLTYPE yylloc;
+#else
+# define YY_DECL_VARIABLES \
+YY_DECL_NON_LSP_VARIABLES
+#endif
+
+
+/* If nonreentrant, generate the variables here. */
+
+#if !YYPURE
+YY_DECL_VARIABLES
+#endif /* !YYPURE */
+
+int
+yyparse (YYPARSE_PARAM_ARG)
+ YYPARSE_PARAM_DECL
+{
+ /* If reentrant, generate the variables here. */
+#if YYPURE
+ YY_DECL_VARIABLES
+#endif /* !YYPURE */
+
+ register int yystate;
+ register int yyn;
+ int yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+ /* Lookahead token as an internal (translated) token number. */
+ int yychar1 = 0;
+
+ /* Three stacks and their tools:
+ `yyss': related to states,
+ `yyvs': related to semantic values,
+ `yyls': related to locations.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ short yyssa[YYINITDEPTH];
+ short *yyss = yyssa;
+ register short *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ register YYSTYPE *yyvsp;
+
+#if YYLSP_NEEDED
+ /* The location stack. */
+ YYLTYPE yylsa[YYINITDEPTH];
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+#endif
+
+#if YYLSP_NEEDED
+# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+# define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+#if YYLSP_NEEDED
+ YYLTYPE yyloc;
+#endif
+
+ /* When reducing, the number of symbols on the RHS of the reduced
+ rule. */
+ int yylen;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss;
+ yyvsp = yyvs;
+#if YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks.
+ */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. */
+# if YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+ /* This used to be a conditional around just the two extra args,
+ but that might be undefined if yyoverflow is a macro. */
+ yyoverflow ("parser stack overflow",
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yyls1, yysize * sizeof (*yylsp),
+ &yystacksize);
+ yyls = yyls1;
+# else
+ yyoverflow ("parser stack overflow",
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+# endif
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ goto yyoverflowlab;
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ short *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyoverflowlab;
+ YYSTACK_RELOCATE (short, yyss);
+ YYSTACK_RELOCATE (YYSTYPE, yyvs);
+# if YYLSP_NEEDED
+ YYSTACK_RELOCATE (YYLTYPE, yyls);
+# endif
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+#if YYLSP_NEEDED
+ yylsp = yyls + yysize - 1;
+#endif
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ goto yybackup;
+
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE (yychar);
+
+#if YYDEBUG
+ /* We have to keep this `#if YYDEBUG', since we use variables
+ which are defined only if `YYDEBUG' is set. */
+ if (yydebug)
+ {
+ YYFPRINTF (stderr, "Next token is %d (%s",
+ yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise
+ meaning of a token, for further debugging info. */
+# ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+# endif
+ YYFPRINTF (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+ YYDPRINTF ((stderr, "Shifting token %d (%s), ",
+ yychar, yytname[yychar1]));
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#if YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to the semantic value of
+ the lookahead token. This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+#if YYLSP_NEEDED
+ /* Similarly for the default location. Let the user run additional
+ commands if for instance locations are ranges. */
+ yyloc = yylsp[1-yylen];
+ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
+#endif
+
+#if YYDEBUG
+ /* We have to keep this `#if YYDEBUG', since we use variables which
+ are defined only if `YYDEBUG' is set. */
+ if (yydebug)
+ {
+ int yyi;
+
+ YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
+ YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+ YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+ switch (yyn) {
+
+case 1:
+#line 144 "cccp.y"
+{ expression_value = yyvsp[0].integer.value; }
+ break;
+case 3:
+#line 150 "cccp.y"
+{ if (pedantic)
+ pedwarn ("comma operator in operand of `#if'");
+ yyval.integer = yyvsp[0].integer; }
+ break;
+case 4:
+#line 157 "cccp.y"
+{ yyval.integer.value = - yyvsp[0].integer.value;
+ if ((yyval.integer.value & yyvsp[0].integer.value) <
0 && ! yyvsp[0].integer.unsignedp)
+ integer_overflow ();
+ yyval.integer.unsignedp = yyvsp[0].integer.unsignedp;
}
+ break;
+case 5:
+#line 162 "cccp.y"
+{ yyval.integer.value = ! yyvsp[0].integer.value;
+ yyval.integer.unsignedp = 0; }
+ break;
+case 6:
+#line 165 "cccp.y"
+{ yyval.integer = yyvsp[0].integer; }
+ break;
+case 7:
+#line 167 "cccp.y"
+{ yyval.integer.value = ~ yyvsp[0].integer.value;
+ yyval.integer.unsignedp = yyvsp[0].integer.unsignedp;
}
+ break;
+case 8:
+#line 170 "cccp.y"
+{ yyval.integer.value = check_assertion (yyvsp[0].name.address,
yyvsp[0].name.length,
+ 0, NULL_PTR);
+ yyval.integer.unsignedp = 0; }
+ break;
+case 9:
+#line 174 "cccp.y"
+{ keyword_parsing = 1; }
+ break;
+case 10:
+#line 176 "cccp.y"
+{ yyval.integer.value = check_assertion (yyvsp[-4].name.address,
yyvsp[-4].name.length,
+ 1, yyvsp[-1].keywords);
+ keyword_parsing = 0;
+ yyval.integer.unsignedp = 0; }
+ break;
+case 11:
+#line 181 "cccp.y"
+{ yyval.integer = yyvsp[-1].integer; }
+ break;
+case 12:
+#line 186 "cccp.y"
+{ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp ||
yyvsp[0].integer.unsignedp;
+ if (yyval.integer.unsignedp)
+ yyval.integer.value = (unsigned long)
yyvsp[-2].integer.value * yyvsp[0].integer.value;
+ else
+ {
+ yyval.integer.value = yyvsp[-2].integer.value *
yyvsp[0].integer.value;
+ if (yyvsp[-2].integer.value
+ && (yyval.integer.value /
yyvsp[-2].integer.value != yyvsp[0].integer.value
+ || (yyval.integer.value &
yyvsp[-2].integer.value & yyvsp[0].integer.value) < 0))
+ integer_overflow ();
+ } }
+ break;
+case 13:
+#line 198 "cccp.y"
+{ if (yyvsp[0].integer.value == 0)
+ {
+ error ("division by zero in #if");
+ yyvsp[0].integer.value = 1;
+ }
+ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp
|| yyvsp[0].integer.unsignedp;
+ if (yyval.integer.unsignedp)
+ yyval.integer.value = (unsigned long)
yyvsp[-2].integer.value / yyvsp[0].integer.value;
+ else
+ {
+ yyval.integer.value = yyvsp[-2].integer.value /
yyvsp[0].integer.value;
+ if ((yyval.integer.value &
yyvsp[-2].integer.value & yyvsp[0].integer.value) < 0)
+ integer_overflow ();
+ } }
+ break;
+case 14:
+#line 213 "cccp.y"
+{ if (yyvsp[0].integer.value == 0)
+ {
+ error ("division by zero in #if");
+ yyvsp[0].integer.value = 1;
+ }
+ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp
|| yyvsp[0].integer.unsignedp;
+ if (yyval.integer.unsignedp)
+ yyval.integer.value = (unsigned long)
yyvsp[-2].integer.value % yyvsp[0].integer.value;
+ else
+ yyval.integer.value = yyvsp[-2].integer.value %
yyvsp[0].integer.value; }
+ break;
+case 15:
+#line 224 "cccp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value + yyvsp[0].integer.value;
+ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp
|| yyvsp[0].integer.unsignedp;
+ if (! yyval.integer.unsignedp
+ && ! possible_sum_sign (yyvsp[-2].integer.value,
yyvsp[0].integer.value,
+ yyval.integer.value))
+ integer_overflow (); }
+ break;
+case 16:
+#line 231 "cccp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value - yyvsp[0].integer.value;
+ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp
|| yyvsp[0].integer.unsignedp;
+ if (! yyval.integer.unsignedp
+ && ! possible_sum_sign (yyval.integer.value,
yyvsp[0].integer.value,
+ yyvsp[-2].integer.value))
+ integer_overflow (); }
+ break;
+case 17:
+#line 238 "cccp.y"
+{ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp;
+ if (yyvsp[0].integer.value < 0 && !
yyvsp[0].integer.unsignedp)
+ yyval.integer.value = right_shift
(&yyvsp[-2].integer, -yyvsp[0].integer.value);
+ else
+ yyval.integer.value = left_shift
(&yyvsp[-2].integer, yyvsp[0].integer.value); }
+ break;
+case 18:
+#line 244 "cccp.y"
+{ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp;
+ if (yyvsp[0].integer.value < 0 && !
yyvsp[0].integer.unsignedp)
+ yyval.integer.value = left_shift
(&yyvsp[-2].integer, -yyvsp[0].integer.value);
+ else
+ yyval.integer.value = right_shift
(&yyvsp[-2].integer, yyvsp[0].integer.value); }
+ break;
+case 19:
+#line 250 "cccp.y"
+{ yyval.integer.value = (yyvsp[-2].integer.value == yyvsp[0].integer.value);
+ yyval.integer.unsignedp = 0; }
+ break;
+case 20:
+#line 253 "cccp.y"
+{ yyval.integer.value = (yyvsp[-2].integer.value != yyvsp[0].integer.value);
+ yyval.integer.unsignedp = 0; }
+ break;
+case 21:
+#line 256 "cccp.y"
+{ yyval.integer.unsignedp = 0;
+ if (yyvsp[-2].integer.unsignedp ||
yyvsp[0].integer.unsignedp)
+ yyval.integer.value = (unsigned long)
yyvsp[-2].integer.value <= yyvsp[0].integer.value;
+ else
+ yyval.integer.value = yyvsp[-2].integer.value <=
yyvsp[0].integer.value; }
+ break;
+case 22:
+#line 262 "cccp.y"
+{ yyval.integer.unsignedp = 0;
+ if (yyvsp[-2].integer.unsignedp ||
yyvsp[0].integer.unsignedp)
+ yyval.integer.value = (unsigned long)
yyvsp[-2].integer.value >= yyvsp[0].integer.value;
+ else
+ yyval.integer.value = yyvsp[-2].integer.value >=
yyvsp[0].integer.value; }
+ break;
+case 23:
+#line 268 "cccp.y"
+{ yyval.integer.unsignedp = 0;
+ if (yyvsp[-2].integer.unsignedp ||
yyvsp[0].integer.unsignedp)
+ yyval.integer.value = (unsigned long)
yyvsp[-2].integer.value < yyvsp[0].integer.value;
+ else
+ yyval.integer.value = yyvsp[-2].integer.value <
yyvsp[0].integer.value; }
+ break;
+case 24:
+#line 274 "cccp.y"
+{ yyval.integer.unsignedp = 0;
+ if (yyvsp[-2].integer.unsignedp ||
yyvsp[0].integer.unsignedp)
+ yyval.integer.value = (unsigned long)
yyvsp[-2].integer.value > yyvsp[0].integer.value;
+ else
+ yyval.integer.value = yyvsp[-2].integer.value >
yyvsp[0].integer.value; }
+ break;
+case 25:
+#line 280 "cccp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value & yyvsp[0].integer.value;
+ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp
|| yyvsp[0].integer.unsignedp; }
+ break;
+case 26:
+#line 283 "cccp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value ^ yyvsp[0].integer.value;
+ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp
|| yyvsp[0].integer.unsignedp; }
+ break;
+case 27:
+#line 286 "cccp.y"
+{ yyval.integer.value = yyvsp[-2].integer.value | yyvsp[0].integer.value;
+ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp
|| yyvsp[0].integer.unsignedp; }
+ break;
+case 28:
+#line 289 "cccp.y"
+{ yyval.integer.value = (yyvsp[-2].integer.value && yyvsp[0].integer.value);
+ yyval.integer.unsignedp = 0; }
+ break;
+case 29:
+#line 292 "cccp.y"
+{ yyval.integer.value = (yyvsp[-2].integer.value || yyvsp[0].integer.value);
+ yyval.integer.unsignedp = 0; }
+ break;
+case 30:
+#line 295 "cccp.y"
+{ yyval.integer.value = yyvsp[-4].integer.value ? yyvsp[-2].integer.value :
yyvsp[0].integer.value;
+ yyval.integer.unsignedp = yyvsp[-2].integer.unsignedp
|| yyvsp[0].integer.unsignedp; }
+ break;
+case 31:
+#line 298 "cccp.y"
+{ yyval.integer = yylval.integer; }
+ break;
+case 32:
+#line 300 "cccp.y"
+{ yyval.integer = yylval.integer; }
+ break;
+case 33:
+#line 302 "cccp.y"
+{ yyval.integer.value = 0;
+ yyval.integer.unsignedp = 0; }
+ break;
+case 34:
+#line 307 "cccp.y"
+{ yyval.keywords = 0; }
+ break;
+case 35:
+#line 309 "cccp.y"
+{ struct arglist *temp;
+ yyval.keywords = (struct arglist *) xmalloc (sizeof
(struct arglist));
+ yyval.keywords->next = yyvsp[-2].keywords;
+ yyval.keywords->name = (U_CHAR *) "(";
+ yyval.keywords->length = 1;
+ temp = yyval.keywords;
+ while (temp != 0 && temp->next != 0)
+ temp = temp->next;
+ temp->next = (struct arglist *) xmalloc (sizeof
(struct arglist));
+ temp->next->next = yyvsp[0].keywords;
+ temp->next->name = (U_CHAR *) ")";
+ temp->next->length = 1; }
+ break;
+case 36:
+#line 322 "cccp.y"
+{ yyval.keywords = (struct arglist *) xmalloc (sizeof (struct arglist));
+ yyval.keywords->name = yyvsp[-1].name.address;
+ yyval.keywords->length = yyvsp[-1].name.length;
+ yyval.keywords->next = yyvsp[0].keywords; }
+ break;
+}
+
+#line 727 "/usr/share/bison/bison.simple"
+
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#if YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG
+ if (yydebug)
+ {
+ short *yyssp1 = yyss - 1;
+ YYFPRINTF (stderr, "state stack now");
+ while (yyssp1 != yyssp)
+ YYFPRINTF (stderr, " %d", *++yyssp1);
+ YYFPRINTF (stderr, "\n");
+ }
+#endif
+
+ *++yyvsp = yyval;
+#if YYLSP_NEEDED
+ *++yylsp = yyloc;
+#endif
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ YYSIZE_T yysize = 0;
+ char *yymsg;
+ int yyx, yycount;
+
+ yycount = 0;
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ for (yyx = yyn < 0 ? -yyn : 0;
+ yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
+ if (yycheck[yyx + yyn] == yyx)
+ yysize += yystrlen (yytname[yyx]) + 15, yycount++;
+ yysize += yystrlen ("parse error, unexpected ") + 1;
+ yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
+ yymsg = (char *) YYSTACK_ALLOC (yysize);
+ if (yymsg != 0)
+ {
+ char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
+ yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
+
+ if (yycount < 5)
+ {
+ yycount = 0;
+ for (yyx = yyn < 0 ? -yyn : 0;
+ yyx < (int) (sizeof (yytname) / sizeof (char *));
+ yyx++)
+ if (yycheck[yyx + yyn] == yyx)
+ {
+ const char *yyq = ! yycount ? ", expecting " : " or ";
+ yyp = yystpcpy (yyp, yyq);
+ yyp = yystpcpy (yyp, yytname[yyx]);
+ yycount++;
+ }
+ }
+ yyerror (yymsg);
+ YYSTACK_FREE (yymsg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exhausted");
+ }
+ else
+#endif /* defined (YYERROR_VERBOSE) */
+ yyerror ("parse error");
+ }
+ goto yyerrlab1;
+
+
+/*--------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action |
+`--------------------------------------------------*/
+yyerrlab1:
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+ YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
+ yychar, yytname[yychar1]));
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+
+/*-------------------------------------------------------------------.
+| yyerrdefault -- current state does not do anything special for the |
+| error token. |
+`-------------------------------------------------------------------*/
+yyerrdefault:
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+
+ /* If its default is to accept any token, ok. Otherwise pop it. */
+ yyn = yydefact[yystate];
+ if (yyn)
+ goto yydefault;
+#endif
+
+
+/*---------------------------------------------------------------.
+| yyerrpop -- pop the current state because it cannot handle the |
+| error token |
+`---------------------------------------------------------------*/
+yyerrpop:
+ if (yyssp == yyss)
+ YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#if YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG
+ if (yydebug)
+ {
+ short *yyssp1 = yyss - 1;
+ YYFPRINTF (stderr, "Error: state stack now");
+ while (yyssp1 != yyssp)
+ YYFPRINTF (stderr, " %d", *++yyssp1);
+ YYFPRINTF (stderr, "\n");
+ }
+#endif
+
+/*--------------.
+| yyerrhandle. |
+`--------------*/
+yyerrhandle:
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ YYDPRINTF ((stderr, "Shifting error token, "));
+
+ *++yyvsp = yylval;
+#if YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+/*---------------------------------------------.
+| yyoverflowab -- parser overflow comes here. |
+`---------------------------------------------*/
+yyoverflowlab:
+ yyerror ("parser stack overflow");
+ yyresult = 2;
+ /* Fall through. */
+
+yyreturn:
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+ return yyresult;
+}
+#line 327 "cccp.y"
+
+
+/* During parsing of a C expression, the pointer to the next character
+ is in this variable. */
+
+static char *lexptr;
+
+/* Take care of parsing a number (anything that starts with a digit).
+ Set yylval and return the token type; update lexptr.
+ LEN is the number of characters in it. */
+
+/* maybe needs to actually deal with floating point numbers */
+
+int
+parse_number (olen)
+ int olen;
+{
+ register char *p = lexptr;
+ register int c;
+ register unsigned long n = 0, nd, ULONG_MAX_over_base;
+ register int base = 10;
+ register int len = olen;
+ register int overflow = 0;
+ register int digit, largest_digit = 0;
+ int spec_long = 0;
+
+ for (c = 0; c < len; c++)
+ if (p[c] == '.') {
+ /* It's a float since it contains a point. */
+ yyerror ("floating point numbers not allowed in #if expressions");
+ return ERROR;
+ }
+
+ yylval.integer.unsignedp = 0;
+
+ if (len >= 3 && (!strncmp (p, "0x", 2) || !strncmp (p, "0X", 2))) {
+ p += 2;
+ base = 16;
+ len -= 2;
+ }
+ else if (*p == '0')
+ base = 8;
+
+ ULONG_MAX_over_base = (unsigned long) -1 / base;
+
+ for (; len > 0; len--) {
+ c = *p++;
+
+ if (c >= '0' && c <= '9')
+ digit = c - '0';
+ else if (base == 16 && c >= 'a' && c <= 'f')
+ digit = c - 'a' + 10;
+ else if (base == 16 && c >= 'A' && c <= 'F')
+ digit = c - 'A' + 10;
+ else {
+ /* `l' means long, and `u' means unsigned. */
+ while (1) {
+ if (c == 'l' || c == 'L')
+ {
+ if (spec_long)
+ yyerror ("two `l's in integer constant");
+ spec_long = 1;
+ }
+ else if (c == 'u' || c == 'U')
+ {
+ if (yylval.integer.unsignedp)
+ yyerror ("two `u's in integer constant");
+ yylval.integer.unsignedp = 1;
+ }
+ else
+ break;
+
+ if (--len == 0)
+ break;
+ c = *p++;
+ }
+ /* Don't look for any more digits after the suffixes. */
+ break;
+ }
+ if (largest_digit < digit)
+ largest_digit = digit;
+ nd = n * base + digit;
+ overflow |= ULONG_MAX_over_base < n | nd < n;
+ n = nd;
+ }
+
+ if (len != 0) {
+ yyerror ("Invalid number in #if expression");
+ return ERROR;
+ }
+
+ if (base <= largest_digit)
+ warning ("integer constant contains digits beyond the radix");
+
+ if (overflow)
+ warning ("integer constant out of range");
+
+ /* If too big to be signed, consider it unsigned. */
+ if ((long) n < 0 && ! yylval.integer.unsignedp)
+ {
+ if (base == 10)
+ warning ("integer constant is so large that it is unsigned");
+ yylval.integer.unsignedp = 1;
+ }
+
+ lexptr = p;
+ yylval.integer.value = n;
+ return INT;
+}
+
+struct token {
+ char *operator;
+ int token;
+};
+
+static struct token tokentab2[] = {
+ {"&&", AND},
+ {"||", OR},
+ {"<<", LSH},
+ {">>", RSH},
+ {"==", EQUAL},
+ {"!=", NOTEQUAL},
+ {"<=", LEQ},
+ {">=", GEQ},
+ {"++", ERROR},
+ {"--", ERROR},
+ {NULL, ERROR}
+};
+
+/* Read one token, getting characters through lexptr. */
+
+int
+yylex ()
+{
+ register int c;
+ register int namelen;
+ register unsigned char *tokstart;
+ register struct token *toktab;
+ int wide_flag;
+
+ retry:
+
+ tokstart = (unsigned char *) lexptr;
+ c = *tokstart;
+ /* See if it is a special token of length 2. */
+ if (! keyword_parsing)
+ for (toktab = tokentab2; toktab->operator != NULL; toktab++)
+ if (c == *toktab->operator && tokstart[1] == toktab->operator[1]) {
+ lexptr += 2;
+ if (toktab->token == ERROR)
+ {
+ char *buf = (char *) alloca (40);
+ sprintf (buf, "`%s' not allowed in operand of `#if'",
toktab->operator);
+ yyerror (buf);
+ }
+ return toktab->token;
+ }
+
+ switch (c) {
+ case 0:
+ return 0;
+
+ case ' ':
+ case '\t':
+ case '\r':
+ case '\n':
+ lexptr++;
+ goto retry;
+
+ case 'L':
+ /* Capital L may start a wide-string or wide-character constant. */
+ if (lexptr[1] == '\'')
+ {
+ lexptr++;
+ wide_flag = 1;
+ goto char_constant;
+ }
+ if (lexptr[1] == '"')
+ {
+ lexptr++;
+ wide_flag = 1;
+ goto string_constant;
+ }
+ break;
+
+ case '\'':
+ wide_flag = 0;
+ char_constant:
+ lexptr++;
+ if (keyword_parsing) {
+ char *start_ptr = lexptr - 1;
+ while (1) {
+ c = *lexptr++;
+ if (c == '\\')
+ c = parse_escape (&lexptr);
+ else if (c == '\'')
+ break;
+ }
+ yylval.name.address = tokstart;
+ yylval.name.length = lexptr - start_ptr;
+ return NAME;
+ }
+
+ /* This code for reading a character constant
+ handles multicharacter constants and wide characters.
+ It is mostly copied from c-lex.c. */
+ {
+ register int result = 0;
+ register num_chars = 0;
+ unsigned width = CHAR_TYPE_SIZE;
+ int max_chars;
+ char *token_buffer;
+
+ if (wide_flag)
+ {
+ width = WCHAR_TYPE_SIZE;
+#ifdef MULTIBYTE_CHARS
+ max_chars = MB_CUR_MAX;
+#else
+ max_chars = 1;
+#endif
+ }
+ else
+ max_chars = LONG_TYPE_SIZE / width;
+
+ token_buffer = (char *) alloca (max_chars + 1);
+
+ while (1)
+ {
+ c = *lexptr++;
+
+ if (c == '\'' || c == EOF)
+ break;
+
+ if (c == '\\')
+ {
+ c = parse_escape (&lexptr);
+ if (width < HOST_BITS_PER_INT
+ && (unsigned) c >= (1 << width))
+ pedwarn ("escape sequence out of range for character");
+ }
+
+ num_chars++;
+
+ /* Merge character into result; ignore excess chars. */
+ if (num_chars < max_chars + 1)
+ {
+ if (width < HOST_BITS_PER_INT)
+ result = (result << width) | (c & ((1 << width) - 1));
+ else
+ result = c;
+ token_buffer[num_chars - 1] = c;
+ }
+ }
+
+ token_buffer[num_chars] = 0;
+
+ if (c != '\'')
+ error ("malformatted character constant");
+ else if (num_chars == 0)
+ error ("empty character constant");
+ else if (num_chars > max_chars)
+ {
+ num_chars = max_chars;
+ error ("character constant too long");
+ }
+ else if (num_chars != 1 && ! traditional)
+ warning ("multi-character character constant");
+
+ /* If char type is signed, sign-extend the constant. */
+ if (! wide_flag)
+ {
+ int num_bits = num_chars * width;
+
+ if (lookup ("__CHAR_UNSIGNED__", sizeof ("__CHAR_UNSIGNED__")-1, -1)
+ || ((result >> (num_bits - 1)) & 1) == 0)
+ yylval.integer.value
+ = result & ((unsigned long) ~0 >> (HOST_BITS_PER_LONG -
num_bits));
+ else
+ yylval.integer.value
+ = result | ~((unsigned long) ~0 >> (HOST_BITS_PER_LONG -
num_bits));
+ }
+ else
+ {
+#ifdef MULTIBYTE_CHARS
+ /* Set the initial shift state and convert the next sequence. */
+ result = 0;
+ /* In all locales L'\0' is zero and mbtowc will return zero,
+ so don't use it. */
+ if (num_chars > 1
+ || (num_chars == 1 && token_buffer[0] != '\0'))
+ {
+ wchar_t wc;
+ (void) mbtowc (NULL_PTR, NULL_PTR, 0);
+ if (mbtowc (& wc, token_buffer, num_chars) == num_chars)
+ result = wc;
+ else
+ warning ("Ignoring invalid multibyte character");
+ }
+#endif
+ yylval.integer.value = result;
+ }
+ }
+
+ /* This is always a signed type. */
+ yylval.integer.unsignedp = 0;
+
+ return CHAR;
+
+ /* some of these chars are invalid in constant expressions;
+ maybe do something about them later */
+ case '/':
+ case '+':
+ case '-':
+ case '*':
+ case '%':
+ case '|':
+ case '&':
+ case '^':
+ case '~':
+ case '!':
+ case '@':
+ case '<':
+ case '>':
+ case '[':
+ case ']':
+ case '.':
+ case '?':
+ case ':':
+ case '=':
+ case '{':
+ case '}':
+ case ',':
+ case '#':
+ if (keyword_parsing)
+ break;
+ case '(':
+ case ')':
+ lexptr++;
+ return c;
+
+ case '"':
+ string_constant:
+ if (keyword_parsing) {
+ char *start_ptr = lexptr;
+ lexptr++;
+ while (1) {
+ c = *lexptr++;
+ if (c == '\\')
+ c = parse_escape (&lexptr);
+ else if (c == '"')
+ break;
+ }
+ yylval.name.address = tokstart;
+ yylval.name.length = lexptr - start_ptr;
+ return NAME;
+ }
+ yyerror ("string constants not allowed in #if expressions");
+ return ERROR;
+ }
+
+ if (c >= '0' && c <= '9' && !keyword_parsing) {
+ /* It's a number */
+ for (namelen = 0;
+ c = tokstart[namelen], is_idchar[c] || c == '.';
+ namelen++)
+ ;
+ return parse_number (namelen);
+ }
+
+ /* It is a name. See how long it is. */
+
+ if (keyword_parsing) {
+ for (namelen = 0;; namelen++) {
+ if (is_hor_space[tokstart[namelen]])
+ break;
+ if (tokstart[namelen] == '(' || tokstart[namelen] == ')')
+ break;
+ if (tokstart[namelen] == '"' || tokstart[namelen] == '\'')
+ break;
+ }
+ } else {
+ if (!is_idstart[c]) {
+ yyerror ("Invalid token in expression");
+ return ERROR;
+ }
+
+ for (namelen = 0; is_idchar[tokstart[namelen]]; namelen++)
+ ;
+ }
+
+ lexptr += namelen;
+ yylval.name.address = tokstart;
+ yylval.name.length = namelen;
+ return NAME;
+}
+
+
+/* Parse a C escape sequence. STRING_PTR points to a variable
+ containing a pointer to the string to parse. That pointer
+ is updated past the characters we use. The value of the
+ escape sequence is returned.
+
+ A negative value means the sequence \ newline was seen,
+ which is supposed to be equivalent to nothing at all.
+
+ If \ is followed by a null character, we return a negative
+ value and leave the string pointer pointing at the null character.
+
+ If \ is followed by 000, we return 0 and leave the string pointer
+ after the zeros. A value of 0 does not mean end of string. */
+
+int
+parse_escape (string_ptr)
+ char **string_ptr;
+{
+ register int c = *(*string_ptr)++;
+ switch (c)
+ {
+ case 'a':
+ return TARGET_BELL;
+ case 'b':
+ return TARGET_BS;
+ case 'e':
+ case 'E':
+ if (pedantic)
+ pedwarn ("non-ANSI-standard escape sequence, `\\%c'", c);
+ return 033;
+ case 'f':
+ return TARGET_FF;
+ case 'n':
+ return TARGET_NEWLINE;
+ case 'r':
+ return TARGET_CR;
+ case 't':
+ return TARGET_TAB;
+ case 'v':
+ return TARGET_VT;
+ case '\n':
+ return -2;
+ case 0:
+ (*string_ptr)--;
+ return 0;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ {
+ register int i = c - '0';
+ register int count = 0;
+ while (++count < 3)
+ {
+ c = *(*string_ptr)++;
+ if (c >= '0' && c <= '7')
+ i = (i << 3) + c - '0';
+ else
+ {
+ (*string_ptr)--;
+ break;
+ }
+ }
+ if ((i & ~((1 << CHAR_TYPE_SIZE) - 1)) != 0)
+ {
+ i &= (1 << CHAR_TYPE_SIZE) - 1;
+ warning ("octal character constant does not fit in a byte");
+ }
+ return i;
+ }
+ case 'x':
+ {
+ register unsigned i = 0, overflow = 0, digits_found = 0, digit;
+ for (;;)
+ {
+ c = *(*string_ptr)++;
+ if (c >= '0' && c <= '9')
+ digit = c - '0';
+ else if (c >= 'a' && c <= 'f')
+ digit = c - 'a' + 10;
+ else if (c >= 'A' && c <= 'F')
+ digit = c - 'A' + 10;
+ else
+ {
+ (*string_ptr)--;
+ break;
+ }
+ overflow |= i ^ (i << 4 >> 4);
+ i = (i << 4) + digit;
+ digits_found = 1;
+ }
+ if (!digits_found)
+ yyerror ("\\x used with no following hex digits");
+ if (overflow | (i & ~((1 << BITS_PER_UNIT) - 1)))
+ {
+ i &= (1 << BITS_PER_UNIT) - 1;
+ warning ("hex character constant does not fit in a byte");
+ }
+ return i;
+ }
+ default:
+ return c;
+ }
+}
+
+void
+yyerror (s)
+ char *s;
+{
+ error (s);
+ longjmp (parse_return_error, 1);
+}
+
+static void
+integer_overflow ()
+{
+ if (pedantic)
+ pedwarn ("integer overflow in preprocessor expression");
+}
+
+static long
+left_shift (a, b)
+ struct constant *a;
+ unsigned long b;
+{
+ if (b >= HOST_BITS_PER_LONG)
+ {
+ if (! a->unsignedp && a->value != 0)
+ integer_overflow ();
+ return 0;
+ }
+ else if (a->unsignedp)
+ return (unsigned long) a->value << b;
+ else
+ {
+ long l = a->value << b;
+ if (l >> b != a->value)
+ integer_overflow ();
+ return l;
+ }
+}
+
+static long
+right_shift (a, b)
+ struct constant *a;
+ unsigned long b;
+{
+ if (b >= HOST_BITS_PER_LONG)
+ return a->unsignedp ? 0 : a->value >> (HOST_BITS_PER_LONG - 1);
+ else if (a->unsignedp)
+ return (unsigned long) a->value >> b;
+ else
+ return a->value >> b;
+}
+
+/* This page contains the entry point to this file. */
+
+/* Parse STRING as an expression, and complain if this fails
+ to use up all of the contents of STRING. */
+/* We do not support C comments. They should be removed before
+ this function is called. */
+
+int
+parse_c_expression (string)
+ char *string;
+{
+ lexptr = string;
+
+ if (lexptr == 0 || *lexptr == 0) {
+ error ("empty #if expression");
+ return 0; /* don't include the #if group */
+ }
+
+ /* if there is some sort of scanning error, just return 0 and assume
+ the parsing routine has printed an error message somewhere.
+ there is surely a better thing to do than this. */
+ if (setjmp (parse_return_error))
+ return 0;
+
+ if (yyparse ())
+ return 0; /* actually this is never reached
+ the way things stand. */
+ if (*lexptr)
+ error ("Junk after end of expression.");
+
+ return expression_value; /* set by yyparse () */
+}
+
+#ifdef TEST_EXP_READER
+extern int yydebug;
+
+/* Main program for testing purposes. */
+int
+main ()
+{
+ int n, c;
+ char buf[1024];
+
+/*
+ yydebug = 1;
+*/
+ initialize_random_junk ();
+
+ for (;;) {
+ printf ("enter expression: ");
+ n = 0;
+ while ((buf[n] = getchar ()) != '\n' && buf[n] != EOF)
+ n++;
+ if (buf[n] == EOF)
+ break;
+ buf[n] = '\0';
+ printf ("parser returned %d\n", parse_c_expression (buf));
+ }
+
+ return 0;
+}
+
+/* table to tell if char can be part of a C identifier. */
+unsigned char is_idchar[256];
+/* table to tell if char can be first char of a c identifier. */
+unsigned char is_idstart[256];
+/* table to tell if c is horizontal space. isspace () thinks that
+ newline is space; this is not a good idea for this program. */
+char is_hor_space[256];
+
+/*
+ * initialize random junk in the hash table and maybe other places
+ */
+initialize_random_junk ()
+{
+ register int i;
+
+ /*
+ * Set up is_idchar and is_idstart tables. These should be
+ * faster than saying (is_alpha (c) || c == '_'), etc.
+ * Must do set up these things before calling any routines tthat
+ * refer to them.
+ */
+ for (i = 'a'; i <= 'z'; i++) {
+ ++is_idchar[i - 'a' + 'A'];
+ ++is_idchar[i];
+ ++is_idstart[i - 'a' + 'A'];
+ ++is_idstart[i];
+ }
+ for (i = '0'; i <= '9'; i++)
+ ++is_idchar[i];
+ ++is_idchar['_'];
+ ++is_idstart['_'];
+#if DOLLARS_IN_IDENTIFIERS
+ ++is_idchar['$'];
+ ++is_idstart['$'];
+#endif
+
+ /* horizontal space table */
+ ++is_hor_space[' '];
+ ++is_hor_space['\t'];
+}
+
+error (msg)
+{
+ printf ("error: %s\n", msg);
+}
+
+warning (msg)
+{
+ printf ("warning: %s\n", msg);
+}
+
+struct hashnode *
+lookup (name, len, hash)
+ char *name;
+ int len;
+ int hash;
+{
+ return (DEFAULT_SIGNED_CHAR) ? 0 : ((struct hashnode *) -1);
+}
+#endif
diff --git a/test/etags/y-src/cccp.y b/test/etags/y-src/cccp.y
new file mode 100644
index 0000000..1cd2111
--- /dev/null
+++ b/test/etags/y-src/cccp.y
@@ -0,0 +1,1006 @@
+/* Parse C expressions for CCCP.
+ Copyright (C) 1987, 1992 Free Software Foundation.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ In other words, you are welcome to use, share and improve this program.
+ You are forbidden to forbid anyone else to use, share and improve
+ what you give them. Help stamp out software-hoarding!
+
+ Adapted from expread.y of GDB by Paul Rubin, July 1986. */
+
+/* Parse a C expression from text in a string */
+
+%{
+#include "config.h"
+#include <setjmp.h>
+/* #define YYDEBUG 1 */
+
+#ifdef MULTIBYTE_CHARS
+#include <stdlib.h>
+#include <locale.h>
+#endif
+
+#include <stdio.h>
+
+typedef unsigned char U_CHAR;
+
+/* This is used for communicating lists of keywords with cccp.c. */
+struct arglist {
+ struct arglist *next;
+ U_CHAR *name;
+ int length;
+ int argno;
+};
+
+/* Define a generic NULL if one hasn't already been defined. */
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef GENERIC_PTR
+#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)
+#define GENERIC_PTR void *
+#else
+#define GENERIC_PTR char *
+#endif
+#endif
+
+#ifndef NULL_PTR
+#define NULL_PTR ((GENERIC_PTR)0)
+#endif
+
+int yylex ();
+void yyerror ();
+int expression_value;
+
+static jmp_buf parse_return_error;
+
+/* Nonzero means count most punctuation as part of a name. */
+static int keyword_parsing = 0;
+
+/* some external tables of character types */
+extern unsigned char is_idstart[], is_idchar[], is_hor_space[];
+
+extern char *xmalloc ();
+
+/* Flag for -pedantic. */
+extern int pedantic;
+
+/* Flag for -traditional. */
+extern int traditional;
+
+#ifndef CHAR_TYPE_SIZE
+#define CHAR_TYPE_SIZE BITS_PER_UNIT
+#endif
+
+#ifndef INT_TYPE_SIZE
+#define INT_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef LONG_TYPE_SIZE
+#define LONG_TYPE_SIZE BITS_PER_WORD
+#endif
+
+#ifndef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE INT_TYPE_SIZE
+#endif
+
+/* Yield nonzero if adding two numbers with A's and B's signs can yield a
+ number with SUM's sign, where A, B, and SUM are all C integers. */
+#define possible_sum_sign(a, b, sum) ((((a) ^ (b)) | ~ ((a) ^ (sum))) < 0)
+
+static void integer_overflow ();
+static long left_shift ();
+static long right_shift ();
+%}
+
+%union {
+ struct constant {long value; int unsignedp;} integer;
+ struct name {U_CHAR *address; int length;} name;
+ struct arglist *keywords;
+ int voidval;
+ char *sval;
+}
+
+%type <integer> exp exp1 start
+%type <keywords> keywords
+%token <integer> INT CHAR
+%token <name> NAME
+%token <integer> ERROR
+
+%right '?' ':'
+%left ','
+%left OR
+%left AND
+%left '|'
+%left '^'
+%left '&'
+%left EQUAL NOTEQUAL
+%left '<' '>' LEQ GEQ
+%left LSH RSH
+%left '+' '-'
+%left '*' '/' '%'
+%right UNARY
+
+/* %expect 40 */
+
+%%
+
+start : exp1
+ { expression_value = $1.value; }
+ ;
+
+/* Expressions, including the comma operator. */
+exp1 : exp
+ | exp1 ',' exp
+ { if (pedantic)
+ pedwarn ("comma operator in operand of `#if'");
+ $$ = $3; }
+ ;
+
+/* Expressions, not including the comma operator. */
+exp : '-' exp %prec UNARY
+ { $$.value = - $2.value;
+ if (($$.value & $2.value) < 0 && ! $2.unsignedp)
+ integer_overflow ();
+ $$.unsignedp = $2.unsignedp; }
+ | '!' exp %prec UNARY
+ { $$.value = ! $2.value;
+ $$.unsignedp = 0; }
+ | '+' exp %prec UNARY
+ { $$ = $2; }
+ | '~' exp %prec UNARY
+ { $$.value = ~ $2.value;
+ $$.unsignedp = $2.unsignedp; }
+ | '#' NAME
+ { $$.value = check_assertion ($2.address, $2.length,
+ 0, NULL_PTR);
+ $$.unsignedp = 0; }
+ | '#' NAME
+ { keyword_parsing = 1; }
+ '(' keywords ')'
+ { $$.value = check_assertion ($2.address, $2.length,
+ 1, $5);
+ keyword_parsing = 0;
+ $$.unsignedp = 0; }
+ | '(' exp1 ')'
+ { $$ = $2; }
+ ;
+
+/* Binary operators in order of decreasing precedence. */
+exp : exp '*' exp
+ { $$.unsignedp = $1.unsignedp || $3.unsignedp;
+ if ($$.unsignedp)
+ $$.value = (unsigned long) $1.value * $3.value;
+ else
+ {
+ $$.value = $1.value * $3.value;
+ if ($1.value
+ && ($$.value / $1.value != $3.value
+ || ($$.value & $1.value & $3.value) < 0))
+ integer_overflow ();
+ } }
+ | exp '/' exp
+ { if ($3.value == 0)
+ {
+ error ("division by zero in #if");
+ $3.value = 1;
+ }
+ $$.unsignedp = $1.unsignedp || $3.unsignedp;
+ if ($$.unsignedp)
+ $$.value = (unsigned long) $1.value / $3.value;
+ else
+ {
+ $$.value = $1.value / $3.value;
+ if (($$.value & $1.value & $3.value) < 0)
+ integer_overflow ();
+ } }
+ | exp '%' exp
+ { if ($3.value == 0)
+ {
+ error ("division by zero in #if");
+ $3.value = 1;
+ }
+ $$.unsignedp = $1.unsignedp || $3.unsignedp;
+ if ($$.unsignedp)
+ $$.value = (unsigned long) $1.value % $3.value;
+ else
+ $$.value = $1.value % $3.value; }
+ | exp '+' exp
+ { $$.value = $1.value + $3.value;
+ $$.unsignedp = $1.unsignedp || $3.unsignedp;
+ if (! $$.unsignedp
+ && ! possible_sum_sign ($1.value, $3.value,
+ $$.value))
+ integer_overflow (); }
+ | exp '-' exp
+ { $$.value = $1.value - $3.value;
+ $$.unsignedp = $1.unsignedp || $3.unsignedp;
+ if (! $$.unsignedp
+ && ! possible_sum_sign ($$.value, $3.value,
+ $1.value))
+ integer_overflow (); }
+ | exp LSH exp
+ { $$.unsignedp = $1.unsignedp;
+ if ($3.value < 0 && ! $3.unsignedp)
+ $$.value = right_shift (&$1, -$3.value);
+ else
+ $$.value = left_shift (&$1, $3.value); }
+ | exp RSH exp
+ { $$.unsignedp = $1.unsignedp;
+ if ($3.value < 0 && ! $3.unsignedp)
+ $$.value = left_shift (&$1, -$3.value);
+ else
+ $$.value = right_shift (&$1, $3.value); }
+ | exp EQUAL exp
+ { $$.value = ($1.value == $3.value);
+ $$.unsignedp = 0; }
+ | exp NOTEQUAL exp
+ { $$.value = ($1.value != $3.value);
+ $$.unsignedp = 0; }
+ | exp LEQ exp
+ { $$.unsignedp = 0;
+ if ($1.unsignedp || $3.unsignedp)
+ $$.value = (unsigned long) $1.value <= $3.value;
+ else
+ $$.value = $1.value <= $3.value; }
+ | exp GEQ exp
+ { $$.unsignedp = 0;
+ if ($1.unsignedp || $3.unsignedp)
+ $$.value = (unsigned long) $1.value >= $3.value;
+ else
+ $$.value = $1.value >= $3.value; }
+ | exp '<' exp
+ { $$.unsignedp = 0;
+ if ($1.unsignedp || $3.unsignedp)
+ $$.value = (unsigned long) $1.value < $3.value;
+ else
+ $$.value = $1.value < $3.value; }
+ | exp '>' exp
+ { $$.unsignedp = 0;
+ if ($1.unsignedp || $3.unsignedp)
+ $$.value = (unsigned long) $1.value > $3.value;
+ else
+ $$.value = $1.value > $3.value; }
+ | exp '&' exp
+ { $$.value = $1.value & $3.value;
+ $$.unsignedp = $1.unsignedp || $3.unsignedp; }
+ | exp '^' exp
+ { $$.value = $1.value ^ $3.value;
+ $$.unsignedp = $1.unsignedp || $3.unsignedp; }
+ | exp '|' exp
+ { $$.value = $1.value | $3.value;
+ $$.unsignedp = $1.unsignedp || $3.unsignedp; }
+ | exp AND exp
+ { $$.value = ($1.value && $3.value);
+ $$.unsignedp = 0; }
+ | exp OR exp
+ { $$.value = ($1.value || $3.value);
+ $$.unsignedp = 0; }
+ | exp '?' exp ':' exp
+ { $$.value = $1.value ? $3.value : $5.value;
+ $$.unsignedp = $3.unsignedp || $5.unsignedp; }
+ | INT
+ { $$ = yylval.integer; }
+ | CHAR
+ { $$ = yylval.integer; }
+ | NAME
+ { $$.value = 0;
+ $$.unsignedp = 0; }
+ ;
+
+keywords :
+ { $$ = 0; }
+ | '(' keywords ')' keywords
+ { struct arglist *temp;
+ $$ = (struct arglist *) xmalloc (sizeof (struct
arglist));
+ $$->next = $2;
+ $$->name = (U_CHAR *) "(";
+ $$->length = 1;
+ temp = $$;
+ while (temp != 0 && temp->next != 0)
+ temp = temp->next;
+ temp->next = (struct arglist *) xmalloc (sizeof
(struct arglist));
+ temp->next->next = $4;
+ temp->next->name = (U_CHAR *) ")";
+ temp->next->length = 1; }
+ | NAME keywords
+ { $$ = (struct arglist *) xmalloc (sizeof (struct
arglist));
+ $$->name = $1.address;
+ $$->length = $1.length;
+ $$->next = $2; }
+ ;
+%%
+
+/* During parsing of a C expression, the pointer to the next character
+ is in this variable. */
+
+static char *lexptr;
+
+/* Take care of parsing a number (anything that starts with a digit).
+ Set yylval and return the token type; update lexptr.
+ LEN is the number of characters in it. */
+
+/* maybe needs to actually deal with floating point numbers */
+
+int
+parse_number (olen)
+ int olen;
+{
+ register char *p = lexptr;
+ register int c;
+ register unsigned long n = 0, nd, ULONG_MAX_over_base;
+ register int base = 10;
+ register int len = olen;
+ register int overflow = 0;
+ register int digit, largest_digit = 0;
+ int spec_long = 0;
+
+ for (c = 0; c < len; c++)
+ if (p[c] == '.') {
+ /* It's a float since it contains a point. */
+ yyerror ("floating point numbers not allowed in #if expressions");
+ return ERROR;
+ }
+
+ yylval.integer.unsignedp = 0;
+
+ if (len >= 3 && (!strncmp (p, "0x", 2) || !strncmp (p, "0X", 2))) {
+ p += 2;
+ base = 16;
+ len -= 2;
+ }
+ else if (*p == '0')
+ base = 8;
+
+ ULONG_MAX_over_base = (unsigned long) -1 / base;
+
+ for (; len > 0; len--) {
+ c = *p++;
+
+ if (c >= '0' && c <= '9')
+ digit = c - '0';
+ else if (base == 16 && c >= 'a' && c <= 'f')
+ digit = c - 'a' + 10;
+ else if (base == 16 && c >= 'A' && c <= 'F')
+ digit = c - 'A' + 10;
+ else {
+ /* `l' means long, and `u' means unsigned. */
+ while (1) {
+ if (c == 'l' || c == 'L')
+ {
+ if (spec_long)
+ yyerror ("two `l's in integer constant");
+ spec_long = 1;
+ }
+ else if (c == 'u' || c == 'U')
+ {
+ if (yylval.integer.unsignedp)
+ yyerror ("two `u's in integer constant");
+ yylval.integer.unsignedp = 1;
+ }
+ else
+ break;
+
+ if (--len == 0)
+ break;
+ c = *p++;
+ }
+ /* Don't look for any more digits after the suffixes. */
+ break;
+ }
+ if (largest_digit < digit)
+ largest_digit = digit;
+ nd = n * base + digit;
+ overflow |= ULONG_MAX_over_base < n | nd < n;
+ n = nd;
+ }
+
+ if (len != 0) {
+ yyerror ("Invalid number in #if expression");
+ return ERROR;
+ }
+
+ if (base <= largest_digit)
+ warning ("integer constant contains digits beyond the radix");
+
+ if (overflow)
+ warning ("integer constant out of range");
+
+ /* If too big to be signed, consider it unsigned. */
+ if ((long) n < 0 && ! yylval.integer.unsignedp)
+ {
+ if (base == 10)
+ warning ("integer constant is so large that it is unsigned");
+ yylval.integer.unsignedp = 1;
+ }
+
+ lexptr = p;
+ yylval.integer.value = n;
+ return INT;
+}
+
+struct token {
+ char *operator;
+ int token;
+};
+
+static struct token tokentab2[] = {
+ {"&&", AND},
+ {"||", OR},
+ {"<<", LSH},
+ {">>", RSH},
+ {"==", EQUAL},
+ {"!=", NOTEQUAL},
+ {"<=", LEQ},
+ {">=", GEQ},
+ {"++", ERROR},
+ {"--", ERROR},
+ {NULL, ERROR}
+};
+
+/* Read one token, getting characters through lexptr. */
+
+int
+yylex ()
+{
+ register int c;
+ register int namelen;
+ register unsigned char *tokstart;
+ register struct token *toktab;
+ int wide_flag;
+
+ retry:
+
+ tokstart = (unsigned char *) lexptr;
+ c = *tokstart;
+ /* See if it is a special token of length 2. */
+ if (! keyword_parsing)
+ for (toktab = tokentab2; toktab->operator != NULL; toktab++)
+ if (c == *toktab->operator && tokstart[1] == toktab->operator[1]) {
+ lexptr += 2;
+ if (toktab->token == ERROR)
+ {
+ char *buf = (char *) alloca (40);
+ sprintf (buf, "`%s' not allowed in operand of `#if'",
toktab->operator);
+ yyerror (buf);
+ }
+ return toktab->token;
+ }
+
+ switch (c) {
+ case 0:
+ return 0;
+
+ case ' ':
+ case '\t':
+ case '\r':
+ case '\n':
+ lexptr++;
+ goto retry;
+
+ case 'L':
+ /* Capital L may start a wide-string or wide-character constant. */
+ if (lexptr[1] == '\'')
+ {
+ lexptr++;
+ wide_flag = 1;
+ goto char_constant;
+ }
+ if (lexptr[1] == '"')
+ {
+ lexptr++;
+ wide_flag = 1;
+ goto string_constant;
+ }
+ break;
+
+ case '\'':
+ wide_flag = 0;
+ char_constant:
+ lexptr++;
+ if (keyword_parsing) {
+ char *start_ptr = lexptr - 1;
+ while (1) {
+ c = *lexptr++;
+ if (c == '\\')
+ c = parse_escape (&lexptr);
+ else if (c == '\'')
+ break;
+ }
+ yylval.name.address = tokstart;
+ yylval.name.length = lexptr - start_ptr;
+ return NAME;
+ }
+
+ /* This code for reading a character constant
+ handles multicharacter constants and wide characters.
+ It is mostly copied from c-lex.c. */
+ {
+ register int result = 0;
+ register num_chars = 0;
+ unsigned width = CHAR_TYPE_SIZE;
+ int max_chars;
+ char *token_buffer;
+
+ if (wide_flag)
+ {
+ width = WCHAR_TYPE_SIZE;
+#ifdef MULTIBYTE_CHARS
+ max_chars = MB_CUR_MAX;
+#else
+ max_chars = 1;
+#endif
+ }
+ else
+ max_chars = LONG_TYPE_SIZE / width;
+
+ token_buffer = (char *) alloca (max_chars + 1);
+
+ while (1)
+ {
+ c = *lexptr++;
+
+ if (c == '\'' || c == EOF)
+ break;
+
+ if (c == '\\')
+ {
+ c = parse_escape (&lexptr);
+ if (width < HOST_BITS_PER_INT
+ && (unsigned) c >= (1 << width))
+ pedwarn ("escape sequence out of range for character");
+ }
+
+ num_chars++;
+
+ /* Merge character into result; ignore excess chars. */
+ if (num_chars < max_chars + 1)
+ {
+ if (width < HOST_BITS_PER_INT)
+ result = (result << width) | (c & ((1 << width) - 1));
+ else
+ result = c;
+ token_buffer[num_chars - 1] = c;
+ }
+ }
+
+ token_buffer[num_chars] = 0;
+
+ if (c != '\'')
+ error ("malformatted character constant");
+ else if (num_chars == 0)
+ error ("empty character constant");
+ else if (num_chars > max_chars)
+ {
+ num_chars = max_chars;
+ error ("character constant too long");
+ }
+ else if (num_chars != 1 && ! traditional)
+ warning ("multi-character character constant");
+
+ /* If char type is signed, sign-extend the constant. */
+ if (! wide_flag)
+ {
+ int num_bits = num_chars * width;
+
+ if (lookup ("__CHAR_UNSIGNED__", sizeof ("__CHAR_UNSIGNED__")-1, -1)
+ || ((result >> (num_bits - 1)) & 1) == 0)
+ yylval.integer.value
+ = result & ((unsigned long) ~0 >> (HOST_BITS_PER_LONG -
num_bits));
+ else
+ yylval.integer.value
+ = result | ~((unsigned long) ~0 >> (HOST_BITS_PER_LONG -
num_bits));
+ }
+ else
+ {
+#ifdef MULTIBYTE_CHARS
+ /* Set the initial shift state and convert the next sequence. */
+ result = 0;
+ /* In all locales L'\0' is zero and mbtowc will return zero,
+ so don't use it. */
+ if (num_chars > 1
+ || (num_chars == 1 && token_buffer[0] != '\0'))
+ {
+ wchar_t wc;
+ (void) mbtowc (NULL_PTR, NULL_PTR, 0);
+ if (mbtowc (& wc, token_buffer, num_chars) == num_chars)
+ result = wc;
+ else
+ warning ("Ignoring invalid multibyte character");
+ }
+#endif
+ yylval.integer.value = result;
+ }
+ }
+
+ /* This is always a signed type. */
+ yylval.integer.unsignedp = 0;
+
+ return CHAR;
+
+ /* some of these chars are invalid in constant expressions;
+ maybe do something about them later */
+ case '/':
+ case '+':
+ case '-':
+ case '*':
+ case '%':
+ case '|':
+ case '&':
+ case '^':
+ case '~':
+ case '!':
+ case '@':
+ case '<':
+ case '>':
+ case '[':
+ case ']':
+ case '.':
+ case '?':
+ case ':':
+ case '=':
+ case '{':
+ case '}':
+ case ',':
+ case '#':
+ if (keyword_parsing)
+ break;
+ case '(':
+ case ')':
+ lexptr++;
+ return c;
+
+ case '"':
+ string_constant:
+ if (keyword_parsing) {
+ char *start_ptr = lexptr;
+ lexptr++;
+ while (1) {
+ c = *lexptr++;
+ if (c == '\\')
+ c = parse_escape (&lexptr);
+ else if (c == '"')
+ break;
+ }
+ yylval.name.address = tokstart;
+ yylval.name.length = lexptr - start_ptr;
+ return NAME;
+ }
+ yyerror ("string constants not allowed in #if expressions");
+ return ERROR;
+ }
+
+ if (c >= '0' && c <= '9' && !keyword_parsing) {
+ /* It's a number */
+ for (namelen = 0;
+ c = tokstart[namelen], is_idchar[c] || c == '.';
+ namelen++)
+ ;
+ return parse_number (namelen);
+ }
+
+ /* It is a name. See how long it is. */
+
+ if (keyword_parsing) {
+ for (namelen = 0;; namelen++) {
+ if (is_hor_space[tokstart[namelen]])
+ break;
+ if (tokstart[namelen] == '(' || tokstart[namelen] == ')')
+ break;
+ if (tokstart[namelen] == '"' || tokstart[namelen] == '\'')
+ break;
+ }
+ } else {
+ if (!is_idstart[c]) {
+ yyerror ("Invalid token in expression");
+ return ERROR;
+ }
+
+ for (namelen = 0; is_idchar[tokstart[namelen]]; namelen++)
+ ;
+ }
+
+ lexptr += namelen;
+ yylval.name.address = tokstart;
+ yylval.name.length = namelen;
+ return NAME;
+}
+
+
+/* Parse a C escape sequence. STRING_PTR points to a variable
+ containing a pointer to the string to parse. That pointer
+ is updated past the characters we use. The value of the
+ escape sequence is returned.
+
+ A negative value means the sequence \ newline was seen,
+ which is supposed to be equivalent to nothing at all.
+
+ If \ is followed by a null character, we return a negative
+ value and leave the string pointer pointing at the null character.
+
+ If \ is followed by 000, we return 0 and leave the string pointer
+ after the zeros. A value of 0 does not mean end of string. */
+
+int
+parse_escape (string_ptr)
+ char **string_ptr;
+{
+ register int c = *(*string_ptr)++;
+ switch (c)
+ {
+ case 'a':
+ return TARGET_BELL;
+ case 'b':
+ return TARGET_BS;
+ case 'e':
+ case 'E':
+ if (pedantic)
+ pedwarn ("non-ANSI-standard escape sequence, `\\%c'", c);
+ return 033;
+ case 'f':
+ return TARGET_FF;
+ case 'n':
+ return TARGET_NEWLINE;
+ case 'r':
+ return TARGET_CR;
+ case 't':
+ return TARGET_TAB;
+ case 'v':
+ return TARGET_VT;
+ case '\n':
+ return -2;
+ case 0:
+ (*string_ptr)--;
+ return 0;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ {
+ register int i = c - '0';
+ register int count = 0;
+ while (++count < 3)
+ {
+ c = *(*string_ptr)++;
+ if (c >= '0' && c <= '7')
+ i = (i << 3) + c - '0';
+ else
+ {
+ (*string_ptr)--;
+ break;
+ }
+ }
+ if ((i & ~((1 << CHAR_TYPE_SIZE) - 1)) != 0)
+ {
+ i &= (1 << CHAR_TYPE_SIZE) - 1;
+ warning ("octal character constant does not fit in a byte");
+ }
+ return i;
+ }
+ case 'x':
+ {
+ register unsigned i = 0, overflow = 0, digits_found = 0, digit;
+ for (;;)
+ {
+ c = *(*string_ptr)++;
+ if (c >= '0' && c <= '9')
+ digit = c - '0';
+ else if (c >= 'a' && c <= 'f')
+ digit = c - 'a' + 10;
+ else if (c >= 'A' && c <= 'F')
+ digit = c - 'A' + 10;
+ else
+ {
+ (*string_ptr)--;
+ break;
+ }
+ overflow |= i ^ (i << 4 >> 4);
+ i = (i << 4) + digit;
+ digits_found = 1;
+ }
+ if (!digits_found)
+ yyerror ("\\x used with no following hex digits");
+ if (overflow | (i & ~((1 << BITS_PER_UNIT) - 1)))
+ {
+ i &= (1 << BITS_PER_UNIT) - 1;
+ warning ("hex character constant does not fit in a byte");
+ }
+ return i;
+ }
+ default:
+ return c;
+ }
+}
+
+void
+yyerror (s)
+ char *s;
+{
+ error (s);
+ longjmp (parse_return_error, 1);
+}
+
+static void
+integer_overflow ()
+{
+ if (pedantic)
+ pedwarn ("integer overflow in preprocessor expression");
+}
+
+static long
+left_shift (a, b)
+ struct constant *a;
+ unsigned long b;
+{
+ if (b >= HOST_BITS_PER_LONG)
+ {
+ if (! a->unsignedp && a->value != 0)
+ integer_overflow ();
+ return 0;
+ }
+ else if (a->unsignedp)
+ return (unsigned long) a->value << b;
+ else
+ {
+ long l = a->value << b;
+ if (l >> b != a->value)
+ integer_overflow ();
+ return l;
+ }
+}
+
+static long
+right_shift (a, b)
+ struct constant *a;
+ unsigned long b;
+{
+ if (b >= HOST_BITS_PER_LONG)
+ return a->unsignedp ? 0 : a->value >> (HOST_BITS_PER_LONG - 1);
+ else if (a->unsignedp)
+ return (unsigned long) a->value >> b;
+ else
+ return a->value >> b;
+}
+
+/* This page contains the entry point to this file. */
+
+/* Parse STRING as an expression, and complain if this fails
+ to use up all of the contents of STRING. */
+/* We do not support C comments. They should be removed before
+ this function is called. */
+
+int
+parse_c_expression (string)
+ char *string;
+{
+ lexptr = string;
+
+ if (lexptr == 0 || *lexptr == 0) {
+ error ("empty #if expression");
+ return 0; /* don't include the #if group */
+ }
+
+ /* if there is some sort of scanning error, just return 0 and assume
+ the parsing routine has printed an error message somewhere.
+ there is surely a better thing to do than this. */
+ if (setjmp (parse_return_error))
+ return 0;
+
+ if (yyparse ())
+ return 0; /* actually this is never reached
+ the way things stand. */
+ if (*lexptr)
+ error ("Junk after end of expression.");
+
+ return expression_value; /* set by yyparse () */
+}
+
+#ifdef TEST_EXP_READER
+extern int yydebug;
+
+/* Main program for testing purposes. */
+int
+main ()
+{
+ int n, c;
+ char buf[1024];
+
+/*
+ yydebug = 1;
+*/
+ initialize_random_junk ();
+
+ for (;;) {
+ printf ("enter expression: ");
+ n = 0;
+ while ((buf[n] = getchar ()) != '\n' && buf[n] != EOF)
+ n++;
+ if (buf[n] == EOF)
+ break;
+ buf[n] = '\0';
+ printf ("parser returned %d\n", parse_c_expression (buf));
+ }
+
+ return 0;
+}
+
+/* table to tell if char can be part of a C identifier. */
+unsigned char is_idchar[256];
+/* table to tell if char can be first char of a c identifier. */
+unsigned char is_idstart[256];
+/* table to tell if c is horizontal space. isspace () thinks that
+ newline is space; this is not a good idea for this program. */
+char is_hor_space[256];
+
+/*
+ * initialize random junk in the hash table and maybe other places
+ */
+initialize_random_junk ()
+{
+ register int i;
+
+ /*
+ * Set up is_idchar and is_idstart tables. These should be
+ * faster than saying (is_alpha (c) || c == '_'), etc.
+ * Must do set up these things before calling any routines tthat
+ * refer to them.
+ */
+ for (i = 'a'; i <= 'z'; i++) {
+ ++is_idchar[i - 'a' + 'A'];
+ ++is_idchar[i];
+ ++is_idstart[i - 'a' + 'A'];
+ ++is_idstart[i];
+ }
+ for (i = '0'; i <= '9'; i++)
+ ++is_idchar[i];
+ ++is_idchar['_'];
+ ++is_idstart['_'];
+#if DOLLARS_IN_IDENTIFIERS
+ ++is_idchar['$'];
+ ++is_idstart['$'];
+#endif
+
+ /* horizontal space table */
+ ++is_hor_space[' '];
+ ++is_hor_space['\t'];
+}
+
+error (msg)
+{
+ printf ("error: %s\n", msg);
+}
+
+warning (msg)
+{
+ printf ("warning: %s\n", msg);
+}
+
+struct hashnode *
+lookup (name, len, hash)
+ char *name;
+ int len;
+ int hash;
+{
+ return (DEFAULT_SIGNED_CHAR) ? 0 : ((struct hashnode *) -1);
+}
+#endif
diff --git a/test/etags/y-src/parse.c b/test/etags/y-src/parse.c
new file mode 100644
index 0000000..7b1eedc
--- /dev/null
+++ b/test/etags/y-src/parse.c
@@ -0,0 +1,2236 @@
+/* A Bison parser, made from parse.y
+ by GNU bison 1.32. */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+# define NE 257
+# define LE 258
+# define GE 259
+# define NEG 260
+# define L_CELL 261
+# define L_RANGE 262
+# define L_VAR 263
+# define L_CONST 264
+# define L_FN0 265
+# define L_FN1 266
+# define L_FN2 267
+# define L_FN3 268
+# define L_FN4 269
+# define L_FNN 270
+# define L_FN1R 271
+# define L_FN2R 272
+# define L_FN3R 273
+# define L_FN4R 274
+# define L_FNNR 275
+# define L_LE 276
+# define L_NE 277
+# define L_GE 278
+
+#line 1 "parse.y"
+
+/* Copyright (C) 1990, 1992, 1993 Free Software Foundation, Inc.
+
+This file is part of Oleo, the GNU Spreadsheet.
+
+Oleo is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Oleo is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Oleo; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+#line 41 "parse.y"
+
+#include "funcdef.h"
+
+#include <ctype.h>
+
+#define obstack_chunk_alloc ck_malloc
+#define obstack_chunk_free free
+#include "obstack.h"
+#include "sysdef.h"
+
+#include "global.h"
+#include "errors.h"
+#include "node.h"
+#include "eval.h"
+#include "ref.h"
+
+int yylex ();
+#ifdef __STDC__
+void yyerror (char *);
+#else
+void yyerror ();
+#endif
+VOIDSTAR parse_hash;
+extern VOIDSTAR hash_find();
+
+/* This table contains a list of the infix single-char functions */
+unsigned char fnin[] = {
+ SUM, DIFF, DIV, PROD, MOD, /* AND, OR, */ POW, EQUAL, IF, CONCAT, 0
+};
+
+#define YYSTYPE _y_y_s_t_y_p_e
+typedef struct node *YYSTYPE;
+YYSTYPE parse_return;
+#ifdef __STDC__
+YYSTYPE make_list (YYSTYPE, YYSTYPE);
+#else
+YYSTYPE make_list ();
+#endif
+
+char *instr;
+int parse_error = 0;
+extern struct obstack tmp_mem;
+
+#ifndef YYSTYPE
+#define YYSTYPE int
+#endif
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+
+
+#define YYFINAL 131
+#define YYFLAG -32768
+#define YYNTBASE 41
+
+/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
+#define YYTRANSLATE(x) ((unsigned)(x) <= 278 ? yytranslate[x] : 47)
+
+/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
+static const char yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 19, 2, 2, 2, 16, 5, 2,
+ 38, 39, 14, 12, 40, 13, 2, 15, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 4, 2,
+ 8, 6, 10, 3, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 17, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 7, 9, 11,
+ 18, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37
+};
+
+#if YYDEBUG
+static const short yyprhs[] =
+{
+ 0, 0, 2, 4, 6, 8, 12, 17, 24, 33,
+ 44, 49, 54, 59, 66, 73, 82, 91, 100, 109,
+ 114, 120, 124, 128, 132, 136, 140, 144, 148, 152,
+ 156, 160, 164, 168, 172, 175, 178, 182, 186, 189,
+ 191, 195, 197, 199, 201, 205, 207
+};
+static const short yyrhs[] =
+{
+ 42, 0, 1, 0, 23, 0, 46, 0, 24, 38,
+ 39, 0, 25, 38, 42, 39, 0, 26, 38, 42,
+ 40, 42, 39, 0, 27, 38, 42, 40, 42, 40,
+ 42, 39, 0, 28, 38, 42, 40, 42, 40, 42,
+ 40, 42, 39, 0, 29, 38, 43, 39, 0, 30,
+ 38, 21, 39, 0, 30, 38, 22, 39, 0, 31,
+ 38, 21, 40, 42, 39, 0, 31, 38, 22, 40,
+ 42, 39, 0, 31, 38, 21, 40, 42, 40, 42,
+ 39, 0, 31, 38, 22, 40, 42, 40, 42, 39,
+ 0, 32, 38, 21, 40, 42, 40, 42, 39, 0,
+ 32, 38, 22, 40, 42, 40, 42, 39, 0, 34,
+ 38, 45, 39, 0, 42, 3, 42, 4, 42, 0,
+ 42, 5, 42, 0, 42, 8, 42, 0, 42, 9,
+ 42, 0, 42, 6, 42, 0, 42, 7, 42, 0,
+ 42, 10, 42, 0, 42, 11, 42, 0, 42, 12,
+ 42, 0, 42, 13, 42, 0, 42, 14, 42, 0,
+ 42, 15, 42, 0, 42, 16, 42, 0, 42, 17,
+ 42, 0, 13, 42, 0, 19, 42, 0, 38, 42,
+ 39, 0, 38, 42, 1, 0, 38, 1, 0, 42,
+ 0, 43, 40, 42, 0, 21, 0, 42, 0, 44,
+ 0, 45, 40, 44, 0, 20, 0, 22, 0
+};
+
+#endif
+
+#if YYDEBUG
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const short yyrline[] =
+{
+ 0, 86, 88, 94, 95, 96, 98, 102, 106, 110,
+ 114, 118, 121, 125, 129, 135, 142, 150, 154, 159,
+ 163, 174, 178, 182, 186, 190, 194, 198, 202, 206,
+ 210, 214, 218, 222, 226, 241, 245, 247, 255, 262,
+ 264, 268, 269, 272, 274, 278, 280
+};
+#endif
+
+
+#if (YYDEBUG) || defined YYERROR_VERBOSE
+
+/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
+static const char *const yytname[] =
+{
+ "$", "error", "$undefined.", "'?'", "':'", "'&'", "'='", "NE", "'<'",
+ "LE", "'>'", "GE", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "NEG",
+ "'!'", "L_CELL", "L_RANGE", "L_VAR", "L_CONST", "L_FN0", "L_FN1",
+ "L_FN2", "L_FN3", "L_FN4", "L_FNN", "L_FN1R", "L_FN2R", "L_FN3R",
+ "L_FN4R", "L_FNNR", "L_LE", "L_NE", "L_GE", "'('", "')'", "','", "line",
+ "exp", "exp_list", "range_exp", "range_exp_list", "cell", NULL
+};
+#endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const short yyr1[] =
+{
+ 0, 41, 41, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 43,
+ 43, 44, 44, 45, 45, 46, 46
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const short yyr2[] =
+{
+ 0, 1, 1, 1, 1, 3, 4, 6, 8, 10,
+ 4, 4, 4, 6, 6, 8, 8, 8, 8, 4,
+ 5, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 2, 2, 3, 3, 2, 1,
+ 3, 1, 1, 1, 3, 1, 1
+};
+
+/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
+ doesn't specify something else to do. Zero means the default is an
+ error. */
+static const short yydefact[] =
+{
+ 0, 2, 0, 0, 45, 46, 3, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 4,
+ 34, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 38, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 0, 39, 0, 0, 0, 0, 0, 0,
+ 0, 41, 42, 43, 0, 37, 36, 0, 21, 24,
+ 25, 22, 23, 26, 27, 28, 29, 30, 31, 32,
+ 33, 6, 0, 0, 0, 10, 0, 11, 12, 0,
+ 0, 0, 0, 19, 0, 0, 0, 0, 0, 40,
+ 0, 0, 0, 0, 44, 20, 7, 0, 0, 13,
+ 0, 14, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 8, 0, 15, 16, 17, 18, 0, 9, 0,
+ 0, 0
+};
+
+static const short yydefgoto[] =
+{
+ 129, 62, 54, 63, 64, 19
+};
+
+static const short yypact[] =
+{
+ 104,-32768, 486, 486,-32768,-32768,-32768, -37, -22, -16,
+ 10, 12, 14, 29, 43, 47, 50, 124, 537,-32768,
+ -32768,-32768, 59, 486, 486, 486, 486, 486, 7, 9,
+ 11, 464,-32768, 48, 486, 486, 486, 486, 486, 486,
+ 486, 486, 486, 486, 486, 486, 486, 486,-32768, 332,
+ 173, 209, 224, 537, 54, 60, 61, 64, 66, 69,
+ 71,-32768, 537,-32768, 57,-32768,-32768, 522, -2, 193,
+ 193, 547, 547, 547, 547, 4, 4, 84, 84, 84,
+ 84,-32768, 486, 486, 486,-32768, 486,-32768,-32768, 486,
+ 486, 486, 486,-32768, 464, 486, 353, 245, 260, 537,
+ 63, 158, 281, 296,-32768, 537,-32768, 486, 486,-32768,
+ 486,-32768, 486, 486, 486, 369, 317, 388, 404, 423,
+ 439,-32768, 486,-32768,-32768,-32768,-32768, 458,-32768, 115,
+ 116,-32768
+};
+
+static const short yypgoto[] =
+{
+ -32768, 0,-32768, 24,-32768,-32768
+};
+
+
+#define YYLAST 564
+
+
+static const short yytable[] =
+{
+ 18, 22, 20, 21, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 23, 33, 44, 45,
+ 46, 47, 24, 49, 50, 51, 52, 53, 55, 56,
+ 57, 58, 59, 60, 67, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 25, 65,
+ 26, 34, 27, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 34, 28, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 29, 96, 97, 98, 30, 99, 66, 31, 100,
+ 101, 102, 103, 85, 86, 105, 93, 94, 48, 87,
+ 88, 47, 109, 110, 89, 1, 90, 115, 116, 91,
+ 117, 92, 118, 119, 120, 130, 131, 2, 104, 0,
+ 0, 0, 127, 3, 4, 32, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 2, 16, 0,
+ 0, 0, 17, 3, 4, 0, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 0, 16, 0,
+ 0, 34, 17, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 34, 0, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 0, 0, 0, 0, 0, 0, 111, 112,-32768,
+ -32768, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 0, 34, 82, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 34, 0, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 0, 0, 0, 0, 0, 0, 34, 83,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 34, 84, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 0, 0,
+ 0, 0, 0, 0, 34, 107, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 34,
+ 108, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
+ 34, 113, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 34, 114, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 0, 0, 0, 0, 0, 0, 34, 122, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 81, 34, 0, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
+ 0, 34, 106, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 0, 34, 121, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 0, 0, 0, 0, 34, 123, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 0, 34, 124, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
+ 0, 34, 125, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 0, 2, 126, 0,
+ 0, 0, 0, 3, 4, 61, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 128, 16, 2,
+ 0, 0, 17, 0, 0, 3, 4, 0, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 0,
+ 16, 0, 0, 0, 17, 34, 95, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 34, 0, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47,-32768,-32768,-32768,-32768, 42,
+ 43, 44, 45, 46, 47
+};
+
+static const short yycheck[] =
+{
+ 0, 38, 2, 3, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 38, 17, 14, 15,
+ 16, 17, 38, 23, 24, 25, 26, 27, 21, 22,
+ 21, 22, 21, 22, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 38, 1,
+ 38, 3, 38, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 3, 38, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 38, 82, 83, 84, 38, 86, 39, 38, 89,
+ 90, 91, 92, 39, 40, 95, 39, 40, 39, 39,
+ 39, 17, 39, 40, 40, 1, 40, 107, 108, 40,
+ 110, 40, 112, 113, 114, 0, 0, 13, 94, -1,
+ -1, -1, 122, 19, 20, 1, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 13, 34, -1,
+ -1, -1, 38, 19, 20, -1, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, -1, 34, -1,
+ -1, 3, 38, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 3, -1, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, -1, -1, -1, -1, -1, -1, 39, 40, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, -1, 3, 40, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 3, -1, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, -1, -1, -1, -1, -1, -1, 3, 40,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 3, 40, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, -1, -1,
+ -1, -1, -1, -1, 3, 40, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 3,
+ 40, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, -1, -1, -1, -1, -1, -1,
+ 3, 40, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 3, 40, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ -1, -1, -1, -1, -1, -1, 3, 40, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 39, 3, -1, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, -1, -1, -1,
+ -1, 3, 39, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, -1, 3, 39, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, -1, -1, -1, -1, 3, 39, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, -1, 3, 39, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, -1, -1, -1,
+ -1, 3, 39, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, -1, 13, 39, -1,
+ -1, -1, -1, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 39, 34, 13,
+ -1, -1, 38, -1, -1, 19, 20, -1, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, -1,
+ 34, -1, -1, -1, 38, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 3, -1, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17
+};
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/usr/share/bison/bison.simple"
+
+/* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+/* This is the parser code that is written into each bison parser when
+ the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+#ifdef __cplusplus
+# define YYSTD(x) std::x
+#else
+# define YYSTD(x) x
+#endif
+
+#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# if YYSTACK_USE_ALLOCA
+# define YYSTACK_ALLOC alloca
+# define YYSIZE_T YYSTD (size_t)
+# else
+# ifndef YYSTACK_USE_ALLOCA
+# if defined (alloca) || defined (_ALLOCA_H)
+# define YYSTACK_ALLOC alloca
+# define YYSIZE_T YYSTD (size_t)
+# else
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+# ifdef __cplusplus
+# include <cstdlib> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T std::size_t
+# else
+# ifdef __STDC__
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# endif
+# endif
+# define YYSTACK_ALLOC YYSTD (malloc)
+# define YYSTACK_FREE YYSTD (free)
+# endif
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ short yyss;
+ YYSTYPE yyvs;
+# if YYLSP_NEEDED
+ YYLTYPE yyls;
+# endif
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# if YYLSP_NEEDED
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
+ + 2 * YYSTACK_GAP_MAX)
+# else
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (short) + sizeof (YYSTYPE))
\
+ + YYSTACK_GAP_MAX)
+# endif
+
+/* Relocate the TYPE STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Type, Stack) \
+ do \
+ {
\
+ YYSIZE_T yynewbytes; \
+ yymemcpy ((char *) yyptr, (char *) (Stack), \
+ yysize * (YYSIZE_T) sizeof (Type)); \
+ Stack = &yyptr->Stack; \
+ yynewbytes = yystacksize * sizeof (Type) + YYSTACK_GAP_MAX; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ }
\
+ while (0)
+
+#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
+
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# ifdef __cplusplus
+# include <cstddef> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T std::size_t
+# else
+# ifdef __STDC__
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# endif
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror ("syntax error: cannot back up"); \
+ YYERROR; \
+ } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+ are run).
+
+ When YYLLOC_DEFAULT is run, CURRENT is set the location of the
+ first token. By default, to implement support for ranges, extend
+ its range to the last symbol. */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ Current.last_line = Rhs[N].last_line; \
+ Current.last_column = Rhs[N].last_column;
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#if YYPURE
+# if YYLSP_NEEDED
+# ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
+# else
+# define YYLEX yylex (&yylval, &yylloc)
+# endif
+# else /* !YYLSP_NEEDED */
+# ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, YYLEX_PARAM)
+# else
+# define YYLEX yylex (&yylval)
+# endif
+# endif /* !YYLSP_NEEDED */
+#else /* !YYPURE */
+# define YYLEX yylex ()
+#endif /* !YYPURE */
+
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# ifdef __cplusplus
+# include <cstdio> /* INFRINGES ON USER NAME SPACE */
+# else
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# endif
+# define YYFPRINTF YYSTD (fprintf)
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+/* Nonzero means print parse trace. [The following comment makes no
+ sense to me. Could someone clarify it? --akim] Since this is
+ uninitialized, it does not stop multiple parsers from coexisting.
+ */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+#endif /* !YYDEBUG */
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#if YYMAXDEPTH == 0
+# undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+#if ! defined (yyoverflow) && ! defined (yymemcpy)
+# if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+# define yymemcpy __builtin_memcpy
+# else /* not GNU C or C++ */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+# if defined (__STDC__) || defined (__cplusplus)
+yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T yycount)
+# else
+yymemcpy (yyto, yyfrom, yycount)
+ char *yyto;
+ const char *yyfrom;
+ YYSIZE_T yycount;
+# endif
+{
+ register const char *yyf = yyfrom;
+ register char *yyt = yyto;
+ register YYSIZE_T yyi = yycount;
+
+ while (yyi-- != 0)
+ *yyt++ = *yyf++;
+}
+# endif
+#endif
+
+#ifdef YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined (__GLIBC__) && defined (_STRING_H)
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+static YYSIZE_T
+# if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+# else
+yystrlen (yystr)
+ const char *yystr;
+# endif
+{
+ register const char *yys = yystr;
+
+ while (*yys++ != '\0')
+ continue;
+
+ return yys - yystr - 1;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+static char *
+# if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+# else
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+# endif
+{
+ register char *yyd = yydest;
+ register const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+#endif
+
+#line 341 "/usr/share/bison/bison.simple"
+
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+ into yyparse. The argument should have type void *.
+ It should actually point to an object.
+ Grammar actions can access the variable by casting it
+ to the proper pointer type. */
+
+#ifdef YYPARSE_PARAM
+# ifdef __cplusplus
+# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+# define YYPARSE_PARAM_DECL
+# else /* !__cplusplus */
+# define YYPARSE_PARAM_ARG YYPARSE_PARAM
+# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+# endif /* !__cplusplus */
+#else /* !YYPARSE_PARAM */
+# define YYPARSE_PARAM_ARG
+# define YYPARSE_PARAM_DECL
+#endif /* !YYPARSE_PARAM */
+
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+# ifdef YYPARSE_PARAM
+int yyparse (void *);
+# else
+int yyparse (void);
+# endif
+#endif
+
+/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
+ variables are global, or local to YYPARSE. */
+
+#define YY_DECL_NON_LSP_VARIABLES \
+/* The lookahead symbol. */ \
+int yychar; \
+ \
+/* The semantic value of the lookahead symbol. */ \
+YYSTYPE yylval; \
+ \
+/* Number of parse errors so far. */ \
+int yynerrs;
+
+#if YYLSP_NEEDED
+# define YY_DECL_VARIABLES \
+YY_DECL_NON_LSP_VARIABLES \
+ \
+/* Location data for the lookahead symbol. */ \
+YYLTYPE yylloc;
+#else
+# define YY_DECL_VARIABLES \
+YY_DECL_NON_LSP_VARIABLES
+#endif
+
+
+/* If nonreentrant, generate the variables here. */
+
+#if !YYPURE
+YY_DECL_VARIABLES
+#endif /* !YYPURE */
+
+int
+yyparse (YYPARSE_PARAM_ARG)
+ YYPARSE_PARAM_DECL
+{
+ /* If reentrant, generate the variables here. */
+#if YYPURE
+ YY_DECL_VARIABLES
+#endif /* !YYPURE */
+
+ register int yystate;
+ register int yyn;
+ int yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+ /* Lookahead token as an internal (translated) token number. */
+ int yychar1 = 0;
+
+ /* Three stacks and their tools:
+ `yyss': related to states,
+ `yyvs': related to semantic values,
+ `yyls': related to locations.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ short yyssa[YYINITDEPTH];
+ short *yyss = yyssa;
+ register short *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ register YYSTYPE *yyvsp;
+
+#if YYLSP_NEEDED
+ /* The location stack. */
+ YYLTYPE yylsa[YYINITDEPTH];
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+#endif
+
+#if YYLSP_NEEDED
+# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+# define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+#if YYLSP_NEEDED
+ YYLTYPE yyloc;
+#endif
+
+ /* When reducing, the number of symbols on the RHS of the reduced
+ rule. */
+ int yylen;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss;
+ yyvsp = yyvs;
+#if YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks.
+ */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. */
+# if YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+ /* This used to be a conditional around just the two extra args,
+ but that might be undefined if yyoverflow is a macro. */
+ yyoverflow ("parser stack overflow",
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yyls1, yysize * sizeof (*yylsp),
+ &yystacksize);
+ yyls = yyls1;
+# else
+ yyoverflow ("parser stack overflow",
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+# endif
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ goto yyoverflowlab;
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ short *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyoverflowlab;
+ YYSTACK_RELOCATE (short, yyss);
+ YYSTACK_RELOCATE (YYSTYPE, yyvs);
+# if YYLSP_NEEDED
+ YYSTACK_RELOCATE (YYLTYPE, yyls);
+# endif
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+#if YYLSP_NEEDED
+ yylsp = yyls + yysize - 1;
+#endif
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ goto yybackup;
+
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE (yychar);
+
+#if YYDEBUG
+ /* We have to keep this `#if YYDEBUG', since we use variables
+ which are defined only if `YYDEBUG' is set. */
+ if (yydebug)
+ {
+ YYFPRINTF (stderr, "Next token is %d (%s",
+ yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise
+ meaning of a token, for further debugging info. */
+# ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+# endif
+ YYFPRINTF (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+ YYDPRINTF ((stderr, "Shifting token %d (%s), ",
+ yychar, yytname[yychar1]));
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#if YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to the semantic value of
+ the lookahead token. This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+#if YYLSP_NEEDED
+ /* Similarly for the default location. Let the user run additional
+ commands if for instance locations are ranges. */
+ yyloc = yylsp[1-yylen];
+ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
+#endif
+
+#if YYDEBUG
+ /* We have to keep this `#if YYDEBUG', since we use variables which
+ are defined only if `YYDEBUG' is set. */
+ if (yydebug)
+ {
+ int yyi;
+
+ YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
+ YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+ YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+ switch (yyn) {
+
+case 1:
+#line 87 "parse.y"
+{ parse_return=yyvsp[0]; }
+ break;
+case 2:
+#line 88 "parse.y"
+{
+ if(!parse_error)
+ parse_error=PARSE_ERR;
+ parse_return=0; }
+ break;
+case 5:
+#line 96 "parse.y"
+{
+ yyval=yyvsp[-2]; }
+ break;
+case 6:
+#line 98 "parse.y"
+{
+ (yyvsp[-3])->n_x.v_subs[0]=yyvsp[-1];
+ (yyvsp[-3])->n_x.v_subs[1]=(struct node *)0;
+ yyval=yyvsp[-3]; }
+ break;
+case 7:
+#line 102 "parse.y"
+{
+ (yyvsp[-5])->n_x.v_subs[0]=yyvsp[-3];
+ (yyvsp[-5])->n_x.v_subs[1]=yyvsp[-1];
+ yyval=yyvsp[-5]; }
+ break;
+case 8:
+#line 106 "parse.y"
+{
+ (yyvsp[-7])->n_x.v_subs[0]=make_list(yyvsp[-5],yyvsp[-3]);
+ (yyvsp[-7])->n_x.v_subs[1]=yyvsp[-1];
+ yyval=yyvsp[-7];}
+ break;
+case 9:
+#line 110 "parse.y"
+{
+ (yyvsp[-9])->n_x.v_subs[0]=make_list(yyvsp[-7],yyvsp[-5]);
+ (yyvsp[-9])->n_x.v_subs[1]=make_list(yyvsp[-3],yyvsp[-1]);
+ yyval=yyvsp[-9];}
+ break;
+case 10:
+#line 114 "parse.y"
+{
+ (yyvsp[-3])->n_x.v_subs[0]=(struct node *)0;
+ (yyvsp[-3])->n_x.v_subs[1]=yyvsp[-1];
+ yyval=yyvsp[-3]; }
+ break;
+case 11:
+#line 118 "parse.y"
+{
+ yyvsp[-3]->n_x.v_subs[0]=yyvsp[-1];
+ yyval=yyvsp[-3]; }
+ break;
+case 12:
+#line 121 "parse.y"
+{
+ yyvsp[-3]->n_x.v_subs[0]=yyvsp[-1];
+ yyval=yyvsp[-3]; }
+ break;
+case 13:
+#line 125 "parse.y"
+{
+ yyvsp[-5]->n_x.v_subs[0]=yyvsp[-3];
+ yyvsp[-5]->n_x.v_subs[1]=yyvsp[-1];
+ yyval=yyvsp[-5]; }
+ break;
+case 14:
+#line 129 "parse.y"
+{
+ yyvsp[-5]->n_x.v_subs[0]=yyvsp[-3];
+ yyvsp[-5]->n_x.v_subs[1]=yyvsp[-1];
+ yyval=yyvsp[-5]; }
+ break;
+case 15:
+#line 135 "parse.y"
+{
+ if(yyvsp[-7]->comp_value!=F_INDEX)
+ parse_error=PARSE_ERR;
+ yyvsp[-7]->comp_value=F_INDEX2;
+ yyvsp[-7]->n_x.v_subs[0]=make_list(yyvsp[-5],yyvsp[-3]);
+ yyvsp[-7]->n_x.v_subs[1]=yyvsp[-1];
+ yyval=yyvsp[-7]; }
+ break;
+case 16:
+#line 142 "parse.y"
+{
+ if(yyvsp[-7]->comp_value!=F_INDEX)
+ parse_error=PARSE_ERR;
+ yyvsp[-7]->comp_value=F_INDEX2;
+ yyvsp[-7]->n_x.v_subs[0]=make_list(yyvsp[-5],yyvsp[-3]);
+ yyvsp[-7]->n_x.v_subs[1]=yyvsp[-1];
+ yyval=yyvsp[-7]; }
+ break;
+case 17:
+#line 150 "parse.y"
+{
+ (yyvsp[-7])->n_x.v_subs[0]=make_list(yyvsp[-5],yyvsp[-3]);
+ (yyvsp[-7])->n_x.v_subs[1]=yyvsp[-1];
+ yyval=yyvsp[-7];}
+ break;
+case 18:
+#line 154 "parse.y"
+{
+ (yyvsp[-7])->n_x.v_subs[0]=make_list(yyvsp[-5],yyvsp[-3]);
+ (yyvsp[-7])->n_x.v_subs[1]=yyvsp[-1];
+ yyval=yyvsp[-7];}
+ break;
+case 19:
+#line 159 "parse.y"
+{
+ (yyvsp[-3])->n_x.v_subs[0]=(struct node *)0;
+ (yyvsp[-3])->n_x.v_subs[1]=yyvsp[-1];
+ yyval=yyvsp[-3]; }
+ break;
+case 20:
+#line 163 "parse.y"
+{
+ yyvsp[-3]->comp_value=IF;
+ yyvsp[-3]->n_x.v_subs[0]=yyvsp[-1];
+ yyvsp[-3]->n_x.v_subs[1]=yyvsp[0];
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-4];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[-2];
+ yyval=yyvsp[-3]; }
+ break;
+case 21:
+#line 174 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 22:
+#line 178 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 23:
+#line 182 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 24:
+#line 186 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 25:
+#line 190 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 26:
+#line 194 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 27:
+#line 198 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 28:
+#line 202 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 29:
+#line 206 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 30:
+#line 210 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 31:
+#line 214 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 32:
+#line 218 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 33:
+#line 222 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[-2];
+ yyvsp[-1]->n_x.v_subs[1]=yyvsp[0];
+ yyval = yyvsp[-1]; }
+ break;
+case 34:
+#line 226 "parse.y"
+{
+ if(yyvsp[0]->comp_value==CONST_FLT) {
+ yyvsp[0]->n_x.v_float= -(yyvsp[0]->n_x.v_float);
+ /* free($1); */
+ yyval=yyvsp[0];
+ } else if(yyvsp[0]->comp_value==CONST_INT) {
+ yyvsp[0]->n_x.v_int= -(yyvsp[0]->n_x.v_int);
+ /* free($1); */
+ yyval=yyvsp[0];
+ } else {
+ yyvsp[-1]->comp_value = NEGATE;
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[0];
+ yyvsp[-1]->n_x.v_subs[1]=(struct node *)0;
+ yyval = yyvsp[-1];
+ } }
+ break;
+case 35:
+#line 241 "parse.y"
+{
+ yyvsp[-1]->n_x.v_subs[0]=yyvsp[0];
+ yyvsp[-1]->n_x.v_subs[1]=(struct node *)0;
+ yyval = yyvsp[-1]; }
+ break;
+case 36:
+#line 246 "parse.y"
+{ yyval = yyvsp[-1]; }
+ break;
+case 37:
+#line 247 "parse.y"
+{
+ if(!parse_error)
+ parse_error=NO_CLOSE;
+ }
+ break;
+case 38:
+#line 255 "parse.y"
+{
+ if(!parse_error)
+ parse_error=NO_CLOSE;
+ }
+ break;
+case 39:
+#line 263 "parse.y"
+{ yyval = make_list(yyvsp[0], 0); }
+ break;
+case 40:
+#line 265 "parse.y"
+{ yyval = make_list(yyvsp[0], yyvsp[-2]); }
+ break;
+case 43:
+#line 273 "parse.y"
+{ yyval=make_list(yyvsp[0], 0); }
+ break;
+case 44:
+#line 275 "parse.y"
+{ yyval=make_list(yyvsp[0],yyvsp[-2]); }
+ break;
+case 45:
+#line 279 "parse.y"
+{ yyval=yyvsp[0]; }
+ break;
+}
+
+#line 727 "/usr/share/bison/bison.simple"
+
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#if YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG
+ if (yydebug)
+ {
+ short *yyssp1 = yyss - 1;
+ YYFPRINTF (stderr, "state stack now");
+ while (yyssp1 != yyssp)
+ YYFPRINTF (stderr, " %d", *++yyssp1);
+ YYFPRINTF (stderr, "\n");
+ }
+#endif
+
+ *++yyvsp = yyval;
+#if YYLSP_NEEDED
+ *++yylsp = yyloc;
+#endif
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ YYSIZE_T yysize = 0;
+ char *yymsg;
+ int yyx, yycount;
+
+ yycount = 0;
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ for (yyx = yyn < 0 ? -yyn : 0;
+ yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
+ if (yycheck[yyx + yyn] == yyx)
+ yysize += yystrlen (yytname[yyx]) + 15, yycount++;
+ yysize += yystrlen ("parse error, unexpected ") + 1;
+ yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
+ yymsg = (char *) YYSTACK_ALLOC (yysize);
+ if (yymsg != 0)
+ {
+ char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
+ yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
+
+ if (yycount < 5)
+ {
+ yycount = 0;
+ for (yyx = yyn < 0 ? -yyn : 0;
+ yyx < (int) (sizeof (yytname) / sizeof (char *));
+ yyx++)
+ if (yycheck[yyx + yyn] == yyx)
+ {
+ const char *yyq = ! yycount ? ", expecting " : " or ";
+ yyp = yystpcpy (yyp, yyq);
+ yyp = yystpcpy (yyp, yytname[yyx]);
+ yycount++;
+ }
+ }
+ yyerror (yymsg);
+ YYSTACK_FREE (yymsg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exhausted");
+ }
+ else
+#endif /* defined (YYERROR_VERBOSE) */
+ yyerror ("parse error");
+ }
+ goto yyerrlab1;
+
+
+/*--------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action |
+`--------------------------------------------------*/
+yyerrlab1:
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+ YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
+ yychar, yytname[yychar1]));
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+
+/*-------------------------------------------------------------------.
+| yyerrdefault -- current state does not do anything special for the |
+| error token. |
+`-------------------------------------------------------------------*/
+yyerrdefault:
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+
+ /* If its default is to accept any token, ok. Otherwise pop it. */
+ yyn = yydefact[yystate];
+ if (yyn)
+ goto yydefault;
+#endif
+
+
+/*---------------------------------------------------------------.
+| yyerrpop -- pop the current state because it cannot handle the |
+| error token |
+`---------------------------------------------------------------*/
+yyerrpop:
+ if (yyssp == yyss)
+ YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#if YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG
+ if (yydebug)
+ {
+ short *yyssp1 = yyss - 1;
+ YYFPRINTF (stderr, "Error: state stack now");
+ while (yyssp1 != yyssp)
+ YYFPRINTF (stderr, " %d", *++yyssp1);
+ YYFPRINTF (stderr, "\n");
+ }
+#endif
+
+/*--------------.
+| yyerrhandle. |
+`--------------*/
+yyerrhandle:
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ YYDPRINTF ((stderr, "Shifting error token, "));
+
+ *++yyvsp = yylval;
+#if YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+/*---------------------------------------------.
+| yyoverflowab -- parser overflow comes here. |
+`---------------------------------------------*/
+yyoverflowlab:
+ yyerror ("parser stack overflow");
+ yyresult = 2;
+ /* Fall through. */
+
+yyreturn:
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+ return yyresult;
+}
+#line 282 "parse.y"
+
+
+void
+yyerror FUN1(char *, s)
+{
+ if(!parse_error)
+ parse_error=PARSE_ERR;
+}
+
+YYSTYPE
+make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)
+{
+ YYSTYPE ret;
+
+ ret=(YYSTYPE)obstack_alloc(&tmp_mem,sizeof(*ret));
+ ret->comp_value = 0;
+ ret->n_x.v_subs[0]=car;
+ ret->n_x.v_subs[1]=cdr;
+ return ret;
+}
+
+#define ERROR -1
+
+extern struct node *yylval;
+
+#ifdef __STDC__
+unsigned char parse_cell_or_range (char **,struct rng *);
+#else
+unsigned char parse_cell_or_range ();
+#endif
+
+int
+yylex FUN0()
+{
+ int ch;
+ struct node *new;
+ int isflt;
+ char *begin;
+ char *tmp_str;
+ unsigned char byte_value;
+ int n;
+
+ /* unsigned char *ptr; */
+ int nn;
+ struct function *fp;
+ int tmp_ch;
+
+#ifdef TEST
+ if(!instr)
+ return ERROR;
+#endif
+ while(isspace(*instr))
+ instr++;
+ ch = *instr++;
+ if(ch=='(' || ch==',' || ch==')')
+ return ch;
+
+ new=(struct node *)obstack_alloc(&tmp_mem,sizeof(struct node));
+ new->add_byte=0;
+ new->sub_value=0;
+ switch(ch) {
+ case 0:
+ return 0;
+
+ case '0': case '1': case '2': case '3': case '4': case '5': case '6':
+ case '7': case '8': case '9': case '.':
+ isflt = (ch=='.');
+
+ begin=instr-1;
+ tmp_str=instr;
+
+ while(isdigit(*tmp_str) || (!isflt && *tmp_str=='.' && ++isflt))
+ tmp_str++;
+ if(*tmp_str=='e' || *tmp_str=='E') {
+ isflt=1;
+ tmp_str++;
+ if(*tmp_str=='-' || *tmp_str=='+')
+ tmp_str++;
+ while(isdigit(*tmp_str))
+ tmp_str++;
+ }
+ if(isflt) {
+ new->n_x.v_float=astof((char **)(&begin));
+ byte_value=CONST_FLT;
+ } else {
+ new->n_x.v_int=astol((char **)(&begin));
+ if(begin!=tmp_str) {
+ begin=instr-1;
+ new->n_x.v_float=astof((char **)(&begin));
+ byte_value=CONST_FLT;
+ } else
+ byte_value=CONST_INT;
+ }
+ ch=L_CONST;
+ instr=begin;
+ break;
+
+ case '"':
+ begin=instr;
+ while(*instr && *instr!='"') {
+ if(*instr=='\\' && instr[1])
+ instr++;
+ instr++;
+ }
+ if(!*instr) {
+ parse_error=NO_QUOTE;
+ return ERROR;
+ }
+ tmp_str=new->n_x.v_string=(char *)ck_malloc(1+instr-begin);
+ while(begin!=instr) {
+ unsigned char n;
+
+ if(*begin=='\\') {
+ begin++;
+ if(begin[0]>='0' && begin[0]<='7') {
+ if(begin[1]>='0' && begin[1]<='7') {
+ if(begin[2]>='0' &&
begin[2]<='7') {
+ n=(begin[2]-'0') + (010
* (begin[1]-'0')) + ( 0100 * (begin[0]-'0'));
+ begin+=3;
+ } else {
+ n=(begin[1]-'0') + (010
* (begin[0]-'0'));
+ begin+=2;
+ }
+ } else {
+ n=begin[0]-'0';
+ begin++;
+ }
+ } else
+ n= *begin++;
+ *tmp_str++= n;
+ } else
+ *tmp_str++= *begin++;
+ }
+ *tmp_str='\0';
+ instr++;
+ byte_value=CONST_STR;
+ ch=L_CONST;
+ break;
+
+ case '+': case '-':
+
+ case '*': case '/': case '%': case '&':
+ /* case '|': */ case '^': case '=':
+
+ case '?':
+ {
+ unsigned char *ptr;
+
+ for(ptr= fnin;*ptr;ptr++)
+ if(the_funs[*ptr].fn_str[0]==ch)
+ break;
+#ifdef TEST
+ if(!*ptr)
+ panic("Can't find fnin[] entry for '%c'",ch);
+#endif
+ byte_value= *ptr;
+ }
+ break;
+
+ case ':':
+ byte_value=IF;
+ break;
+
+ case '!':
+ case '<':
+ case '>':
+ if(*instr!='=') {
+ byte_value = (ch=='<') ? LESS : (ch=='>') ? GREATER :
NOT;
+ break;
+ }
+ instr++;
+ byte_value = (ch=='<') ? LESSEQ : (ch=='>') ? GREATEQ :
NOTEQUAL;
+ ch = (ch=='<') ? LE : (ch=='>') ? GE : NE;
+ break;
+
+ case '\'':
+ case ';':
+ case '[':
+ case '\\':
+ case ']':
+ case '`':
+ case '{':
+ case '}':
+ case '~':
+ bad_chr:
+ parse_error=BAD_CHAR;
+ return ERROR;
+
+ case '#':
+ begin=instr-1;
+ while(*instr && (isalnum(*instr) || *instr=='_'))
+ instr++;
+ ch= *instr;
+ *instr=0;
+ if(!stricmp(begin,tname))
+ byte_value=F_TRUE;
+ else if(!stricmp(begin,fname))
+ byte_value=F_FALSE;
+ else if(!stricmp(begin,iname) && (begin[4]==0 ||
!stricmp(begin+4,"inity")))
+ byte_value=CONST_INF;
+ else if(!stricmp(begin,mname) ||
+ !stricmp(begin,"#ninf"))
+ byte_value=CONST_NINF;
+ else if(!stricmp(begin,nname) ||
+ !stricmp(begin,"#nan"))
+ byte_value=CONST_NAN;
+ else {
+ for(n=1;n<=ERR_MAX;n++)
+ if(!stricmp(begin,ename[n]))
+ break;
+ if(n>ERR_MAX)
+ n=BAD_CHAR;
+ new->n_x.v_int=n;
+ byte_value=CONST_ERR;
+ }
+ *instr=ch;
+ ch=L_CONST;
+ break;
+
+ default:
+ if(!a0 && (ch=='@' || ch=='$'))
+ goto bad_chr;
+
+ if(a0 && ch=='@') {
+ begin=instr;
+ while(*instr && (isalpha(*instr) || isdigit(*instr) ||
*instr=='_'))
+ instr++;
+ n=instr-begin;
+ } else {
+ begin=instr-1;
+
byte_value=parse_cell_or_range(&begin,&(new->n_x.v_rng));
+ if(byte_value) {
+ if((byte_value& ~0x3)==R_CELL)
+ ch=L_CELL;
+ else
+ ch=L_RANGE;
+ instr=begin;
+ break;
+ }
+
+ while(*instr && (isalpha(*instr) || isdigit(*instr) ||
*instr=='_'))
+ instr++;
+
+ n=instr-begin;
+ while(isspace(*instr))
+ instr++;
+
+ if(*instr!='(') {
+ ch=L_VAR;
+ byte_value=VAR;
+ new->n_x.v_var=find_or_make_var(begin,n);
+ break;
+ }
+ }
+ tmp_ch=begin[n];
+ begin[n]='\0';
+ fp=hash_find(parse_hash,begin);
+ begin[n]=tmp_ch;
+ byte_value= ERROR;
+ if(!fp) {
+ parse_error=BAD_FUNC;
+ return ERROR;
+ }
+
+ if(fp>=the_funs && fp<=&the_funs[USR1])
+ byte_value=fp-the_funs;
+ else {
+ for(nn=0;nn<n_usr_funs;nn++) {
+ if(fp>=&usr_funs[nn][0] &&
fp<=&usr_funs[nn][usr_n_funs[nn]]) {
+ byte_value=USR1+nn;
+ new->sub_value=fp-&usr_funs[nn][0];
+ break;
+ }
+ }
+#ifdef TEST
+ if(nn==n_usr_funs) {
+ io_error_msg("Couln't turn fp into a ##");
+ parse_error=BAD_FUNC;
+ return ERROR;
+ }
+#endif
+ }
+
+ if(fp->fn_argn&X_J)
+ ch= byte_value==F_IF ? L_FN3 : L_FN2;
+ else if(fp->fn_argt[0]=='R' || fp->fn_argt[0]=='E')
+ ch=L_FN1R-1+fp->fn_argn-X_A0;
+ else
+ ch=L_FN0 + fp->fn_argn-X_A0;
+
+ break;
+ }
+ /* new->node_type=ch; */
+ new->comp_value=byte_value;
+ yylval=new;
+ return ch;
+}
+
+/* Return value is
+ 0 if it doesn't look like a cell or a range,
+ R_CELL if it is a cell (ptr now points past the characters, lr and lc
hold the row and col of the cell)
+ RANGE if it is a range (ptr points past the chars)
+ */
+unsigned char
+parse_cell_or_range FUN2(char **,ptr, struct rng *,retp)
+{
+ if(a0) {
+ unsigned tmpc,tmpr;
+ char *p;
+ int abz = ROWREL|COLREL;
+
+ p= *ptr;
+ tmpc=0;
+ if(*p=='$') {
+ abz-=COLREL;
+ p++;
+ }
+ if(!isalpha(*p))
+ return 0;
+ tmpc=str_to_col(&p);
+ if(tmpc<MIN_COL || tmpc>MAX_COL)
+ return 0;
+ if(*p=='$') {
+ abz-=ROWREL;
+ p++;
+ }
+ if(!isdigit(*p))
+ return 0;
+ for(tmpr=0;isdigit(*p);p++)
+ tmpr=tmpr*10 + *p - '0';
+
+ if(tmpr<MIN_ROW || tmpr>MAX_ROW)
+ return 0;
+
+ if(*p==':' || *p=='.') {
+ unsigned tmpc1,tmpr1;
+
+ abz = ((abz&COLREL) ? LCREL : 0)|((abz&ROWREL) ? LRREL
: 0)|HRREL|HCREL;
+ p++;
+ if(*p=='$') {
+ abz-=HCREL;
+ p++;
+ }
+ if(!isalpha(*p))
+ return 0;
+ tmpc1=str_to_col(&p);
+ if(tmpc1<MIN_COL || tmpc1>MAX_COL)
+ return 0;
+ if(*p=='$') {
+ abz-=HRREL;
+ p++;
+ }
+ if(!isdigit(*p))
+ return 0;
+ for(tmpr1=0;isdigit(*p);p++)
+ tmpr1=tmpr1*10 + *p - '0';
+ if(tmpr1<MIN_ROW || tmpr1>MAX_ROW)
+ return 0;
+
+ if(tmpr<tmpr1) {
+ retp->lr=tmpr;
+ retp->hr=tmpr1;
+ } else {
+ retp->lr=tmpr1;
+ retp->hr=tmpr;
+ }
+ if(tmpc<tmpc1) {
+ retp->lc=tmpc;
+ retp->hc=tmpc1;
+ } else {
+ retp->lc=tmpc1;
+ retp->hc=tmpc;
+ }
+ *ptr= p;
+ return RANGE | abz;
+ }
+ retp->lr = retp->hr = tmpr;
+ retp->lc = retp->hc = tmpc;
+ *ptr=p;
+ return R_CELL | abz;
+ } else {
+ char *p;
+ unsigned char retr;
+ unsigned char retc;
+ int ended;
+ long num;
+ CELLREF tmp;
+
+#define CK_ABS_R(x) if((x)<MIN_ROW || (x)>MAX_ROW) \
+ return 0; \
+ else
+
+#define CK_REL_R(x) if( ((x)>0 && MAX_ROW-(x)<cur_row) \
+ || ((x)<0 && MIN_ROW-(x)>cur_row)) \
+ return 0; \
+ else
+
+#define CK_ABS_C(x) if((x)<MIN_COL || (x)>MAX_COL) \
+ return 0; \
+ else
+
+#define CK_REL_C(x) if( ((x)>0 && MAX_COL-(x)<cur_col) \
+ || ((x)<0 && MIN_COL-(x)>cur_col)) \
+ return 0; \
+ else
+
+#define MAYBEREL(p) (*(p)=='[' && (isdigit((p)[1]) || (((p)[1]=='+' ||
(p)[1]=='-') && isdigit((p)[2]))))
+
+ p= *ptr;
+ retr=0;
+ retc=0;
+ ended=0;
+ while(ended==0) {
+ switch(*p) {
+ case 'r':
+ case 'R':
+ if(retr) {
+ ended++;
+ break;
+ }
+ p++;
+ retr=R_CELL;
+ if(isdigit(*p)) {
+ num=astol(&p);
+ CK_ABS_R(num);
+ retp->lr= retp->hr=num;
+ } else if(MAYBEREL(p)) {
+ p++;
+ num=astol(&p);
+ CK_REL_R(num);
+ retp->lr= retp->hr=num+cur_row;
+ retr|=ROWREL;
+ if(*p==':') {
+ retr=RANGE|LRREL|HRREL;
+ p++;
+ num=astol(&p);
+ CK_REL_R(num);
+ retp->hr=num+cur_row;
+ }
+ if(*p++!=']')
+ return 0;
+ } else if(retc || *p=='c' || *p=='C') {
+ retr|=ROWREL;
+ retp->lr= retp->hr=cur_row;
+ } else
+ return 0;
+ if(*p==':' && retr!=(RANGE|LRREL|HRREL)) {
+ retr= (retr&ROWREL) ? RANGE|LRREL :
RANGE;
+ p++;
+ if(isdigit(*p)) {
+ num=astol(&p);
+ CK_ABS_R(num);
+ retp->hr=num;
+ } else if(MAYBEREL(p)) {
+ p++;
+ num=astol(&p);
+ CK_REL_R(num);
+ retp->hr=num+cur_row;
+ retr|=HRREL;
+ if(*p++!=']')
+ return 0;
+ } else
+ return 0;
+ }
+
+ if(retc)
+ ended++;
+ break;
+
+ case 'c':
+ case 'C':
+ if(retc) {
+ ended++;
+ break;
+ }
+ p++;
+ retc=R_CELL;
+ if(isdigit(*p)) {
+ num=astol(&p);
+ CK_ABS_C(num);
+ retp->lc= retp->hc=num;
+ } else if(MAYBEREL(p)) {
+ p++;
+ num=astol(&p);
+ CK_REL_C(num);
+ retp->lc= retp->hc=num+cur_col;
+ retc|=COLREL;
+ if(*p==':') {
+ retc=RANGE|LCREL|HCREL;
+ p++;
+ num=astol(&p);
+ CK_REL_C(num);
+ retp->hc=num+cur_col;
+ }
+ if(*p++!=']')
+ return 0;
+ } else if(retr || *p=='r' || *p=='R') {
+ retc|=COLREL;
+ retp->lc= retp->hc=cur_col;
+ } else
+ return 0;
+ if(*p==':' && retc!=(RANGE|LCREL|HCREL)) {
+ retc= (retc&COLREL) ? RANGE|LCREL :
RANGE;
+ p++;
+ if(isdigit(*p)) {
+ num=astol(&p);
+ CK_ABS_C(num);
+ retp->hc=num;
+ } else if(MAYBEREL(p)) {
+ p++;
+ num=astol(&p);
+ CK_REL_C(num);
+ retp->hc=num+cur_col;
+ retc|=HCREL;
+ if(*p++!=']')
+ return 0;
+ } else
+ return 0;
+ }
+
+ if(retr)
+ ended++;
+ break;
+ default:
+ if(retr) {
+ *ptr=p;
+ retp->lc=MIN_COL;
+ retp->hc=MAX_COL;
+ if((retr|ROWREL)==(R_CELL|ROWREL))
+ return (retr&ROWREL) ?
(RANGE|LRREL|HRREL) : RANGE;
+ else
+ return retr;
+ } else if(retc) {
+ *ptr=p;
+ retp->lr=MIN_ROW;
+ retp->hr=MAX_COL;
+ if((retc|COLREL)==(R_CELL|COLREL))
+ return (retc&COLREL) ?
(RANGE|LCREL|HCREL) : RANGE;
+ else
+ return retc;
+ }
+ return 0;
+ }
+ }
+ if(!retr || !retc)
+ return 0;
+ *ptr=p;
+ if(retp->lr>retp->hr)
+ tmp=retp->lr,retp->lr=retp->hr,retp->hr=tmp;
+ if(retp->lc>retp->hc)
+ tmp=retp->lc,retp->lc=retp->hc,retp->hc=tmp;
+
+ if((retr|ROWREL)==(R_CELL|ROWREL)) {
+ if((retc|COLREL)==(R_CELL|COLREL))
+ return retr|retc;
+ return (retr&ROWREL) ? (retc|LRREL|HRREL) : retc;
+ }
+ if((retc|COLREL)==(R_CELL|COLREL))
+ return (retc&COLREL) ? (retr|LCREL|HCREL) : retr;
+ return retr|retc;
+ }
+}
+
+int
+str_to_col FUN1(char **,str)
+{
+ int ret;
+ char c,cc,ccc;
+#if MAX_COL>702
+ char cccc;
+#endif
+
+ ret=0;
+ c=str[0][0];
+ if(!isalpha((cc=str[0][1]))) {
+ (*str)++;
+ return MIN_COL + (isupper(c) ? c-'A' : c-'a');
+ }
+ if(!isalpha((ccc=str[0][2]))) {
+ (*str)+=2;
+ return MIN_COL+26 + (isupper(c) ? c-'A' : c-'a')*26 +
(isupper(cc) ? cc-'A' : cc-'a');
+ }
+#if MAX_COL>702
+ if(!isalpha((cccc=str[0][3]))) {
+ (*str)+=3;
+ return MIN_COL+702 + (isupper(c) ? c-'A' : c-'a')*26*26 +
(isupper(cc) ? cc-'A' : cc-'a')*26 + (isupper(ccc) ? ccc-'A' : ccc-'a');
+ }
+ if(!isalpha(str[0][4])) {
+ (*str)+=4;
+ return MIN_COL+18278 + (isupper(c) ? c-'A' : c-'a')*26*26*26 +
(isupper(cc) ? cc-'A' : cc-'a')*26*26 + (isupper(ccc) ? ccc-'A' : ccc-'a')*26 +
(isupper(cccc) ? cccc-'A' : cccc-'a');
+ }
+#endif
+ return 0;
+}
diff --git a/test/etags/y-src/parse.y b/test/etags/y-src/parse.y
new file mode 100644
index 0000000..75fd787
--- /dev/null
+++ b/test/etags/y-src/parse.y
@@ -0,0 +1,875 @@
+%{
+/* Copyright (C) 1990, 1992, 1993 Free Software Foundation, Inc.
+
+This file is part of Oleo, the GNU Spreadsheet.
+
+Oleo is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+Oleo is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Oleo; see the file COPYING. If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+%}
+
+
+%right '?' ':'
+/* %left '|' */
+%left '&'
+%nonassoc '=' NE
+%nonassoc '<' LE '>' GE
+%left '+' '-'
+%left '*' '/' '%'
+%right '^'
+%left NEG '!'
+
+%token L_CELL L_RANGE
+%token L_VAR
+
+%token L_CONST
+%token L_FN0 L_FN1 L_FN2 L_FN3 L_FN4 L_FNN
+%token L_FN1R L_FN2R L_FN3R L_FN4R L_FNNR
+
+%token L_LE L_NE L_GE
+
+%{
+#include "funcdef.h"
+
+#include <ctype.h>
+
+#define obstack_chunk_alloc ck_malloc
+#define obstack_chunk_free free
+#include "obstack.h"
+#include "sysdef.h"
+
+#include "global.h"
+#include "errors.h"
+#include "node.h"
+#include "eval.h"
+#include "ref.h"
+
+int yylex ();
+#ifdef __STDC__
+void yyerror (char *);
+#else
+void yyerror ();
+#endif
+VOIDSTAR parse_hash;
+extern VOIDSTAR hash_find();
+
+/* This table contains a list of the infix single-char functions */
+unsigned char fnin[] = {
+ SUM, DIFF, DIV, PROD, MOD, /* AND, OR, */ POW, EQUAL, IF, CONCAT, 0
+};
+
+#define YYSTYPE _y_y_s_t_y_p_e
+typedef struct node *YYSTYPE;
+YYSTYPE parse_return;
+#ifdef __STDC__
+YYSTYPE make_list (YYSTYPE, YYSTYPE);
+#else
+YYSTYPE make_list ();
+#endif
+
+char *instr;
+int parse_error = 0;
+extern struct obstack tmp_mem;
+
+%}
+%%
+line: exp
+ { parse_return=$1; }
+ | error {
+ if(!parse_error)
+ parse_error=PARSE_ERR;
+ parse_return=0; }
+ ;
+
+exp: L_CONST
+ | cell
+ | L_FN0 '(' ')' {
+ $$=$1; }
+ | L_FN1 '(' exp ')' {
+ ($1)->n_x.v_subs[0]=$3;
+ ($1)->n_x.v_subs[1]=(struct node *)0;
+ $$=$1; }
+ | L_FN2 '(' exp ',' exp ')' {
+ ($1)->n_x.v_subs[0]=$3;
+ ($1)->n_x.v_subs[1]=$5;
+ $$=$1; }
+ | L_FN3 '(' exp ',' exp ',' exp ')' {
+ ($1)->n_x.v_subs[0]=make_list($3,$5);
+ ($1)->n_x.v_subs[1]=$7;
+ $$=$1;}
+ | L_FN4 '(' exp ',' exp ',' exp ',' exp ')' {
+ ($1)->n_x.v_subs[0]=make_list($3,$5);
+ ($1)->n_x.v_subs[1]=make_list($7,$9);
+ $$=$1;}
+ | L_FNN '(' exp_list ')' {
+ ($1)->n_x.v_subs[0]=(struct node *)0;
+ ($1)->n_x.v_subs[1]=$3;
+ $$=$1; }
+ | L_FN1R '(' L_RANGE ')' {
+ $1->n_x.v_subs[0]=$3;
+ $$=$1; }
+ | L_FN1R '(' L_VAR ')' {
+ $1->n_x.v_subs[0]=$3;
+ $$=$1; }
+
+ | L_FN2R '(' L_RANGE ',' exp ')' {
+ $1->n_x.v_subs[0]=$3;
+ $1->n_x.v_subs[1]=$5;
+ $$=$1; }
+ | L_FN2R '(' L_VAR ',' exp ')' {
+ $1->n_x.v_subs[0]=$3;
+ $1->n_x.v_subs[1]=$5;
+ $$=$1; }
+
+ /* JF: These should be FN2R, but I'm hacking this for SYLNK */
+ | L_FN2R '(' L_RANGE ',' exp ',' exp ')' {
+ if($1->comp_value!=F_INDEX)
+ parse_error=PARSE_ERR;
+ $1->comp_value=F_INDEX2;
+ $1->n_x.v_subs[0]=make_list($3,$5);
+ $1->n_x.v_subs[1]=$7;
+ $$=$1; }
+ | L_FN2R '(' L_VAR ',' exp ',' exp ')' {
+ if($1->comp_value!=F_INDEX)
+ parse_error=PARSE_ERR;
+ $1->comp_value=F_INDEX2;
+ $1->n_x.v_subs[0]=make_list($3,$5);
+ $1->n_x.v_subs[1]=$7;
+ $$=$1; }
+
+ | L_FN3R '(' L_RANGE ',' exp ',' exp ')' {
+ ($1)->n_x.v_subs[0]=make_list($3,$5);
+ ($1)->n_x.v_subs[1]=$7;
+ $$=$1;}
+ | L_FN3R '(' L_VAR ',' exp ',' exp ')' {
+ ($1)->n_x.v_subs[0]=make_list($3,$5);
+ ($1)->n_x.v_subs[1]=$7;
+ $$=$1;}
+
+ | L_FNNR '(' range_exp_list ')' {
+ ($1)->n_x.v_subs[0]=(struct node *)0;
+ ($1)->n_x.v_subs[1]=$3;
+ $$=$1; }
+ | exp '?' exp ':' exp {
+ $2->comp_value=IF;
+ $2->n_x.v_subs[0]=$4;
+ $2->n_x.v_subs[1]=$5;
+ $4->n_x.v_subs[0]=$1;
+ $4->n_x.v_subs[1]=$3;
+ $$=$2; }
+ /* | exp '|' exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; } */
+ | exp '&' exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp '<' exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp LE exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp '=' exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp NE exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp '>' exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp GE exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp '+' exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp '-' exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp '*' exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp '/' exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp '%' exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | exp '^' exp {
+ $2->n_x.v_subs[0]=$1;
+ $2->n_x.v_subs[1]=$3;
+ $$ = $2; }
+ | '-' exp %prec NEG {
+ if($2->comp_value==CONST_FLT) {
+ $2->n_x.v_float= -($2->n_x.v_float);
+ /* free($1); */
+ $$=$2;
+ } else if($2->comp_value==CONST_INT) {
+ $2->n_x.v_int= -($2->n_x.v_int);
+ /* free($1); */
+ $$=$2;
+ } else {
+ $1->comp_value = NEGATE;
+ $1->n_x.v_subs[0]=$2;
+ $1->n_x.v_subs[1]=(struct node *)0;
+ $$ = $1;
+ } }
+ | '!' exp {
+ $1->n_x.v_subs[0]=$2;
+ $1->n_x.v_subs[1]=(struct node *)0;
+ $$ = $1; }
+ | '(' exp ')'
+ { $$ = $2; }
+ | '(' exp error {
+ if(!parse_error)
+ parse_error=NO_CLOSE;
+ }
+ /* | exp ')' error {
+ if(!parse_error)
+ parse_error=NO_OPEN;
+ } */
+ | '(' error {
+ if(!parse_error)
+ parse_error=NO_CLOSE;
+ }
+ ;
+
+
+exp_list: exp
+ { $$ = make_list($1, 0); }
+ | exp_list ',' exp
+ { $$ = make_list($3, $1); }
+ ;
+
+range_exp: L_RANGE
+ | exp
+ ;
+
+range_exp_list: range_exp
+ { $$=make_list($1, 0); }
+ | range_exp_list ',' range_exp
+ { $$=make_list($3,$1); }
+ ;
+
+cell: L_CELL
+ { $$=$1; }
+ | L_VAR
+ ;
+%%
+
+void
+yyerror FUN1(char *, s)
+{
+ if(!parse_error)
+ parse_error=PARSE_ERR;
+}
+
+YYSTYPE
+make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)
+{
+ YYSTYPE ret;
+
+ ret=(YYSTYPE)obstack_alloc(&tmp_mem,sizeof(*ret));
+ ret->comp_value = 0;
+ ret->n_x.v_subs[0]=car;
+ ret->n_x.v_subs[1]=cdr;
+ return ret;
+}
+
+#define ERROR -1
+
+extern struct node *yylval;
+
+#ifdef __STDC__
+unsigned char parse_cell_or_range (char **,struct rng *);
+#else
+unsigned char parse_cell_or_range ();
+#endif
+
+int
+yylex FUN0()
+{
+ int ch;
+ struct node *new;
+ int isflt;
+ char *begin;
+ char *tmp_str;
+ unsigned char byte_value;
+ int n;
+
+ /* unsigned char *ptr; */
+ int nn;
+ struct function *fp;
+ int tmp_ch;
+
+#ifdef TEST
+ if(!instr)
+ return ERROR;
+#endif
+ while(isspace(*instr))
+ instr++;
+ ch = *instr++;
+ if(ch=='(' || ch==',' || ch==')')
+ return ch;
+
+ new=(struct node *)obstack_alloc(&tmp_mem,sizeof(struct node));
+ new->add_byte=0;
+ new->sub_value=0;
+ switch(ch) {
+ case 0:
+ return 0;
+
+ case '0': case '1': case '2': case '3': case '4': case '5': case '6':
+ case '7': case '8': case '9': case '.':
+ isflt = (ch=='.');
+
+ begin=instr-1;
+ tmp_str=instr;
+
+ while(isdigit(*tmp_str) || (!isflt && *tmp_str=='.' && ++isflt))
+ tmp_str++;
+ if(*tmp_str=='e' || *tmp_str=='E') {
+ isflt=1;
+ tmp_str++;
+ if(*tmp_str=='-' || *tmp_str=='+')
+ tmp_str++;
+ while(isdigit(*tmp_str))
+ tmp_str++;
+ }
+ if(isflt) {
+ new->n_x.v_float=astof((char **)(&begin));
+ byte_value=CONST_FLT;
+ } else {
+ new->n_x.v_int=astol((char **)(&begin));
+ if(begin!=tmp_str) {
+ begin=instr-1;
+ new->n_x.v_float=astof((char **)(&begin));
+ byte_value=CONST_FLT;
+ } else
+ byte_value=CONST_INT;
+ }
+ ch=L_CONST;
+ instr=begin;
+ break;
+
+ case '"':
+ begin=instr;
+ while(*instr && *instr!='"') {
+ if(*instr=='\\' && instr[1])
+ instr++;
+ instr++;
+ }
+ if(!*instr) {
+ parse_error=NO_QUOTE;
+ return ERROR;
+ }
+ tmp_str=new->n_x.v_string=(char *)ck_malloc(1+instr-begin);
+ while(begin!=instr) {
+ unsigned char n;
+
+ if(*begin=='\\') {
+ begin++;
+ if(begin[0]>='0' && begin[0]<='7') {
+ if(begin[1]>='0' && begin[1]<='7') {
+ if(begin[2]>='0' &&
begin[2]<='7') {
+ n=(begin[2]-'0') + (010
* (begin[1]-'0')) + ( 0100 * (begin[0]-'0'));
+ begin+=3;
+ } else {
+ n=(begin[1]-'0') + (010
* (begin[0]-'0'));
+ begin+=2;
+ }
+ } else {
+ n=begin[0]-'0';
+ begin++;
+ }
+ } else
+ n= *begin++;
+ *tmp_str++= n;
+ } else
+ *tmp_str++= *begin++;
+ }
+ *tmp_str='\0';
+ instr++;
+ byte_value=CONST_STR;
+ ch=L_CONST;
+ break;
+
+ case '+': case '-':
+
+ case '*': case '/': case '%': case '&':
+ /* case '|': */ case '^': case '=':
+
+ case '?':
+ {
+ unsigned char *ptr;
+
+ for(ptr= fnin;*ptr;ptr++)
+ if(the_funs[*ptr].fn_str[0]==ch)
+ break;
+#ifdef TEST
+ if(!*ptr)
+ panic("Can't find fnin[] entry for '%c'",ch);
+#endif
+ byte_value= *ptr;
+ }
+ break;
+
+ case ':':
+ byte_value=IF;
+ break;
+
+ case '!':
+ case '<':
+ case '>':
+ if(*instr!='=') {
+ byte_value = (ch=='<') ? LESS : (ch=='>') ? GREATER :
NOT;
+ break;
+ }
+ instr++;
+ byte_value = (ch=='<') ? LESSEQ : (ch=='>') ? GREATEQ :
NOTEQUAL;
+ ch = (ch=='<') ? LE : (ch=='>') ? GE : NE;
+ break;
+
+ case '\'':
+ case ';':
+ case '[':
+ case '\\':
+ case ']':
+ case '`':
+ case '{':
+ case '}':
+ case '~':
+ bad_chr:
+ parse_error=BAD_CHAR;
+ return ERROR;
+
+ case '#':
+ begin=instr-1;
+ while(*instr && (isalnum(*instr) || *instr=='_'))
+ instr++;
+ ch= *instr;
+ *instr=0;
+ if(!stricmp(begin,tname))
+ byte_value=F_TRUE;
+ else if(!stricmp(begin,fname))
+ byte_value=F_FALSE;
+ else if(!stricmp(begin,iname) && (begin[4]==0 ||
!stricmp(begin+4,"inity")))
+ byte_value=CONST_INF;
+ else if(!stricmp(begin,mname) ||
+ !stricmp(begin,"#ninf"))
+ byte_value=CONST_NINF;
+ else if(!stricmp(begin,nname) ||
+ !stricmp(begin,"#nan"))
+ byte_value=CONST_NAN;
+ else {
+ for(n=1;n<=ERR_MAX;n++)
+ if(!stricmp(begin,ename[n]))
+ break;
+ if(n>ERR_MAX)
+ n=BAD_CHAR;
+ new->n_x.v_int=n;
+ byte_value=CONST_ERR;
+ }
+ *instr=ch;
+ ch=L_CONST;
+ break;
+
+ default:
+ if(!a0 && (ch=='@' || ch=='$'))
+ goto bad_chr;
+
+ if(a0 && ch=='@') {
+ begin=instr;
+ while(*instr && (isalpha(*instr) || isdigit(*instr) ||
*instr=='_'))
+ instr++;
+ n=instr-begin;
+ } else {
+ begin=instr-1;
+
byte_value=parse_cell_or_range(&begin,&(new->n_x.v_rng));
+ if(byte_value) {
+ if((byte_value& ~0x3)==R_CELL)
+ ch=L_CELL;
+ else
+ ch=L_RANGE;
+ instr=begin;
+ break;
+ }
+
+ while(*instr && (isalpha(*instr) || isdigit(*instr) ||
*instr=='_'))
+ instr++;
+
+ n=instr-begin;
+ while(isspace(*instr))
+ instr++;
+
+ if(*instr!='(') {
+ ch=L_VAR;
+ byte_value=VAR;
+ new->n_x.v_var=find_or_make_var(begin,n);
+ break;
+ }
+ }
+ tmp_ch=begin[n];
+ begin[n]='\0';
+ fp=hash_find(parse_hash,begin);
+ begin[n]=tmp_ch;
+ byte_value= ERROR;
+ if(!fp) {
+ parse_error=BAD_FUNC;
+ return ERROR;
+ }
+
+ if(fp>=the_funs && fp<=&the_funs[USR1])
+ byte_value=fp-the_funs;
+ else {
+ for(nn=0;nn<n_usr_funs;nn++) {
+ if(fp>=&usr_funs[nn][0] &&
fp<=&usr_funs[nn][usr_n_funs[nn]]) {
+ byte_value=USR1+nn;
+ new->sub_value=fp-&usr_funs[nn][0];
+ break;
+ }
+ }
+#ifdef TEST
+ if(nn==n_usr_funs) {
+ io_error_msg("Couln't turn fp into a ##");
+ parse_error=BAD_FUNC;
+ return ERROR;
+ }
+#endif
+ }
+
+ if(fp->fn_argn&X_J)
+ ch= byte_value==F_IF ? L_FN3 : L_FN2;
+ else if(fp->fn_argt[0]=='R' || fp->fn_argt[0]=='E')
+ ch=L_FN1R-1+fp->fn_argn-X_A0;
+ else
+ ch=L_FN0 + fp->fn_argn-X_A0;
+
+ break;
+ }
+ /* new->node_type=ch; */
+ new->comp_value=byte_value;
+ yylval=new;
+ return ch;
+}
+
+/* Return value is
+ 0 if it doesn't look like a cell or a range,
+ R_CELL if it is a cell (ptr now points past the characters, lr and lc
hold the row and col of the cell)
+ RANGE if it is a range (ptr points past the chars)
+ */
+unsigned char
+parse_cell_or_range FUN2(char **,ptr, struct rng *,retp)
+{
+ if(a0) {
+ unsigned tmpc,tmpr;
+ char *p;
+ int abz = ROWREL|COLREL;
+
+ p= *ptr;
+ tmpc=0;
+ if(*p=='$') {
+ abz-=COLREL;
+ p++;
+ }
+ if(!isalpha(*p))
+ return 0;
+ tmpc=str_to_col(&p);
+ if(tmpc<MIN_COL || tmpc>MAX_COL)
+ return 0;
+ if(*p=='$') {
+ abz-=ROWREL;
+ p++;
+ }
+ if(!isdigit(*p))
+ return 0;
+ for(tmpr=0;isdigit(*p);p++)
+ tmpr=tmpr*10 + *p - '0';
+
+ if(tmpr<MIN_ROW || tmpr>MAX_ROW)
+ return 0;
+
+ if(*p==':' || *p=='.') {
+ unsigned tmpc1,tmpr1;
+
+ abz = ((abz&COLREL) ? LCREL : 0)|((abz&ROWREL) ? LRREL
: 0)|HRREL|HCREL;
+ p++;
+ if(*p=='$') {
+ abz-=HCREL;
+ p++;
+ }
+ if(!isalpha(*p))
+ return 0;
+ tmpc1=str_to_col(&p);
+ if(tmpc1<MIN_COL || tmpc1>MAX_COL)
+ return 0;
+ if(*p=='$') {
+ abz-=HRREL;
+ p++;
+ }
+ if(!isdigit(*p))
+ return 0;
+ for(tmpr1=0;isdigit(*p);p++)
+ tmpr1=tmpr1*10 + *p - '0';
+ if(tmpr1<MIN_ROW || tmpr1>MAX_ROW)
+ return 0;
+
+ if(tmpr<tmpr1) {
+ retp->lr=tmpr;
+ retp->hr=tmpr1;
+ } else {
+ retp->lr=tmpr1;
+ retp->hr=tmpr;
+ }
+ if(tmpc<tmpc1) {
+ retp->lc=tmpc;
+ retp->hc=tmpc1;
+ } else {
+ retp->lc=tmpc1;
+ retp->hc=tmpc;
+ }
+ *ptr= p;
+ return RANGE | abz;
+ }
+ retp->lr = retp->hr = tmpr;
+ retp->lc = retp->hc = tmpc;
+ *ptr=p;
+ return R_CELL | abz;
+ } else {
+ char *p;
+ unsigned char retr;
+ unsigned char retc;
+ int ended;
+ long num;
+ CELLREF tmp;
+
+#define CK_ABS_R(x) if((x)<MIN_ROW || (x)>MAX_ROW) \
+ return 0; \
+ else
+
+#define CK_REL_R(x) if( ((x)>0 && MAX_ROW-(x)<cur_row) \
+ || ((x)<0 && MIN_ROW-(x)>cur_row)) \
+ return 0; \
+ else
+
+#define CK_ABS_C(x) if((x)<MIN_COL || (x)>MAX_COL) \
+ return 0; \
+ else
+
+#define CK_REL_C(x) if( ((x)>0 && MAX_COL-(x)<cur_col) \
+ || ((x)<0 && MIN_COL-(x)>cur_col)) \
+ return 0; \
+ else
+
+#define MAYBEREL(p) (*(p)=='[' && (isdigit((p)[1]) || (((p)[1]=='+' ||
(p)[1]=='-') && isdigit((p)[2]))))
+
+ p= *ptr;
+ retr=0;
+ retc=0;
+ ended=0;
+ while(ended==0) {
+ switch(*p) {
+ case 'r':
+ case 'R':
+ if(retr) {
+ ended++;
+ break;
+ }
+ p++;
+ retr=R_CELL;
+ if(isdigit(*p)) {
+ num=astol(&p);
+ CK_ABS_R(num);
+ retp->lr= retp->hr=num;
+ } else if(MAYBEREL(p)) {
+ p++;
+ num=astol(&p);
+ CK_REL_R(num);
+ retp->lr= retp->hr=num+cur_row;
+ retr|=ROWREL;
+ if(*p==':') {
+ retr=RANGE|LRREL|HRREL;
+ p++;
+ num=astol(&p);
+ CK_REL_R(num);
+ retp->hr=num+cur_row;
+ }
+ if(*p++!=']')
+ return 0;
+ } else if(retc || *p=='c' || *p=='C') {
+ retr|=ROWREL;
+ retp->lr= retp->hr=cur_row;
+ } else
+ return 0;
+ if(*p==':' && retr!=(RANGE|LRREL|HRREL)) {
+ retr= (retr&ROWREL) ? RANGE|LRREL :
RANGE;
+ p++;
+ if(isdigit(*p)) {
+ num=astol(&p);
+ CK_ABS_R(num);
+ retp->hr=num;
+ } else if(MAYBEREL(p)) {
+ p++;
+ num=astol(&p);
+ CK_REL_R(num);
+ retp->hr=num+cur_row;
+ retr|=HRREL;
+ if(*p++!=']')
+ return 0;
+ } else
+ return 0;
+ }
+
+ if(retc)
+ ended++;
+ break;
+
+ case 'c':
+ case 'C':
+ if(retc) {
+ ended++;
+ break;
+ }
+ p++;
+ retc=R_CELL;
+ if(isdigit(*p)) {
+ num=astol(&p);
+ CK_ABS_C(num);
+ retp->lc= retp->hc=num;
+ } else if(MAYBEREL(p)) {
+ p++;
+ num=astol(&p);
+ CK_REL_C(num);
+ retp->lc= retp->hc=num+cur_col;
+ retc|=COLREL;
+ if(*p==':') {
+ retc=RANGE|LCREL|HCREL;
+ p++;
+ num=astol(&p);
+ CK_REL_C(num);
+ retp->hc=num+cur_col;
+ }
+ if(*p++!=']')
+ return 0;
+ } else if(retr || *p=='r' || *p=='R') {
+ retc|=COLREL;
+ retp->lc= retp->hc=cur_col;
+ } else
+ return 0;
+ if(*p==':' && retc!=(RANGE|LCREL|HCREL)) {
+ retc= (retc&COLREL) ? RANGE|LCREL :
RANGE;
+ p++;
+ if(isdigit(*p)) {
+ num=astol(&p);
+ CK_ABS_C(num);
+ retp->hc=num;
+ } else if(MAYBEREL(p)) {
+ p++;
+ num=astol(&p);
+ CK_REL_C(num);
+ retp->hc=num+cur_col;
+ retc|=HCREL;
+ if(*p++!=']')
+ return 0;
+ } else
+ return 0;
+ }
+
+ if(retr)
+ ended++;
+ break;
+ default:
+ if(retr) {
+ *ptr=p;
+ retp->lc=MIN_COL;
+ retp->hc=MAX_COL;
+ if((retr|ROWREL)==(R_CELL|ROWREL))
+ return (retr&ROWREL) ?
(RANGE|LRREL|HRREL) : RANGE;
+ else
+ return retr;
+ } else if(retc) {
+ *ptr=p;
+ retp->lr=MIN_ROW;
+ retp->hr=MAX_COL;
+ if((retc|COLREL)==(R_CELL|COLREL))
+ return (retc&COLREL) ?
(RANGE|LCREL|HCREL) : RANGE;
+ else
+ return retc;
+ }
+ return 0;
+ }
+ }
+ if(!retr || !retc)
+ return 0;
+ *ptr=p;
+ if(retp->lr>retp->hr)
+ tmp=retp->lr,retp->lr=retp->hr,retp->hr=tmp;
+ if(retp->lc>retp->hc)
+ tmp=retp->lc,retp->lc=retp->hc,retp->hc=tmp;
+
+ if((retr|ROWREL)==(R_CELL|ROWREL)) {
+ if((retc|COLREL)==(R_CELL|COLREL))
+ return retr|retc;
+ return (retr&ROWREL) ? (retc|LRREL|HRREL) : retc;
+ }
+ if((retc|COLREL)==(R_CELL|COLREL))
+ return (retc&COLREL) ? (retr|LCREL|HCREL) : retr;
+ return retr|retc;
+ }
+}
+
+int
+str_to_col FUN1(char **,str)
+{
+ int ret;
+ char c,cc,ccc;
+#if MAX_COL>702
+ char cccc;
+#endif
+
+ ret=0;
+ c=str[0][0];
+ if(!isalpha((cc=str[0][1]))) {
+ (*str)++;
+ return MIN_COL + (isupper(c) ? c-'A' : c-'a');
+ }
+ if(!isalpha((ccc=str[0][2]))) {
+ (*str)+=2;
+ return MIN_COL+26 + (isupper(c) ? c-'A' : c-'a')*26 +
(isupper(cc) ? cc-'A' : cc-'a');
+ }
+#if MAX_COL>702
+ if(!isalpha((cccc=str[0][3]))) {
+ (*str)+=3;
+ return MIN_COL+702 + (isupper(c) ? c-'A' : c-'a')*26*26 +
(isupper(cc) ? cc-'A' : cc-'a')*26 + (isupper(ccc) ? ccc-'A' : ccc-'a');
+ }
+ if(!isalpha(str[0][4])) {
+ (*str)+=4;
+ return MIN_COL+18278 + (isupper(c) ? c-'A' : c-'a')*26*26*26 +
(isupper(cc) ? cc-'A' : cc-'a')*26*26 + (isupper(ccc) ? ccc-'A' : ccc-'a')*26 +
(isupper(cccc) ? cccc-'A' : cccc-'a');
+ }
+#endif
+ return 0;
+}