[Saga-devel] saga-projects SVN commit 913:
/papers/CPC/saga_engine_2006/
hkaiser at cct.lsu.edu
hkaiser at cct.lsu.edu
Thu Jan 29 20:38:31 CST 2009
User: hkaiser
Date: 2009/01/29 08:38 PM
Added:
/papers/CPC/saga_engine_2006/
Makefile, The SAGA C++ Reference Implementation.ppt, acm_proc_article-sp.cls, col_latex.awk, conclusion.tex, details.tex, generaldesign.tex, ifpdf.sty, intro.tex, listings.sty, lstdoc.sty, lstlang1.sty, lstlang2.sty, lstlang3.sty, lstmisc.sty, lstpatch.sty, properties.tex, requirements.tex, reviews.txt, saga_engine.bib, saga_engine.pdf, saga_engine.tex, saga_engine_talk.pdf, splncs.bst, sprmindx.sty, srcltx.sty, wrapfig.sty
/papers/CPC/saga_engine_2006/full_paper/
saga_engine.pdf
/papers/CPC/saga_engine_2006/images/
object_lifetime_creation.pdf, object_lifetime_creation.ps, object_lifetime_creation.vsd, object_lifetime_functioncall.pdf, object_lifetime_functioncall.ps, object_lifetime_functioncall.vsd, object_structure.pdf, object_structure.ps, object_structure.vsd, saga_architecture.JPG, saga_architecture.eps, saga_architecture.fig, saga_architecture.pdf
Log:
Added old OOPSLA paper
File Changes:
Directory: /papers/CPC/saga_engine_2006/full_paper/
===================================================
File [added]: saga_engine.pdf
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/full_paper/saga_engine.pdf
___________________________________________________________________
Name: svn:mime-type
+ application/pdf
Directory: /papers/CPC/saga_engine_2006/images/
===============================================
File [added]: object_lifetime_creation.pdf
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/object_lifetime_creation.pdf
___________________________________________________________________
Name: svn:mime-type
+ application/pdf
File [added]: object_lifetime_creation.ps
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/object_lifetime_creation.ps
___________________________________________________________________
Name: svn:mime-type
+ application/postscript
File [added]: object_lifetime_creation.vsd
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/object_lifetime_creation.vsd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
File [added]: object_lifetime_functioncall.pdf
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/object_lifetime_functioncall.pdf
___________________________________________________________________
Name: svn:mime-type
+ application/pdf
File [added]: object_lifetime_functioncall.ps
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/object_lifetime_functioncall.ps
___________________________________________________________________
Name: svn:mime-type
+ application/postscript
File [added]: object_lifetime_functioncall.vsd
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/object_lifetime_functioncall.vsd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
File [added]: object_structure.pdf
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/object_structure.pdf
___________________________________________________________________
Name: svn:mime-type
+ application/pdf
File [added]: object_structure.ps
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/object_structure.ps
___________________________________________________________________
Name: svn:mime-type
+ application/postscript
File [added]: object_structure.vsd
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/object_structure.vsd
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
File [added]: saga_architecture.JPG
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/saga_architecture.JPG
___________________________________________________________________
Name: svn:mime-type
+ image/jpeg
File [added]: saga_architecture.eps
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/saga_architecture.eps
___________________________________________________________________
Name: svn:mime-type
+ application/postscript
File [added]: saga_architecture.fig
Delta lines: +81 -0
===================================================================
--- papers/CPC/saga_engine_2006/images/saga_architecture.fig 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/images/saga_architecture.fig 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,81 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+A4
+100.00
+Single
+-2
+1200 2
+6 12450 3075 12975 3150
+2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5
+ 12450 3075 12525 3075 12525 3150 12450 3150 12450 3075
+2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5
+ 12675 3075 12750 3075 12750 3150 12675 3150 12675 3075
+2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5
+ 12900 3075 12975 3075 12975 3150 12900 3150 12900 3075
+-6
+6 12450 5475 12975 5550
+2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5
+ 12450 5475 12525 5475 12525 5550 12450 5550 12450 5475
+2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5
+ 12675 5475 12750 5475 12750 5550 12675 5550 12675 5475
+2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5
+ 12900 5475 12975 5475 12975 5550 12900 5550 12900 5475
+-6
+6 12450 8175 12975 8250
+2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5
+ 12450 8175 12525 8175 12525 8250 12450 8250 12450 8175
+2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5
+ 12675 8175 12750 8175 12750 8250 12675 8250 12675 8175
+2 2 0 1 0 0 50 -1 20 0.000 0 0 -1 0 0 5
+ 12900 8175 12975 8175 12975 8250 12900 8250 12900 8175
+-6
+2 1 0 4 12 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 600 1800 14475 1800
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 900 300 11700 300 11700 1200 900 1200 900 300
+2 2 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+ 4800 2100 12075 2100 12075 3900 4800 3900 4800 2100
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 900 2700 4500 2700 4500 3600 900 3600 900 2700
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 5100 2700 8100 2700 8100 3600 5100 3600 5100 2700
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 8700 2700 11700 2700 11700 3600 8700 3600 8700 2700
+2 1 0 4 12 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 600 4200 14475 4200
+2 2 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+ 4800 4500 12075 4500 12075 6300 4800 6300 4800 4500
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 8700 5100 11700 5100 11700 6000 8700 6000 8700 5100
+2 1 0 4 12 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 600 6600 14475 6600
+2 1 0 4 12 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 600 6750 14475 6750
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 0 -300 15150 -300 15150 9450 0 9450 0 -300
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 5100 7650 8100 7650 8100 8550 5100 8550 5100 7650
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 8700 7650 11700 7650 11700 8550 8700 8550 8700 7650
+2 2 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+ 4800 7050 12075 7050 12075 8850 4800 8850 4800 7050
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 5100 5100 8100 5100 8100 6000 5100 6000 5100 5100
+4 0 0 50 -1 18 26 0.0000 4 480 2655 1200 900 Application\001
+4 0 0 50 -1 18 26 0.0000 4 480 3165 1200 3300 SAGA Engine\001
+4 0 0 50 -1 18 22 0.0000 4 285 1800 12600 1650 SAGA API\001
+4 0 0 50 -1 18 22 0.0000 4 285 1800 12600 4050 SAGA CPI\001
+4 0 0 50 -1 18 22 0.0000 4 285 2070 12600 6450 Middleware\001
+4 0 0 50 -1 18 22 0.0000 4 360 1620 5100 4950 Adaptors\001
+4 0 0 50 -1 18 22 0.0000 4 285 2070 5100 7500 Middleware\001
+4 0 0 50 -1 18 22 0.0000 4 285 2610 900 7500 Remote Server\001
+4 0 0 50 -1 18 26 0.0000 4 375 870 9075 3300 Job\001
+4 0 0 50 -1 18 26 0.0000 4 375 870 9075 5700 Job\001
+4 0 0 50 -1 18 26 0.0000 4 375 870 9075 8250 Job\001
+4 0 0 50 -1 18 26 0.0000 4 375 1065 5400 3300 Data\001
+4 0 0 50 -1 18 26 0.0000 4 375 1065 5400 5700 Data\001
+4 0 0 50 -1 18 26 0.0000 4 375 1065 5400 8250 Data\001
+4 0 0 50 -1 18 22 0.0000 4 360 2430 5100 2550 API Packages\001
+4 0 0 50 -1 18 22 0.0000 4 285 630 12600 7200 API\001
File [added]: saga_architecture.pdf
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/images/saga_architecture.pdf
___________________________________________________________________
Name: svn:mime-type
+ application/pdf
Directory: /papers/CPC/saga_engine_2006/
========================================
File [added]: Makefile
Delta lines: +224 -0
===================================================================
--- papers/CPC/saga_engine_2006/Makefile 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/Makefile 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,224 @@
+
+#####################################################################
+# project name
+
+BASE = saga_engine
+
+#####################################################################
+# executeables
+
+TEX = latex
+COL = | cat | awk -f col_latex.awk
+PDFTEX = pdflatex
+SPELL = ispell # -d deutsch
+PSBOOK = psbook
+DVIPS = dvips
+BIBTEX = bibtex
+MAKEINDEX = makeindex
+MAKE_IND = $(MAKEINDEX) -s gind.ist
+PS2SORT = ps2sort
+FIG2DEV = fig2dev
+PS2EPSI = ps2epsi
+EPSTOPDF = epstopdf
+XDVI_EDITOR = "xdvi_edit XDVI-$(BASE) %f %l"
+XDVI_OPTS = +statusline -hushstdout -nopostscript -geometry 830x1175-0+0
+XDVI_OPTS = +statusline -hushstdout -geometry 830x1175-0+0
+XDVI = xdvi -editor $(XDVI_EDITOR) $(XDVI_OPTS)
+XDVI_LOCK = .xdvi_lock
+ACRO = xpdf
+ACRO_LOCK = .acro_lock
+RM = rm -f
+TOUCH = touch
+LPR = lpr
+ENV = /bin/env DVIFILE=$(BASE).dvi DVINAME=XDVI-$(BASE)
+EDITOR = gvim -o -geometry 82x55+92+0 --servername XDVI-$(BASE)
+
+#####################################################################
+# files
+
+TEXDIR = .
+BIBDIR = .
+PICDIR = images
+FIGDIR = images
+
+TEXFILES = $(wildcard $(TEXDIR)/*.tex)
+BIBFILES = $(wildcard $(BIBDIR)/*.bib)
+AUXS = $(wildcard *.aux)
+PICS = $(wildcard $(PICDIR)/*.{eps,ps,jpeg,jpg,gif,png,pdf})
+FIGS = $(wildcard $(PICDIR)/*.fig)
+
+TEX_FIGS = $(addsuffix .eps,$(basename $(FIGS)))
+PDF_FIGS = $(addsuffix .pdf,$(basename $(FIGS)))
+
+#####################################################################
+# special targets
+
+.SECONDARY: $(TEX_FIGS) $(PDF_FIGS)
+
+.SUFFIXES: .tex .dvi .eps .ps .pdf \
+ .bib .bbl .fig .idx .ind
+
+.PHONY: clean distclean figclean \
+ show s \
+ again a \
+ print p \
+ print2 p2 \
+ spell \
+ touch t \
+ edit e \
+ Edit E \
+ fine \
+ bib bbl ind \
+ ps pdf dvi
+
+#####################################################################
+# implicit rules
+
+# %.dvi: %.tex
+%.dvi: %.tex $(TEXFILES) $(PICS) $(TEX_FIGS)
+ $(TEX) $< $(COL)
+%.pdf: %.tex
+%.pdf: %.tex $(TEXFILES) $(PICS) $(PDF_FIGS)
+ $(PDFTEX) $<
+
+%.ps: %.dvi
+%.ps: %.dvi
+ $(DVIPS) $< -o $@
+
+%.bbl: %.bib
+%.bbl: %.bib
+ $(if $(wildcard $(BASE).aux), $(BIBTEX) $* )
+
+%.ind: %.idx
+%.ind: %.idx
+ $(MAKE_IND) -o $@ $<
+
+%.eps: %.fig
+%.eps: %.fig
+ $(FIG2DEV) -Leps -l dummy $< $@
+
+%.ps: %.fig
+%.ps: %.fig
+ $(FIG2DEV) -Lps -l dummy $< $@
+
+%.png: %.fig
+%.png: %.fig
+ $(FIG2DEV) -Lpng -l dummy $< $@
+
+# %.pdf: %.fig
+# %.pdf: %.fig
+# $(FIG2DEV) -Lpdf -l dummy $< $@
+
+%.eps: %.ps
+%.eps: %.ps
+ $(PS2EPSI) $< $@
+
+%.pdf: %.eps
+%.pdf: %.eps
+ $(EPSTOPDF) $<
+
+#####################################################################
+# short targets
+
+s: show
+d: slides
+b: bib
+a: again
+t: touch
+e: edit
+E: Edit
+p: print
+p2: print2
+
+ps: $(BASE).ps
+pdf: $(BASE).pdf
+dvi: $(BASE).dvi
+tex: $(BASE).tex
+ind: $(BASE).ind
+bbl: $(BASE).bbl
+aux: $(BASE).aux
+
+#####################################################################
+# targets
+
+spell:
+ @$(SPELL) $(TEXFILES)
+
+print: $(BASE).ps
+ @$(LPR) $(BASE).ps
+
+touch:
+ @$(TOUCH) $(TEXFILES) $(BIBFILES)
+
+edit:
+ @$(ENV) $(EDITOR) `cat FILES` $(BIBFILES) &
+ @echo "name: $(EDITOR)"
+
+Edit:
+ @$(ENV) $(EDITOR) $(TEXFILES) $(BIBFILES) \
+ $(wildcard GNUmakefile* makefile* Makefile*) &
+
+#--------------------------------------------------
+# if an xdvi starts, it creates an XDVI_LOCK file.
+# if this exists, it does not start a new process.
+# if xdvi finishes, it removes the XDVI_LOCK file.
+#
+show: $(BASE).dvi
+ @if [ ! -r $(XDVI_LOCK) ]; then \
+ ($(TOUCH) $(XDVI_LOCK) ; \
+ $(ENV) $(XDVI) $(BASE).dvi ; \
+ $(RM) $(XDVI_LOCK) ; \
+ )& \
+ fi
+ - at gvim --servername XDVI-$(BASE) --remote-send "<ESC>:call XDVI_jump()<CR>i"
+
+slides: $(BASE).pdf
+ @if [ ! -r $(ACRO_LOCK) ]; then \
+ ($(TOUCH) $(ACRO_LOCK) && \
+ $(ACRO) $(BASE).pdf && \
+ $(RM) $(ACRO_LOCK) ; \
+ )& \
+ fi
+
+again:
+ $(MAKE) -W $(BASE).tex $(filter-out again, $(MAKECMDGOALS))
+
+fine:
+ @$(MAKE) distclean
+ @$(MAKE) dvi again
+ @$(MAKE) ind
+ @$(MAKE) bib
+ @$(MAKE) again dvi
+ @$(MAKE) again dvi
+ -@$(MAKE) again pdf
+ @$(MAKE) again pdf
+ @$(MAKE) ps
+
+clean:
+ @$(MAKE) figclean
+ @$(RM) $(BASE).m* \
+ *.{aux,blg,bbl,log,toc,err,idx,bak,ilg,ind,lof,lot,out} \
+ *.{bmt,loe,glo} \
+ .*.sw[po] *~
+
+distclean:
+ @$(MAKE) clean
+ @$(RM) $(BASE).{bak,dvi,ps,pdf,tex.bak}
+ @$(RM) $(XDVI_LOCK) $(ACRO_LOCK)
+
+figclean:
+ @$(RM) $(TEX_FIGS) $(PDF_FIGS)
+
+bib:
+ - at for file in $(AUXS) ; do $(BIBTEX) $$file ; done
+
+#####################################################################
+# dependencies
+
+$(BASE).aux: $(BASE).dvi
+$(BASE).log: $(BASE).dvi
+$(BASE).toc: $(BASE).dvi
+$(BASE).idx: $(BASE).dvi
+
+test:
+ @echo PDF_PICS: $(PDF_FIGS)
Property changes on: papers/CPC/saga_engine_2006/Makefile
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
File [added]: The SAGA C++ Reference Implementation.ppt
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/The SAGA C++ Reference Implementation.ppt
___________________________________________________________________
Name: svn:mime-type
+ application/vnd.ms-powerpoint
File [added]: acm_proc_article-sp.cls
Delta lines: +1413 -0
===================================================================
--- papers/CPC/saga_engine_2006/acm_proc_article-sp.cls 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/acm_proc_article-sp.cls 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,1413 @@
+% SIG-ALTERNATE.CLS - VERSION 1.8
+% "COMPATIBLE" WITH THE "ACM_PROC_ARTICLE-SP.CLS" V2.7SP
+% Gerald Murray July 26th. 2005
+%
+% ---- Start of 'updates' ----
+%
+% Allowance made to switch default fonts between those systems using
+% METAFONT and those using 'Type 1' or 'Truetype' fonts.
+% See LINE NUMBER 252 for details.
+% Also provided for enumerated/annotated Corollaries 'surrounded' by
+% enumerated Theorems (line 841).
+% Gerry November 11th. 1999
+%
+% Made the Permission Statement / Conference Info / Copyright Info
+% 'user definable' in the source .tex file OR automatic if
+% not specified.
+%
+% Georgia fixed bug in sub-sub-section numbering in paragraphs (July 29th. 2002)
+% JS/GM fix to vertical spacing before Proofs (July 30th. 2002)
+%
+% Footnotes inside table cells using \minipage (Oct. 2002)
+%
+% ---- End of 'updates' ----
+%
+\def\fileversion{v1.8} % for ACM's tracking purposes
+\def\filedate{July 26, 2005} % Gerry Murray's tracking data
+\def\docdate {Tuesday 26th. July 2005} % Gerry Murray (with deltas to doc}
+\usepackage{epsfig}
+\usepackage{amssymb}
+\usepackage{amsmath}
+\usepackage{amsfonts}
+%
+% SIG-ALTERNATE DOCUMENT STYLE
+% G.K.M. Tobin August-October 1999
+% adapted from ARTICLE document style by Ken Traub, Olin Shivers
+% also using elements of esub2acm.cls
+% HEAVILY MODIFIED, SUBSEQUENTLY, BY GERRY MURRAY 2000
+% ARTICLE DOCUMENT STYLE -- Released 16 March 1988
+% for LaTeX version 2.09
+% Copyright (C) 1988 by Leslie Lamport
+%
+%
+%%% sig-alternate.cls is an 'ALTERNATE' document style for producing
+%%% two-column camera-ready pages for ACM conferences.
+%%% THIS FILE DOES NOT STRICTLY ADHERE TO THE SIGS (BOARD-ENDORSED)
+%%% PROCEEDINGS STYLE. It has been designed to produce a 'tighter'
+%%% paper in response to concerns over page budgets.
+%%% The main features of this style are:
+%%%
+%%% 1) Two columns.
+%%% 2) Side and top margins of 4.5pc, bottom margin of 6pc, column gutter of
+%%% 2pc, hence columns are 20pc wide and 55.5pc tall. (6pc =3D 1in, approx)
+%%% 3) First page has title information, and an extra 6pc of space at the
+%%% bottom of the first column for the ACM copyright notice.
+%%% 4) Text is 9pt on 10pt baselines; titles (except main) are 9pt bold.
+%%%
+%%%
+%%% There are a few restrictions you must observe:
+%%%
+%%% 1) You cannot change the font size; ACM wants you to use 9pt.
+%%% 3) You must start your paper with the \maketitle command. Prior to the
+%%% \maketitle you must have \title and \author commands. If you have a
+%%% \date command it will be ignored; no date appears on the paper, since
+%%% the proceedings will have a date on the front cover.
+%%% 4) Marginal paragraphs, tables of contents, lists of figures and tables,
+%%% and page headings are all forbidden.
+%%% 5) The `figure' environment will produce a figure one column wide; if you
+%%% want one that is two columns wide, use `figure*'.
+%%%
+%
+%%% Copyright Space:
+%%% This style automatically reserves 1" blank space at the bottom of page 1/
+%%% column 1. This space can optionally be filled with some text using the
+%%% \toappear{...} command. If used, this command must be BEFORE the \maketitle
+%%% command. If this command is defined AND [preprint] is on, then the
+%%% space is filled with the {...} text (at the bottom); otherwise, it is
+%%% blank. If you use \toappearbox{...} instead of \toappear{...} then a
+%%% box will be drawn around the text (if [preprint] is on).
+%%%
+%%% A typical usage looks like this:
+%%% \toappear{To appear in the Ninth AES Conference on Medievil Lithuanian
+%%% Embalming Technique, June 1991, Alfaretta, Georgia.}
+%%% This will be included in the preprint, and left out of the conference
+%%% version.
+%%%
+%%% WARNING:
+%%% Some dvi-ps converters heuristically allow chars to drift from their
+%%% true positions a few pixels. This may be noticeable with the 9pt sans-serif
+%%% bold font used for section headers.
+%%% You may turn this hackery off via the -e option:
+%%% dvips -e 0 foo.dvi >foo.ps
+%%%
+\typeout{Document Class 'sig-alternate' <26th. July '05>. Modified by G.K.M. Tobin/Gerry Murray}
+\typeout{Based in part upon document Style `acmconf' <22 May 89>. Hacked 4/91 by}
+\typeout{shivers at cs.cmu.edu, 4/93 by theobald at cs.mcgill.ca}
+\typeout{Excerpts were taken from (Journal Style) 'esub2acm.cls'.}
+\typeout{****** Bugs/comments/suggestions/technicalities to Gerry Murray -- murray at hq.acm.org ******}
+\typeout{Questions on the style, SIGS policies, etc. to Adrienne Griscti griscti at acm.org}
+\oddsidemargin 4.5pc
+\evensidemargin 4.5pc
+\advance\oddsidemargin by -1in % Correct for LaTeX gratuitousness
+\advance\evensidemargin by -1in % Correct for LaTeX gratuitousness
+\marginparwidth 0pt % Margin pars are not allowed.
+\marginparsep 11pt % Horizontal space between outer margin and
+ % marginal note
+
+ % Top of page:
+\topmargin 4.5pc % Nominal distance from top of page to top of
+ % box containing running head.
+\advance\topmargin by -1in % Correct for LaTeX gratuitousness
+\headheight 0pt % Height of box containing running head.
+\headsep 0pt % Space between running head and text.
+ % Bottom of page:
+\footskip 30pt % Distance from baseline of box containing foot
+ % to baseline of last line of text.
+\@ifundefined{footheight}{\newdimen\footheight}{}% this is for LaTeX2e
+\footheight 12pt % Height of box containing running foot.
+
+%% Must redefine the top margin so there's room for headers and
+%% page numbers if you are using the preprint option. Footers
+%% are OK as is. Olin.
+\advance\topmargin by -37pt % Leave 37pt above text for headers
+\headheight 12pt % Height of box containing running head.
+\headsep 25pt % Space between running head and text.
+
+\textheight 666pt % 9 1/4 column height
+\textwidth 42pc % Width of text line.
+ % For two-column mode:
+\columnsep 2pc % Space between columns
+\columnseprule 0pt % Width of rule between columns.
+\hfuzz 1pt % Allow some variation in column width, otherwise it's
+ % too hard to typeset in narrow columns.
+
+\footnotesep 5.6pt % Height of strut placed at the beginning of every
+ % footnote =3D height of normal \footnotesize strut,
+ % so no extra space between footnotes.
+
+\skip\footins 8.1pt plus 4pt minus 2pt % Space between last line of text and
+ % top of first footnote.
+\floatsep 11pt plus 2pt minus 2pt % Space between adjacent floats moved
+ % to top or bottom of text page.
+\textfloatsep 18pt plus 2pt minus 4pt % Space between main text and floats
+ % at top or bottom of page.
+\intextsep 11pt plus 2pt minus 2pt % Space between in-text figures and
+ % text.
+\@ifundefined{@maxsep}{\newdimen\@maxsep}{}% this is for LaTeX2e
+\@maxsep 18pt % The maximum of \floatsep,
+ % \textfloatsep and \intextsep (minus
+ % the stretch and shrink).
+\dblfloatsep 11pt plus 2pt minus 2pt % Same as \floatsep for double-column
+ % figures in two-column mode.
+\dbltextfloatsep 18pt plus 2pt minus 4pt% \textfloatsep for double-column
+ % floats.
+\@ifundefined{@dblmaxsep}{\newdimen\@dblmaxsep}{}% this is for LaTeX2e
+\@dblmaxsep 18pt % The maximum of \dblfloatsep and
+ % \dbltexfloatsep.
+\@fptop 0pt plus 1fil % Stretch at top of float page/column. (Must be
+ % 0pt plus ...)
+\@fpsep 8pt plus 2fil % Space between floats on float page/column.
+\@fpbot 0pt plus 1fil % Stretch at bottom of float page/column. (Must be
+ % 0pt plus ... )
+\@dblfptop 0pt plus 1fil % Stretch at top of float page. (Must be 0pt plus ...)
+\@dblfpsep 8pt plus 2fil % Space between floats on float page.
+\@dblfpbot 0pt plus 1fil % Stretch at bottom of float page. (Must be
+ % 0pt plus ... )
+\marginparpush 5pt % Minimum vertical separation between two marginal
+ % notes.
+
+\parskip 0pt plus 1pt % Extra vertical space between paragraphs.
+\parindent 9pt % GM July 2000 / was 0pt - width of paragraph indentation.
+\partopsep 2pt plus 1pt minus 1pt% Extra vertical space, in addition to
+ % \parskip and \topsep, added when user
+ % leaves blank line before environment.
+
+\@lowpenalty 51 % Produced by \nopagebreak[1] or \nolinebreak[1]
+\@medpenalty 151 % Produced by \nopagebreak[2] or \nolinebreak[2]
+\@highpenalty 301 % Produced by \nopagebreak[3] or \nolinebreak[3]
+
+\@beginparpenalty -\@lowpenalty % Before a list or paragraph environment.
+\@endparpenalty -\@lowpenalty % After a list or paragraph environment.
+\@itempenalty -\@lowpenalty % Between list items.
+
+\@namedef{ds at 10pt}{\@latexerr{The `10pt' option is not allowed in the `acmconf'
+ document style.}\@eha}
+\@namedef{ds at 11pt}{\@latexerr{The `11pt' option is not allowed in the `acmconf'
+ document style.}\@eha}
+\@namedef{ds at 12pt}{\@latexerr{The `12pt' option is not allowed in the `acmconf'
+ document style.}\@eha}
+
+\@options
+
+\lineskip 2pt % \lineskip is 1pt for all font sizes.
+\normallineskip 2pt
+\def\baselinestretch{1}
+
+\abovedisplayskip 9pt plus2pt minus4.5pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt%
+\belowdisplayshortskip 5.4pt plus3pt minus3pt%
+\let\@listi\@listI % Setting of \@listi added 9 Jun 87
+
+\def\small{\@setsize\small{9pt}\viiipt\@viiipt
+\abovedisplayskip 7.6pt plus 3pt minus 4pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus2pt%
+\belowdisplayshortskip 3.6pt plus2pt minus 2pt
+\def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87
+\topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt
+\itemsep \parsep}}
+
+\def\footnotesize{\@setsize\footnotesize{9pt}\ixpt\@ixpt
+\abovedisplayskip 6.4pt plus 2pt minus 4pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus 1pt%
+\belowdisplayshortskip 2.7pt plus 1pt minus 2pt
+\def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87
+\topsep 3pt plus 1pt minus 1pt\parsep 2pt plus 1pt minus 1pt
+\itemsep \parsep}}
+
+\newcount\aucount
+\newcount\originalaucount
+\newdimen\auwidth
+\auwidth=\textwidth
+\newdimen\auskip
+\newcount\auskipcount
+\newdimen\auskip
+\global\auskip=1pc
+\newdimen\allauboxes
+\allauboxes=\auwidth
+\newtoks\addauthors
+\newcount\addauflag
+\global\addauflag=0 %Haven't shown additional authors yet
+
+\newtoks\subtitletext
+\gdef\subtitle#1{\subtitletext={#1}}
+
+\gdef\additionalauthors#1{\addauthors={#1}}
+
+\gdef\numberofauthors#1{\global\aucount=#1
+\ifnum\aucount>3\global\originalaucount=\aucount \global\aucount=3\fi %g}
+\global\auskipcount=\aucount\global\advance\auskipcount by 1
+\global\multiply\auskipcount by 2
+\global\multiply\auskip by \auskipcount
+\global\advance\auwidth by -\auskip
+\global\divide\auwidth by \aucount}
+
+% \and was modified to count the number of authors. GKMT 12 Aug 1999
+\def\alignauthor{% % \begin{tabular}
+\end{tabular}%
+ \begin{tabular}[t]{p{\auwidth}}\centering}%
+
+% *** NOTE *** NOTE *** NOTE *** NOTE ***
+% If you have 'font problems' then you may need
+% to change these, e.g. 'arialb' instead of "arialbd".
+% Gerry Murray 11/11/1999
+% *** OR ** comment out block A and activate block B or vice versa.
+% **********************************************
+%
+% -- Start of block A -- (Type 1 or Truetype fonts)
+%\newfont{\secfnt}{timesbd at 12pt} % was timenrb originally - now is timesbd
+%\newfont{\secit}{timesbi at 12pt} %13 Jan 00 gkmt
+%\newfont{\subsecfnt}{timesi at 11pt} % was timenrri originally - now is timesi
+%\newfont{\subsecit}{timesbi at 11pt} % 13 Jan 00 gkmt -- was times changed to timesbi gm 2/4/2000
+% % because "normal" is italic, "italic" is Roman
+%\newfont{\ttlfnt}{arialbd at 18pt} % was arialb originally - now is arialbd
+%\newfont{\ttlit}{arialbi at 18pt} % 13 Jan 00 gkmt
+%\newfont{\subttlfnt}{arial at 14pt} % was arialr originally - now is arial
+%\newfont{\subttlit}{ariali at 14pt} % 13 Jan 00 gkmt
+%\newfont{\subttlbf}{arialbd at 14pt} % 13 Jan 00 gkmt
+%\newfont{\aufnt}{arial at 12pt} % was arialr originally - now is arial
+%\newfont{\auit}{ariali at 12pt} % 13 Jan 00 gkmt
+%\newfont{\affaddr}{arial at 10pt} % was arialr originally - now is arial
+%\newfont{\affaddrit}{ariali at 10pt} %13 Jan 00 gkmt
+%\newfont{\eaddfnt}{arial at 12pt} % was arialr originally - now is arial
+%\newfont{\ixpt}{times at 9pt} % was timenrr originally - now is times
+%\newfont{\confname}{timesi at 8pt} % was timenrri - now is timesi
+%\newfont{\crnotice}{times at 8pt} % was timenrr originally - now is times
+%\newfont{\ninept}{times at 9pt} % was timenrr originally - now is times
+
+% *********************************************
+% -- End of block A --
+%
+%
+% -- Start of block B -- METAFONT
+% +++++++++++++++++++++++++++++++++++++++++++++
+% Next (default) block for those using Metafont
+% Gerry Murray 11/11/1999
+% *** THIS BLOCK FOR THOSE USING METAFONT *****
+% *********************************************
+%\newfont{\secfnt}{ptmb at 12pt}
+%\newfont{\secit}{ptmbi at 12pt} %13 Jan 00 gkmt
+%\newfont{\subsecfnt}{ptmri at 11pt}
+%\newfont{\subsecit}{ptmbi at 11pt} % 13 Jan 00 gkmt -- was ptmr changed to ptmbi gm 2/4/2000
+ % because "normal" is italic, "italic" is Roman
+%\newfont{\ttlfnt}{phvb at 18pt}
+%\newfont{\ttlit}{phvbo at 18pt} % GM 2/4/2000
+%\newfont{\subttlfnt}{phvr at 14pt}
+%\newfont{\subttlit}{phvro at 14pt} % GM 2/4/2000
+%\newfont{\subttlbf}{phvb at 14pt} % 13 Jan 00 gkmt
+%\newfont{\aufnt}{phvr at 12pt}
+%\newfont{\auit}{phvro at 12pt} % GM 2/4/2000
+%\newfont{\affaddr}{phvr at 10pt}
+%\newfont{\affaddrit}{phvro at 10pt} % GM 2/4/2000
+%\newfont{\eaddfnt}{phvr at 12pt}
+%\newfont{\ixpt}{ptmr at 9pt}
+%\newfont{\confname}{ptmri at 8pt}
+%\newfont{\crnotice}{ptmr at 8pt}
+%\newfont{\ninept}{ptmr at 9pt}
+% +++++++++++++++++++++++++++++++++++++++++++++
+% -- End of block B --
+% -- Start of block C -- New MikTex METAFONT
+% +++++++++++++++++++++++++++++++++++++++++++++
+% Next (default) block for those using Metafont
+% Giovanni Iachello 8/12/2005, 11/4/2005
+% *** THIS BLOCK FOR THOSE USING METAFONT *****
+% *********************************************
+\DeclareFixedFont{\secfnt}{T1}{ptm}{b}{n}{12}
+%\newfont{\secfnt}{ptmb at 12pt}
+\DeclareFixedFont{\secit}{T1}{ptm}{b}{it}{12}
+%\newfont{\secit}{ptmbi at 12pt} %13 Jan 00 gkmt
+\DeclareFixedFont{\subsecfnt}{T1}{ptm}{m}{it}{11}
+%\newfont{\subsecfnt}{ptmri at 11pt}
+\DeclareFixedFont{\subsecit}{T1}{ptm}{b}{it}{11}
+%\newfont{\subsecit}{ptmbi at 11pt} % 13 Jan 00 gkmt -- was ptmr changed to ptmbi gm 2/4/2000
+ % because "normal" is italic, "italic" is Roman
+\DeclareFixedFont{\ttlfnt}{T1}{phv}{b}{n}{18}
+%\newfont{\ttlfnt}{phvb at 18pt}
+\DeclareFixedFont{\ttlit}{T1}{phv}{b}{sl}{18}
+%\newfont{\ttlit}{phvbo at 18pt} % GM 2/4/2000
+\DeclareFixedFont{\subttlfnt}{T1}{phv}{m}{n}{14}
+%\newfont{\subttlfnt}{phvr at 14pt}
+\DeclareFixedFont{\subttlit}{T1}{phv}{m}{sl}{14}
+%\newfont{\subttlit}{phvro at 14pt} % GM 2/4/2000
+\DeclareFixedFont{\subttlbf}{T1}{phv}{b}{n}{14}
+%\newfont{\subttlbf}{phvb at 14pt} % 13 Jan 00 gkmt
+\DeclareFixedFont{\aufnt}{T1}{phv}{m}{n}{12}
+%\newfont{\aufnt}{phvr at 12pt}
+\DeclareFixedFont{\auit}{T1}{phv}{m}{sl}{12}
+%\newfont{\auit}{phvro at 12pt} % GM 2/4/2000
+\DeclareFixedFont{\affaddr}{T1}{phv}{m}{n}{10}
+%\newfont{\affaddr}{phvr at 10pt}
+\DeclareFixedFont{\afffaddrit}{T1}{phv}{m}{sl}{10}
+%\newfont{\affaddrit}{phvro at 10pt} % GM 2/4/2000
+\DeclareFixedFont{\eaddfnt}{T1}{phv}{m}{n}{12}
+%\newfont{\eaddfnt}{phvr at 12pt}
+\DeclareFixedFont{\ixpt}{T1}{ptm}{m}{n}{9}
+%\newfont{\ixpt}{ptmr at 9pt}
+\DeclareFixedFont{\confname}{T1}{ptm}{m}{it}{8}
+%\newfont{\confname}{ptmri at 8pt}
+\DeclareFixedFont{\crnotice}{T1}{ptm}{m}{n}{8}
+%\newfont{\crnotice}{ptmr at 8pt}
+\DeclareFixedFont{\ninept}{T1}{ptm}{m}{n}{9}
+%\newfont{\ninept}{ptmr at 9pt}
+% +++++++++++++++++++++++++++++++++++++++++++++
+% -- End of block C --
+
+
+\def\email#1{{{\eaddfnt{\vskip 4pt#1}}}}
+
+\def\addauthorsection{\ifnum\originalaucount>3
+ \section{Additional Authors}\the\addauthors
+ \fi}
+
+\newcount\savesection
+\newcount\sectioncntr
+\global\sectioncntr=1
+
+\setcounter{secnumdepth}{3}
+
+\def\appendix{\par
+\section*{APPENDIX}
+\setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\thesection{\Alph{section}} }
+
+\leftmargini 22.5pt
+\leftmarginii 19.8pt % > \labelsep + width of '(m)'
+\leftmarginiii 16.8pt % > \labelsep + width of 'vii.'
+\leftmarginiv 15.3pt % > \labelsep + width of 'M.'
+\leftmarginv 9pt
+\leftmarginvi 9pt
+
+\leftmargin\leftmargini
+\labelsep 4.5pt
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+
+\def\@listI{\leftmargin\leftmargini \parsep 3.6pt plus 2pt minus 1pt%
+\topsep 7.2pt plus 2pt minus 4pt%
+\itemsep 3.6pt plus 2pt minus 1pt}
+
+\let\@listi\@listI
+\@listi
+
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 3.6pt plus 2pt minus 1pt
+ \parsep 1.8pt plus 0.9pt minus 0.9pt
+ \itemsep \parsep}
+
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 1.8pt plus 0.9pt minus 0.9pt
+ \parsep \z@ \partopsep 1pt plus 0pt minus 1pt
+ \itemsep \topsep}
+
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+
+\def\labelenumi{\theenumi.}
+\def\theenumi{\arabic{enumi}}
+
+\def\labelenumii{(\theenumii)}
+\def\theenumii{\alph{enumii}}
+\def\p at enumii{\theenumi}
+
+\def\labelenumiii{\theenumiii.}
+\def\theenumiii{\roman{enumiii}}
+\def\p at enumiii{\theenumi(\theenumii)}
+
+\def\labelenumiv{\theenumiv.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p at enumiv{\p at enumiii\theenumiii}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+
+\def\quotation{\list{}{\listparindent 1.5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+
+\let\enddescription\endlist
+
+\def\theequation{\arabic{equation}}
+
+\arraycolsep 4.5pt % Half the space between columns in an array environment.
+\tabcolsep 5.4pt % Half the space between columns in a tabular environment.
+\arrayrulewidth .4pt % Width of rules in array and tabular environment.
+\doublerulesep 1.8pt % Space between adjacent rules in array or tabular env.
+
+\tabbingsep \labelsep % Space used by the \' command. (See LaTeX manual.)
+
+\skip\@mpfootins =\skip\footins
+
+\fboxsep =2.7pt % Space left between box and text by \fbox and \framebox.
+\fboxrule =.4pt % Width of rules in box made by \fbox and \framebox.
+
+\def\thepart{\Roman{part}} % Roman numeral part numbers.
+\def\thesection {\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+%\def\thesubsubsection {\thesubsection.\arabic{subsubsection}} % GM 7/30/2002
+%\def\theparagraph {\thesubsubsection.\arabic{paragraph}} % GM 7/30/2002
+\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+
+\def\tableofcontents{\@latexerr{\tableofcontents: Tables of contents are not
+ allowed in the `acmconf' document style.}\@eha}
+
+\def\l at part#1#2{\addpenalty{\@secpenalty}
+ \addvspace{2.25em plus 1pt} % space above part line
+ \begingroup
+ \@tempdima 3em % width of box holding part number, used by
+ \parindent \z@ \rightskip \@pnumwidth %% \numberline
+ \parfillskip -\@pnumwidth
+ {\large \bf % set line in \large boldface
+ \leavevmode % TeX command to enter horizontal mode.
+ #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
+ \nobreak % Never break after part entry
+ \endgroup}
+
+\def\l at section#1#2{\addpenalty{\@secpenalty} % good place for page break
+ \addvspace{1.0em plus 1pt} % space above toc entry
+ \@tempdima 1.5em % width of box holding section number
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \bf % Boldface.
+ \leavevmode % TeX command to enter horizontal mode.
+ \advance\leftskip\@tempdima %% added 5 Feb 88 to conform to
+ \hskip -\leftskip %% 25 Jan 88 change to \numberline
+ #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+
+
+\def\l at subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\def\l at subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\def\l at paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
+\def\l at subparagraph{\@dottedtocline{5}{10em}{5em}}
+
+\def\listoffigures{\@latexerr{\listoffigures: Lists of figures are not
+ allowed in the `acmconf' document style.}\@eha}
+
+\def\l at figure{\@dottedtocline{1}{1.5em}{2.3em}}
+
+\def\listoftables{\@latexerr{\listoftables: Lists of tables are not
+ allowed in the `acmconf' document style.}\@eha}
+\let\l at table\l at figure
+
+\def\footnoterule{\kern-3\p@
+ \hrule width .4\columnwidth
+ \kern 2.6\p@} % The \hrule has default height of .4pt .
+% ------
+\long\def\@makefntext#1{\noindent
+%\hbox to .5em{\hss$^{\@thefnmark}$}#1} % original
+\hbox to .5em{\hss\textsuperscript{\@thefnmark}}#1} % C. Clifton / GM Oct. 2nd. 2002
+% -------
+
+\long\def\@maketntext#1{\noindent
+#1}
+
+\long\def\@maketitlenotetext#1#2{\noindent
+ \hbox to 1.8em{\hss$^{#1}$}#2}
+
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+%
+\long\def\@makecaption#1#2{
+ \vskip \baselineskip
+ \setbox\@tempboxa\hbox{\textbf{#1: #2}}
+ \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
+ \textbf{#1: #2}\par % THEN set as ordinary paragraph.
+ \else % ELSE center.
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}\par
+ \fi}
+
+%
+
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{\textbf{#1: #2}}
+ \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
+ \textbf{#1: #2}\par % THEN set as ordinary paragraph.
+ \else % ELSE center.
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+\@ifundefined{figure}{\newcounter {figure}} % this is for LaTeX2e
+
+\def\fps at figure{tbp}
+\def\ftype at figure{1}
+\def\ext at figure{lof}
+\def\fnum at figure{Figure \thefigure}
+\def\figure{\@float{figure}}
+\let\endfigure\end at float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end at dblfloat}
+
+\@ifundefined{table}{\newcounter {table}} % this is for LaTeX2e
+
+\def\fps at table{tbp}
+\def\ftype at table{2}
+\def\ext at table{lot}
+\def\fnum at table{Table \thetable}
+\def\table{\@float{table}}
+\let\endtable\end at float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end at dblfloat}
+
+\newtoks\titleboxnotes
+\newcount\titleboxnoteflag
+
+\def\maketitle{\par
+ \begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox
+ to 0pt{$^{\@thefnmark}$\hss}}
+ \twocolumn[\@maketitle]
+\@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\gdef\@subtitle{}\let\thanks\relax
+ \@copyrightspace}
+
+%% CHANGES ON NEXT LINES
+\newif\if at ll % to record which version of LaTeX is in use
+
+\expandafter\ifx\csname LaTeXe\endcsname\relax % LaTeX2.09 is used
+\else% LaTeX2e is used, so set ll to true
+\global\@lltrue
+\fi
+
+\if at ll
+ \NeedsTeXFormat{LaTeX2e}
+ \ProvidesClass{sig-alternate} [2005/26/07 - V1.8 - based on acmproc.cls V1.3 <Nov. 30 '99>]
+ \RequirePackage{latexsym}% QUERY: are these two really needed?
+ \let\dooptions\ProcessOptions
+\else
+ \let\dooptions\@options
+\fi
+%% END CHANGES
+
+\def\@height{height}
+\def\@width{width}
+\def\@minus{minus}
+\def\@plus{plus}
+\def\hb at xt@{\hbox to}
+\newif\if at faircopy
+\@faircopyfalse
+\def\ds at faircopy{\@faircopytrue}
+
+\def\ds at preprint{\@faircopyfalse}
+
+\@twosidetrue
+\@mparswitchtrue
+\def\ds at draft{\overfullrule 5\p@}
+%% CHANGE ON NEXT LINE
+\dooptions
+
+\lineskip \p@
+\normallineskip \p@
+\def\baselinestretch{1}
+\def\@ptsize{0} %needed for amssymbols.sty
+
+%% CHANGES ON NEXT LINES
+\if at ll% allow use of old-style font change commands in LaTeX2e
+\@maxdepth\maxdepth
+%
+\DeclareOldFontCommand{\rm}{\ninept\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
+\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
+\fi
+%
+\if at ll
+ \renewcommand{\rmdefault}{cmr} % was 'ttm'
+% Note! I have also found 'mvr' to work ESPECIALLY well.
+% Gerry - October 1999
+% You may need to change your LV1times.fd file so that sc is
+% mapped to cmcsc - -for smallcaps -- that is if you decide
+% to change {cmr} to {times} above. (Not recommended)
+ \renewcommand{\@ptsize}{}
+ \renewcommand{\normalsize}{%
+ \@setfontsize\normalsize\@ixpt{10.5\p@}%\ninept%
+ \abovedisplayskip 6\p@ \@plus2\p@ \@minus\p@
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 6\p@ \@minus 3\p@
+ \belowdisplayshortskip 6\p@ \@minus 3\p@
+ \let\@listi\@listI
+ }
+\else
+ \def\@normalsize{%changed next to 9 from 10
+ \@setsize\normalsize{9\p@}\ixpt\@ixpt
+ \abovedisplayskip 6\p@ \@plus2\p@ \@minus\p@
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 6\p@ \@minus 3\p@
+ \belowdisplayshortskip 6\p@ \@minus 3\p@
+ \let\@listi\@listI
+ }%
+\fi
+\if at ll
+ \newcommand\scriptsize{\@setfontsize\scriptsize\@viipt{8\p@}}
+ \newcommand\tiny{\@setfontsize\tiny\@vpt{6\p@}}
+ \newcommand\large{\@setfontsize\large\@xiipt{14\p@}}
+ \newcommand\Large{\@setfontsize\Large\@xivpt{18\p@}}
+ \newcommand\LARGE{\@setfontsize\LARGE\@xviipt{20\p@}}
+ \newcommand\huge{\@setfontsize\huge\@xxpt{25\p@}}
+ \newcommand\Huge{\@setfontsize\Huge\@xxvpt{30\p@}}
+\else
+ \def\scriptsize{\@setsize\scriptsize{8\p@}\viipt\@viipt}
+ \def\tiny{\@setsize\tiny{6\p@}\vpt\@vpt}
+ \def\large{\@setsize\large{14\p@}\xiipt\@xiipt}
+ \def\Large{\@setsize\Large{18\p@}\xivpt\@xivpt}
+ \def\LARGE{\@setsize\LARGE{20\p@}\xviipt\@xviipt}
+ \def\huge{\@setsize\huge{25\p@}\xxpt\@xxpt}
+ \def\Huge{\@setsize\Huge{30\p@}\xxvpt\@xxvpt}
+\fi
+\normalsize
+
+% make aubox hsize/number of authors up to 3, less gutter
+% then showbox gutter showbox gutter showbox -- GKMT Aug 99
+\newbox\@acmtitlebox
+\def\@maketitle{\newpage
+ \null
+ \setbox\@acmtitlebox\vbox{%
+\baselineskip 20pt
+\vskip 2em % Vertical space above title.
+ \begin{center}
+ {\ttlfnt \@title\par} % Title set in 18pt Helvetica (Arial) bold size.
+ \vskip 1.5em % Vertical space after title.
+%This should be the subtitle.
+{\subttlfnt \the\subtitletext\par}\vskip 1.25em%\fi
+ {\baselineskip 16pt\aufnt % each author set in \12 pt Arial, in a
+ \lineskip .5em % tabular environment
+ \begin{tabular}[t]{c}\@author
+ \end{tabular}\par}
+ \vskip 1.5em % Vertical space after author.
+ \end{center}}
+ \dimen0=\ht\@acmtitlebox
+ \advance\dimen0 by -12.75pc\relax % Increased space for title box -- KBT
+ \unvbox\@acmtitlebox
+ \ifdim\dimen0<0.0pt\relax\vskip-\dimen0\fi}
+
+
+\newcount\titlenotecount
+\global\titlenotecount=0
+\newtoks\tntoks
+\newtoks\tntokstwo
+\newtoks\tntoksthree
+\newtoks\tntoksfour
+\newtoks\tntoksfive
+
+\def\abstract{
+\ifnum\titlenotecount>0 % was =1
+ \insert\footins{%
+ \reset at font\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \protected at edef\@currentlabel{%
+ }%
+ \color at begingroup
+\ifnum\titlenotecount=1
+ \@maketntext{%
+ \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=2
+ \@maketntext{%
+ \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}%
+\@maketntext{%
+ \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=3
+ \@maketntext{%
+ \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}%
+\@maketntext{%
+ \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}%
+\@maketntext{%
+ \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=4
+ \@maketntext{%
+ \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}%
+\@maketntext{%
+ \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}%
+\@maketntext{%
+ \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\par\@finalstrut\strutbox}%
+\@maketntext{%
+ \raisebox{4pt}{$\S$}\rule\z@\footnotesep\ignorespaces\the\tntoksfour\@finalstrut\strutbox}%
+\fi
+\ifnum\titlenotecount=5
+ \@maketntext{%
+ \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}%
+\@maketntext{%
+ \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}%
+\@maketntext{%
+ \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\par\@finalstrut\strutbox}%
+\@maketntext{%
+ \raisebox{4pt}{$\S$}\rule\z@\footnotesep\ignorespaces\the\tntoksfour\par\@finalstrut\strutbox}%
+\@maketntext{%
+ \raisebox{4pt}{$\P$}\rule\z@\footnotesep\ignorespaces\the\tntoksfive\@finalstrut\strutbox}%
+\fi
+ \color at endgroup} %g}
+\fi
+\setcounter{footnote}{0}
+\section*{ABSTRACT}\normalsize%\ninept
+}
+
+\def\endabstract{\if at twocolumn\else\endquotation\fi}
+
+\def\keywords{\if at twocolumn
+\section*{Keywords}
+\else \small
+\quotation
+\fi}
+
+\def\terms{\if at twocolumn
+\section*{General Terms}
+\else \small
+\quotation
+\fi}
+
+% -- Classification needs to be a bit smart due to optionals - Gerry/Georgia November 2nd. 1999
+\newcount\catcount
+\global\catcount=1
+
+\def\category#1#2#3{%
+\ifnum\catcount=1
+\section*{Categories and Subject Descriptors}
+\advance\catcount by 1\else{\unskip; }\fi
+ \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}%
+}
+
+\def\@category#1#2#3[#4]{%
+ \begingroup
+ \let\and\relax
+ #1 [\textbf{#2}]%
+ \if!#4!%
+ \if!#3!\else : #3\fi
+ \else
+ :\space
+ \if!#3!\else #3\kern\z at ---\hskip\z@\fi
+ \textit{#4}%
+ \fi
+ \endgroup
+}
+%
+
+%%% This section (written by KBT) handles the 1" box in the lower left
+%%% corner of the left column of the first page by creating a picture,
+%%% and inserting the predefined string at the bottom (with a negative
+%%% displacement to offset the space allocated for a non-existent
+%%% caption).
+%%%
+\newtoks\copyrightnotice
+\def\ftype at copyrightbox{8}
+\def\@copyrightspace{
+\@float{copyrightbox}[b]
+\begin{center}
+\setlength{\unitlength}{1pc}
+\begin{picture}(20,6) %Space for copyright notice
+\put(0,-0.95){\crnotice{\@toappear}}
+\end{picture}
+\end{center}
+\end at float}
+
+\def\@toappear{} % Default setting blank - commands below change this.
+\long\def\toappear#1{\def\@toappear{\parbox[b]{20pc}{\baselineskip 9pt#1}}}
+\def\toappearbox#1{\def\@toappear{\raisebox{5pt}{\framebox[20pc]{\parbox[b]{19pc}{#1}}}}}
+
+\newtoks\conf
+\newtoks\confinfo
+\def\conferenceinfo#1#2{\global\conf={#1}\global\confinfo{#2}}
+
+
+\def\marginpar{\@latexerr{The \marginpar command is not allowed in the
+ `acmconf' document style.}\@eha}
+
+\mark{{}{}} % Initializes TeX's marks
+
+\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}
+
+\def\@begintheorem#1#2{%
+ \parskip 0pt % GM July 2000 (for tighter spacing)
+ \trivlist
+ \item[%
+ \hskip 10\p@
+ \hskip \labelsep
+ {{\sc #1}\hskip 5\p@\relax#2.}%
+ ]
+ \it
+}
+\def\@opargbegintheorem#1#2#3{%
+ \parskip 0pt % GM July 2000 (for tighter spacing)
+ \trivlist
+ \item[%
+ \hskip 10\p@
+ \hskip \labelsep
+ {\sc #1\ #2\ % This mod by Gerry to enumerate corollaries
+ \setbox\@tempboxa\hbox{(#3)} % and bracket the 'corollary title'
+ \ifdim \wd\@tempboxa>\z@ % and retain the correct numbering of e.g. theorems
+ \hskip 5\p@\relax % if they occur 'around' said corollaries.
+ \box\@tempboxa % Gerry - Nov. 1999.
+ \fi.}%
+ ]
+ \it
+}
+\newif\if at qeded
+\global\@qededfalse
+
+% -- original
+%\def\proof{%
+% \vspace{-\parskip} % GM July 2000 (for tighter spacing)
+% \global\@qededfalse
+% \@ifnextchar[{\@xproof}{\@proof}%
+%}
+% -- end of original
+
+% (JSS) Fix for vertical spacing bug - Gerry Murray July 30th. 2002
+\def\proof{%
+\vspace{-\lastskip}\vspace{-\parsep}\penalty-51%
+\global\@qededfalse
+\@ifnextchar[{\@xproof}{\@proof}%
+}
+
+\def\endproof{%
+ \if at qeded\else\qed\fi
+ \endtrivlist
+}
+\def\@proof{%
+ \trivlist
+ \item[%
+ \hskip 10\p@
+ \hskip \labelsep
+ {\sc Proof.}%
+ ]
+ \ignorespaces
+}
+\def\@xproof[#1]{%
+ \trivlist
+ \item[\hskip 10\p@\hskip \labelsep{\sc Proof #1.}]%
+ \ignorespaces
+}
+\def\qed{%
+ \unskip
+ \kern 10\p@
+ \begingroup
+ \unitlength\p@
+ \linethickness{.4\p@}%
+ \framebox(6,6){}%
+ \endgroup
+ \global\@qededtrue
+}
+
+\def\newdef#1#2{%
+ \expandafter\@ifdefinable\csname #1\endcsname
+ {\@definecounter{#1}%
+ \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
+ \global\@namedef{#1}{\@defthm{#1}{#2}}%
+ \global\@namedef{end#1}{\@endtheorem}%
+ }%
+}
+\def\@defthm#1#2{%
+ \refstepcounter{#1}%
+ \@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}%
+}
+\def\@xdefthm#1#2{%
+ \@begindef{#2}{\csname the#1\endcsname}%
+ \ignorespaces
+}
+\def\@ydefthm#1#2[#3]{%
+ \trivlist
+ \item[%
+ \hskip 10\p@
+ \hskip \labelsep
+ {\it #2%
+ \savebox\@tempboxa{#3}%
+ \ifdim \wd\@tempboxa>\z@
+ \ \box\@tempboxa
+ \fi.%
+ }]%
+ \ignorespaces
+}
+\def\@begindef#1#2{%
+ \trivlist
+ \item[%
+ \hskip 10\p@
+ \hskip \labelsep
+ {\it #1\ \rm #2.}%
+ ]%
+}
+\def\theequation{\arabic{equation}}
+
+\newcounter{part}
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\def\thepart{\Roman{part}}
+\def\thesection{\arabic{section}}
+\def\thesubsection{\thesection.\arabic{subsection}}
+\def\thesubsubsection{\thesubsection.\arabic{subsubsection}} %removed \subsecfnt 29 July 2002 gkmt
+\def\theparagraph{\thesubsubsection.\arabic{paragraph}} %removed \subsecfnt 29 July 2002 gkmt
+\newif\if at uchead
+\@ucheadfalse
+
+%% CHANGES: NEW NOTE
+%% NOTE: OK to use old-style font commands below, since they were
+%% suitably redefined for LaTeX2e
+%% END CHANGES
+\setcounter{secnumdepth}{3}
+\def\part{%
+ \@startsection{part}{9}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}
+ {4\p@}{\normalsize\@ucheadtrue}%
+}
+\def\section{%
+ \@startsection{section}{1}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}% GM
+ {4\p@}{\baselineskip 14pt\secfnt\@ucheadtrue}%
+}
+
+\def\subsection{%
+ \@startsection{subsection}{2}{\z@}{-8\p@ \@plus -2\p@ \@minus -\p@}
+ {4\p@}{\secfnt}%
+}
+\def\subsubsection{%
+ \@startsection{subsubsection}{3}{\z@}{-8\p@ \@plus -2\p@ \@minus -\p@}%
+ {4\p@}{\subsecfnt}%
+}
+\def\paragraph{%
+ \vskip 12pt\@startsection{paragraph}{3}{\z@}{6\p@ \@plus \p@}%
+ {-5\p@}{\subsecfnt}%
+}
+\let\@period=.
+\def\@startsection#1#2#3#4#5#6{%
+ \if at noskipsec %gkmt, 11 aug 99
+ \global\let\@period\@empty
+ \leavevmode
+ \global\let\@period.%
+ \fi
+ \par %
+ \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa
+ \@afterindentfalse
+ \fi
+ \if at nobreak
+ \everypar{}%
+ \else
+ \addpenalty\@secpenalty
+ \addvspace\@tempskipa
+ \fi
+\parskip=0pt % GM July 2000 (non numbered) section heads
+ \@ifstar
+ {\@ssect{#3}{#4}{#5}{#6}}
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
+}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c at secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \edef\@svsec{%
+ \begingroup
+ %\ifnum#2>2 \noexpand\rm \fi % changed to next 29 July 2002 gkmt
+ \ifnum#2>2 \noexpand#6 \fi
+ \csname the#1\endcsname
+ \endgroup
+ \ifnum #2=1\relax .\fi
+ \hskip 1em
+ }%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ \begingroup
+ \interlinepenalty \@M
+ \if at uchead
+ \uppercase{#8}%
+ \else
+ #8%
+ \fi
+ \par
+ \endgroup
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \vskip -12pt %gkmt, 11 aug 99 and GM July 2000 (was -14) - numbered section head spacing
+\addcontentsline{toc}{#1}{%
+ \ifnum #2>\c at secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7%
+ }%
+ \else
+ \def\@svsechd{%
+ #6%
+ \hskip #3\relax
+ \@svsec
+ \if at uchead
+ \uppercase{#8}%
+ \else
+ #8%
+ \fi
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c at secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7%
+ }%
+ }%
+ \fi
+ \@xsect{#5}\hskip 1pt
+ \par
+}
+\def\@xsect#1{%
+ \@tempskipa #1\relax
+ \ifdim \@tempskipa>\z@
+ \par
+ \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else
+ \global\@nobreakfalse
+ \global\@noskipsectrue
+ \everypar{%
+ \if at noskipsec
+ \global\@noskipsecfalse
+ \clubpenalty\@M
+ \hskip -\parindent
+ \begingroup
+ \@svsechd
+ \@period
+ \endgroup
+ \unskip
+ \@tempskipa #1\relax
+ \hskip -\@tempskipa
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi
+ }%
+ \fi
+ \ignorespaces
+}
+\def\@trivlist{%
+ \@topsepadd\topsep
+ \if at noskipsec
+ \global\let\@period\@empty
+ \leavevmode
+ \global\let\@period.%
+ \fi
+ \ifvmode
+ \advance\@topsepadd\partopsep
+ \else
+ \unskip
+ \par
+ \fi
+ \if at inlabel
+ \@noparitemtrue
+ \@noparlisttrue
+ \else
+ \@noparlistfalse
+ \@topsep\@topsepadd
+ \fi
+ \advance\@topsep \parskip
+ \leftskip\z at skip
+ \rightskip\@rightskip
+ \parfillskip\@flushglue
+ \@setpar{\if at newlist\else{\@@par}\fi}
+ \global\@newlisttrue
+ \@outerparskip\parskip
+}
+
+%%% Actually, 'abbrev' works just fine as the default
+%%% Bibliography style.
+
+\typeout{Using 'Abbrev' bibliography style}
+\newcommand\bibyear[2]{%
+ \unskip\quad\ignorespaces#1\unskip
+ \if#2..\quad \else \quad#2 \fi
+}
+\newcommand{\bibemph}[1]{{\em#1}}
+\newcommand{\bibemphic}[1]{{\em#1\/}}
+\newcommand{\bibsc}[1]{{\sc#1}}
+\def\@normalcite{%
+ \def\@cite##1##2{[##1\if at tempswa , ##2\fi]}%
+}
+\def\@citeNB{%
+ \def\@cite##1##2{##1\if at tempswa , ##2\fi}%
+}
+\def\@citeRB{%
+ \def\@cite##1##2{##1\if at tempswa , ##2\fi]}%
+}
+\def\start at cite#1#2{%
+ \edef\citeauthoryear##1##2##3{%
+ ###1%
+ \ifnum#2=\z@ \else\ ###2\fi
+ }%
+ \ifnum#1=\thr@@
+ \let\@@cite\@citeyear
+ \else
+ \let\@@cite\@citenormal
+ \fi
+ \@ifstar{\@citeNB\@@cite}{\@normalcite\@@cite}%
+}
+\def\cite{\start at cite23}
+\def\citeNP{\cite*}
+\def\citeA{\start at cite10}
+\def\citeANP{\citeA*}
+\def\shortcite{\start at cite23}
+\def\shortciteNP{\shortcite*}
+\def\shortciteA{\start at cite20}
+\def\shortciteANP{\shortciteA*}
+\def\citeyear{\start at cite30}
+\def\citeyearNP{\citeyear*}
+\def\citeN{%
+ \@citeRB
+ \def\citeauthoryear##1##2##3{##1\ [##3%
+ \def\reserved at a{##1}%
+ \def\citeauthoryear####1####2####3{%
+ \def\reserved at b{####1}%
+ \ifx\reserved at a\reserved at b
+ ####3%
+ \else
+ \errmessage{Package acmart Error: author mismatch
+ in \string\citeN^^J^^J%
+ See the acmart package documentation for explanation}%
+ \fi
+ }%
+ }%
+ \@ifstar\@citeyear\@citeyear
+}
+\def\shortciteN{%
+ \@citeRB
+ \def\citeauthoryear##1##2##3{##2\ [##3%
+ \def\reserved at a{##2}%
+ \def\citeauthoryear####1####2####3{%
+ \def\reserved at b{####2}%
+ \ifx\reserved at a\reserved at b
+ ####3%
+ \else
+ \errmessage{Package acmart Error: author mismatch
+ in \string\shortciteN^^J^^J%
+ See the acmart package documentation for explanation}%
+ \fi
+ }%
+ }%
+ \@ifstar\@citeyear\@citeyear % GM July 2000
+}
+\def\@citenormal{%
+ \@ifnextchar [{\@tempswatrue\@citex;}
+ {\@tempswafalse\@citex,[]}% % GM July 2000
+}
+\def\@citeyear{%
+ \@ifnextchar [{\@tempswatrue\@citex,}%
+ {\@tempswafalse\@citex,[]}%
+}
+\def\@citex#1[#2]#3{%
+ \let\@citea\@empty
+ \@cite{%
+ \@for\@citeb:=#3\do{%
+ \@citea
+ \def\@citea{#1 }%
+ \edef\@citeb{\expandafter\@iden\@citeb}%
+ \if at filesw
+ \immediate\write\@auxout{\string\citation{\@citeb}}%
+ \fi
+ \@ifundefined{b@\@citeb}{%
+ {\bf ?}%
+ \@warning{%
+ Citation `\@citeb' on page \thepage\space undefined%
+ }%
+ }%
+ {\csname b@\@citeb\endcsname}%
+ }%
+ }{#2}%
+}
+\let\@biblabel\@gobble
+\newdimen\bibindent
+\setcounter{enumi}{1}
+\bibindent=0em
+\def\thebibliography#1{%
+\ifnum\addauflag=0\addauthorsection\global\addauflag=1\fi
+ \section[References]{% <=== OPTIONAL ARGUMENT ADDED HERE
+ {References} % was uppercased but this affects pdf bookmarks (SP/GM October 2004)
+ \vskip -9pt % GM July 2000 (for tighter spacing)
+ \@mkboth{{\refname}}{{\refname}}%
+ }%
+ \list{[\arabic{enumi}]}{%
+ \settowidth\labelwidth{[#1]}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \advance\leftmargin\bibindent
+ \parsep=0pt\itemsep=1pt % GM July 2000
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \usecounter{enumi}
+ }%
+ \let\newblock\@empty
+ \raggedright % GM July 2000
+ \sloppy
+ \sfcode`\.=1000\relax
+}
+
+
+\gdef\balancecolumns
+{\vfill\eject
+\global\@colht=\textheight
+\global\ht\@cclv=\textheight
+}
+
+\newcount\colcntr
+\global\colcntr=0
+\newbox\savebox
+
+\gdef \@makecol {%
+\global\advance\colcntr by 1
+\ifnum\colcntr>2 \global\colcntr=1\fi
+ \ifvoid\footins
+ \setbox\@outputbox \box\@cclv
+ \else
+ \setbox\@outputbox \vbox{%
+\boxmaxdepth \@maxdepth
+ \@tempdima\dp\@cclv
+ \unvbox \@cclv
+ \vskip-\@tempdima
+ \vskip \skip\footins
+ \color at begingroup
+ \normalcolor
+ \footnoterule
+ \unvbox \footins
+ \color at endgroup
+ }%
+ \fi
+ \xdef\@freelist{\@freelist\@midlist}%
+ \global \let \@midlist \@empty
+ \@combinefloats
+ \ifvbox\@kludgeins
+ \@makespecialcolbox
+ \else
+ \setbox\@outputbox \vbox to\@colht {%
+\@texttop
+ \dimen@ \dp\@outputbox
+ \unvbox \@outputbox
+ \vskip -\dimen@
+ \@textbottom
+ }%
+ \fi
+ \global \maxdepth \@maxdepth
+}
+\def\titlenote{\@ifnextchar[\@xtitlenote{\stepcounter\@mpfn
+\global\advance\titlenotecount by 1
+\ifnum\titlenotecount=1
+ \raisebox{9pt}{$\ast$}
+\fi
+\ifnum\titlenotecount=2
+ \raisebox{9pt}{$\dagger$}
+\fi
+\ifnum\titlenotecount=3
+ \raisebox{9pt}{$\ddagger$}
+\fi
+\ifnum\titlenotecount=4
+\raisebox{9pt}{$\S$}
+\fi
+\ifnum\titlenotecount=5
+\raisebox{9pt}{$\P$}
+\fi
+ \@titlenotetext
+}}
+
+\long\def\@titlenotetext#1{\insert\footins{%
+\ifnum\titlenotecount=1\global\tntoks={#1}\fi
+\ifnum\titlenotecount=2\global\tntokstwo={#1}\fi
+\ifnum\titlenotecount=3\global\tntoksthree={#1}\fi
+\ifnum\titlenotecount=4\global\tntoksfour={#1}\fi
+\ifnum\titlenotecount=5\global\tntoksfive={#1}\fi
+ \reset at font\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \protected at edef\@currentlabel{%
+ }%
+ \color at begingroup
+ \color at endgroup}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\ps at plain
+\baselineskip=11pt
+\let\thepage\relax % For NO page numbers - GM Nov. 30th. 1999 and July 2000
+\def\setpagenumber#1{\global\setcounter{page}{#1}}
+%\pagenumbering{arabic} % Arabic page numbers GM July 2000
+\twocolumn % Double column.
+\flushbottom % Even bottom -- alas, does not balance columns at end of document
+\pagestyle{plain}
+
+% Need Copyright Year and Copyright Data to be user definable (in .tex file).
+% Gerry Nov. 30th. 1999
+\newtoks\copyrtyr
+\newtoks\acmcopyr
+\newtoks\boilerplate
+\global\acmcopyr={X-XXXXX-XX-X/XX/XX} % Default - 5/11/2001 *** Gerry
+\global\copyrtyr={200X} % Default - 3/3/2003 *** Gerry
+\def\CopyrightYear#1{\global\copyrtyr{#1}}
+\def\crdata#1{\global\acmcopyr{#1}}
+\def\permission#1{\global\boilerplate{#1}}
+%
+\global\boilerplate={Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.}
+\newtoks\copyrightetc
+\global\copyrightetc{Copyright \the\copyrtyr\ ACM \the\acmcopyr\ ...\$5.00}
+
+\toappear{\the\boilerplate\par
+{\confname{\the\conf}} \the\confinfo\par \the\copyrightetc.}
+%
+%% End of sig-alternate.cls -- V1.8 - 7/26/2005 --
+%% Gerry Murray -- Wednesday July 26th. 2005
+
File [added]: col_latex.awk
Delta lines: +21 -0
===================================================================
--- papers/CPC/saga_engine_2006/col_latex.awk 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/col_latex.awk 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,21 @@
+
+# /^\(/ { next }
+ /^ *$/ { next }
+# /^:/ { next }
+# /^\)/ { next }
+# /^Chapter/ { next }
+# /^\\OT/ { next }
+# /^ *\[/ { next }
+# /^ *</ { next }
+# /^\.$/ { next }
+# /^Append/ { next }
+
+/^LaTeX Font Warning:/ { next }
+
+/Warning/ { print "\033[1;34m" $0 "\033[0m" ; next}
+/Error/ { print "\033[1;31m" $0 "\033[0m" ; next}
+/Overfull/ { print "\033[1;31m" $0 "\033[0m" ; next}
+/Underfull/ { print "\033[1;35m" $0 "\033[0m" ; next}
+
+{ print }
+
File [added]: conclusion.tex
Delta lines: +22 -0
===================================================================
--- papers/CPC/saga_engine_2006/conclusion.tex 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/conclusion.tex 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,22 @@
+% $Header: /projects/VU-SAGA/Papers/saga_engine_2006/conclusion.tex,v 1.10 2006/10/11 02:55:39 gallen Exp $
+
+We have described the C++ reference implementation of the SAGA API,
+which is designed as a generic and extensible API framework: it
+allows for the extension of the SAGA API,
+easily usable for other APIs);
+it allows for run-time extension of
+middleware bindings,
+and it allows for orthogonal optimizations and features,
+such as late binding, diverse adaptor selection strategies, and latency
+hiding. The used techniques enable
+these features, amongst them the application of the PIMPL paradigm for
+a complete class hierarchy and generic call routing.
+
+These implementation techniques incur a certain overhead, however, in
+grid environments the runtime overhead is usually vastly dominated by
+communication latencies, so that \I{\B{this} overhead does not
+matter}. The lesson learned is that distributed environments
+\I{allow} for fancy mechanisms, which are too expensive in local
+environments. Fail safety and latency hiding mechanisms are
+more important than, for example, virtual functions, late
+binding, and additional abstraction layers.
File [added]: details.tex
Delta lines: +319 -0
===================================================================
--- papers/CPC/saga_engine_2006/details.tex 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/details.tex 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,319 @@
+% $Header: /projects/VU-SAGA/Papers/saga_engine_2006/details.tex,v 1.17 2006/10/11 02:55:39 gallen Exp $
+
+The following section will describe certain implementation details
+of the SAGA C++ reference implementation. As will be described, the
+implementation gains its flexibility mainly from the combined
+application of C++'s compile time and runtime polymorphism features,
+i.e.\ template's and virtual functions respective.
+
+\subsection{General Considerations}
+
+ To achieve maximum portability, platform independence and code
+ reuse, the SAGA C++ reference implementation relies strictly on the
+ Standard C++ language features, and uses the C++ Standard and Boost
+ libraries where possible.
+
+\subsubsection{The SAGA task model}
+\label{ssec:tasks}
+
+ A central concept of the SAGA API design is the SAGA task
+ model~\cite{saga-paper}, prescribing
+ the form of
+ synchronous and asynchronous method calls. Essentially, each method
+ call comes in three variants: as a \I{synchronous call} (executed
+ immediately), as a \I{asynchronous call}, and as a \I{task call}.
+ The latter versions of the calls return a \T{saga::task} class instance. A
+ \T{saga::task} thus represents an asynchronously running operation,
+ and has an associated state (\T{New, Run\-ning, Finished, Failed}). Task versions
+ of the method calls return a \T{New} task, asynchronous versions
+ return a \T{Run\-ning} task. %, i.e. the \T{run()} method was called on
+ %that task.
+ For symmetry reason, we added a fourth, synchronous version of method
+ calls, returning a \T{Finished} task.
+ % i.e. \T{run()} and \T{wait()} have been called.
+ The realization of the |saga::impl::task| class bases on a
+ implementation of the \I{futures} paradigm, a concurrency abstraction
+ first proposed for MultiLisp~\cite{futures}.
+ The C++ rendering of the SAGA task model is shown in
+ figure~\ref{src:tasks}.
+
+\begin{figure}[!ht]
+ \begin{center}
+ \begin{mycode}[label=SAGA task model]
+ string dest = "any://host.net//data/dest.dat";
+ file file ("any://host.net//data/src.dat");
+
+ // normal sync version of the copy method
+ file.copy (dest);
+
+ // the three task versions of the same method
+ task t1 = file.copy <task::Sync> (dest);
+ task t2 = file.copy <task::ASync> (dest);
+ task t3 = file.copy <task::Task> (dest);
+
+ // task states of the returned saga::task
+ // t1 is in 'Finished' or 'Failed' state
+ // t2 is in 'Running' state
+ // t3 is in 'New' state
+
+ t3.run ();
+ t2.wait ();
+ t3.wait ();
+ // all tasks are 'Finished' or 'Failed' now
+ \end{mycode}
+ \up
+ \up
+ \caption{\label{src:tasks}
+ The SAGA task model rendered in C++}
+ \end{center}
+\end{figure}
+
+While we tried to absolutely minimize the use of template's in the
+API layer, it was decided to implement the different flavors of the API
+functions using function templates (see figure~\ref{src:tasks}).
+This makes the whole SAGA C++ implementation \I{generic} with respect to
+the synchronicity model, being another reason for providing
+two types of the synchronous function flavors: a direct and a task
+based one.
+
+\subsubsection{The Object Instance Structure}
+\label{ssec:pimpl}
+
+As already mentioned, the SAGA API objects are implemented using the PIMPL idiom.
+Their only essential member is a \T{boost::smart\_ptr<>} to the
+base class of the implementation object instance\footnote{\small We refer to the
+implementation side of the PIMPL layer as \I{impl classes} in this document},
+keeping it alive. This makes them very
+lightweight and copyable without major overhead, and therefore storable in any
+type of container.
+
+\begin{figure}[!ht]
+ \begin{center}
+ \includegraphics[width=0.47\textwidth]{images/object_structure}
+ \up
+ \caption{\label{fig:object_structure}
+ Object instance structure: Copying a API object instance means sharing
+ state, returned tasks keep implementation alive.}
+ \end{center}
+\end{figure}
+
+As shown in figure~\ref{fig:object_structure}, any API object instance creates
+the corresponding impl instance holding all the instance data
+of the SAGA object instance
+Copying of an API instance therefore shares this state between the copied
+instances.
+This behavior is consistent with anticipated handle based SAGA language bindings
+(e.g. in C or FORTRAN), where copying the handle representing a SAGA
+object instance naturally means sharing the internal instance data as
+well\footnote{\small A polymorphic \T{saga::object::clone()} method is, however, part
+of the SAGA API, and allows for explicit deep copies of API objects,
+forcing the instance data to be copied as well.}.
+
+Due to the shared
+referencing after copies, the impl instances can be kept alive by objects
+which depend on their state -- for example, a task keeps the objects
+alive for which they represent a asynchronous method call (see
+figure~\ref{fig:object_structure}).
+
+The call sequence for creating a SAGA API object instance is shown in
+figure~\ref{fig:object_creation}. Whenever needed, the implementation
+creates a CPI object instance implemented in one of the adaptors.
+The process of adaptor selection and CPI instantiation is injected into the
+API packages by the macros mentioned before (see section~\ref{ssec:apipackages}).
+
+\begin{figure}[!ht]
+ \begin{center}
+ \includegraphics[width=0.47\textwidth]{images/object_lifetime_creation}
+ \up
+ \caption{\label{fig:object_creation}
+ Object creation: Sequence diagram depicting the creation of all
+ components as showed in figure~\ref{fig:object_structure}. Note, how
+ the call is intercepted by a SAGA engine module component to select
+ a appropriate adaptor.}
+ \end{center}
+\end{figure}
+
+\up
+\up
+\subsection{Inheritance and PIMPL}
+
+An interesting problem in the strict application of the PIMPL
+mechanism lies in the API object hierarchy: the \T{saga::file} class
+for example inherits the \T{saga::ns\_entry} class, which inherits the
+\T{saga::object} class. Additionally, the SAGA specification requires
+all these classes to implement additional interfaces. Now, the PIMPL
+paradigm requires all class instances to own exactly \I{one} impl
+pointer\footnote{\small{In fact the impl pointer stored in any \T{saga::object}
+instance is a \T{boost::smart\_ptr<saga::impl::object>}, i.e. a reference
+to the very base class of the implementation object hierarchy.}}, and are
+built using single inheritance only, otherwise we would face object slicing
+problems when copying around the base classes only. The solution is (1) to
+add the required interfaces to the most derived classes by duplication
+the interface functions, and (2) to up-cast the impl reference stored in the
+base class whenever needed.
+
+\begin{figure}[!ht]
+ \begin{center}
+ \begin{mycode}[label=Constructors in the saga::file hierarchy]
+ // saga::file constructor
+ file::file ([args])
+ : ns_entry (new saga::impl::file ([args])) {}
+
+ // saga::ns_entry constructor
+ ns_entry::ns_entry (saga::impl::ns_entry* impl)
+ : saga::object (impl) {}
+
+ // saga::object constructor
+ // 'impl_' is a boost::smart_ptr<saga::impl::object>
+ object::object (saga::impl::object* impl)
+ : impl_ (impl) {}
+ \end{mycode}
+ \up
+ \up
+ \caption{\label{src:implcon}
+ Realizing inheritance in PIMPL classes (simplified). Only the
+ \T{saga::object} base class owns an impl pointer.}
+ \end{center}
+\end{figure}
+
+API classes access the impl pointer through \T{get\_impl()}, which, in
+derived classes, implies a static up-cast for the base class' impl
+pointer.
+
+The implementation objects resemble the API object hierarchy. These
+are also derived from a common base class and contain, somewhere in
+their own hierarchy, similar objects to the API objects. The
+\T{saga::impl::file} class\footnote{\small{The \T{saga::impl::file}
+class for example is the implementation equivalent to the
+\T{saga::file} class, as we kept all API classes in \T{namespace~saga}
+and all corresponding implementation classes in
+\T{namespace~saga::impl}.}} inherits the \T{saga::impl::ns\_entry}
+class, which inherits the implementation specific
+\T{saga::impl::proxy} class, which is derived from the common
+\T{saga::impl::object} class. Thus, the class hierarchy on the
+implementation side of the PIMPL paradigm reflects the API side of the
+class hierarchy, ensuring the correct casting behavior in the
+\T{get\_impl()} methods.
+
+
+\subsection{State Management}
+
+Section~\ref{ssec:pimpl} discussed object state, in relation to
+state sharing of objects after shallow copies. Here we describe the object
+state management of the SAGA implementation in more detail, since state
+management is a central element on several layers.
+On a different layer, the adaptors represent
+operations on the object instances, and need to maintain state as well.
+At the adaptor level this is complicated by the fact that the object state can (and in
+general will) be changed by several adaptors (remember: adaptors are selected
+at runtime, and may change for each API function invocation). For state
+management, we hence distinguish between three types of state information.
+
+\begin{shortlist}
+ \item \I{Instance data} represent the state of API objects (e.g. file name,
+ file pointer etc.). These are predefined and not amendable by the adaptor
+ as they represent common data either passed from the constructor,
+ or needed for consistent state management on the API level.
+ \item \I{Adaptor data} represent the state of CPI objects (e.g. open connections)
+ and are shared between all instances of all CPI object types
+ implemented by
+ a single adaptor and corresponding to a single adaptor instance.
+ \item \I{Adaptor-instance data} represent the state shared between all CPI
+ instances created for a single API object and implemented by the same
+ adaptor (e.g. remote handles).
+\end{shortlist}
+
+The lifetime of any type of the state information is maintained by the SAGA engine
+module, which significantly simplifies the writing of adaptors.
+
+All three types of state information are carefully protected from race
+conditions potentially caused by the multithreaded nature of the implementation.
+We provide helper classes simplifying the
+correct locking of the instance data.
+This uniform state management enables
+object state persistency in the future, with minimal impact on the
+code base.
+
+\subsection{Generic Call Routing}
+\label{ssec:routing}
+
+The essential idea of the implemented generic API call
+routing mechanism is to represent the calls as abstract objects, and
+to redirect their execution depending on several attributes
+and the adaptor suitability. For example,
+an asynchronous method call for a |saga::file| instance is preferably
+directed to a asynchronous file adaptor, or, if such is not available,
+to a synchronous file adaptor, wrapping it in a thread,
+or, returns an error otherwise (|NotImplemented|).
+
+This routing mechanism allows for (1) trivial (synchronous) adaptor
+implementations, (2) late binding (differents adaptor can be selected
+for each call, even on the same API object instance), (3) variable adaptor
+selection strategies (based on adaptor meta data, user preferences,
+and heuristics), and (4) latency hiding (bulk optimization~\cite{CS_Hirmer_06a},
+or automatic load distribution over multiple adaptors).
+Figure~\ref{fig:object_functioncall} is depicting the injection of the
+call routing mechanism by the SAGA engine.
+
+\begin{figure}[!ht]
+ \begin{center}
+ \includegraphics[width=0.47\textwidth]{images/object_lifetime_functioncall}
+ \up
+ \caption{\label{fig:object_functioncall}
+ API function call: Diagram illustrating the execution sequence through
+ the different object instances during a call to any adaptor supplied
+ function.}
+ \end{center}
+\end{figure}
+
+\up
+All SAGA API methods come in synchronous and asynchronous flavors
+(see section~\ref{ssec:tasks}).
+To avoid, that adaptors need to implement
+both flavors, we provide fallback implementations in the
+SAGA engine.
+The synchronous behavior is modelled by
+executing the the asynchronous implementation and waiting
+for it to finish. The asynchronous wraps the synchronous
+implementation into a thread representing the asynchronous
+remote operation.
+
+Even if this approach has a couple of drawbacks (it is not really asynchronous,
+the middleware call still blocks, causing lock problems if implemented badly, and
+tasks are not able to survive the application life time), the mechanism
+simplifies adaptor implementations
+greatly, as most of the existing grid middleware is \I{not}
+fully asynchronous anyway.
+
+\subsection{Adaptor Selection}
+
+The selection of suitable adaptors at runtime is a central
+component in the implementation (see
+figure~\ref{fig:object_functioncall}). It is, a very simple
+mechanism: on loading, the adaptor components register their
+\I{capabilities} in the adaptor registry. If a method is to be
+executed, the adaptor selector searches that registry for all
+suitable adaptors, orders them, and tries them one-by-one,
+until the method invocation succeeds. The adaptor selection is
+routed through SAGA engine, generically implementing this for
+any API function.
+
+To overcome the limitations of this approach (several CPI instances
+have to be created, remote operations add additional latencies), our
+library allows adaptors to specify additional, key/value
+based meta data, and also allows to exchange the adaptor selection
+component.
+
+\subsection{Utilization of Macros}
+\label{ssec:macros}
+
+Our SAGA implementation makes extensive use of C++ preprocessor
+macros. This might be perceived as a design flaw, at least by
+some readers, and we were very hesitant to utilize macros
+extensively. However, the benefits for the end user
+and other programmers(!) seem currently to outweigh the problems,
+such as limited debugging abilities.
+mentioned in section~\ref{ssec:apipackages}, We are using Boost.Wave~\cite{boost_website}
+features to pre-generate partially macro expanded sources to overcome
+the disadvantages of plain macros, hence simplifying debugging and
+improving readability.
File [added]: generaldesign.tex
Delta lines: +143 -0
===================================================================
--- papers/CPC/saga_engine_2006/generaldesign.tex 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/generaldesign.tex 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,143 @@
+% $Header: /projects/VU-SAGA/Papers/saga_engine_2006/generaldesign.tex,v 1.18 2006/10/11 02:55:39 gallen Exp $
+
+The implementation level requirements of the SAGA reference
+implementation as described in the previous section directly
+motivate a number of design objectives. Our most important objective was to
+design a state-of-the-art Grid application framework satisfying the majority
+of user-needs while remaining as flexible as possible.
+
+This flexibility and extensibility of the implementation,
+ is then central to the design, and dominates
+the overall architecture of the library (see figure~\ref{fig:archi}). As
+a summary: only components known to be stable, such as the SAGA
+``look\,\&\,feel'' and the SAGA utility classes, are statically included
+in the library -- all other aspects of the API implementation, such as
+the core SAGA classes and the middleware compile time and run time
+bindings, are designed to be components which can be added and
+selected separately.
+
+\begin{figure}[!ht]
+ \begin{center}
+ \includegraphics[width=0.47\textwidth]{images/saga_architecture}
+ \up
+ \caption{\label{fig:archi}
+ Architecture: A lightweight engine dispatches SAGA
+ calls to dynamically loaded middleware adaptors. See text for
+ details.}
+ \end{center}
+\end{figure}
+
+\up
+\subsection{Design Objectives}
+
+ Although the Simple API for Grid Applications is, by definition
+ \I{simple} for application developers, this doesn't imply that the
+ implementation itself has to be simple. We made a major effort to
+ build as much logic and functionality as possible into the SAGA
+ library core, providing all the needed common functionality. This enables
+ the user to extend it with minimal effort. On the other hand, the
+ library \I{is} designed to be easy to build, use, and deploy.
+
+ A major design
+ objective was to maximize decoupling of different components
+ of the developed library to provide as much \I{flexibility},
+ \I{adaptability} and \I{modularity} as possible.
+
+ As the SAGA implementation is expected to be used on different platforms
+ and operating systems we strive for maximal implementation \I{portability}.
+
+ The API should be \I{extensible} with minimal effort: ideally,
+ adding a new API class is orthogonal to all other properties of the
+ implementation.
+
+
+\subsection{The Overall Architecture}
+
+ To meet these goals we decided to decouple the library components
+ in three completely orthogonal dimensions --
+ the user of the library may use and combine these freely and
+ develop additional suitable components usable in tight integration with
+ the provided modules.
+
+\subsubsection{Horizontal Extensibility -- API Packages}
+\label{ssec:apipackages}
+
+ Our implementation uses the grouping of sets of API functions as defined
+ by the SAGA specification to define \I{API packages}.
+ Current packages are: file management, job management,
+ remote procedure calls, replica management, and data streaming.
+ These modules depend only on the SAGA engine, the user is free to
+ use and link only those actually needed by the application,
+ minimizing the memory footprint.
+ It is straightforward to add new packages (as the SAGA specification
+ is expected to evolve) since all common
+ operations needed inside these packages (such as adaptor loading and
+ selection, or method call routing) are imported from the SAGA
+ engine. The creation of new packages is essentially reduced to:
+ (1) add the API package files, and declare the classes, (2) reflect the
+ SAGA object hierarchy (see section~\ref{ssec:pimpl}), and (3) add class
+ methods.
+
+ The declaration and implementation of the API methods is simplified by
+ macros, which essentially correspond directly to the methods
+ SIDL specification (see section~\ref{ssec:macros}). We are
+ considering (partly) automating new package generation, by parsing
+ the SIDL specification and generating the class stubs and class
+ method specifications.
+ Additionally, this approach will also allow us to generate
+ other SAGA language bindings from the SIDL specification, such as
+ for C and FORTRAN.
+
+\subsubsection{Vertical Extensibility -- Middleware Bindings}
+
+ A layered architecture (see figure~\ref{fig:archi}) allows us to
+ vertically decouple the SAGA API from the used middleware. Separate
+ adaptors, either loaded at runtime, or pre-bound at link time,
+ dispatch the various API function calls to the appropriate
+ middleware.
+ These adaptors implement a well
+ defined \I{Capability Provider Interface} (CPI) and expose that to the
+ top layer of the library, making it possible to switch adaptors
+ at runtime, and hence to switch between different (even concurrent)
+ middleware services providing the requested functionality.
+
+ The top library layer dispatches the API function calls to the
+ corresponding CPI function. It additionally contains the \I{SAGA
+ engine} module, which implements: (1) the core SAGA objects such
+ as session, context, task or task\_container -- these objects are
+ responsible for the SAGA look\,\&\,feel, and are needed by all API
+ packages, and (2) the common functions to load and select matching
+ adaptors, to perform generic call routing from API functions to the
+ selected adaptor, to provide necessary fall back implementations
+ for the synchronous and asynchronous variants of the API functions
+ (if these are not supported by the selected adaptor).
+
+ The dynamic nature of this layered architecture enables easy future
+ extensions by adding new adaptors, coping with emerging grid standards
+ and new grid middleware.
+
+
+\subsubsection{Extensibility for Optimization and Features}
+
+ Many features of the engine module are implemented by intercepting,
+ analyzing, managing, and rerouting function calls between the API packages,
+ (where they are issued) and the adaptors (where they are executed
+ and forwarded to the middleware). To generalize this management
+ layer, a PIMPL~\cite{pimpl} (Private IMPLementation)
+ idiom was chosen, and is rigorously
+ used throughout the SAGA implementation. This PIMPL layering allows
+ for a number of additional properties to be transparently
+ implemented, and experimen\-ted with, without any change in
+ the API packages or adaptor layers. These features
+ include: generic call routing, task monitoring and optimization,
+ security management, late binding, fallback on adaptor invocation errors,
+ and latency hiding mechanisms.
+ The decoupling of these features from the API and
+ the adaptors succeeds, essentially, because these properties
+ affect only the IMPL side of the PIMPL layers.
+
+ The engine module is thus fully generic, and loosely coupled to
+ both the API and adaptor layers. Any engine feature, all
+ optimizations, latency hiding techniques, monitoring features etc.
+ are implemented in generically, and are orthogonal to
+ the API and adaptor extensions.
File [added]: ifpdf.sty
Delta lines: +142 -0
===================================================================
--- papers/CPC/saga_engine_2006/ifpdf.sty 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/ifpdf.sty 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,142 @@
+% File: ifpdf.sty
+% Version: 2001/07/14 v1.1
+% Author: Heiko Oberdiek
+% Email: <oberdiek at uni-freiburg.de>
+%
+% Copyright: Copyright (C) 2001 Heiko Oberdiek.
+%
+% This program may be distributed and/or modified under
+% the conditions of the LaTeX Project Public License,
+% either version 1.2 of this license or (at your option)
+% any later version. The latest version of this license
+% is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.2 or later is part of all distributions
+% of LaTeX version 1999/12/01 or later.
+%
+% Function: This packages looks for pdfTeX in pdf mode and
+% implements and sets the switch \ifpdf.
+% The detection is based on \pdfoutput and
+% the package will not change this value.
+% It works with plain or LaTeX formats.
+%
+% Use: LaTeX: \usepackage{ifpdf}
+% plain: \input ifpdf.sty
+% The package provides the switch \ifpdf:
+% \ifpdf
+% ... do things, if pdfTeX is running in pdf mode ...
+% \else
+% ... other TeX or pdfTeX in dvi mode ...
+% \fi
+% The package can also be used to set global
+% documentclass options:
+% \RequirePackage{ifpdf}
+% \ifpdf
+% \documentclass[pdftex,...]{...}
+% \else
+% \documentclass[...]{...}
+% \fi
+%
+% History: 2001/06/14 v1.0:
+% * first public version,
+% 2001/07/14 v1.1:
+% * documentation addition: global options
+%
+% Prevent reloading more than one:
+\begingroup
+ \expandafter\let\expandafter\x\csname ver at ifpdf.sty\endcsname
+ \ifcase 0%
+ \ifx\x\relax % plain
+ \else
+ \ifx\x\empty % LaTeX
+ \else
+ 1%
+ \fi
+ \fi
+ \else
+ \expandafter\ifx\csname PackageInfo\endcsname\relax
+ \def\x#1#2{%
+ \immediate\write-1{Package #1 Info: #2.}%
+ }%
+ \else
+ \def\x#1#2{\PackageInfo{#1}{#2, stopped}}%
+ \fi
+ \x{ifpdf}{The package is already loaded}%
+ \endgroup
+ \expandafter\endinput
+ \fi
+\endgroup
+%
+% Package identification:
+\begingroup
+ \expandafter\ifx\csname ProvidesPackage\endcsname\relax
+ \def\x#1#2#3[#4]{\endgroup
+ \immediate\write-1{Package: #3 #4}%
+ \xdef#1{#4}%
+ }%
+ \else
+ \def\x#1#2[#3]{\endgroup
+ #2[#3]%
+ \ifx#1\relax
+ \xdef#1{#3}%
+ \fi
+ }%
+ \fi
+\expandafter\x\csname ver at ifpdf.sty\endcsname
+\ProvidesPackage{ifpdf}%
+ [2001/06/14 v1.0 %
+ Providing \expandafter\string\csname ifpdf\endcsname\space (HO)]
+%
+% Check, whether \ifpdf is already defined:
+\begingroup
+ \expandafter\ifx\csname ifpdf\endcsname\relax
+ \else
+ \edef\i/{\expandafter\string\csname ifpdf\endcsname}%
+ \expandafter\ifx\csname PackageError\endcsname\relax
+ \def\x#1#2{%
+ \edef\z{#2}%
+ \expandafter\errhelp\expandafter{\z}%
+ \errmessage{Package ifpdf Error: #1}%
+ }%
+ \def\y{^^J}%
+ \newlinechar=10
+ \else
+ \def\x#1#2{%
+ \PackageError{ifpdf}{#1}{#2}%
+ }%
+ \def\y{\MessageBreak}%
+ \fi
+ \x{Name clash, \i/ is already defined}{%
+ Incompatible versions of \i/ can cause problems,\y
+ therefore package loading is aborted.%
+ }%
+ \endgroup
+ \expandafter\endinput
+ \fi
+\endgroup
+%
+% Implementing the switch:
+\newif\ifpdf
+\ifx\pdfoutput\undefined
+\else
+ \ifx\pdfoutput\relax
+ \else
+ \ifcase\pdfoutput
+ \else
+ \pdftrue
+ \fi
+ \fi
+\fi
+%
+% Log comment:
+\begingroup
+ \expandafter\ifx\csname PackageInfo\endcsname\relax
+ \def\x#1#2{%
+ \immediate\write-1{Package #1 Info: #2.}%
+ }%
+ \else
+ \let\x\PackageInfo
+ \fi
+ \x{ifpdf}{pdfTeX in pdf mode \ifpdf\else not \fi detected}%
+\endgroup
+\endinput
File [added]: intro.tex
Delta lines: +61 -0
===================================================================
--- papers/CPC/saga_engine_2006/intro.tex 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/intro.tex 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,61 @@
+% $Header: /projects/VU-SAGA/Papers/saga_engine_2006/intro.tex,v 1.13 2006/10/11 02:55:39 gallen Exp $
+
+ Relatively few existing grid-enabled applications exploit the full
+ potential of grid environments. This is mainly caused by the
+ difficulties faced by programmers trying to master the complexities
+ of grids (see section~\ref{sec:requirements}). Several projects
+ concentrate on the development of high-level, application-oriented
+ toolkits that free programmers from the burden of adjusting their
+ software to different and changing grids. The Simple API for Grid
+ Applications (SAGA)~\cite{saga_spec} is a prominent recent API
+ standardization effort which intends to simplify the development of
+ grid-enabled applications, even for scientists with no background in
+ computer science, or grid computing. SAGA was heavily influenced by
+ the work undertaken in the GridLab project~\cite{gridlab_webpage},
+ in particular by the Grid Application Toolkit (GAT)~\cite{gat}, and
+ by the Globus Commodity Grid~\cite{cog}. The concept of high level
+ grid APIs has proved to be very useful in several projects
+ developing cyberinfrastructures, such as the SURA Coastal Ocean
+ Observing Program (SCOOP) which uses GAT to interface to large data
+ archives~\cite{CS_Huang06a} using multiple access protocols.
+
+ The C++ implementation of the SAGA API presented in this paper
+ leverages the experience we obtained from developing the GAT and will
+ provide a reference implementation for the OGF standardization
+ process. As the SAGA API is originally specified using the
+ Scientific Interface Description Language (SIDL)~\cite{sidl}, the
+ implementation also represents a first attempt to develop the SAGA
+ C++ language bindings. It has a number of key features, described
+ later in detail:
+
+ \begin{shortlist}
+
+ \item Synchronous, asynchronous and task oriented versions of every
+ operation are transparently provided.
+
+ \item Dynamically loaded adaptors bind the API to the appropriate
+ grid middleware environment, at runtime. Static pre-binding at link
+ time is also supported.
+
+ \item Adaptors are selected on a call-by-call basis (late binding,
+ supported by a object state repository), which allows for
+ incomplete adaptors and inherent fail safety.
+
+ \item Latency hiding (e.g. asynchronous operations and bulk
+ optimizations) is generically and transparently applied.
+
+ \item A modular API architecture minimizes the runtime
+ memory footprint.
+
+ \item API extensions are greatly simplified by a
+ generic call routing mechanism, and by macros resembling
+ (SIDL)~\cite{sidl} used in the
+ SAGA specification.
+
+ \item Strict adherence to Standard-C++ and the utilization of
+ Boost~\cite{boost_website} allows for excellent portability
+ and platform independence.
+
+ \end{shortlist}
+
+
File [added]: listings.sty
Delta lines: +2002 -0
===================================================================
--- papers/CPC/saga_engine_2006/listings.sty 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/listings.sty 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,2002 @@
+%%
+%% This is file `listings.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% listings-1.3.dtx (with options: `kernel')
+%%
+%% Please read the software license in listings-1.3.dtx or listings-1.3.pdf.
+%%
+%% (w)(c) 1996--2004 Carsten Heinz and/or any other author listed
+%% elsewhere in this file.
+%%
+%% Send comments and ideas on the package, error reports and additional
+%% programming languages to <cheinz at gmx.de>.
+%%
+\def\filedate{2004/09/07}
+\def\fileversion{1.3}
+\NeedsTeXFormat{LaTeX2e}
+\AtEndOfPackage{\ProvidesPackage{listings}
+ [\filedate\space\fileversion\space(Carsten Heinz)]}
+\def\lst at CheckVersion#1{\edef\reserved at a{#1}%
+ \ifx\lst at version\reserved at a \expandafter\@gobble
+ \else \expandafter\@firstofone \fi}
+\let\lst at version\fileversion
+\def\lst at InputCatcodes{%
+ \makeatletter \catcode`\"12%
+ \catcode`\^^@\active
+ \catcode`\^^I9%
+ \catcode`\^^L9%
+ \catcode`\^^M9%
+ \catcode`\%14%
+ \catcode`\~\active}
+\def\lst at RestoreCatcodes#1{%
+ \ifx\relax#1\else
+ \noexpand\catcode`\noexpand#1\the\catcode`#1\relax
+ \expandafter\lst at RestoreCatcodes
+ \fi}
+\edef\lst at RestoreCatcodes{%
+ \noexpand\lccode`\noexpand\/`\noexpand\/%
+ \lst at RestoreCatcodes\"\^^I\^^M\~\^^@\relax}
+\lst at InputCatcodes
+\AtEndOfPackage{\lst at RestoreCatcodes}
+\def\@lst{lst}
+\def\lst at IfSubstring#1#2{%
+ \def\lst at temp##1#1##2##3\relax{%
+ \ifx \@empty##2\expandafter\@secondoftwo
+ \else \expandafter\@firstoftwo \fi}%
+ \expandafter\lst at temp#2#1\@empty\relax}
+\def\lst at IfOneOf#1\relax#2{%
+ \def\lst at temp##1,#1,##2##3\relax{%
+ \ifx \@empty##2\expandafter\@secondoftwo
+ \else \expandafter\@firstoftwo \fi}%
+ \expandafter\lst at temp\expandafter,#2,#1,\@empty\relax}
+\def\lst at DeleteKeysIn#1#2{%
+ \expandafter\lst at DeleteKeysIn@\expandafter#1#2,\relax,}
+\def\lst at DeleteKeysIn@#1#2,{%
+ \ifx\relax#2\@empty
+ \expandafter\@firstoftwo\expandafter\lst at RemoveCommas
+ \else
+ \ifx\@empty#2\@empty\else
+ \def\lst at temp##1,#2,##2{%
+ ##1%
+ \ifx\@empty##2\@empty\else
+ \expandafter\lst at temp\expandafter,%
+ \fi ##2}%
+ \edef#1{\expandafter\lst at temp\expandafter,#1,#2,\@empty}%
+ \fi
+ \fi
+ \lst at DeleteKeysIn@#1}
+\def\lst at RemoveCommas#1{\edef#1{\expandafter\lst at RC@#1\@empty}}
+\def\lst at RC@#1{\ifx,#1\expandafter\lst at RC@ \else #1\fi}
+\def\lst at ReplaceIn#1#2{%
+ \expandafter\lst at ReplaceIn@\expandafter#1#2\@empty\@empty}
+\def\lst at ReplaceInArg#1#2{\lst at ReplaceIn@#1#2\@empty\@empty}
+\def\lst at ReplaceIn@#1#2#3{%
+ \ifx\@empty#3\relax\else
+ \def\lst at temp##1#2##2{%
+ \ifx\@empty##2%
+ \lst at lAddTo#1{##1}%
+ \else
+ \lst at lAddTo#1{##1#3}\expandafter\lst at temp
+ \fi ##2}%
+ \let\@tempa#1\let#1\@empty
+ \expandafter\lst at temp\@tempa#2\@empty
+ \expandafter\lst at ReplaceIn@\expandafter#1%
+ \fi}
+\providecommand*\@gobblethree[3]{}
+\def\lst at GobbleNil#1\@nil{}
+\def\lst at Swap#1#2{#2#1}
+\def\lst at true{\let\lst at if\iftrue}
+\def\lst at false{\let\lst at if\iffalse}
+\lst at false
+\def\lst at IfNextCharsArg#1{%
+ \def\lst at tofind{#1}\lst at IfNextChars\lst at tofind}
+\def\lst at IfNextChars#1#2#3{%
+ \let\lst at tofind#1\def\@tempa{#2}\def\@tempb{#3}%
+ \let\lst at eaten\@empty \lst at IfNextChars@}
+\def\lst at IfNextChars@{\expandafter\lst at IfNextChars@@\lst at tofind\relax}
+\def\lst at IfNextChars@@#1#2\relax#3{%
+ \def\lst at tofind{#2}\lst at lAddTo\lst at eaten{#3}%
+ \ifx#1#3%
+ \ifx\lst at tofind\@empty
+ \let\lst at next\@tempa
+ \else
+ \let\lst at next\lst at IfNextChars@
+ \fi
+ \expandafter\lst at next
+ \else
+ \expandafter\@tempb
+ \fi}
+\def\lst at IfNextCharActive#1#2#3{%
+ \begingroup \lccode`\~=`#3\lowercase{\endgroup
+ \ifx~}#3%
+ \def\lst at next{#1}%
+ \else
+ \def\lst at next{#2}%
+ \fi \lst at next #3}
+\def\lst at for#1\do#2{%
+ \def\lst at forbody##1{#2}%
+ \@for\lst at forvar:=#1\do
+ {\expandafter\lst at forbody\expandafter{\lst at forvar}}}
+\def\lst at MakeActive#1{%
+ \let\lst at temp\@empty \lst at MakeActive@#1%
+ \relax\relax\relax\relax\relax\relax\relax\relax\relax}
+\begingroup
+\catcode`\^^@=\active \catcode`\^^A=\active \catcode`\^^B=\active
+\catcode`\^^C=\active \catcode`\^^D=\active \catcode`\^^E=\active
+\catcode`\^^F=\active \catcode`\^^G=\active \catcode`\^^H=\active
+\gdef\lst at MakeActive@#1#2#3#4#5#6#7#8#9{\let\lst at next\relax
+ \ifx#1\relax
+ \else \lccode`\^^@=`#1%
+ \ifx#2\relax
+ \lowercase{\lst at lAddTo\lst at temp{^^@}}%
+ \else \lccode`\^^A=`#2%
+ \ifx#3\relax
+ \lowercase{\lst at lAddTo\lst at temp{^^@^^A}}%
+ \else \lccode`\^^B=`#3%
+ \ifx#4\relax
+ \lowercase{\lst at lAddTo\lst at temp{^^@^^A^^B}}%
+ \else \lccode`\^^C=`#4%
+ \ifx#5\relax
+ \lowercase{\lst at lAddTo\lst at temp{^^@^^A^^B^^C}}%
+ \else \lccode`\^^D=`#5%
+ \ifx#6\relax
+ \lowercase{\lst at lAddTo\lst at temp{^^@^^A^^B^^C^^D}}%
+ \else \lccode`\^^E=`#6%
+ \ifx#7\relax
+ \lowercase{\lst at lAddTo\lst at temp{^^@^^A^^B^^C^^D^^E}}%
+ \else \lccode`\^^F=`#7%
+ \ifx#8\relax
+ \lowercase{\lst at lAddTo\lst at temp{^^@^^A^^B^^C^^D^^E^^F}}%
+ \else \lccode`\^^G=`#8%
+ \ifx#9\relax
+ \lowercase{\lst at lAddTo\lst at temp{^^@^^A^^B^^C^^D^^E^^F^^G}}%
+ \else \lccode`\^^H=`#9%
+ \lowercase{\lst at lAddTo\lst at temp{^^@^^A^^B^^C^^D^^E^^F^^G^^H}}%
+ \let\lst at next\lst at MakeActive@
+ \fi \fi \fi \fi \fi \fi \fi \fi \fi
+ \lst at next}
+\endgroup
+\def\lst at DefActive#1#2{\lst at MakeActive{#2}\let#1\lst at temp}
+\def\lst at DefOther#1#2{%
+ \begingroup \def#1{#2}\escapechar\m at ne \expandafter\endgroup
+ \expandafter\lst at DefOther@\meaning#1\relax#1}
+\def\lst at DefOther@#1>#2\relax#3{\edef#3{\zap at space#2 \@empty}}
+\def\lst at InsideConvert#1{%
+ \lst at ifmathescape
+ \lst at InsideConvert@e#1$\@nil
+ \lst at if
+ \lst at InsideConvert@ey#1\@nil
+ \else
+ \lst at InsideConvert@#1 \@empty
+ \expandafter\@gobbletwo
+ \fi
+ \expandafter\lst at next
+ \else
+ \lst at InsideConvert@#1 \@empty
+ \fi}
+\begingroup \lccode`\~=`\ \relax \lowercase{%
+\gdef\lst at InsideConvert@#1 #2{%
+ \lst at MakeActive{#1}%
+ \ifx\@empty#2%
+ \lst at lExtend\lst at arg{\lst at temp}%
+ \else
+ \lst at lExtend\lst at arg{\lst at temp~}%
+ \expandafter\lst at InsideConvert@
+ \fi #2}
+}\endgroup
+\def\lst at InsideConvert@e#1$#2\@nil{%
+ \ifx\@empty#2\@empty \lst at false \else \lst at true \fi}
+\def\lst at InsideConvert@ey#1$#2$#3\@nil{%
+ \lst at InsideConvert@#1 \@empty
+ \lst at lAddTo\lst at arg{%
+ \lst at ifdropinput\else
+ \lst at TrackNewLines\lst at OutputLostSpace \lst at XPrintToken
+ \setbox\@tempboxa=\hbox\bgroup$\lst at escapebegin
+ #2%
+ \lst at escapeend$\egroup \lst at CalcLostSpaceAndOutput
+ \lst at whitespacefalse
+ \fi}%
+ \def\lst at next{\lst at InsideConvert{#3}}%
+}
+\def\lst at XConvert{\@ifnextchar\bgroup \lst at XConvertArg\lst at XConvert@}
+\def\lst at XConvertArg#1{%
+ {\lst at false \let\lst at arg\@empty
+ \lst at XConvert#1\@nil
+ \global\let\@gtempa\lst at arg}%
+ \lst at lExtend\lst at arg{\expandafter{\@gtempa}}%
+ \lst at XConvertNext}
+\def\lst at XConvert@#1{%
+ \ifx\@nil#1\else
+ \begingroup\lccode`\~=`#1\lowercase{\endgroup
+ \lst at lAddTo\lst at arg~}%
+ \expandafter\lst at XConvertNext
+ \fi}
+\def\lst at XConvertNext{%
+ \lst at if \expandafter\lst at XConvertX
+ \else \expandafter\lst at XConvert \fi}
+\def\lst at XConvertX#1{%
+ \ifx\@nil#1\else
+ \lst at XConvertX@#1\relax
+ \expandafter\lst at XConvert
+ \fi}
+\def\lst at XConvertX@#1#2\relax{%
+ \begingroup\lccode`\~=`#1\lowercase{\endgroup
+ \lst at XCConvertX@@~}{#2}}
+\def\lst at XCConvertX@@#1#2{\lst at lAddTo\lst at arg{{#1#2}}}
+\def\lst at Require#1#2#3#4#5{%
+ \begingroup
+ \aftergroup\lst at true
+ \ifx\@empty#3\@empty\else
+ \def\lst at prefix{#2}\let\lst at require\@empty
+ \edef\lst at temp{\expandafter\zap at space#3 \@empty}%
+ \lst at for\lst at temp\do{%
+ \ifx\@empty##1\@empty\else \lstKV at OptArg[]{##1}{%
+ #4[####1]{####2}%
+ \@ifundefined{\@lst\lst at prefix @\lst at malias $\lst at oalias}%
+ {\edef\lst at require{\lst at require,\lst at malias $\lst at oalias}}%
+ {}}%
+ \fi}%
+ \global\let\lst at loadaspects\@empty
+ \lst at InputCatcodes
+ \ifx\lst at require\@empty\else
+ \lst at for{#5}\do{%
+ \ifx\lst at require\@empty\else
+ \InputIfFileExists{##1}{}{}%
+ \fi}%
+ \fi
+ \ifx\lst at require\@empty\else
+ \PackageError{Listings}{Couldn't load requested #1}%
+ {The following #1s weren't loadable:^^J\@spaces
+ \lst at require^^JThis may cause errors in the sequel.}%
+ \aftergroup\lst at false
+ \fi
+ \ifx\lst at loadaspects\@empty\else
+ \lst at RequireAspects\lst at loadaspects
+ \fi
+ \fi
+ \endgroup}
+\def\lst at IfRequired[#1]#2{%
+ \lst at NormedDef\lst at temp{[#1]#2}%
+ \expandafter\lst at IfRequired@\lst at temp\relax}
+\def\lst at IfRequired@[#1]#2\relax#3{%
+ \lst at IfOneOf #2$#1\relax\lst at require
+ {\lst at DeleteKeysIn@\lst at require#2$#1,\relax,%
+ \global\expandafter\let
+ \csname\@lst\lst at prefix @#2$#1\endcsname\@empty
+ #3}}
+\let\lst at require\@empty
+\def\lst at NoAlias[#1]#2{%
+ \lst at NormedDef\lst at oalias{#1}\lst at NormedDef\lst at malias{#2}}
+\gdef\lst at LAS#1#2#3#4#5#6#7{%
+ \lst at Require{#1}{#2}{#3}#4#5%
+ #4#3%
+ \@ifundefined{lst#2@\lst at malias$\lst at oalias}%
+ {\PackageError{Listings}%
+ {#1 \ifx\@empty\lst at oalias\else \lst at oalias\space of \fi
+ \lst at malias\space undefined}%
+ {The #1 is not loadable. \@ehc}}%
+ {#6\csname\@lst#2@\lst at malias $\lst at oalias\endcsname #7}}
+\def\lst at RequireAspects#1{%
+ \lst at Require{aspect}{asp}{#1}\lst at NoAlias\lstaspectfiles}
+\let\lstloadaspects\lst at RequireAspects
+\@ifundefined{lstaspectfiles}
+ {\newcommand\lstaspectfiles{lstmisc0.sty,lstmisc.sty}}{}
+\gdef\lst at DefDriver#1#2#3#4{%
+ \@ifnextchar[{\lst at DefDriver@{#1}{#2}#3#4}%
+ {\lst at DefDriver@{#1}{#2}#3#4[]}}
+\gdef\lst at DefDriver@#1#2#3#4[#5]#6{%
+ \def\lst at name{#1}\let\lst at if#4%
+ \lst at NormedDef\lst at driver{\@lst#2@#6$#5}%
+ \lst at IfRequired[#5]{#6}{\begingroup \lst at true}%
+ {\begingroup}%
+ \lst at setcatcodes
+ \@ifnextchar[{\lst at XDefDriver{#1}#3}{\lst at DefDriver@@#3}}
+\gdef\lst at DefDriver@@#1#2{%
+ \lst at if
+ \global\@namedef{\lst at driver}{#1{#2}}%
+ \fi
+ \endgroup
+ \@ifnextchar[\lst at XXDefDriver\@empty}
+\gdef\lst at XXDefDriver[#1]{%
+ \ifx\@empty#1\@empty\else
+ \lst at if
+ \lstloadaspects{#1}%
+ \else
+ \@ifundefined{\lst at driver}{}%
+ {\xdef\lst at loadaspects{\lst at loadaspects,#1}}%
+ \fi
+ \fi}
+\gdef\lst at XDefDriver#1#2[#3]#4#5{\lst at DefDriver@@#2{also#1=[#3]#4,#5}}
+\let\lst at UserCommand\gdef
+\newcommand*\lst at BeginAspect[2][]{%
+ \def\lst at curraspect{#2}%
+ \ifx \lst at curraspect\@empty
+ \expandafter\lst at GobbleAspect
+ \else
+ \let\lst at next\@empty
+ \lst at IfRequired[]{#2}%
+ {\lst at RequireAspects{#1}%
+ \lst at if\else \let\lst at next\lst at GobbleAspect \fi}%
+ {\let\lst at next\lst at GobbleAspect}%
+ \expandafter\lst at next
+ \fi}
+\def\lst at EndAspect{%
+ \csname\@lst patch@\lst at curraspect\endcsname
+ \let\lst at curraspect\@empty}
+\long\def\lst at GobbleAspect#1\lst at EndAspect{\let\lst at curraspect\@empty}
+\def\lst at Key#1#2{%
+ \@ifnextchar[{\lstKV at def{#1}{#2}}%
+ {\def\lst at temp{\lst at Key@{#1}{#2}}
+ \afterassignment\lst at temp
+ \global\@namedef{KV@\@lst @#1}####1}}
+\def\lstKV at def#1#2[#3]{%
+ \global\@namedef{KV@\@lst @#1 at default\expandafter}\expandafter
+ {\csname KV@\@lst @#1\endcsname{#3}}%
+ \def\lst at temp{\lst at Key@{#1}{#2}}\afterassignment\lst at temp
+ \global\@namedef{KV@\@lst @#1}##1}
+\def\lst at Key@#1#2{%
+ \ifx\relax#2\@empty\else
+ \begingroup \globaldefs\@ne
+ \csname KV@\@lst @#1\endcsname{#2}%
+ \endgroup
+ \fi}
+\def\lst at UseHook#1{\csname\@lst hk@#1\endcsname}
+\def\lst at AddToHook{\lst at ATH@\iffalse\lst at AddTo}
+\def\lst at AddToHookExe{\lst at ATH@\iftrue\lst at AddTo}
+\def\lst at AddToHookAtTop{\lst at ATH@\iffalse\lst at AddToAtTop}
+\long\def\lst at ATH@#1#2#3#4{%
+ \@ifundefined{\@lst hk@#3}{%
+ \expandafter\gdef\csname\@lst hk@#3\endcsname{}}{}%
+ \expandafter#2\csname\@lst hk@#3\endcsname{#4}%
+ \def\lst at temp{#4}%
+ #1% \iftrue|false
+ \begingroup \globaldefs\@ne \lst at temp \endgroup
+ \fi}
+\long\def\lst at AddTo#1#2{%
+ \expandafter\gdef\expandafter#1\expandafter{#1#2}}
+\def\lst at AddToAtTop#1#2{\def\lst at temp{#2}%
+ \expandafter\expandafter\expandafter\gdef
+ \expandafter\expandafter\expandafter#1%
+ \expandafter\expandafter\expandafter{\expandafter\lst at temp#1}}
+\def\lst at lAddTo#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
+\def\lst at Extend#1#2{%
+ \expandafter\lst at AddTo\expandafter#1\expandafter{#2}}
+\def\lst at lExtend#1#2{%
+ \expandafter\lst at lAddTo\expandafter#1\expandafter{#2}}
+\RequirePackage{keyval}[1997/11/10]
+\def\lstKV at TwoArg#1#2{\gdef\@gtempa##1##2{#2}\@gtempa#1{}{}}
+\def\lstKV at ThreeArg#1#2{\gdef\@gtempa##1##2##3{#2}\@gtempa#1{}{}{}}
+\def\lstKV at FourArg#1#2{\gdef\@gtempa##1##2##3##4{#2}\@gtempa#1{}{}{}{}}
+\def\lstKV at OptArg[#1]#2#3{%
+ \gdef\@gtempa[##1]##2{#3}\lstKV at OptArg@{#1}#2\@}
+\def\lstKV at OptArg@#1{\@ifnextchar[\lstKV at OptArg@@{\lstKV at OptArg@@[#1]}}
+\def\lstKV at OptArg@@[#1]#2\@{\@gtempa[#1]{#2}}
+\def\lstKV at XOptArg[#1]#2#3{%
+ \global\let\@gtempa#3\lstKV at OptArg@{#1}#2\@}
+\def\lstKV at CSTwoArg#1#2{%
+ \gdef\@gtempa##1,##2,##3\relax{#2}%
+ \@gtempa#1,,\relax}
+\def\lstKV at SetIf#1{\lstKV at SetIf@#1\relax}
+\def\lstKV at SetIf@#1#2\relax#3{\lowercase{%
+ \expandafter\let\expandafter#3%
+ \csname if\ifx #1t}true\else false\fi\endcsname}
+\def\lstKV at SwitchCases#1#2#3{%
+ \def\lst at temp##1\\#1&##2\\##3##4\@nil{%
+ \ifx\@empty##3%
+ #3%
+ \else
+ ##2%
+ \fi
+ }%
+ \lst at temp\\#2\\#1&\\\@empty\@nil}
+\lst at UserCommand\lstset{\begingroup \lst at setcatcodes \lstset@}
+\def\lstset@#1{\endgroup \ifx\@empty#1\@empty\else\setkeys{lst}{#1}\fi}
+\def\lst at setcatcodes{\makeatletter \catcode`\==12\relax}
+\def\lst at NewMode#1{%
+ \ifx\@undefined#1%
+ \lst at mode\lst at newmode\relax \advance\lst at mode\@ne
+ \xdef\lst at newmode{\the\lst at mode}%
+ \global\chardef#1=\lst at mode
+ \lst at mode\lst at nomode
+ \fi}
+\newcount\lst at mode
+\def\lst at newmode{\m at ne}% init
+\lst at NewMode\lst at nomode % init (of \lst at mode :-)
+\def\lst at UseDynamicMode{%
+ \@tempcnta\lst at dynamicmode\relax \advance\@tempcnta\@ne
+ \edef\lst at dynamicmode{\the\@tempcnta}%
+ \expandafter\lst at Swap\expandafter{\expandafter{\lst at dynamicmode}}}
+\lst at AddToHook{InitVars}{\let\lst at dynamicmode\lst at newmode}
+\def\lst at EnterMode#1#2{%
+ \bgroup \lst at mode=#1\relax #2%
+ \lst at FontAdjust
+ \lst at lAddTo\lst at entermodes{\lst at EnterMode{#1}{#2}}}
+\lst at AddToHook{InitVars}{\let\lst at entermodes\@empty}
+\let\lst at entermodes\@empty % init
+\def\lst at LeaveMode{%
+ \ifnum\lst at mode=\lst at nomode\else
+ \egroup \expandafter\lsthk at EndGroup
+ \fi}
+\lst at AddToHook{EndGroup}{}% init
+\def\lst at InterruptModes{%
+ \lst at Extend\lst at modestack{\expandafter{\lst at entermodes}}%
+ \lst at LeaveAllModes}
+\lst at AddToHook{InitVars}{\global\let\lst at modestack\@empty}
+\def\lst at ReenterModes{%
+ \ifx\lst at modestack\@empty\else
+ \lst at LeaveAllModes
+ \global\let\@gtempa\lst at modestack
+ \global\let\lst at modestack\@empty
+ \expandafter\lst at ReenterModes@\@gtempa\relax
+ \fi}
+\def\lst at ReenterModes@#1#2{%
+ \ifx\relax#2\@empty
+ \gdef\@gtempa##1{#1}%
+ \expandafter\@gtempa
+ \else
+ \lst at AddTo\lst at modestack{{#1}}%
+ \expandafter\lst at ReenterModes@
+ \fi
+ {#2}}
+\def\lst at LeaveAllModes{%
+ \ifnum\lst at mode=\lst at nomode
+ \expandafter\lsthk at EndGroup
+ \else
+ \expandafter\egroup\expandafter\lst at LeaveAllModes
+ \fi}
+\lst at AddToHook{ExitVars}{\lst at LeaveAllModes}
+\lst at NewMode\lst at Pmode
+\lst at NewMode\lst at GPmode
+\def\lst at modetrue{\let\lst at ifmode\iftrue \lsthk at ModeTrue}
+\let\lst at ifmode\iffalse % init
+\lst at AddToHook{ModeTrue}{}% init
+\def\lst at Lmodetrue{\let\lst at ifLmode\iftrue}
+\let\lst at ifLmode\iffalse % init
+\lst at AddToHook{EOL}{\@whilesw \lst at ifLmode\fi \lst at LeaveMode}
+\def\lst at NormedDef#1#2{\lowercase{\edef#1{\zap at space#2 \@empty}}}
+\def\lst at NormedNameDef#1#2{%
+ \lowercase{\edef\lst at temp{\zap at space#1 \@empty}%
+ \expandafter\xdef\csname\lst at temp\endcsname{\zap at space#2 \@empty}}}
+\def\lst at GetFreeMacro#1{%
+ \@tempcnta\z@ \def\lst at freemacro{#1\the\@tempcnta}%
+ \lst at GFM@}
+\def\lst at GFM@{%
+ \expandafter\ifx \csname\lst at freemacro\endcsname \relax
+ \edef\lst at freemacro{\csname\lst at freemacro\endcsname}%
+ \else
+ \advance\@tempcnta\@ne
+ \expandafter\lst at GFM@
+ \fi}
+\newbox\lst at gtempboxa
+\newtoks\lst at token \newcount\lst at length
+\def\lst at ResetToken{\lst at token{}\lst at length\z@}
+\lst at AddToHook{InitVarsBOL}{\lst at ResetToken \let\lst at lastother\@empty}
+\lst at AddToHook{EndGroup}{\lst at ResetToken \let\lst at lastother\@empty}
+\def\lst at lettertrue{\let\lst at ifletter\iftrue}
+\def\lst at letterfalse{\let\lst at ifletter\iffalse}
+\lst at AddToHook{InitVars}{\lst at letterfalse}
+\def\lst at Append#1{\advance\lst at length\@ne
+ \lst at token=\expandafter{\the\lst at token#1}}
+\def\lst at AppendOther{%
+ \lst at ifletter \lst at Output\lst at letterfalse \fi
+ \futurelet\lst at lastother\lst at Append}
+\def\lst at AppendLetter{%
+ \lst at ifletter\else \lst at OutputOther\lst at lettertrue \fi
+ \lst at Append}
+\def\lst at SaveToken{%
+ \global\let\lst at gthestyle\lst at thestyle
+ \global\let\lst at glastother\lst at lastother
+ \xdef\lst at RestoreToken{\noexpand\lst at token{\the\lst at token}%
+ \noexpand\lst at length\the\lst at length\relax
+ \noexpand\let\noexpand\lst at thestyle
+ \noexpand\lst at gthestyle
+ \noexpand\let\noexpand\lst at lastother
+ \noexpand\lst at glastother}}
+\def\lst at IfLastOtherOneOf#1{\lst at IfLastOtherOneOf@ #1\relax}
+\def\lst at IfLastOtherOneOf@#1{%
+ \ifx #1\relax
+ \expandafter\@secondoftwo
+ \else
+ \ifx\lst at lastother#1%
+ \lst at IfLastOtherOneOf@t
+ \else
+ \expandafter\expandafter\expandafter\lst at IfLastOtherOneOf@
+ \fi
+ \fi}
+\def\lst at IfLastOtherOneOf@t#1\fi\fi#2\relax{\fi\fi\@firstoftwo}
+\newdimen\lst at currlwidth % \global
+\newcount\lst at column \newcount\lst at pos % \global
+\lst at AddToHook{InitVarsBOL}
+ {\global\lst at currlwidth\z@ \global\lst at pos\z@ \global\lst at column\z@}
+\def\lst at CalcColumn{%
+ \@tempcnta\lst at column
+ \advance\@tempcnta\lst at length
+ \advance\@tempcnta-\lst at pos}
+\newdimen\lst at lostspace % \global
+\lst at AddToHook{InitVarsBOL}{\global\lst at lostspace\z@}
+\def\lst at UseLostSpace{\ifdim\lst at lostspace>\z@ \lst at InsertLostSpace \fi}
+\def\lst at InsertLostSpace{%
+ \lst at Kern\lst at lostspace \global\lst at lostspace\z@}
+\def\lst at InsertHalfLostSpace{%
+ \global\lst at lostspace.5\lst at lostspace \lst at Kern\lst at lostspace}
+\newdimen\lst at width
+\lst at Key{basewidth}{0.6em,0.45em}{\lstKV at CSTwoArg{#1}%
+ {\def\lst at widthfixed{##1}\def\lst at widthflexible{##2}%
+ \ifx\lst at widthflexible\@empty
+ \let\lst at widthflexible\lst at widthfixed
+ \fi
+ \def\lst at temp{\PackageError{Listings}%
+ {Negative value(s) treated as zero}%
+ \@ehc}%
+ \let\lst at error\@empty
+ \ifdim \lst at widthfixed<\z@
+ \let\lst at error\lst at temp \let\lst at widthfixed\z@
+ \fi
+ \ifdim \lst at widthflexible<\z@
+ \let\lst at error\lst at temp \let\lst at widthflexible\z@
+ \fi
+ \lst at error}}
+\lst at AddToHook{FontAdjust}
+ {\lst at width=\lst at ifflexible\lst at widthflexible
+ \else\lst at widthfixed\fi \relax}
+\lst at Key{fontadjust}{false}[t]{\lstKV at SetIf{#1}\lst at iffontadjust}
+\def\lst at FontAdjust{\lst at iffontadjust \lsthk at FontAdjust \fi}
+\lst at AddToHook{InitVars}{\lsthk at FontAdjust}
+\def\lst at OutputBox#1{\lst at alloverstyle{\box#1}}
+\def\lst at alloverstyle#1{#1}% init
+\def\lst at Kern#1{%
+ \setbox\z@\hbox{{\lst at currstyle{\kern#1}}}%
+ \global\advance\lst at currlwidth \wd\z@
+ \lst at OutputBox\z@}
+\def\lst at CalcLostSpaceAndOutput{%
+ \global\advance\lst at lostspace \lst at length\lst at width
+ \global\advance\lst at lostspace-\wd\@tempboxa
+ \global\advance\lst at currlwidth \wd\@tempboxa
+ \global\advance\lst at pos -\lst at length
+ \setbox\@tempboxa\hbox{\let\lst at OutputBox\box
+ \ifdim\lst at lostspace>\z@ \lst at leftinsert \fi
+ \box\@tempboxa
+ \ifdim\lst at lostspace>\z@ \lst at rightinsert \fi}%
+ \lst at OutputBox\@tempboxa \lsthk at PostOutput}
+\lst at AddToHook{PostOutput}{}% init
+\def\lst at OutputToken{%
+ \lst at TrackNewLines \lst at OutputLostSpace
+ \lst at ifgobbledws
+ \lst at gobbledwhitespacefalse
+ \lst@@discretionary
+ \fi
+ \lst at CheckMerge
+ {\lst at thestyle{\lst at FontAdjust
+ \setbox\@tempboxa\lst at hbox
+ {\lsthk at OutputBox
+ \lst at lefthss
+ \expandafter\lst at FillOutputBox\the\lst at token\@empty
+ \lst at righthss}%
+ \lst at CalcLostSpaceAndOutput}}%
+ \lst at ResetToken}
+\lst at AddToHook{OutputBox}{}% init
+\def\lst at gobbledwhitespacetrue{\global\let\lst at ifgobbledws\iftrue}
+\def\lst at gobbledwhitespacefalse{\global\let\lst at ifgobbledws\iffalse}
+\lst at AddToHookExe{InitBOL}{\lst at gobbledwhitespacefalse}% init
+\def\lst at Delay#1{%
+ \lst at CheckDelay
+ #1%
+ \lst at GetOutputMacro\lst at delayedoutput
+ \edef\lst at delayed{\the\lst at token}%
+ \edef\lst at delayedlength{\the\lst at length}%
+ \lst at ResetToken}
+\def\lst at Merge#1{%
+ \lst at CheckMerge
+ #1%
+ \edef\lst at merged{\the\lst at token}%
+ \edef\lst at mergedlength{\the\lst at length}%
+ \lst at ResetToken}
+\def\lst at MergeToken#1#2{%
+ \advance\lst at length#2%
+ \lst at lExtend#1{\the\lst at token}%
+ \expandafter\lst at token\expandafter{#1}%
+ \let#1\@empty}
+\def\lst at CheckDelay{%
+ \ifx\lst at delayed\@empty\else
+ \lst at GetOutputMacro\@gtempa
+ \ifx\lst at delayedoutput\@gtempa
+ \lst at MergeToken\lst at delayed\lst at delayedlength
+ \else
+ {\lst at ResetToken
+ \lst at MergeToken\lst at delayed\lst at delayedlength
+ \lst at delayedoutput}%
+ \let\lst at delayed\@empty
+ \fi
+ \fi}
+\def\lst at CheckMerge{%
+ \ifx\lst at merged\@empty\else
+ \lst at MergeToken\lst at merged\lst at mergedlength
+ \fi}
+\let\lst at delayed\@empty % init
+\let\lst at merged\@empty % init
+\def\lst at column@fixed{%
+ \lst at flexiblefalse
+ \lst at width\lst at widthfixed\relax
+ \let\lst at OutputLostSpace\lst at UseLostSpace
+ \let\lst at FillOutputBox\lst at FillFixed
+ \let\lst at hss\hss
+ \def\lst at hbox{\hbox to\lst at length\lst at width}}
+\def\lst at FillFixed#1{#1\lst at FillFixed@}
+\def\lst at FillFixed@#1{%
+ \ifx\@empty#1\else \lst at hss#1\expandafter\lst at FillFixed@ \fi}
+\def\lst at column@flexible{%
+ \lst at flexibletrue
+ \lst at width\lst at widthflexible\relax
+ \let\lst at OutputLostSpace\lst at UseLostSpace
+ \let\lst at FillOutputBox\@empty
+ \let\lst at hss\@empty
+ \let\lst at hbox\hbox}
+\def\lst at column@fullflexible{%
+ \lst at column@flexible
+ \def\lst at OutputLostSpace{\lst at ifnewline \lst at UseLostSpace\fi}%
+ \let\lst at leftinsert\@empty
+ \let\lst at rightinsert\@empty}
+\def\lst at outputpos#1#2\relax{%
+ \def\lst at lefthss{\lst at hss}\let\lst at righthss\lst at lefthss
+ \let\lst at rightinsert\lst at InsertLostSpace
+ \ifx #1c%
+ \let\lst at leftinsert\lst at InsertHalfLostSpace
+ \else\ifx #1r%
+ \let\lst at righthss\@empty
+ \let\lst at leftinsert\lst at InsertLostSpace
+ \let\lst at rightinsert\@empty
+ \else
+ \let\lst at lefthss\@empty
+ \let\lst at leftinsert\@empty
+ \ifx #1l\else \PackageWarning{Listings}%
+ {Unknown positioning for output boxes}%
+ \fi
+ \fi\fi}
+\def\lst at flexibletrue{\let\lst at ifflexible\iftrue}
+\def\lst at flexiblefalse{\let\lst at ifflexible\iffalse}
+\lst at Key{columns}{[c]fixed}{\lstKV at OptArg[]{#1}{%
+ \ifx\@empty##1\@empty\else \lst at outputpos##1\relax\relax \fi
+ \expandafter\let\expandafter\lst at arg
+ \csname\@lst @column@##2\endcsname
+ \lst at arg
+ \ifx\lst at arg\relax
+ \PackageWarning{Listings}{Unknown column format `##2'}%
+ \else
+ \lst at ifflexible
+ \let\lst at columnsflexible\lst at arg
+ \else
+ \let\lst at columnsfixed\lst at arg
+ \fi
+ \fi}}
+\let\lst at columnsfixed\lst at column@fixed % init
+\let\lst at columnsflexible\lst at column@flexible % init
+\lst at Key{flexiblecolumns}\relax[t]{%
+ \lstKV at SetIf{#1}\lst at ifflexible
+ \lst at ifflexible \lst at columnsflexible
+ \else \lst at columnsfixed \fi}
+\newcount\lst at newlines
+\lst at AddToHook{InitVars}{\global\lst at newlines\z@}
+\lst at AddToHook{InitVarsBOL}{\global\advance\lst at newlines\@ne}
+\def\lst at NewLine{%
+ \ifx\lst at OutputBox\@gobble\else
+ \par\noindent \hbox{}%
+ \fi
+ \global\advance\lst at newlines\m at ne
+ \lst at newlinetrue}
+\def\lst at newlinetrue{\global\let\lst at ifnewline\iftrue}
+\lst at AddToHookExe{PostOutput}{\global\let\lst at ifnewline\iffalse}% init
+\def\lst at TrackNewLines{%
+ \ifnum\lst at newlines>\z@
+ \lsthk at OnNewLine
+ \lst at DoNewLines
+ \fi}
+\lst at AddToHook{OnNewLine}{}% init
+\lst at Key{emptylines}\maxdimen{%
+ \@ifstar{\lst at true\@tempcnta\@gobble#1\relax\lst at GobbleNil}%
+ {\lst at false\@tempcnta#1\relax\lst at GobbleNil}#1\@nil
+ \advance\@tempcnta\@ne
+ \edef\lst at maxempty{\the\@tempcnta\relax}%
+ \let\lst at ifpreservenumber\lst at if}
+\def\lst at DoNewLines{
+ \@whilenum\lst at newlines>\lst at maxempty \do
+ {\lst at ifpreservenumber
+ \lsthk at OnEmptyLine
+ \global\advance\c at lstnumber\lst at advancelstnum
+ \fi
+ \global\advance\lst at newlines\m at ne}%
+ \@whilenum \lst at newlines>\@ne \do
+ {\lsthk at OnEmptyLine \lst at NewLine}%
+ \ifnum\lst at newlines>\z@ \lst at NewLine \fi}
+\lst at AddToHook{OnEmptyLine}{}% init
+\lst at Key{identifierstyle}{}{\def\lst at identifierstyle{#1}}
+\lst at AddToHook{EmptyStyle}{\let\lst at identifierstyle\@empty}
+\def\lst at GotoTabStop{%
+ \ifnum\lst at newlines=\z@
+ \setbox\@tempboxa\hbox{\lst at outputspace}%
+ \setbox\@tempboxa\hbox to\wd\@tempboxa{{\lst at currstyle{\hss}}}%
+ \lst at CalcLostSpaceAndOutput
+ \else
+ \global\advance\lst at lostspace \lst at length\lst at width
+ \global\advance\lst at column\lst at length \lst at length\z@
+ \fi}
+\def\lst at OutputOther{%
+ \lst at CheckDelay
+ \ifnum\lst at length=\z@\else
+ \let\lst at thestyle\lst at currstyle
+ \lsthk at OutputOther
+ \lst at OutputToken
+ \fi}
+\lst at AddToHook{OutputOther}{}% init
+\let\lst at currstyle\relax % init
+\def\lst at Output{%
+ \lst at CheckDelay
+ \ifnum\lst at length=\z@\else
+ \ifx\lst at currstyle\relax
+ \let\lst at thestyle\lst at identifierstyle
+ \else
+ \let\lst at thestyle\lst at currstyle
+ \fi
+ \lsthk at Output
+ \lst at OutputToken
+ \fi
+ \let\lst at lastother\relax}
+\lst at AddToHook{Output}{}% init
+\def\lst at GetOutputMacro#1{%
+ \lst at ifletter \global\let#1\lst at Output
+ \else \global\let#1\lst at OutputOther\fi}
+\def\lst at PrintToken{%
+ \lst at ifletter \lst at Output \lst at letterfalse
+ \else \lst at OutputOther \let\lst at lastother\@empty \fi}
+\def\lst at XPrintToken{%
+ \lst at PrintToken \lst at CheckMerge
+ \ifnum\lst at length=\z@\else \lst at PrintToken \fi}
+\def\lst at BeginDropOutput#1{%
+ \xdef\lst at BDOnewlines{\the\lst at newlines}%
+ \global\let\lst at BDOifnewline\lst at ifnewline
+ \lst at EnterMode{#1}%
+ {\lst at modetrue
+ \let\lst at OutputBox\@gobble
+ \aftergroup\lst at BDORestore}}
+\def\lst at BDORestore{%
+ \global\lst at newlines\lst at BDOnewlines
+ \global\let\lst at ifnewline\lst at BDOifnewline}
+\let\lst at EndDropOutput\lst at LeaveMode
+\def\lst at ProcessLetter{\lst at whitespacefalse \lst at AppendLetter}
+\def\lst at ProcessOther{\lst at whitespacefalse \lst at AppendOther}
+\def\lst at ProcessDigit{%
+ \lst at whitespacefalse
+ \lst at ifletter \expandafter\lst at AppendLetter
+ \else \expandafter\lst at AppendOther\fi}
+\def\lst at whitespacetrue{\global\let\lst at ifwhitespace\iftrue}
+\def\lst at whitespacefalse{\global\let\lst at ifwhitespace\iffalse}
+\lst at AddToHook{InitVarsBOL}{\lst at whitespacetrue}
+\lst at Key{tabsize}{8}
+ {\ifnum#1>\z@ \def\lst at tabsize{#1}\else
+ \PackageError{Listings}{Strict positive integer expected}%
+ {You can't use `#1' as tabsize. \@ehc}%
+ \fi}
+\lst at Key{showtabs}f[t]{\lstKV at SetIf{#1}\lst at ifshowtabs}
+\lst at Key{tab}{\kern.06em\hbox{\vrule\@height.3ex}%
+ \hrulefill\hbox{\vrule\@height.3ex}}
+ {\def\lst at tab{#1}}
+\def\lst at ProcessTabulator{%
+ \lst at XPrintToken \lst at whitespacetrue
+ \global\advance\lst at column -\lst at pos
+ \@whilenum \lst at pos<\@ne \do
+ {\global\advance\lst at pos\lst at tabsize}%
+ \lst at length\lst at pos
+ \lst at PreGotoTabStop}
+\def\lst at PreGotoTabStop{%
+ \lst at ifshowtabs
+ \lst at TrackNewLines
+ \setbox\@tempboxa\hbox to\lst at length\lst at width
+ {{\lst at currstyle{\hss\lst at tab}}}%
+ \lst at CalcLostSpaceAndOutput
+ \else
+ \lst at ifkeepspaces
+ \@tempcnta\lst at length \lst at length\z@
+ \@whilenum \@tempcnta>\z@ \do
+ {\lst at AppendOther\lst at outputspace
+ \advance\@tempcnta\m at ne}%
+ \lst at OutputOther
+ \else
+ \lst at GotoTabStop
+ \fi
+ \fi
+ \lst at length\z@ \global\lst at pos\z@}
+\def\lst at outputspace{\ }
+\def\lst at visiblespace{\lst at ttfamily{\char32}\textvisiblespace}
+\lst at Key{showspaces}{false}[t]{\lstKV at SetIf{#1}\lst at ifshowspaces}
+\lst at Key{keepspaces}{false}[t]{\lstKV at SetIf{#1}\lst at ifkeepspaces}
+\lst at AddToHook{Init}
+ {\lst at ifshowspaces
+ \let\lst at outputspace\lst at visiblespace
+ \lst at keepspacestrue
+ \fi}
+\def\lst at keepspacestrue{\let\lst at ifkeepspaces\iftrue}
+\def\lst at ProcessSpace{%
+ \lst at ifkeepspaces
+ \lst at whitespacetrue
+ \lst at PrintToken
+ \lst at AppendOther\lst at outputspace
+ \lst at PrintToken
+ \else \ifnum\lst at newlines=\z@
+ \lst at AppendSpecialSpace
+ \else \ifnum\lst at length=\z@
+ \global\advance\lst at lostspace\lst at width
+ \global\advance\lst at pos\m at ne
+ \lst at whitespacetrue
+ \else
+ \lst at AppendSpecialSpace
+ \fi
+ \fi \fi}
+\def\lst at AppendSpecialSpace{%
+ \lst at ifwhitespace
+ \lst at PrintToken
+ \global\advance\lst at lostspace\lst at width
+ \global\advance\lst at pos\m at ne
+ \lst at gobbledwhitespacetrue
+ \else
+ \lst at whitespacetrue
+ \lst at PrintToken
+ \lst at AppendOther\lst at outputspace
+ \lst at PrintToken
+ \fi}
+\lst at Key{formfeed}{\bigbreak}{\def\lst at formfeed{#1}}
+\def\lst at ProcessFormFeed{%
+ \lst at XPrintToken
+ \ifnum\lst at newlines=\z@
+ \lst at EOLUpdate \lsthk at InitVarsBOL
+ \fi
+ \lst at formfeed
+ \lst at whitespacetrue}
+\def\lst at Def#1{\lccode`\~=#1\lowercase{\def~}}
+\def\lst at Let#1{\lccode`\~=#1\lowercase{\let~}}
+\lst at AddToAtTop{\try at load@fontshape}{\def\space{ }}
+\def\lst at SelectStdCharTable{%
+ \lst at Def{9}{\lst at ProcessTabulator}%
+ \lst at Def{12}{\lst at ProcessFormFeed}%
+ \lst at Def{32}{\lst at ProcessSpace}}
+\def\lst at CCPut#1#2{%
+ \ifnum#2=\z@
+ \expandafter\@gobbletwo
+ \else
+ \lccode`\~=#2\lccode`\/=#2\lowercase{\lst at CCPut@~{#1/}}%
+ \fi
+ \lst at CCPut#1}
+\def\lst at CCPut@#1#2{\lst at lAddTo\lst at SelectStdCharTable{\def#1{#2}}}
+\lst at CCPut \lst at ProcessOther
+ {"21}{"22}{"28}{"29}{"2B}{"2C}{"2E}{"2F}
+ {"3A}{"3B}{"3D}{"3F}{"5B}{"5D}
+ \z@
+\lst at CCPut \lst at ProcessDigit
+ {"30}{"31}{"32}{"33}{"34}{"35}{"36}{"37}{"38}{"39}
+ \z@
+\lst at CCPut \lst at ProcessLetter
+ {"40}{"41}{"42}{"43}{"44}{"45}{"46}{"47}
+ {"48}{"49}{"4A}{"4B}{"4C}{"4D}{"4E}{"4F}
+ {"50}{"51}{"52}{"53}{"54}{"55}{"56}{"57}
+ {"58}{"59}{"5A}
+ {"61}{"62}{"63}{"64}{"65}{"66}{"67}
+ {"68}{"69}{"6A}{"6B}{"6C}{"6D}{"6E}{"6F}
+ {"70}{"71}{"72}{"73}{"74}{"75}{"76}{"77}
+ {"78}{"79}{"7A}
+ \z@
+\def\lst at CCPutMacro#1#2#3{%
+ \ifnum#2=\z@ \else
+ \begingroup\lccode`\~=#2\relax \lccode`\/=#2\relax
+ \lowercase{\endgroup\expandafter\lst at CCPutMacro@
+ \csname\@lst @um/\expandafter\endcsname
+ \csname\@lst @um/@\endcsname /~}#1{#3}%
+ \expandafter\lst at CCPutMacro
+ \fi}
+\def\lst at CCPutMacro@#1#2#3#4#5#6{%
+ \lst at lAddTo\lst at SelectStdCharTable{\def#4{#5#1}}%
+ \def#1{\lst at UM#3}%
+ \def#2{#6}}
+\def\lst at UM#1{\csname\@lst @um#1@\endcsname}
+\lst at CCPutMacro
+ \lst at ProcessOther {"23}\#
+ \lst at ProcessLetter{"24}\textdollar
+ \lst at ProcessOther {"25}\%
+ \lst at ProcessOther {"26}\&
+ \lst at ProcessOther {"27}{\lst at ifupquote \textquotesingle
+ \else \char39\relax \fi}
+ \lst at ProcessOther {"2A}{\lst at ttfamily*\textasteriskcentered}
+ \lst at ProcessOther {"2D}{\lst at ttfamily{-{}}{$-$}}
+ \lst at ProcessOther {"3C}{\lst at ttfamily<\textless}
+ \lst at ProcessOther {"3E}{\lst at ttfamily>\textgreater}
+ \lst at ProcessOther {"5C}{\lst at ttfamily{\char92}\textbackslash}
+ \lst at ProcessOther {"5E}\textasciicircum
+ \lst at ProcessLetter{"5F}{\lst at ttfamily{\char95}\textunderscore}
+ \lst at ProcessOther {"60}{\lst at ifupquote \textasciigrave
+ \else \char96\relax \fi}
+ \lst at ProcessOther {"7B}{\lst at ttfamily{\char123}\textbraceleft}
+ \lst at ProcessOther {"7C}{\lst at ttfamily|\textbar}
+ \lst at ProcessOther {"7D}{\lst at ttfamily{\char125}\textbraceright}
+ \lst at ProcessOther {"7E}\textasciitilde
+ \lst at ProcessOther {"7F}-
+ \@empty\z@\@empty
+\def\lst at ttfamily#1#2{\ifx\f at family\ttdefault#1\relax\else#2\fi}
+\lst at AddToHook{Init}{\edef\ttdefault{\ttdefault}}
+\lst at Key{upquote}{false}[t]{\lstKV at SetIf{#1}\lst at ifupquote
+ \lst at ifupquote
+ \@ifundefined{textasciigrave}%
+ {\let\KV at lst@upquote\@gobble
+ \lstKV at SetIf f\lst at ifupquote \@gobble\fi
+ \PackageError{Listings}{Option `upquote' requires `textcomp'
+ package.\MessageBreak The option has been disabled}%
+ {Add \string\usepackage{textcomp} to your preamble.}}%
+ {}%
+ \fi}
+\AtBeginDocument{%
+ \@ifpackageloaded{upquote}{\RequirePackage{textcomp}%
+ \lstset{upquote}}{}%
+ \@ifpackageloaded{upquote2}{\lstset{upquote}}{}}
+\def\lst at activecharstrue{\let\lst at ifactivechars\iftrue}
+\def\lst at activecharsfalse{\let\lst at ifactivechars\iffalse}
+\lst at activecharstrue
+\def\lst at SelectCharTable{%
+ \lst at SelectStdCharTable
+ \lst at ifactivechars
+ \catcode9\active \catcode12\active \catcode13\active
+ \@tempcnta=32\relax
+ \@whilenum\@tempcnta<128\do
+ {\catcode\@tempcnta\active\advance\@tempcnta\@ne}%
+ \fi
+ \lst at ifec \lst at DefEC \fi
+ \let\do\lst at do@noligs \verbatim at nolig@list
+ \lsthk at SelectCharTable
+ \lst at DeveloperSCT
+\lst at DefRange
+ \ifx\lst at Backslash\relax\else
+ \lst at LetSaveDef{"5C}\lsts at backslash\lst at Backslash
+ \fi}
+\lst at Key{SelectCharTable}{}{\def\lst at DeveloperSCT{#1}}
+\lst at Key{MoreSelectCharTable}\relax{\lst at lAddTo\lst at DeveloperSCT{#1}}
+\lst at AddToHook{SetLanguage}{\let\lst at DeveloperSCT\@empty}
+\def\lst at do@noligs#1{%
+ \begingroup \lccode`\~=`#1\lowercase{\endgroup
+ \lst at do@noligs@~}}
+\def\lst at do@noligs@#1{%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#1%
+ \expandafter\expandafter\expandafter{\expandafter\lst at NoLig#1}}
+\def\lst at NoLig{\advance\lst at length\m at ne \lst at Append\lst at nolig}
+\def\lst at nolig{\lst at UM\@empty}%
+\@namedef{\@lst @um@}{\leavevmode\kern\z@}
+\def\lst at SaveOutputDef#1#2{%
+ \begingroup \lccode`\~=#1\relax \lowercase{\endgroup
+ \def\lst at temp##1\def~##2##3\relax}{%
+ \global\expandafter\let\expandafter#2\@gobble##2\relax}%
+ \expandafter\lst at temp\lst at SelectStdCharTable\relax}
+\lst at SaveOutputDef{"5C}\lstum at backslash
+\lst at Key{extendedchars}{true}[t]{\lstKV at SetIf{#1}\lst at ifec}
+\def\lst at DefEC{%
+ \lst at CCECUse \lst at ProcessLetter
+ ^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f%
+ ^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f%
+ ^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af%
+ ^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf%
+ ^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf%
+ ^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df%
+ ^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef%
+ ^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff%
+ ^^00}
+\def\lst at CCECUse#1#2{%
+ \ifnum`#2=\z@
+ \expandafter\@gobbletwo
+ \else
+ \ifnum\catcode`#2=\active
+ \lccode`\~=`#2\lccode`\/=`#2\lowercase{\lst at CCECUse@#1~/}%
+ \else
+ \lst at ifactivechars \catcode`#2=\active \fi
+ \lccode`\~=`#2\lccode`\/=`#2\lowercase{\def~{#1/}}%
+ \fi
+ \fi
+ \lst at CCECUse#1}
+\def\lst at CCECUse@#1#2#3{%
+ \expandafter\def\csname\@lst @EC#3\endcsname{\lst at UM#3}%
+ \expandafter\let\csname\@lst @um#3@\endcsname #2%
+ \edef#2{\noexpand#1%
+ \expandafter\noexpand\csname\@lst @EC#3\endcsname}}
+\lst at AddToHook{Init}
+ {\let\lsts at nfss@catcodes\nfss at catcodes
+ \let\nfss at catcodes\lst at nfss@catcodes}
+\def\lst at nfss@catcodes{%
+ \lst at makeletter
+ ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\relax
+ \@makeother (\@makeother )\@makeother ,\@makeother :\@makeother\&%
+ \@makeother 0\@makeother 1\@makeother 2\@makeother 3\@makeother 4%
+ \@makeother 5\@makeother 6\@makeother 7\@makeother 8\@makeother 9%
+ \@makeother =\lsts at nfss@catcodes}
+\def\lst at makeletter#1{%
+ \ifx\relax#1\else\catcode`#111\relax \expandafter\lst at makeletter\fi}
+\lst at Key{useoutput}{2}{\edef\lst at useoutput{\ifcase#10 0\or 1\else 2\fi}}
+\lst at AddToHook{Init}
+{\edef\lst at OrgOutput{\the\output}%
+\ifcase\lst at useoutput\relax
+\or
+ \output{\global\setbox\lst at gtempboxa\box\@cclv
+ \expandafter\egroup
+ \lst at SaveToken
+ \lst at InterruptModes
+ \setbox\@cclv\box\lst at gtempboxa
+ \bgroup\lst at OrgOutput\egroup
+ \bgroup
+ \aftergroup\pagegoal\aftergroup\vsize
+ \aftergroup\lst at ReenterModes\aftergroup\lst at RestoreToken}%
+\else
+ \output{\lst at RestoreOrigCatcodes
+ \lst at ifec \lst at RestoreOrigExtendedCatcodes \fi
+ \lst at OrgOutput}%
+\fi}
+\def\lst at GetChars#1#2#3{%
+ \let#1\@empty
+ \@tempcnta#2\relax \@tempcntb#3\relax
+ \loop \ifnum\@tempcnta<\@tempcntb\relax
+ \lst at lExtend#1{\expandafter\catcode\the\@tempcnta=}%
+ \lst at lExtend#1{\the\catcode\@tempcnta\relax}%
+ \ifnum\the\catcode\@tempcnta=\active
+ \begingroup\lccode`\~=\@tempcnta
+ \lowercase{\endgroup
+ \lst at lExtend#1{\expandafter\let\expandafter~\csname
+ lstecs@\the\@tempcnta\endcsname}%
+ \expandafter\let\csname lstecs@\the\@tempcnta\endcsname~}%
+ \fi
+ \advance\@tempcnta\@ne
+ \repeat}
+\def\lst at ScanChars{%
+ \lst at GetChars\lst at RestoreOrigCatcodes\@ne {128}%
+ \lst at GetChars\lst at RestoreOrigExtendedCatcodes{128}{256}}
+\lst at Key{rescanchars}\relax{\lst at ScanChars}
+\AtBeginDocument{\lst at ScanChars}
+\lst at Key{alsoletter}\relax{%
+ \lst at DoAlso{#1}\lst at alsoletter\lst at ProcessLetter}
+\lst at Key{alsodigit}\relax{%
+ \lst at DoAlso{#1}\lst at alsodigit\lst at ProcessDigit}
+\lst at Key{alsoother}\relax{%
+ \lst at DoAlso{#1}\lst at alsoother\lst at ProcessOther}
+\lst at AddToHook{SelectCharTable}
+ {\lst at alsoother \lst at alsodigit \lst at alsoletter}
+\lst at AddToHookExe{SetLanguage}% init
+ {\let\lst at alsoletter\@empty
+ \let\lst at alsodigit\@empty
+ \let\lst at alsoother\@empty}
+\def\lst at DoAlso#1#2#3{%
+ \lst at DefOther\lst at arg{#1}\let#2\@empty
+ \expandafter\lst at DoAlso@\expandafter#2\expandafter#3\lst at arg\relax}
+\def\lst at DoAlso@#1#2#3{%
+ \ifx\relax#3\expandafter\@gobblethree \else
+ \begingroup \lccode`\~=`#3\relax \lowercase{\endgroup
+ \def\lst at temp##1\def~##2##3\relax{%
+ \edef\lst at arg{\def\noexpand~{\noexpand#2\expandafter
+ \noexpand\@gobble##2}}}}%
+ \expandafter\lst at temp\lst at SelectStdCharTable\relax
+ \lst at lExtend#1{\lst at arg}%
+ \fi
+ \lst at DoAlso@#1#2}
+\def\lst at SaveDef#1#2{%
+ \begingroup \lccode`\~=#1\relax \lowercase{\endgroup\let#2~}}
+\def\lst at DefSaveDef#1#2{%
+ \begingroup \lccode`\~=#1\relax \lowercase{\endgroup\let#2~\def~}}
+\def\lst at LetSaveDef#1#2{%
+ \begingroup \lccode`\~=#1\relax \lowercase{\endgroup\let#2~\let~}}
+\def\lst at CDef#1{\lst at CDef@#1}
+\def\lst at CDef@#1#2#3#4{\lst at CDefIt#1{#2}{#3}{#4#2#3}#4}
+\def\lst at CDefX#1{\lst at CDefX@#1}
+\def\lst at CDefX@#1#2#3{\lst at CDefIt#1{#2}{#3}{}}
+\def\lst at CDefIt#1#2#3#4#5#6#7#8{%
+ \ifx\@empty#2\@empty
+ \def#1{#6\def\lst at next{#7#4#8}\lst at next}%
+ \else \ifx\@empty#3\@empty
+ \def#1##1{%
+ #6%
+ \ifx##1#2\def\lst at next{#7#4#8}\else
+ \def\lst at next{#5##1}\fi
+ \lst at next}%
+ \else
+ \def#1{%
+ #6%
+ \lst at IfNextCharsArg{#2#3}{#7#4#8}%
+ {\expandafter#5\lst at eaten}}%
+ \fi \fi}
+\def\lst at CArgX#1#2\relax{%
+ \lst at DefActive\lst at arg{#1#2}%
+ \expandafter\lst at CArg\lst at arg\relax}
+\def\lst at CArg#1#2\relax{%
+ \lccode`\/=`#1\lowercase{\def\lst at temp{/}}%
+ \lst at GetFreeMacro{lst at c\lst at temp}%
+ \expandafter\lst at CArg@\lst at freemacro#1#2\@empty\@empty\relax}
+\def\lst at CArg@#1#2#3#4\@empty#5\relax#6{%
+ \let#1#2%
+ \ifx\@empty#3\@empty
+ \def\lst at next{#6{#2{}{}}}%
+ \else
+ \def\lst at next{#6{#2#3{#4}}}%
+ \fi
+ \lst at next #1}
+\def\lst at CArgEmpty#1\@empty{#1}
+\lst at Key{excludedelims}\relax
+ {\lsthk at ExcludeDelims \lst at NormedDef\lst at temp{#1}%
+ \expandafter\lst at for\lst at temp\do
+ {\expandafter\let\csname\@lst @ifex##1\endcsname\iftrue}}
+\def\lst at DelimPrint#1#2{%
+ #1%
+ \begingroup
+ \lst at mode\lst at nomode \lst at modetrue
+ #2\lst at XPrintToken
+ \endgroup
+ \lst at ResetToken
+ \fi}
+\def\lst at DelimOpen#1#2#3#4#5#6\@empty{%
+ \lst at TrackNewLines \lst at XPrintToken
+ \lst at DelimPrint#1{#6}%
+ \lst at EnterMode{#4}{\def\lst at currstyle#5}%
+ \lst at DelimPrint{#1#2}{#6}%
+ #3}
+\def\lst at DelimClose#1#2#3\@empty{%
+ \lst at TrackNewLines \lst at XPrintToken
+ \lst at DelimPrint{#1#2}{#3}%
+ \lst at LeaveMode
+ \lst at DelimPrint{#1}{#3}}
+\def\lst at BeginDelim{\lst at DelimOpen\iffalse\else{}}
+\def\lst at EndDelim{\lst at DelimClose\iffalse\else}
+\def\lst at BeginIDelim{\lst at DelimOpen\iffalse{}{}}
+\def\lst at EndIDelim{\lst at DelimClose\iffalse{}}
+\lst at AddToHook{SelectCharTable}{\lst at DefDelims}
+\lst at AddToHookExe{SetLanguage}{\let\lst at DefDelims\@empty}
+\def\lst at Delim#1{%
+ \lst at false \let\lst at cumulative\@empty \let\lst at arg\@empty
+ \@ifstar{\@ifstar{\lst at Delim@{#1}}%
+ {\let\lst at cumulative\relax
+ \lst at Delim@{#1}}}%
+ {\lst at true\lst at Delim@{#1}}}
+\def\lst at Delim@#1[#2]{%
+ \gdef\lst at delimtype{#2}%
+ \@ifnextchar[\lst at Delim@sty
+ {\lst at Delim@sty[#1]}}
+\def\lst at Delim@sty[#1]{%
+ \def\lst at delimstyle{#1}%
+ \ifx\@empty#1\@empty\else
+ \lst at Delim@sty@ #1\@nil
+ \fi
+ \@ifnextchar[\lst at Delim@option
+ \lst at Delim@delim}
+\def\lst at Delim@option[#1]{\def\lst at arg{[#1]}\lst at Delim@delim}
+\def\lst at Delim@sty@#1#2\@nil{%
+ \if\relax\noexpand#1\else
+ \edef\lst at delimstyle{\expandafter\noexpand
+ \csname\@lst @\lst at delimstyle\endcsname}%
+ \fi}
+\def\lst at Delim@delim#1\relax#2#3#4#5#6#7#8{%
+ \ifx #4\@empty \lst at Delim@delall{#2}\fi
+ \ifx\@empty#1\@empty
+ \ifx #4\@nil
+ \@ifundefined{\@lst @#2DM@\lst at delimtype}%
+ {\lst at Delim@delall{#2@\lst at delimtype}}%
+ {\lst at Delim@delall{#2DM@\lst at delimtype}}%
+ \fi
+ \else
+ \expandafter\lst at Delim@args\expandafter
+ {\lst at delimtype}{#1}{#5}#6{#7}{#8}#4%
+ \let\lst at delim\@empty
+ \expandafter\lst at IfOneOf\lst at delimtype\relax#3%
+ {\@ifundefined{\@lst @#2DM@\lst at delimtype}%
+ {\lst at lExtend\lst at delim{\csname\@lst @#2@\lst at delimtype
+ \expandafter\endcsname\lst at arg}}%
+ {\lst at lExtend\lst at delim{\expandafter\lst at UseDynamicMode
+ \csname\@lst @#2DM@\lst at delimtype
+ \expandafter\endcsname\lst at arg}}%
+ \ifx #4\@nil
+ \let\lst at temp\lst at DefDelims \let\lst at DefDelims\@empty
+ \expandafter\lst at Delim@del\lst at temp\@empty\@nil\@nil\@nil
+ \else
+ \lst at lExtend\lst at DefDelims\lst at delim
+ \fi}%
+ {\PackageError{Listings}{Illegal type `\lst at delimtype'}%
+ {#2 types are #3.}}%
+ \fi}
+\def\lst at Delim@args#1#2#3#4#5#6#7{%
+ \begingroup
+ \lst at false \let\lst at next\lst at XConvert
+ \@ifnextchar #4{\xdef\lst at delimtype{\expandafter\@gobble
+ \lst at delimtype}%
+ #5\lst at next#2\@nil
+ \lst at lAddTo\lst at arg{\@empty#6}%
+ \lst at GobbleNil}%
+ {\lst at next#2\@nil
+ \lst at lAddTo\lst at arg{\@empty#3}%
+ \lst at GobbleNil}%
+ #1\@nil
+ \global\let\@gtempa\lst at arg
+ \endgroup
+ \let\lst at arg\@gtempa
+ \ifx #7\@nil\else
+ \expandafter\lst at Delim@args@\expandafter{\lst at delimstyle}%
+ \fi}
+\def\lst at Delim@args@#1{%
+ \lst at if
+ \lst at lAddTo\lst at arg{{{#1}\lst at modetrue}}%
+ \else
+ \ifx\lst at cumulative\@empty
+ \lst at lAddTo\lst at arg{{{}#1}}%
+ \else
+ \lst at lAddTo\lst at arg{{{#1}}}%
+ \fi
+ \fi}
+\def\lst at Delim@del#1\@empty#2#3#4{%
+ \ifx #2\@nil\else
+ \def\lst at temp{#1\@empty#2#3}%
+ \ifx\lst at temp\lst at delim\else
+ \lst at lAddTo\lst at DefDelims{#1\@empty#2#3{#4}}%
+ \fi
+ \expandafter\lst at Delim@del
+ \fi}
+\def\lst at Delim@delall#1{%
+ \begingroup
+ \edef\lst at delim{\expandafter\string\csname\@lst @#1\endcsname}%
+ \lst at false \global\let\@gtempa\@empty
+ \expandafter\lst at Delim@delall@\lst at DefDelims\@empty
+ \endgroup
+ \let\lst at DefDelims\@gtempa}
+\def\lst at Delim@delall@#1{%
+ \ifx #1\@empty\else
+ \ifx #1\lst at UseDynamicMode
+ \lst at true
+ \let\lst at next\lst at Delim@delall at do
+ \else
+ \def\lst at next{\lst at Delim@delall at do#1}%
+ \fi
+ \expandafter\lst at next
+ \fi}
+\def\lst at Delim@delall at do#1#2\@empty#3#4#5{%
+ \expandafter\lst at IfSubstring\expandafter{\lst at delim}{\string#1}%
+ {}%
+ {\lst at if \lst at AddTo\@gtempa\lst at UseDynamicMode \fi
+ \lst at AddTo\@gtempa{#1#2\@empty#3#4{#5}}}%
+ \lst at false \lst at Delim@delall@}
+\gdef\lst at DefDelimB#1#2#3#4#5#6#7#8{%
+ \lst at CDef{#1}#2%
+ {#3}%
+ {\let\lst at bnext\lst at CArgEmpty
+ \lst at ifmode #4\else
+ #5%
+ \def\lst at bnext{#6{#7}{#8}}%
+ \fi
+ \lst at bnext}%
+ \@empty}
+\gdef\lst at DefDelimE#1#2#3#4#5#6#7{%
+ \lst at CDef{#1}#2%
+ {#3}%
+ {\let\lst at enext\lst at CArgEmpty
+ \ifnum #7=\lst at mode%
+ #4%
+ \let\lst at enext#6%
+ \else
+ #5%
+ \fi
+ \lst at enext}%
+ \@empty}
+\lst at AddToHook{Init}{\let\lst at bnext\relax \let\lst at enext\relax}
+\gdef\lst at DefDelimBE#1#2#3#4#5#6#7#8#9{%
+ \lst at CDef{#1}#2%
+ {#3}%
+ {\let\lst at bnext\lst at CArgEmpty
+ \ifnum #7=\lst at mode
+ #4%
+ \let\lst at bnext#9%
+ \else
+ \lst at ifmode\else
+ #5%
+ \def\lst at bnext{#6{#7}{#8}}%
+ \fi
+ \fi
+ \lst at bnext}%
+ \@empty}
+\gdef\lst at delimtypes{s,l}
+\gdef\lst at DelimKey#1#2{%
+ \lst at Delim{}#2\relax
+ {Delim}\lst at delimtypes #1%
+ {\lst at BeginDelim\lst at EndDelim}
+ i\@empty{\lst at BeginIDelim\lst at EndIDelim}}
+\lst at Key{delim}\relax{\lst at DelimKey\@empty{#1}}
+\lst at Key{moredelim}\relax{\lst at DelimKey\relax{#1}}
+\lst at Key{deletedelim}\relax{\lst at DelimKey\@nil{#1}}
+\gdef\lst at DelimDM@l#1#2\@empty#3#4#5{%
+ \lst at CArg #2\relax\lst at DefDelimB{}{}{}#3{#1}{#5\lst at Lmodetrue}}
+\gdef\lst at DelimDM@s#1#2#3\@empty#4#5#6{%
+ \lst at CArg #2\relax\lst at DefDelimB{}{}{}#4{#1}{#6}%
+ \lst at CArg #3\relax\lst at DefDelimE{}{}{}#5{#1}}
+\def\lst at ReplaceInput#1{\lst at CArgX #1\relax\lst at CDefX{}{}}
+\def\lst at Literatekey#1\@nil@{\let\lst at ifxliterate\lst at if
+ \def\lst at literate{#1}}
+\lst at Key{literate}{}{\@ifstar{\lst at true \lst at Literatekey}
+ {\lst at false\lst at Literatekey}#1\@nil@}
+\lst at AddToHook{SelectCharTable}
+ {\ifx\lst at literate\@empty\else
+ \expandafter\lst at Literate\lst at literate{}\relax\z@
+ \fi}
+\def\lst at Literate#1#2#3{%
+ \ifx\relax#2\@empty\else
+ \lst at CArgX #1\relax\lst at CDef
+ {}
+ {\let\lst at next\@empty
+ \lst at ifxliterate
+ \lst at ifmode \let\lst at next\lst at CArgEmpty \fi
+ \fi
+ \ifx\lst at next\@empty
+ \ifx\lst at OutputBox\@gobble\else
+ \lst at XPrintToken \let\lst at scanmode\lst at scan@m
+ \lst at token{#2}\lst at length#3\relax
+ \lst at XPrintToken
+ \fi
+ \let\lst at next\lst at CArgEmptyGobble
+ \fi
+ \lst at next}%
+ \@empty
+ \expandafter\lst at Literate
+ \fi}
+\def\lst at CArgEmptyGobble#1\@empty{}
+\def\lst at BeginDropInput#1{%
+ \lst at EnterMode{#1}%
+ {\lst at modetrue
+ \let\lst at OutputBox\@gobble
+ \let\lst at ifdropinput\iftrue
+ \let\lst at ProcessLetter\@gobble
+ \let\lst at ProcessDigit\@gobble
+ \let\lst at ProcessOther\@gobble
+ \let\lst at ProcessSpace\@empty
+ \let\lst at ProcessTabulator\@empty
+ \let\lst at ProcessFormFeed\@empty}}
+\let\lst at ifdropinput\iffalse % init
+\lst at Key{basicstyle}\relax{\def\lst at basicstyle{#1}}
+\lst at Key{inputencoding}\relax{\def\lst at inputenc{#1}}
+\lst at AddToHook{Init}
+ {\lst at basicstyle
+ \ifx\lst at inputenc\@empty\else
+ \@ifundefined{inputencoding}{}%
+ {\inputencoding\lst at inputenc}%
+ \fi}
+\lst at AddToHookExe{EmptyStyle}
+ {\let\lst at basicstyle\@empty
+ \let\lst at inputenc\@empty}
+\def\lst at parshape{\parshape\@ne \z@ \linewidth}
+\lst at AddToHookAtTop{EveryLine}{\lst at parshape}
+\lst at AddToHookAtTop{EndGroup}{\lst at parshape}
+\newcount\lst at lineno % \global
+\lst at AddToHook{InitVars}{\global\lst at lineno\@ne}
+\lst at Key{print}{true}[t]{\lstKV at SetIf{#1}\lst at ifprint}
+\lst at Key{firstline}\relax{\def\lst at firstline{#1\relax}}
+\lst at Key{lastline}\relax{\def\lst at lastline{#1\relax}}
+\lst at AddToHook{PreSet}
+ {\let\lst at firstline\@ne \def\lst at lastline{9999999\relax}}
+\lst at Key{linerange}\relax{\lstKV at OptArg[]{#1}{%
+ \def\lst at interrange{##1}\def\lst at linerange{##2,}}}
+\lst at AddToHook{PreSet}{\def\lst at firstline{1\relax}%
+ \let\lst at linerange\@empty}
+\lst at AddToHook{Init}
+{\ifx\lst at linerange\@empty
+ \edef\lst at linerange{{\lst at firstline}-{\lst at lastline},}%
+ \fi
+ \lst at GetLineInterval}%
+\def\lst at GetLineInterval{\expandafter\lst at GLI\lst at linerange\@nil}
+\def\lst at GLI#1,#2\@nil{\def\lst at linerange{#2}\lst at GLI@#1--\@nil}
+\def\lst at GLI@#1-#2-#3\@nil{%
+ \ifx\@empty#1\@empty
+ \let\lst at firstline\@ne
+ \else
+ \def\lst at firstline{#1\relax}%
+ \fi
+ \ifx\@empty#2\@empty
+ \def\lst at lastline{9999999\relax}%
+ \else
+ \ifx -#2%
+ \let\lst at lastline\lst at firstline
+ \else
+ \def\lst at lastline{#2\relax}%
+ \fi
+ \fi}
+\lst at Key{nolol}{false}[t]{\lstKV at SetIf{#1}\lst at ifnolol}
+\def\lst at nololtrue{\let\lst at ifnolol\iftrue}
+\let\lst at ifnolol\iffalse % init
+\lst at Key{captionpos}{t}{\def\lst at captionpos{#1}}
+\lst at Key{abovecaptionskip}\smallskipamount{\def\lst at abovecaption{#1}}
+\lst at Key{belowcaptionskip}\smallskipamount{\def\lst at belowcaption{#1}}
+\lst at Key{label}\relax{\def\lst at label{#1}}
+\lst at Key{title}\relax{\def\lst at title{#1}\let\lst at caption\relax}
+\lst at Key{caption}\relax{\lstKV at OptArg[{#1}]{#1}%
+ {\def\lst at caption{##2}\def\lst@@caption{##1}}%
+ \let\lst at title\@empty}
+\lst at AddToHookExe{TextStyle}
+ {\let\lst at caption\@empty \let\lst@@caption\@empty
+ \let\lst at title\@empty \let\lst at label\@empty}
+\@ifundefined{thechapter}
+ {\newcounter{lstlisting}
+ \renewcommand\thelstlisting{\@arabic\c at lstlisting}}
+ {\newcounter{lstlisting}[chapter]
+ \renewcommand\thelstlisting
+ {\ifnum \c at chapter>\z@ \thechapter.\fi \@arabic\c at lstlisting}}
+\lst at UserCommand\lstlistingname{Listing}
+\@ifundefined{abovecaptionskip}
+{\newskip\abovecaptionskip
+ \newskip\belowcaptionskip}{}
+\@ifundefined{@makecaption}
+{\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \sbox\@tempboxa{#1: #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ #1: #2\par
+ \else
+ \global \@minipagefalse
+ \hb at xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}%
+}{}
+\def\fnum at lstlisting{%
+ \lstlistingname
+ \ifx\lst@@caption\@empty\else~\thelstlisting\fi}%
+\def\lst at MakeCaption#1{%
+ \lst at ifdisplaystyle
+ \ifx #1t%
+ \ifx\lst@@caption\@empty\expandafter\lst at HRefStepCounter \else
+ \expandafter\refstepcounter
+ \fi {lstlisting}%
+ \ifx\lst at label\@empty\else \label{\lst at label}\fi
+ \let\lst at arg\lst at intname \lst at ReplaceIn\lst at arg\lst at filenamerpl
+ \global\let\lst at name\lst at arg \global\let\lstname\lst at name
+ \lst at ifnolol\else
+ \ifx\lst@@caption\@empty
+ \ifx\lst at caption\@empty
+ \ifx\lst at intname\@empty \else \def\lst at temp{ }%
+ \ifx\lst at intname\lst at temp \else
+ \addcontentsline{lol}{lstlisting}\lst at name
+ \fi\fi
+ \fi
+ \else
+ \addcontentsline{lol}{lstlisting}%
+ {\protect\numberline{\thelstlisting}\lst@@caption}%
+ \fi
+ \fi
+ \fi
+ \ifx\lst at caption\@empty\else
+ \lst at IfSubstring #1\lst at captionpos
+ {\begingroup \let\@@vskip\vskip
+ \def\vskip{\afterassignment\lst at vskip \@tempskipa}%
+ \def\lst at vskip{\nobreak\@@vskip\@tempskipa\nobreak}%
+ \par\@parboxrestore\normalsize\normalfont % \noindent (AS)
+ \ifx #1t\allowbreak \fi
+ \ifx\lst at title\@empty
+ \lst at makecaption\fnum at lstlisting\lst at caption % (AS)
+ \else
+ \lst at maketitle\lst at title % (AS)
+ \fi
+ \ifx #1b\allowbreak \fi
+ \endgroup}{}%
+ \fi
+ \fi}
+\def\lst at makecaption{\@makecaption}
+\def\lst at maketitle{\@makecaption\lst at title@dropdelim}
+\def\lst at title@dropdelim#1{\ignorespaces}
+\AtBeginDocument{%
+\@ifundefined{captionlabelfalse}{}{%
+ \def\lst at maketitle{\captionlabelfalse\@makecaption\@empty}}%
+\@ifundefined{caption at startrue}{}{%
+ \def\lst at maketitle{\caption at startrue\@makecaption\@empty}}%
+}
+\def\lst at HRefStepCounter#1{%
+ \begingroup
+ \c at lstlisting\lst at neglisting
+ \advance\c at lstlisting\m at ne \xdef\lst at neglisting{\the\c at lstlisting}%
+ \ifx\hyper at refstepcounter\@undefined\else
+ \hyper at refstepcounter{#1}%
+ \fi
+ \endgroup}
+\gdef\lst at neglisting{\z@}% init
+\lst at Key{boxpos}{c}{\def\lst at boxpos{#1}}
+\def\lst at boxtrue{\let\lst at ifbox\iftrue}
+\let\lst at ifbox\iffalse
+\lst at Key{float}\relax[\lst at floatplacement]{%
+ \lstKV at SwitchCases{#1}%
+ {true&\let\lst at floatdefault\lst at floatplacement
+ \let\lst at float\lst at floatdefault\\%
+ false&\let\lst at floatdefault\relax
+ \let\lst at float\lst at floatdefault
+ }{\def\lst at next{\@ifstar{\let\lst at beginfloat\@dblfloat
+ \let\lst at endfloat\end at dblfloat
+ \lst at KFloat}%
+ {\let\lst at beginfloat\@float
+ \let\lst at endfloat\end at float
+ \lst at KFloat}}
+ \edef\lst at float{#1}%
+ \expandafter\lst at next\lst at float\relax}}
+\def\lst at KFloat#1\relax{%
+ \ifx\@empty#1\@empty
+ \let\lst at float\lst at floatplacement
+ \else
+ \def\lst at float{#1}%
+ \fi}
+\lst at Key{floatplacement}{tbp}{\def\lst at floatplacement{#1}}
+\lst at AddToHook{PreSet}{\let\lst at float\lst at floatdefault}
+\lst at AddToHook{TextStyle}{\let\lst at float\relax}
+\let\lst at floatdefault\relax % init
+\lst at AddToHook{DeInit}{%
+ \ifx\lst at float\relax
+ \global\let\lst at doendpe\@doendpe
+ \else
+ \global\let\lst at doendpe\@empty
+ \fi}
+\AtBeginDocument{%
+\@ifundefined{c at float@type}%
+ {\edef\ftype at lstlisting{\ifx\c at figure\@undefined 1\else 4\fi}}
+ {\edef\ftype at lstlisting{\the\c at float@type}%
+ \addtocounter{float at type}{\value{float at type}}}%
+}
+\lst at Key{aboveskip}\medskipamount{\def\lst at aboveskip{#1}}
+\lst at Key{belowskip}\medskipamount{\def\lst at belowskip{#1}}
+\lst at AddToHook{TextStyle}
+ {\let\lst at aboveskip\z@ \let\lst at belowskip\z@}
+\lst at Key{everydisplay}{}{\def\lst at EveryDisplay{#1}}
+\lst at AddToHook{TextStyle}{\let\lst at ifdisplaystyle\iffalse}
+\lst at AddToHook{DisplayStyle}{\let\lst at ifdisplaystyle\iftrue}
+\let\lst at ifdisplaystyle\iffalse
+\def\lst at Init#1{%
+ \begingroup
+ \ifx\lst at float\relax\else
+ \edef\@tempa{\noexpand\lst at beginfloat{lstlisting}[\lst at float]}%
+ \expandafter\@tempa
+ \fi
+ \ifhmode\ifinner \lst at boxtrue \fi\fi
+ \lst at ifbox
+ \lsthk at BoxUnsafe
+ \hbox to\z@\bgroup
+ $\if t\lst at boxpos \vtop
+ \else \if b\lst at boxpos \vbox
+ \else \vcenter \fi\fi
+ \bgroup \par\noindent
+ \else
+ \lst at ifdisplaystyle
+ \lst at EveryDisplay
+ \par\penalty-50\relax
+ \vspace\lst at aboveskip
+ \fi
+ \fi
+ \normalbaselines
+ \abovecaptionskip\lst at abovecaption\relax
+ \belowcaptionskip\lst at belowcaption\relax
+ \lst at MakeCaption t%
+ \lsthk at PreInit \lsthk at Init
+ \lst at ifdisplaystyle
+ \global\let\lst at ltxlabel\@empty
+ \if at inlabel
+ \lst at ifresetmargins
+ \leavevmode
+ \else
+ \xdef\lst at ltxlabel{\the\everypar}%
+ \lst at AddTo\lst at ltxlabel{%
+ \global\let\lst at ltxlabel\@empty
+ \everypar{\lsthk at EveryLine\lsthk at EveryPar}}%
+ \fi
+ \fi
+ \everypar\expandafter{\lst at ltxlabel
+ \lsthk at EveryLine\lsthk at EveryPar}%
+ \else
+ \everypar{}\let\lst at NewLine\@empty
+ \fi
+ \lsthk at InitVars \lsthk at InitVarsBOL
+ \lst at Let{13}\lst at MProcessListing
+ \let\lst at Backslash#1%
+ \lst at EnterMode{\lst at Pmode}{\lst at SelectCharTable}%
+ \lst at InitFinalize}
+\let\lst at InitFinalize\@empty % init
+\lst at AddToHook{PreInit}
+ {\rightskip\z@ \leftskip\z@ \parfillskip=\z@ plus 1fil
+ \let\par\@@par}
+\lst at AddToHook{EveryLine}{}% init
+\lst at AddToHook{EveryPar}{}% init
+\lst at Key{showlines}f[t]{\lstKV at SetIf{#1}\lst at ifshowlines}
+\def\lst at DeInit{%
+ \lst at XPrintToken \lst at EOLUpdate
+ \global\advance\lst at newlines\m at ne
+ \lst at ifshowlines
+ \lst at DoNewLines
+ \else
+ \setbox\@tempboxa\vbox{\lst at DoNewLines}%
+ \fi
+ \lst at ifdisplaystyle \par\removelastskip \fi
+ \lsthk at ExitVars\everypar{}\lsthk at DeInit\normalbaselines\normalcolor
+ \lst at MakeCaption b%
+ \lst at ifbox
+ \egroup $\hss \egroup
+ \vrule\@width\lst at maxwidth\@height\z@\@depth\z@
+ \else
+ \lst at ifdisplaystyle
+ \par\penalty-50\vspace\lst at belowskip
+ \fi
+ \fi
+ \ifx\lst at float\relax\else
+ \expandafter\lst at endfloat
+ \fi
+ \endgroup}
+\newdimen\lst at maxwidth % \global
+\lst at AddToHook{InitVars}{\global\lst at maxwidth\z@}
+\lst at AddToHook{InitVarsEOL}
+ {\ifdim\lst at currlwidth>\lst at maxwidth
+ \global\lst at maxwidth\lst at currlwidth
+ \fi}
+\def\lst at EOLUpdate{\lsthk at EOL \lsthk at InitVarsEOL}
+\def\lst at MProcessListing{%
+ \lst at XPrintToken \lst at EOLUpdate \lsthk at InitVarsBOL
+ \global\advance\lst at lineno\@ne
+ \ifnum \lst at lineno>\lst at lastline
+ \lst at ifdropinput \lst at LeaveMode \fi
+ \ifx\lst at linerange\@empty
+ \expandafter\expandafter\expandafter\lst at EndProcessListing
+ \else
+ \lst at interrange
+ \lst at GetLineInterval
+ \expandafter\expandafter\expandafter\lst at SkipToFirst
+ \fi
+ \else
+ \expandafter\lst at BOLGobble
+ \fi}
+\let\lst at EndProcessListing\endinput
+\lst at Key{gobble}{0}{\def\lst at gobble{#1}}
+\def\lst at BOLGobble{%
+ \ifnum\lst at gobble>\z@
+ \@tempcnta\lst at gobble\relax
+ \expandafter\lst at BOLGobble@
+\fi}
+\def\lst at BOLGobble@@{%
+ \ifnum\@tempcnta>\z@
+ \expandafter\lst at BOLGobble@
+ \fi}
+\def\lstenv at BOLGobble@@{%
+ \lst at IfNextChars\lstenv at endstring{\lstenv at End}%
+ {\advance\@tempcnta\m at ne \expandafter\lst at BOLGobble@@\lst at eaten}}
+\def\lst at BOLGobble@#1{%
+ \let\lst at next#1%
+ \ifx \lst at next\relax\else
+ \ifx \lst at next\lst at MProcessListing\else
+ \ifx \lst at next\lst at processformfeed\else
+ \ifx \lst at next\lstenv at backslash
+ \let\lst at next\lstenv at BOLGobble@@
+ \else
+ \let\lst at next\lst at BOLGobble@@
+ \ifx #1\lst at processtabulator
+ \advance\@tempcnta-\lst at tabsize\relax
+ \ifnum\@tempcnta<\z@
+ \lst at length-\@tempcnta \lst at PreGotoTabStop
+ \fi
+ \else
+ \advance\@tempcnta\m at ne
+ \fi
+ \fi \fi \fi \fi
+ \lst at next}
+\def\lst at processformfeed{\lst at ProcessFormFeed}
+\def\lst at processtabulator{\lst at ProcessTabulator}
+\lst at Key{name}\relax{\def\lst at intname{#1}}
+\lst at AddToHookExe{PreSet}{\global\let\lst at intname\@empty}
+\lst at AddToHook{PreInit}{%
+ \let\lst at arg\lst at intname \lst at ReplaceIn\lst at arg\lst at filenamerpl
+ \global\let\lst at name\lst at arg \global\let\lstname\lst at name}
+\def\lst at filenamerpl{_\textunderscore $\textdollar -\textendash}
+\def\l at lstlisting#1#2{\@dottedtocline{1}{1.5em}{2.3em}{#1}{#2}}
+\lst at UserCommand\lstlistlistingname{Listings}
+\lst at UserCommand\lstlistoflistings{\bgroup
+ \let\contentsname\lstlistlistingname
+ \let\lst at temp\@starttoc \def\@starttoc##1{\lst at temp{lol}}%
+ \tableofcontents \egroup}
+\@ifpackageloaded{scrlfile}
+{\newcommand*\lol at heading{\float at listhead{\lstlistlistingname}}
+ \renewcommand*\lstlistoflistings{%
+ \begingroup%
+ \if at twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \lol at heading%
+ \@parskipfalse\@parskip at indent%
+ \@starttoc{lol}%
+ \if at restonecol\twocolumn\fi
+ \endgroup}%
+}{}
+\newcommand\lstinline[1][]{%
+ \leavevmode\bgroup % \hbox\bgroup --> \bgroup
+ \def\lst at boxpos{b}%
+ \lsthk at PreSet\lstset{flexiblecolumns,#1}%
+ \lsthk at TextStyle
+ \@ifnextchar\bgroup{\afterassignment\lst at InlineG \let\@let at token}%
+ \lstinline@}
+\def\lstinline@#1{%
+ \lst at Init\relax
+ \lst at IfNextCharActive{\lst at InlineM#1}{\lst at InlineJ#1}}
+\lst at AddToHook{TextStyle}{}% init
+\lst at AddToHook{SelectCharTable}{\lst at inlinechars}
+\global\let\lst at inlinechars\@empty
+\def\lst at InlineM#1{\gdef\lst at inlinechars{%
+ \lst at Def{`#1}{\lst at DeInit\egroup\global\let\lst at inlinechars\@empty}%
+ \lst at Def{13}{\lst at DeInit\egroup \global\let\lst at inlinechars\@empty
+ \PackageError{Listings}{lstinline ended by EOL}\@ehc}}%
+ \lst at inlinechars}
+\def\lst at InlineJ#1{%
+ \def\lst at temp##1#1{%
+ \let\lst at arg\@empty \lst at InsideConvert{##1}\lst at arg
+ \lst at DeInit\egroup}%
+ \lst at temp}
+\def\lst at InlineG{%
+ \lst at Init\relax
+ \lst at IfNextCharActive{\lst at InlineM\}}%
+ {\let\lst at arg\@empty \lst at InlineGJ}}
+\def\lst at InlineGJ{\futurelet\@let at token\lst at InlineGJTest}
+\def\lst at InlineGJTest{%
+ \ifx\@let at token\egroup
+ \afterassignment\lst at InlineGJEnd
+ \expandafter\let\expandafter\@let at token
+ \else
+ \ifx\@let at token\@sptoken
+ \let\lst at next\lst at InlineGJReadSp
+ \else
+ \let\lst at next\lst at InlineGJRead
+ \fi
+ \expandafter\lst at next
+ \fi}
+\def\lst at InlineGJEnd{\lst at arg\lst at DeInit\egroup}
+\def\lst at InlineGJRead#1{%
+ \lccode`\~=`#1\lowercase{\lst at lAddTo\lst at arg~}%
+ \lst at InlineGJ}
+\def\lst at InlineGJReadSp#1{%
+ \lccode`\~=`\ \lowercase{\lst at lAddTo\lst at arg~}%
+ \lst at InlineGJ#1}
+\def\lst at MakePath#1{\ifx\@empty#1\@empty\else\lst at MakePath@#1/\@nil/\fi}
+\def\lst at MakePath@#1/{#1/\lst at MakePath@@}
+\def\lst at MakePath@@#1/{%
+ \ifx\@nil#1\expandafter\@gobble
+ \else \ifx\@empty#1\else #1/\fi \fi
+ \lst at MakePath@@}
+\lst at Key{inputpath}{}{\edef\lst at inputpath{\lst at MakePath{#1}}}
+\def\lstinputlisting{%
+ \begingroup \lst at setcatcodes \lst at inputlisting}
+\newcommand\lst at inputlisting[2][]{%
+ \endgroup
+ \def\lst at set{#1}%
+ \IfFileExists{\lst at inputpath#2}%
+ {\expandafter\lst at InputListing\expandafter{\lst at inputpath#2}}%
+ {\filename at parse{\lst at inputpath#2}%
+ \edef\reserved at a{\noexpand\lst at MissingFileError
+ {\filename at area\filename at base}%
+ {\ifx\filename at ext\relax tex\else\filename at ext\fi}}%
+ \reserved at a}%
+ \lst at doendpe \@newlistfalse \ignorespaces}
+\def\lst at MissingFileError#1#2{%
+ \typeout{^^J! Package Listings Error: File `#1(.#2)' not found.^^J%
+ ^^JType X to quit or <RETURN> to proceed,^^J%
+ or enter new name. (Default extension: #2)^^J}%
+ \message{Enter file name: }%
+ {\endlinechar\m at ne \global\read\m at ne to\@gtempa}%
+ \ifx\@gtempa\@empty \else
+ \def\reserved at a{x}\ifx\reserved at a\@gtempa\batchmode\@@end\fi
+ \def\reserved at a{X}\ifx\reserved at a\@gtempa\batchmode\@@end\fi
+ \filename at parse\@gtempa
+ \edef\filename at ext{%
+ \ifx\filename at ext\relax#2\else\filename at ext\fi}%
+ \edef\reserved at a{\noexpand\IfFileExists %
+ {\filename at area\filename at base.\filename at ext}%
+ {\noexpand\lst at InputListing %
+ {\filename at area\filename at base.\filename at ext}}%
+ {\noexpand\lst at MissingFileError
+ {\filename at area\filename at base}{\filename at ext}}}%
+ \expandafter\reserved at a %
+ \fi}
+\let\lst at ifdraft\iffalse
+\DeclareOption{draft}{\let\lst at ifdraft\iftrue}
+\DeclareOption{final}{\let\lst at ifdraft\iffalse}
+\lst at AddToHook{PreSet}
+ {\lst at ifdraft
+ \let\lst at ifprint\iffalse
+ \@gobbletwo\fi\fi
+ \fi}
+\def\lst at InputListing#1{%
+ \begingroup
+ \lsthk at PreSet \gdef\lst at intname{#1}%
+ \expandafter\lstset\expandafter{\lst at set}%
+ \lsthk at DisplayStyle
+ \catcode\active=\active
+ \lst at Init\relax \let\lst at gobble\z@
+ \lst at SkipToFirst
+ \lst at ifprint \def\lst at next{\input{#1}}%
+ \else \let\lst at next\@empty \fi
+ \lst at next
+ \lst at DeInit
+ \endgroup}
+\def\lst at SkipToFirst{%
+ \ifnum \lst at lineno<\lst at firstline
+ \lst at BeginDropInput\lst at Pmode
+ \lst at Let{13}\lst at MSkipToFirst
+ \lst at Let{10}\lst at MSkipToFirst
+ \else
+ \expandafter\lst at BOLGobble
+ \fi}
+\def\lst at MSkipToFirst{%
+ \global\advance\lst at lineno\@ne
+ \ifnum \lst at lineno=\lst at firstline
+ \lst at LeaveMode \global\lst at newlines\z@
+ \lsthk at InitVarsBOL
+ \expandafter\lst at BOLGobble
+ \fi}
+\def\lstenv at DroppedWarning{%
+ \ifx\lst at dropped\@undefined\else
+ \PackageWarning{Listings}{Text dropped after begin of listing}%
+ \fi}
+\let\lst at dropped\@undefined % init
+\begingroup \lccode`\~=`\^^M\lowercase{%
+\gdef\lstenv at Process#1{%
+ \ifx~#1%
+ \lstenv at DroppedWarning \let\lst at next\lst at SkipToFirst
+ \else\ifx^^J#1%
+ \lstenv at DroppedWarning \let\lst at next\lstenv at ProcessJ
+ \else
+ \let\lst at dropped#1\let\lst at next\lstenv at Process
+ \fi \fi
+ \lst at next}
+}\endgroup
+\def\lstenv at ProcessJ{%
+ \let\lst at arg\@empty
+ \ifx\@currenvir\lstenv at name
+ \expandafter\lstenv at ProcessJEnv
+ \else
+ \expandafter\def\expandafter\lst at temp\expandafter##1%
+ \csname end\lstenv at name\endcsname
+ {\lst at InsideConvert{##1}\lstenv at ProcessJ@}%
+ \expandafter\lst at temp
+ \fi}
+\begingroup \lccode`\~=`\\\lowercase{%
+\gdef\lstenv at ProcessJ@{%
+ \lst at lExtend\lst at arg
+ {\expandafter\ \expandafter~\lstenv at endstring}%
+ \catcode10=\active \lst at Let{10}\lst at MProcessListing
+ \lst at SkipToFirst \lst at arg}
+}\endgroup
+\def\lstenv at ProcessJEnv#1\end#2{\def\lst at temp{#2}%
+ \ifx\lstenv at name\lst at temp
+ \lst at InsideConvert{#1}%
+ \expandafter\lstenv at ProcessJ@
+ \else
+ \lst at InsideConvert{#1\\end\{#2\}}%
+ \expandafter\lstenv at ProcessJEnv
+ \fi}
+\def\lstenv at backslash{%
+ \lst at IfNextChars\lstenv at endstring
+ {\lstenv at End}%
+ {\expandafter\lsts at backslash \lst at eaten}}%
+\def\lstenv at End{%
+ \ifx\@currenvir\lstenv at name
+ \edef\lst at next{\noexpand\end{\lstenv at name}}%
+ \else
+ \def\lst at next{\csname end\lstenv at name\endcsname}%
+ \fi
+ \lst at next}
+\lst at UserCommand\lstnewenvironment#1#2#{%
+ \@ifundefined{#1}%
+ {\let\lst at arg\@empty
+ \lst at XConvert{#1}\@nil
+ \expandafter\lstnewenvironment@\lst at arg{#1}{#2}}%
+ {\PackageError{Listings}{Environment `#1' already defined}\@eha
+ \@gobbletwo}}
+\def\@tempa#1#2#3{%
+\gdef\lstnewenvironment@##1##2##3##4##5{%
+ \begingroup
+ \global\@namedef{end##2}{\lstenv at Error{##2}}%
+ \global\@namedef{##2}{\def\lstenv at name{##2}%
+ \begingroup \lst at setcatcodes \catcode\active=\active
+ \csname##2@\endcsname}%
+ \let\l at ngrel@x\global
+ \let\@xargdef\lstenv at xargdef
+ \expandafter\new at command\csname##2@\endcsname##3%
+ {\lsthk at PreSet ##4%
+ \ifx\@currenvir\lstenv at name
+ \def\lstenv at endstring{#1#2##1#3}%
+ \else
+ \def\lstenv at endstring{#1##1}%
+ \fi
+ \@namedef{end##2}{\lst at DeInit ##5\endgroup
+ \lst at doendpe \@ignoretrue}%
+ \lsthk at DisplayStyle
+ \let\lst at EndProcessListing\lstenv at SkipToEnd
+ \lst at Init\lstenv at backslash
+ \lst at ifprint
+ \expandafter\expandafter\expandafter\lstenv at Process
+ \else
+ \expandafter\lstenv at SkipToEnd
+ \fi
+ \lst at insertargs}%
+ \endgroup}%
+}
+\let\lst at arg\@empty \lst at XConvert{end}\{\}\@nil
+\expandafter\@tempa\lst at arg
+\let\lst at insertargs\@empty
+\def\lstenv at xargdef#1{
+ \expandafter\lstenv at xargdef@\csname\string#1\endcsname#1}
+\def\lstenv at xargdef@#1#2[#3][#4]#5{%
+ \@ifdefinable#2{%
+ \gdef#2{%
+ \ifx\protect\@typeset at protect
+ \expandafter\lstenv at testopt
+ \else
+ \@x at protect#2%
+ \fi
+ #1%
+ {#4}}%
+ \@yargdef
+ #1%
+ \tw@
+ {#3}%
+ {#5}}}
+\long\def\lstenv at testopt#1#2{%
+ \@ifnextchar[{\catcode\active5\relax \lstenv at testopt@#1}%
+ {#1[{#2}]}}
+\def\lstenv at testopt@#1[#2]{%
+ \catcode\active\active
+ #1[#2]}
+\begingroup \lccode`\~=`\\\lowercase{%
+\gdef\lstenv at SkipToEnd{%
+ \long\expandafter\def\expandafter\lst at temp\expandafter##\expandafter
+ 1\expandafter~\lstenv at endstring{\lstenv at End}%
+ \lst at temp}
+}\endgroup
+\def\lstenv at Error#1{\PackageError{Listings}{Extra \string\end#1}%
+ {I'm ignoring this, since I wasn't doing a \csname#1\endcsname.}}
+\begingroup \lccode`\~=`\^^M\lowercase{%
+\gdef\lst at TestEOLChar#1{%
+ \def\lst at insertargs{#1}%
+ \ifx ~#1\@empty \else
+ \ifx^^J#1\@empty \else
+ \global\let\lst at intname\lst at insertargs
+ \let\lst at insertargs\@empty
+ \fi \fi}
+}\endgroup
+\lstnewenvironment{lstlisting}[2][]
+ {\lst at TestEOLChar{#2}%
+ \lstset{#1}%
+ \csname\@lst @SetFirstNumber\endcsname}
+ {\csname\@lst @SaveFirstNumber\endcsname}
+\lst at Key{fancyvrb}\relax[t]{%
+ \lstKV at SetIf{#1}\lst at iffancyvrb
+ \lstFV at fancyvrb}
+\ifx\lstFV at fancyvrb\@undefined
+ \gdef\lstFV at fancyvrb{\lst at RequireAspects{fancyvrb}\lstFV at fancyvrb}
+\fi
+\@ifundefined{ocp}{}
+ {\lst at AddToHook{OutputBox}%
+ {\let\lst at ProcessLetter\@firstofone
+ \let\lst at ProcessDigit\@firstofone
+ \let\lst at ProcessOther\@firstofone}}
+\DeclareOption*{\expandafter\lst at ProcessOption\CurrentOption\relax}
+\def\lst at ProcessOption#1#2\relax{%
+ \ifx #1!%
+ \lst at DeleteKeysIn\lst at loadaspects{#2}%
+ \else
+ \lst at lAddTo\lst at loadaspects{,#1#2}%
+ \fi}
+\@ifundefined{lst at loadaspects}
+ {\def\lst at loadaspects{strings,comments,escape,style,language,%
+ keywords,labels,lineshape,frames,emph,index}%
+ }{}
+\InputIfFileExists{lstpatch.sty}{}{}
+\let\lst at ifsavemem\iffalse
+\DeclareOption{savemem}{\let\lst at ifsavemem\iftrue}
+\DeclareOption{noaspects}{\let\lst at loadaspects\@empty}
+\ProcessOptions
+\lst at RequireAspects\lst at loadaspects
+\let\lst at loadaspects\@empty
+\lst at UseHook{SetStyle}\lst at UseHook{EmptyStyle}
+\lst at UseHook{SetLanguage}\lst at UseHook{EmptyLanguage}
+\InputIfFileExists{listings.cfg}{}{}
+\InputIfFileExists{lstlocal.cfg}{}{}
+\endinput
+%%
+%% End of file `listings.sty'.
File [added]: lstdoc.sty
Delta lines: +451 -0
===================================================================
--- papers/CPC/saga_engine_2006/lstdoc.sty 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/lstdoc.sty 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,451 @@
+%%
+%% This is file `lstdoc.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% listings-1.3.dtx (with options: `doc')
+%%
+%% Please read the software license in listings-1.3.dtx or listings-1.3.pdf.
+%%
+%% (w)(c) 1996--2004 Carsten Heinz and/or any other author listed
+%% elsewhere in this file.
+%%
+%% Send comments and ideas on the package, error reports and additional
+%% programming languages to <cheinz at gmx.de>.
+%%
+\def\filedate{2004/09/07}
+\def\fileversion{1.3}
+\ProvidesPackage{lstdoc}
+ [\filedate\space\fileversion\space(Carsten Heinz)]
+\let\lstdoc at currversion\fileversion
+\RequirePackage[writefile]{listings}[2004/09/07]
+\newif\iffancyvrb \IfFileExists{fancyvrb.sty}{\fancyvrbtrue}{}
+\newif\ifcolor \IfFileExists{color.sty}{\colortrue}{}
+\lst at false
+\newif\ifhyper
+\@ifundefined{pdfoutput}
+ {}
+ {\ifnum\pdfoutput>\z@ \lst at true \fi}
+\@ifundefined{VTeXversion}
+ {}
+ {\ifnum\OpMode>\z@ \lst at true \fi}
+\lst at if \IfFileExists{hyperref.sty}{\hypertrue}{}\fi
+\newif\ifalgorithmic \IfFileExists{algorithmic.sty}{\algorithmictrue}{}
+\newif\iflgrind \IfFileExists{lgrind.sty}{\lgrindtrue}{}
+\iffancyvrb \RequirePackage{fancyvrb}\fi
+\ifhyper \RequirePackage[colorlinks]{hyperref}\else
+ \def\href#1{\texttt}\fi
+\ifcolor \RequirePackage{color}\fi
+\ifalgorithmic \RequirePackage{algorithmic}\fi
+\iflgrind \RequirePackage{lgrind}\fi
+\RequirePackage{nameref}
+\RequirePackage{url}
+\renewcommand\ref{\protect\T at ref}
+\renewcommand\pageref{\protect\T at pageref}
+\def\lst at BeginRemark#1{%
+ \begin{quote}\topsep0pt\let\small\footnotesize\small#1:}
+\def\lst at EndRemark{\end{quote}}
+\newenvironment{TODO}
+ {\lst at BeginRemark{To do}}{\lst at EndRemark}
+\newenvironment{ALTERNATIVE}
+ {\lst at BeginRemark{Alternative}}{\lst at EndRemark}
+\newenvironment{REMOVED}
+ {\lst at BeginRemark{Removed}}{\lst at EndRemark}
+\newenvironment{OLDDEF}
+ {\lst at BeginRemark{Old definition}}{\lst at EndRemark}
+\def\advise{\par\list\labeladvise
+ {\advance\linewidth\@totalleftmargin
+ \@totalleftmargin\z@
+ \@listi
+ \let\small\footnotesize \small\sffamily
+ \parsep \z@ \@plus\z@ \@minus\z@
+ \topsep6\p@ \@plus1\p@\@minus2\p@
+ \def\makelabel##1{\hss\llap{##1}}}}
+\let\endadvise\endlist
+\def\advisespace{\hbox{}\qquad}
+\def\labeladvise{$\to$}
+\newenvironment{syntax}
+ {\list{}{\itemindent-\leftmargin
+ \def\makelabel##1{\hss\lst at syntaxlabel##1,,,,\relax}}}
+ {\endlist}
+\def\lst at syntaxlabel#1,#2,#3,#4\relax{%
+ \llap{\scriptsize\itshape#3}%
+ \def\lst at temp{#2}%
+ \expandafter\lst at syntaxlabel@\meaning\lst at temp\relax
+ \rlap{\hskip-\itemindent\hskip\itemsep\hskip\linewidth
+ \llap{\ttfamily\lst at temp}\hskip\labelwidth
+ \def\lst at temp{#1}%
+ \ifx\lst at temp\lstdoc at currversion#1\fi}}
+\def\lst at syntaxlabel@#1>#2\relax
+ {\edef\lst at temp{\zap at space#2 \@empty}}
+\newcommand*\syntaxnewline{\newline\hbox{}\kern\labelwidth}
+\newcommand*\syntaxor{\qquad or\qquad}
+\newcommand*\syntaxbreak
+ {\hfill\kern0pt\discretionary{}{\kern\labelwidth}{}}
+\let\syntaxfill\hfill
+\def\alternative#1{\lst at true \alternative@#1,\relax,}
+\def\alternative@#1,{%
+ \ifx\relax#1\@empty
+ \expandafter\@gobble
+ \else
+ \ifx\@empty#1\@empty\else
+ \lst at if \lst at false \else $\vert$\fi
+ \textup{\texttt{#1}}%
+ \fi
+ \fi
+ \alternative@}
+\long\def\m at cro@#1#2#3{\endgroup \topsep\MacroTopsep \trivlist
+ \edef\saved at macroname{\string#3}%
+ \def\makelabel##1{\llap{##1}}%
+ \if at inlabel
+ \let\@tempa\@empty \count@\macro at cnt
+ \loop \ifnum\count@>\z@
+ \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m at ne \repeat
+ \edef\makelabel##1{\llap{\vtop to\baselineskip
+ {\@tempa\hbox{##1}\vss}}}%
+ \advance \macro at cnt \@ne
+ \else \macro at cnt\@ne \fi
+ \edef\@tempa{\noexpand\item[%
+ #1%
+ \noexpand\PrintMacroName
+ \else
+ \expandafter\noexpand\csname Print#2Name\endcsname % MODIFIED
+ \fi
+ {\string#3}]}%
+ \@tempa
+ \global\advance\c at CodelineNo\@ne
+ #1%
+ \SpecialMainIndex{#3}\nobreak
+ \DoNotIndex{#3}%
+ \else
+ \csname SpecialMain#2Index\endcsname{#3}\nobreak % MODIFIED
+ \fi
+ \global\advance\c at CodelineNo\m at ne
+ \ignorespaces}
+\def\macro{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m at cro@ \iftrue {Macro}}% MODIFIED
+\def\environment{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m at cro@ \iffalse {Env}}% MODIFIED
+\def\newdocenvironment#1#2#3#4{%
+ \@namedef{#1}{#3\begingroup \catcode`\\12\relax
+ \MakePrivateLetters \m at cro@ \iffalse {#2}}%
+ \@namedef{end#1}{#4\endmacro}%
+ \@ifundefined{Print#2Name}{\expandafter
+ \let\csname Print#2Name\endcsname\PrintMacroName}{}%
+ \@ifundefined{SpecialMain#2Index}{\expandafter
+ \let\csname SpecialMain#2Index\endcsname\SpecialMainIndex}{}}
+\newdocenvironment{aspect}{Aspect}{}{}
+\def\PrintAspectName#1{}
+\def\SpecialMainAspectIndex#1{%
+ \@bsphack
+ \index{aspects:\levelchar\protect\aspectname{#1}\encapchar main}%
+ \@esphack}
+\newdocenvironment{lstkey}{Key}{}{}
+\def\PrintKeyName#1{\strut\keyname{#1}\ }
+\def\SpecialMainKeyIndex#1{%
+ \@bsphack
+ \index{keys\levelchar\protect\keyname{#1}\encapchar main}%
+ \@esphack}
+\newcounter{argcount}
+\def\labelargcount{\texttt{\#\arabic{argcount}}\hskip\labelsep$=$}
+\def\macroargs{\list\labelargcount
+ {\usecounter{argcount}\leftmargin=2\leftmargin
+ \parsep \z@ \@plus\z@ \@minus\z@
+ \topsep4\p@ \@plus\p@ \@minus2\p@
+ \itemsep\z@ \@plus\z@ \@minus\z@
+ \def\makelabel##1{\hss\llap{##1}}}}
+\def\endmacroargs{\endlist\@endparenv}
+\lst at RequireAspects{writefile}
+\newbox\lst at samplebox
+\lstnewenvironment{lstsample}[3][]
+ {\global\let\lst at intname\@empty
+ \gdef\lst at sample{#2}%
+ \setbox\lst at samplebox=\hbox\bgroup
+ \setkeys{lst}{language={},style={},tabsize=4,gobble=5,%
+ basicstyle=\small\ttfamily,basewidth=0.51em,point={#1}}
+ #3%
+ \lst at BeginAlsoWriteFile{\jobname.tmp}}
+ {\lst at EndWriteFile\egroup
+ \ifdim \wd\lst at samplebox>.5\linewidth
+ \begin{center}%
+ \hbox to\linewidth{\box\lst at samplebox\hss}%
+ \end{center}%
+ \lst at sampleInput
+ \else
+ \begin{center}%
+ \begin{minipage}{0.45\linewidth}\lst at sampleInput\end{minipage}%
+ \qquad
+ \begin{minipage}{0.45\linewidth}%
+ \hbox to\linewidth{\box\lst at samplebox\hss}%
+ \end{minipage}%
+ \end{center}%
+ \fi}
+\lst at InstallKeywords{p}{point}{pointstyle}\relax{keywordstyle}{}ld
+\lstnewenvironment{lstxsample}[1][]
+ {\begingroup
+ \setkeys{lst}{belowskip=-\medskipamount,language={},style={},%
+ tabsize=4,gobble=5,basicstyle=\small\ttfamily,%
+ basewidth=0.51em,point={#1}}
+ \lst at BeginAlsoWriteFile{\jobname.tmp}}
+ {\endgroup
+ \endgroup}
+\def\lst at sampleInput{%
+ \MakePercentComment\catcode`\^^M=10\relax
+ \small\lst at sample
+ {\setkeys{lst}{SelectCharTable=\lst at ReplaceInput{\^\^I}%
+ {\lst at ProcessTabulator}}%
+ \leavevmode \input{\jobname.tmp}}\MakePercentIgnore}
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {1.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+\def\lstref#1{\emph{\ref{#1} \nameref{#1}}}
+\def\@part[#1]#2{\addcontentsline{toc}{part}{#1}%
+ {\parindent\z@ \raggedright \interlinepenalty\@M
+ \normalfont \huge \bfseries #2\markboth{}{}\par}%
+ \nobreak\vskip 3ex\@afterheading}
+\renewcommand*\l at section[2]{%
+ \addpenalty\@secpenalty
+ \addvspace{.25em \@plus\p@}%
+ \setlength\@tempdima{1.5em}%
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb at xt@\@pnumwidth{\hss #2}\par
+ \endgroup}
+\renewcommand*\l at subsection{\@dottedtocline{2}{0pt}{2.3em}}
+\renewcommand*\l at subsubsection{\@dottedtocline{3}{0pt}{3.2em}}
+\newcommand\ikeyname[1]{%
+ \lstkeyindex{#1}{}%
+ \lstaspectindex{#1}{}%
+ \keyname{#1}}
+\newcommand\ekeyname[1]{%
+ \@bsphack
+ \lstkeyindex{#1}{\encapchar usage}%
+ \lstaspectindex{#1}{\encapchar usage}%
+ \@esphack}
+\newcommand\rkeyname[1]{%
+ \@bsphack
+ \lstkeyindex{#1}{\encapchar main}%
+ \lstaspectindex{#1}{\encapchar main}%
+ \@esphack{\rstyle\keyname{#1}}}
+\newcommand\icmdname[1]{%
+ \@bsphack
+ \lstaspectindex{#1}{}%
+ \@esphack\texttt{\string#1}}
+\newcommand\rcmdname[1]{%
+ \@bsphack
+ \lstaspectindex{#1}{\encapchar main}%
+ \@esphack\texttt{\rstyle\string#1}}
+\def\lstaspectindex#1#2{%
+ \global\@namedef{lstkandc@\string#1}{}%
+ \@ifundefined{lstisaspect@\string#1}
+ {\index{unknown\levelchar
+ \protect\texttt{\protect\string\string#1}#2}}%
+ {\index{\@nameuse{lstisaspect@\string#1}\levelchar
+ \protect\texttt{\protect\string\string#1}#2}}%
+}
+\def\lstkeyindex#1#2{%
+}
+\def\lstisaspect[#1]#2{%
+ \global\@namedef{lstaspect@#1}{#2}%
+ \lst at AddTo\lst at allkeysandcmds{,#2}%
+ \@for\lst at temp:=#2\do
+ {\ifx\@empty\lst at temp\else
+ \global\@namedef{lstisaspect@\lst at temp}{#1}%
+ \fi}}
+\gdef\lst at allkeysandcmds{}
+\def\lstprintaspectkeysandcmds#1{%
+ \lst at true
+ \expandafter\@for\expandafter\lst at temp
+ \expandafter:\expandafter=\csname lstaspect@#1\endcsname\do
+ {\lst at if\lst at false\else, \fi \texttt{\lst at temp}}}
+\def\lstcheckreference{%
+ \@for\lst at temp:=\lst at allkeysandcmds\do
+ {\ifx\lst at temp\@empty\else
+ \@ifundefined{lstkandc@\lst at temp}
+ {\typeout{\lst at temp\space not in reference guide?}}{}%
+ \fi}}
+\newcommand*\lst{\texttt{lst}}
+\newcommand*\Cpp{C\texttt{++}}
+\let\keyname\texttt
+\let\keyvalue\texttt
+\let\hookname\texttt
+\newcommand*\aspectname[1]{{\normalfont\sffamily#1}}
+\DeclareRobustCommand\packagename[1]{%
+ {\leavevmode\text at command{#1}%
+ \switchfontfamily\sfdefault\rmdefault
+ \check at icl #1\check at icr
+ \expandafter}}%
+\renewcommand\packagename[1]{{\normalfont\sffamily#1}}
+\def\switchfontfamily#1#2{%
+ \begingroup\xdef\@gtempa{#1}\endgroup
+ \ifx\f at family\@gtempa\fontfamily#2%
+ \else\fontfamily#1\fi
+ \selectfont}
+\ifcolor
+ \definecolor{darkgreen}{rgb}{0,0.5,0}
+ \def\rstyle{\color{darkgreen}}
+\else
+ \let\rstyle\empty
+\fi
+\gdef\lst at emails{}
+\newcommand*\lstthanks[2]
+ {#1\lst at AddTo\lst at emails{,#1,<#2>}%
+ \ifx\@empty#2\@empty\typeout{Missing email for #1}\fi}
+\newcommand*\lsthelper[3]
+ {{\let~\ #1}%
+ \lst at IfOneOf#1\relax\lst at emails
+ {}{\typeout{^^JWarning: Unknown helper #1.^^J}}}
+\lstdefinelanguage[doc]{Pascal}{%
+ morekeywords={alfa,and,array,begin,boolean,byte,case,char,const,div,%
+ do,downto,else,end,false,file,for,function,get,goto,if,in,%
+ integer,label,maxint,mod,new,not,of,or,pack,packed,page,program,%
+ procedure,put,read,readln,real,record,repeat,reset,rewrite,set,%
+ text,then,to,true,type,unpack,until,var,while,with,write,writeln},%
+ sensitive=false,%
+ morecomment=[s]{(*}{*)},%
+ morecomment=[s]{\{}{\}},%
+ morestring=[d]{'}}
+\lstdefinestyle{}
+ {basicstyle={},%
+ keywordstyle=\bfseries,identifierstyle={},%
+ commentstyle=\itshape,stringstyle={},%
+ numberstyle={},stepnumber=1,%
+ pointstyle=\pointstyle}
+\def\pointstyle{%
+ {\let\lst at um\@empty \xdef\@gtempa{\the\lst at token}}%
+ \expandafter\lstkeyindex\expandafter{\@gtempa}{}%
+ \expandafter\lstaspectindex\expandafter{\@gtempa}{}%
+ \rstyle}
+\lstset{defaultdialect=[doc]Pascal,language=Pascal,style={}}
+\def\lstscanlanguages#1#2#3{%
+ \begingroup
+ \def\lst at DefDriver@##1##2##3##4[##5]##6{%
+ \lst at false
+ \lst at lAddTo\lst at scan{##6(##5),}%
+ \begingroup
+ \@ifnextchar[{\lst at XDefDriver{##1}##3}{\lst at DefDriver@@##3}}%
+ \def\lst at XXDefDriver[##1]{}%
+ \lst at InputCatcodes
+ \def\lst at dontinput{#3}%
+ \let\lst at scan\@empty
+ \lst at for{#2}\do{%
+ \lst at IfOneOf##1\relax\lst at dontinput
+ {}%
+ {\InputIfFileExists{##1}{}{}}}%
+ \global\let\@gtempa\lst at scan
+ \endgroup
+ \let#1\@gtempa}
+\def\lstprintlanguages#1{%
+ \def\do##1{\setbox\@tempboxa\hbox{##1\space\space}%
+ \ifdim\wd\@tempboxa<.5\linewidth \wd\@tempboxa.5\linewidth
+ \else \wd\@tempboxa\linewidth \fi
+ \box\@tempboxa\allowbreak}%
+ \begin{quote}
+ \par\noindent
+ \hyphenpenalty=\@M \rightskip=\z@\@plus\linewidth\relax
+ \lst at BubbleSort#1%
+ \expandafter\lst at NextLanguage#1\relax(\relax),%
+ \end{quote}}
+\def\lst at NextLanguage#1(#2),{%
+ \ifx\relax#1\else
+ \def\lst at language{#1}\def\lst at dialects{(#2),}%
+ \expandafter\lst at NextLanguage@
+ \fi}
+\def\lst at NextLanguage@#1(#2),{%
+ \def\lst at temp{#1}%
+ \ifx\lst at temp\lst at language
+ \lst at lAddTo\lst at dialects{(#2),}%
+ \expandafter\lst at NextLanguage@
+ \else
+ \do{\lst at language
+ \ifx\lst at dialects\lst at emptydialect\else
+ \expandafter\lst at NormedDef\expandafter\lst at language
+ \expandafter{\lst at language}%
+ \space(%
+ \lst at BubbleSort\lst at dialects
+ \expandafter\lst at PrintDialects\lst at dialects(\relax),%
+ )%
+ \fi}%
+ \def\lst at next{\lst at NextLanguage#1(#2),}%
+ \expandafter\lst at next
+ \fi}
+\def\lst at emptydialect{(),}
+\def\lst at PrintDialects(#1),{%
+ \ifx\@empty#1\@empty empty\else
+ \lst at PrintDialect{#1}%
+ \fi
+ \lst at PrintDialects@}
+\def\lst at PrintDialects@(#1),{%
+ \ifx\relax#1\else
+ , \lst at PrintDialect{#1}%
+ \expandafter\lst at PrintDialects@
+ \fi}
+\def\lst at PrintDialect#1{%
+ \lst at NormedDef\lst at temp{#1}%
+ \expandafter\ifx\csname\@lst dd@\lst at language\endcsname\lst at temp
+ \texttt{\underbar{#1}}%
+ \else
+ \texttt{#1}%
+ \fi}
+\def\lst at IfLE#1#2\@empty#3#4\@empty{%
+ \ifx #1\relax
+ \let\lst at next\@firstoftwo
+ \else \ifx #3\relax
+ \let\lst at next\@secondoftwo
+ \else
+ \lowercase{\ifx#1#3}%
+ \def\lst at next{\lst at IfLE#2\@empty#4\@empty}%
+ \else
+ \lowercase{\ifnum`#1<`#3}\relax
+ \let\lst at next\@firstoftwo
+ \else
+ \let\lst at next\@secondoftwo
+ \fi
+ \fi
+ \fi \fi
+ \lst at next}
+\def\lst at BubbleSort#1{%
+ \ifx\@empty#1\else
+ \lst at false
+ \expandafter\lst at BubbleSort@#1\relax,\relax,%
+ \expandafter\lst at BubbleSort@\expandafter,\lst at sorted
+ \relax,\relax,%
+ \let#1\lst at sorted
+ \lst at if
+ \def\lst at next{\lst at BubbleSort#1}%
+ \expandafter\expandafter\expandafter\lst at next
+ \fi
+ \fi}
+\def\lst at BubbleSort@#1,#2,{%
+ \ifx\@empty#1\@empty
+ \def\lst at sorted{#2,}%
+ \def\lst at next{\lst at BubbleSort@@}%
+ \else
+ \let\lst at sorted\@empty
+ \def\lst at next{\lst at BubbleSort@@#1,#2,}%
+ \fi
+ \lst at next}
+\def\lst at BubbleSort@@#1,#2,{%
+ \ifx\relax#1\else
+ \ifx\relax#2%
+ \lst at lAddTo\lst at sorted{#1,}%
+ \expandafter\expandafter\expandafter\lst at BubbleSort@@@
+ \else
+ \lst at IfLE #1\relax\@empty #2\relax\@empty
+ {\lst at lAddTo\lst at sorted{#1,#2,}}%
+ {\lst at true \lst at lAddTo\lst at sorted{#2,#1,}}%
+ \expandafter\expandafter\expandafter\lst at BubbleSort@@
+ \fi
+ \fi}
+\def\lst at BubbleSort@@@#1\relax,{}
+\endinput
+%%
+%% End of file `lstdoc.sty'.
File [added]: lstlang1.sty
Delta lines: +1226 -0
===================================================================
--- papers/CPC/saga_engine_2006/lstlang1.sty 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/lstlang1.sty 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,1226 @@
+%%
+%% This is file `lstlang1.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lstdrvrs-1.3.dtx (with options: `lang1')
+%%
+%% (w)(c) 1996/1997/1998/1999/2000/2001/2002/2003/2004 Carsten Heinz
+%% and/or any other author listed elsewhere in this file.
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+%% This file is completely free and comes without any warranty.
+%%
+%% Send comments and ideas on the package, error reports and additional
+%% programming languages to <cheinz at gmx.de>.
+%%
+\ProvidesFile{lstlang1.sty}
+ [2004/09/05 1.3 listings language file]
+%%
+%% ACSL definition (c) 2000 by Andreas Matthias
+%%
+\lst at definelanguage{ACSL}[90]{Fortran}%
+ {morekeywords={algorithm,cinterval,constant,derivative,discrete,%
+ dynamic,errtag,initial,interval,maxterval,minterval,%
+ merror,xerror,nsteps,procedural,save,schedule,sort,%
+ table,terminal,termt,variable},%
+ sensitive=false,%
+ morecomment=[l]!%
+ }[keywords, comments]%
+%%
+%% Ada 95 definition (c) Torsten Neuer
+%%
+\lst at definelanguage[95]{Ada}[83]{Ada}%
+ {morekeywords={abstract,aliased,protected,requeue,tagged,until}}%
+\lst at definelanguage[83]{Ada}%
+ {morekeywords={abort,abs,accept,access,all,and,array,at,begin,body,%
+ case,constant,declare,delay,delta,digits,do,else,elsif,end,entry,%
+ exception,exit,for,function,generic,goto,if,in,is,limited,loop,%
+ mod,new,not,null,of,or,others,out,package,pragma,private,%
+ procedure,raise,range,record,rem,renames,return,reverse,select,%
+ separate,subtype,task,terminate,then,type,use,when,while,with,%
+ xor},%
+ sensitive=f,%
+ morecomment=[l]--,%
+ morestring=[m]",% percent not defined as stringizer so far
+ morestring=[m]'%
+ }[keywords,comments,strings]%
+%%
+%% awk definitions (c) Christoph Giess
+%%
+\lst at definelanguage[gnu]{Awk}[POSIX]{Awk}%
+ {morekeywords={and,asort,bindtextdomain,compl,dcgettext,gensub,%
+ lshift,mktime,or,rshift,strftime,strtonum,systime,xor,extension}%
+ }%
+\lst at definelanguage[POSIX]{Awk}%
+ {keywords={BEGIN,END,close,getline,next,nextfile,print,printf,%
+ system,fflush,atan2,cos,exp,int,log,rand,sin,sqrt,srand,gsub,%
+ index,length,match,split,sprintf,strtonum,sub,substr,tolower,%
+ toupper,if,while,do,for,break,continue,delete,exit,function,%
+ return},%
+ sensitive,%
+ morecomment=[l]\#,%
+ morecomment=[l]//,%
+ morecomment=[s]{/*}{*/},%
+ morestring=[b]"%
+ }[keywords,comments,strings]%
+%%
+%% Visual Basic definition (c) 2002 Robert Frank
+%%
+\lst at definelanguage[Visual]{Basic}
+ {morekeywords={Abs,Array,Asc,AscB,AscW,Atn,Avg,CBool,CByte,CCur,%
+ CDate,CDbl,Cdec,Choose,Chr,ChrB,ChrW,CInt,CLng,Command,Cos,%
+ Count,CreateObject,CSng,CStr,CurDir,CVar,CVDate,CVErr,Date,%
+ DateAdd,DateDiff,DatePart,DateSerial,DateValue,Day,DDB,Dir,%
+ DoEvents,Environ,EOF,Error,Exp,FileAttr,FileDateTime,FileLen,%
+ Fix,Format,FreeFile,FV,GetAllStrings,GetAttr,%
+ GetAutoServerSettings,GetObject,GetSetting,Hex,Hour,IIf,%
+ IMEStatus,Input,InputB,InputBox,InStr,InstB,Int,Integer,IPmt,%
+ IsArray,IsDate,IsEmpty,IsError,IsMissing,IsNull,IsNumeric,%
+ IsObject,LBound,LCase,Left,LeftB,Len,LenB,LoadPicture,Loc,LOF,%
+ Log,Ltrim,Max,Mid,MidB,Min,Minute,MIRR,Month,MsgBox,Now,NPer,%
+ NPV,Oct,Partition,Pmt,PPmt,PV,QBColor,Rate,RGB,Right,RightB,Rnd,%
+ Rtrim,Second,Seek,Sgn,Shell,Sin,SLN,Space,Spc,Sqr,StDev,StDevP,%
+ Str,StrComp,StrConv,String,Switch,Sum,SYD,Tab,Tan,Time,Timer,%
+ TimeSerial,TimeValue,Trim,TypeName,UBound,Ucase,Val,Var,VarP,%
+ VarType,Weekday,Year},% functions
+ morekeywords=[2]{Accept,Activate,Add,AddCustom,AddFile,AddFromFile,%
+ AddFromTemplate,AddItem,AddNew,AddToAddInToolbar,%
+ AddToolboxProgID,Append,AppendChunk,Arrange,Assert,AsyncRead,%
+ BatchUpdate,BeginTrans,Bind,Cancel,CancelAsyncRead,CancelBatch,%
+ CancelUpdate,CanPropertyChange,CaptureImage,CellText,CellValue,%
+ Circle,Clear,ClearFields,ClearSel,ClearSelCols,Clone,Close,Cls,%
+ ColContaining,ColumnSize,CommitTrans,CompactDatabase,Compose,%
+ Connect,Copy,CopyQueryDef,CreateDatabase,CreateDragImage,%
+ CreateEmbed,CreateField,CreateGroup,CreateIndex,CreateLink,%
+ CreatePreparedStatement,CreatePropery,CreateQuery,%
+ CreateQueryDef,CreateRelation,CreateTableDef,CreateUser,%
+ CreateWorkspace,Customize,Delete,DeleteColumnLabels,%
+ DeleteColumns,DeleteRowLabels,DeleteRows,DoVerb,Drag,Draw,Edit,%
+ EditCopy,EditPaste,EndDoc,EnsureVisible,EstablishConnection,%
+ Execute,ExtractIcon,Fetch,FetchVerbs,Files,FillCache,Find,%
+ FindFirst,FindItem,FindLast,FindNext,FindPrevious,Forward,%
+ GetBookmark,GetChunk,GetClipString,GetData,GetFirstVisible,%
+ GetFormat,GetHeader,GetLineFromChar,GetNumTicks,GetRows,%
+ GetSelectedPart,GetText,GetVisibleCount,GoBack,GoForward,Hide,%
+ HitTest,HoldFields,Idle,InitializeLabels,InsertColumnLabels,%
+ InsertColumns,InsertObjDlg,InsertRowLabels,InsertRows,Item,%
+ KillDoc,Layout,Line,LinkExecute,LinkPoke,LinkRequest,LinkSend,%
+ Listen,LoadFile,LoadResData,LoadResPicture,LoadResString,%
+ LogEvent,MakeCompileFile,MakeReplica,MoreResults,Move,MoveData,%
+ MoveFirst,MoveLast,MoveNext,MovePrevious,NavigateTo,NewPage,%
+ NewPassword,NextRecordset,OLEDrag,OnAddinsUpdate,OnConnection,%
+ OnDisconnection,OnStartupComplete,Open,OpenConnection,%
+ OpenDatabase,OpenQueryDef,OpenRecordset,OpenResultset,OpenURL,%
+ Overlay,PaintPicture,Paste,PastSpecialDlg,PeekData,Play,Point,%
+ PopulatePartial,PopupMenu,Print,PrintForm,PropertyChanged,Pset,%
+ Quit,Raise,RandomDataFill,RandomFillColumns,RandomFillRows,%
+ rdoCreateEnvironment,rdoRegisterDataSource,ReadFromFile,%
+ ReadProperty,Rebind,ReFill,Refresh,RefreshLink,RegisterDatabase,%
+ Reload,Remove,RemoveAddInFromToolbar,RemoveItem,Render,%
+ RepairDatabase,Reply,ReplyAll,Requery,ResetCustom,%
+ ResetCustomLabel,ResolveName,RestoreToolbar,Resync,Rollback,%
+ RollbackTrans,RowBookmark,RowContaining,RowTop,Save,SaveAs,%
+ SaveFile,SaveToFile,SaveToolbar,SaveToOle1File,Scale,ScaleX,%
+ ScaleY,Scroll,Select,SelectAll,SelectPart,SelPrint,Send,%
+ SendData,Set,SetAutoServerSettings,SetData,SetFocus,SetOption,%
+ SetSize,SetText,SetViewport,Show,ShowColor,ShowFont,ShowHelp,%
+ ShowOpen,ShowPrinter,ShowSave,ShowWhatsThis,SignOff,SignOn,Size,%
+ Span,SplitContaining,StartLabelEdit,StartLogging,Stop,%
+ Synchronize,TextHeight,TextWidth,ToDefaults,TwipsToChartPart,%
+ TypeByChartType,Update,UpdateControls,UpdateRecord,UpdateRow,%
+ Upto,WhatsThisMode,WriteProperty,ZOrder},% methods
+ morekeywords=[3]{AccessKeyPress,AfterAddFile,AfterChangeFileName,%
+ AfterCloseFile,AfterColEdit,AfterColUpdate,AfterDelete,%
+ AfterInsert,AfterLabelEdit,AfterRemoveFile,AfterUpdate,%
+ AfterWriteFile,AmbienChanged,ApplyChanges,Associate,%
+ AsyncReadComplete,AxisActivated,AxisLabelActivated,%
+ AxisLabelSelected,AxisLabelUpdated,AxisSelected,%
+ AxisTitleActivated,AxisTitleSelected,AxisTitleUpdated,%
+ AxisUpdated,BeforeClick,BeforeColEdit,BeforeColUpdate,%
+ BeforeConnect,BeforeDelete,BeforeInsert,BeforeLabelEdit,%
+ BeforeLoadFile,BeforeUpdate,ButtonClick,ButtonCompleted,%
+ ButtonGotFocus,ButtonLostFocus,Change,ChartActivated,%
+ ChartSelected,ChartUpdated,Click,ColEdit,Collapse,ColResize,%
+ ColumnClick,Compare,ConfigChageCancelled,ConfigChanged,%
+ ConnectionRequest,DataArrival,DataChanged,DataUpdated,DblClick,%
+ Deactivate,DeviceArrival,DeviceOtherEvent,DeviceQueryRemove,%
+ DeviceQueryRemoveFailed,DeviceRemoveComplete,DeviceRemovePending,%
+ DevModeChange,Disconnect,DisplayChanged,Dissociate,%
+ DoGetNewFileName,Done,DonePainting,DownClick,DragDrop,DragOver,%
+ DropDown,EditProperty,EnterCell,EnterFocus,Event,ExitFocus,%
+ Expand,FootnoteActivated,FootnoteSelected,FootnoteUpdated,%
+ GotFocus,HeadClick,InfoMessage,Initialize,IniProperties,%
+ ItemActivated,ItemAdded,ItemCheck,ItemClick,ItemReloaded,%
+ ItemRemoved,ItemRenamed,ItemSeletected,KeyDown,KeyPress,KeyUp,%
+ LeaveCell,LegendActivated,LegendSelected,LegendUpdated,%
+ LinkClose,LinkError,LinkNotify,LinkOpen,Load,LostFocus,%
+ MouseDown,MouseMove,MouseUp,NodeClick,ObjectMove,%
+ OLECompleteDrag,OLEDragDrop,OLEDragOver,OLEGiveFeedback,%
+ OLESetData,OLEStartDrag,OnAddNew,OnComm,Paint,PanelClick,%
+ PanelDblClick,PathChange,PatternChange,PlotActivated,%
+ PlotSelected,PlotUpdated,PointActivated,PointLabelActivated,%
+ PointLabelSelected,PointLabelUpdated,PointSelected,%
+ PointUpdated,PowerQuerySuspend,PowerResume,PowerStatusChanged,%
+ PowerSuspend,QueryChangeConfig,QueryComplete,QueryCompleted,%
+ QueryTimeout,QueryUnload,ReadProperties,Reposition,%
+ RequestChangeFileName,RequestWriteFile,Resize,ResultsChanged,%
+ RowColChange,RowCurrencyChange,RowResize,RowStatusChanged,%
+ SelChange,SelectionChanged,SendComplete,SendProgress,%
+ SeriesActivated,SeriesSelected,SeriesUpdated,SettingChanged,%
+ SplitChange,StateChanged,StatusUpdate,SysColorsChanged,%
+ Terminate,TimeChanged,TitleActivated,TitleSelected,%
+ TitleActivated,UnboundAddData,UnboundDeleteRow,%
+ UnboundGetRelativeBookmark,UnboundReadData,UnboundWriteData,%
+ Unload,UpClick,Updated,Validate,ValidationError,WillAssociate,%
+ WillChangeData,WillDissociate,WillExecute,WillUpdateRows,%
+ WithEvents,WriteProperties},% VB-events
+ morekeywords=[4]{AppActivate,Base,Beep,Call,Case,ChDir,ChDrive,%
+ Const,Declare,DefBool,DefByte,DefCur,DefDate,DefDbl,DefDec,%
+ DefInt,DefLng,DefObj,DefSng,DefStr,Deftype,DefVar,DeleteSetting,%
+ Dim,Do,Else,ElseIf,End,Enum,Erase,Event,Exit,Explicit,FileCopy,%
+ For,ForEach,Friend,Function,Get,GoSub,GoTo,If,Implements,Kill,%
+ Let,LineInput,Lock,Lset,MkDir,Name,Next,OnError,On,Option,%
+ Private,Property,Public,Put,RaiseEvent,Randomize,ReDim,Rem,%
+ Reset,Resume,Return,RmDir,Rset,SavePicture,SaveSetting,%
+ SendKeys,SetAttr,Static,Sub,Then,Type,Unlock,Wend,While,Width,%
+ With,Write},% statements
+ sensitive=false,%
+ keywordcomment=rem,%
+ MoreSelectCharTable=\def\lst at BeginKC@{% chmod
+ \lst at ResetToken
+ \lst at BeginComment\lst at GPmode{{\lst at commentstyle}%
+ \lst at Lmodetrue\lst at modetrue}\@empty},%
+ morecomment=[l]{'},%
+ morecomment=[s]{/*}{*/},%
+ morestring=[b]",%
+ }[keywords,comments,strings,keywordcomments]
+\lst at definelanguage[ANSI]{C++}[ISO]{C++}{}%
+\lst at definelanguage[GNU]{C++}[ISO]{C++}%
+ {morekeywords={__attribute__,__extension__,__restrict,__restrict__,%
+ typeof,__typeof__},%
+ }%
+\lst at definelanguage[Visual]{C++}[ISO]{C++}%
+ {morekeywords={__asm,__based,__cdecl,__declspec,dllexport,%
+ dllimport,__except,__fastcall,__finally,__inline,__int8,__int16,%
+ __int32,__int64,naked,__stdcall,thread,__try,__leave},%
+ }%
+\lst at definelanguage[ISO]{C++}[ANSI]{C}%
+ {morekeywords={and,and_eq,asm,bad_cast,bad_typeid,bitand,bitor,bool,%
+ catch,class,compl,const_cast,delete,dynamic_cast,explicit,export,%
+ false,friend,inline,mutable,namespace,new,not,not_eq,operator,or,%
+ or_eq,private,protected,public,reinterpret_cast,static_cast,%
+ template,this,throw,true,try,typeid,type_info,typename,using,%
+ virtual,wchar_t,xor,xor_eq},%
+ }%
+%%
+%% Objective-C definition (c) 1997 Detlev Droege
+%%
+\lst at definelanguage[Objective]{C}[ANSI]{C}
+ {morekeywords={bycopy,id,in,inout,oneway,out,self,super,%
+ @class, at defs, at encode, at end, at implementation, at interface, at private,%
+ @protected, at protocol, at public, at selector},%
+ moredirectives={import}%
+ }%
+%%
+%% Handel-C definition, refer http://www.celoxica.com
+%%
+\lst at definelanguage[Handel]{C}[ANSI]{C}
+ {morekeywords={assert,chan,chanin,chanout,clock,delay,expr,external,%
+ external_divide,family,ifselect,in,inline,interface,internal,%
+ internal_divid,intwidth,let,macro,mpram,par,part,prialt,proc,ram,%
+ releasesema,reset,rom,select,sema,set,seq,shared,signal,try,%
+ reset,trysema,typeof,undefined,width,with,wom},%
+ }%
+\lst at definelanguage[ANSI]{C}%
+ {morekeywords={auto,break,case,char,const,continue,default,do,double,%
+ else,enum,extern,float,for,goto,if,int,long,register,return,%
+ short,signed,sizeof,static,struct,switch,typedef,union,unsigned,%
+ void,volatile,while},%
+ sensitive,%
+ morecomment=[s]{/*}{*/},%
+ morecomment=[l]//,% nonstandard
+ morestring=[b]",%
+ morestring=[b]',%
+ moredelim=*[directive]\#,%
+ moredirectives={define,elif,else,endif,error,if,ifdef,ifndef,line,%
+ include,pragma,undef,warning}%
+ }[keywords,comments,strings,directives]%
+%%
+%% C-Sharp definition (c) 2002 Martin Brodbeck
+%%
+\lst at definelanguage[Sharp]{C}%
+ {morekeywords={abstract,base,bool,break,byte,case,catch,char,checked,%
+ class,const,continue,decimal,default,delegate,do,double,else,%
+ enum,event,explicit,extern,false,finally,fixed,float,for,foreach,%
+ goto,if,implicit,in,int,interface,internal,is,lock,long,%
+ namespace,new,null,object,operator,out,override,params,private,%
+ protected,public,readonly,ref,return,sbyte,sealed,short,sizeof,%
+ static,string,struct,switch,this,throw,true,try,typeof,uint,%
+ ulong,unchecked,unsafe,ushort,using,virtual,void,while,%
+ as,volatile,stackalloc},% Kai K\"ohne
+ sensitive,%
+ morecomment=[s]{/*}{*/},%
+ morecomment=[l]//,%
+ morestring=[b]"
+ }[keywords,comments,strings]%
+%%
+%% csh definition (c) 1998 Kai Below
+%%
+\lst at definelanguage{csh}
+ {morekeywords={alias,awk,cat,echo,else,end,endif,endsw,exec,exit,%
+ foreach,glob,goto,history,if,logout,nice,nohup,onintr,repeat,sed,%
+ set,setenv,shift,source,switch,then,time,while,umask,unalias,%
+ unset,wait,while,@,env,argv,child,home,ignoreeof,noclobber,%
+ noglob,nomatch,path,prompt,shell,status,verbose,print,printf,%
+ sqrt,BEGIN,END},%
+ morecomment=[l]\#,%
+ morestring=[d]"%
+ }[keywords,comments,strings]%
+%%
+%% bash,sh definition (c) 2003 Riccardo Murri <riccardo.murri at gmx.it>
+%%
+\lst at definelanguage{bash}[]{sh}%
+ {morekeywords={alias,bg,bind,builtin,command,compgen,complete,%
+ declare,disown,enable,fc,fg,history,jobs,et,local,logout,printf,%
+ pushd,popd,select,set,suspend,shopt,source,times,type,typeset,%
+ ulimit,unalias,wait},%
+ }%
+\lst at definelanguage{sh}%
+ {morekeywords={awk,break,case,cat,cd,continue,do,done,echo,else,%
+ env,eval,exec,expr,exit,export,false,fi,for,function,getopts,%
+ hash,history,if,kill,nice,nohup,ps,pwd,read,readonly,return,%
+ sed,shift,test,then,times,trap,true,umask,unset,until,while},%
+ morecomment=[l]\#,%
+ morestring=[d]"%
+ }[keywords,comments,strings]%
+\lst at definelanguage[90]{Fortran}[95]{Fortran}{}
+\lst at definelanguage[95]{Fortran}[77]{Fortran}%
+ {deletekeywords=SAVE,%
+ morekeywords={ACTION,ADVANCE,ALLOCATE,ALLOCATABLE,ASSIGNMENT,CASE,%
+ CONTAINS,CYCLE,DEALLOCATE,DEFAULT,DELIM,EXIT,INCLUDE,IN,NONE,IN,%
+ OUT,INTENT,INTERFACE,IOLENGTH,KIND,LEN,MODULE,NAME,NAMELIST,NMT,%
+ NULLIFY,ONLY,OPERATOR,OPTIONAL,OUT,PAD,POINTER,POSITION,PRIVATE,%
+ PUBLIC,READWRITE,RECURSIVE,RESULT,SELECT,SEQUENCE,SIZE,STAT,%
+ TARGET,USE,WHERE,WHILE,BLOCKDATA,DOUBLEPRECISION,ELSEIF,%
+ ENDBLOCKDATA,ENDDO,ENDFILE,ENDFUNCTION,ENDIF,ENDINTERFACE,%
+ ENDMODULE,ENDPROGRAM,ENDSELECT,ENDSUBROUTINE,ENDTYPE,ENDWHERE,%
+ GOTO,INOUT,SELECTCASE},%
+ deletecomment=[f],% no fixed comment line: 1998 Magne Rudshaug
+ morecomment=[l]!%
+ }%
+\lst at definelanguage[77]{Fortran}%
+ {morekeywords={ACCESS,ASSIGN,BACKSPACE,BLANK,BLOCK,CALL,CHARACTER,%
+ CLOSE,COMMON,COMPLEX,CONTINUE,DATA,DIMENSION,DIRECT,DO,DOUBLE,%
+ ELSE,END,ENTRY,EOF,EQUIVALENCE,ERR,EXIST,EXTERNAL,FILE,FMT,FORM,%
+ FORMAT,FORMATTED,FUNCTION,GO,TO,IF,IMPLICIT,INQUIRE,INTEGER,%
+ INTRINSIC,IOSTAT,LOGICAL,NAMED,NEXTREC,NUMBER,OPEN,OPENED,%
+ PARAMETER,PAUSE,PRECISION,PRINT,PROGRAM,READ,REAL,REC,RECL,%
+ RETURN,REWIND,SEQUENTIAL,STATUS,STOP,SUBROUTINE,THEN,TYPE,%
+ UNFORMATTED,UNIT,WRITE,SAVE},%
+ sensitive=f,%% not Fortran standard %%
+ morecomment=[f]*,%
+ morecomment=[f]C,%
+ morecomment=[f]c,%
+ morestring=[d]"%
+ }[keywords,comments,strings]%
+\lst at definelanguage{HTML}%
+ {morekeywords={A,ABBR,ACRONYM,ADDRESS,APPLET,AREA,B,BASE,BASEFONT,%
+ BDO,BIG,BLOCKQUOTE,BODY,BR,BUTTON,CAPTION,CENTER,CITE,CODE,COL,%
+ COLGROUP,DD,DEL,DFN,DIR,DIV,DL,DOCTYPE,DT,EM,FIELDSET,FONT,FORM,%
+ FRAME,FRAMESET,HEAD,HR,H1,H2,H3,H4,H5,H6,HTML,I,IFRAME,IMG,INPUT,%
+ INS,ISINDEX,KBD,LABEL,LEGEND,LH,LI,LINK,LISTING,MAP,META,MENU,%
+ NOFRAMES,NOSCRIPT,OBJECT,OPTGROUP,OPTION,P,PARAM,PLAINTEXT,PRE,%
+ OL,Q,S,SAMP,SCRIPT,SELECT,SMALL,SPAN,STRIKE,STRING,STRONG,STYLE,%
+ SUB,SUP,TABLE,TBODY,TD,TEXTAREA,TFOOT,TH,THEAD,TITLE,TR,TT,U,UL,%
+ VAR,XMP,%
+ accesskey,action,align,alink,alt,archive,axis,background,bgcolor,%
+ border,cellpadding,cellspacing,charset,checked,cite,class,classid,%
+ code,codebase,codetype,color,cols,colspan,content,coords,data,%
+ datetime,defer,disabled,dir,event,error,for,frameborder,headers,%
+ height,href,hreflang,hspace,http-equiv,id,ismap,label,lang,link,%
+ longdesc,marginwidth,marginheight,maxlength,media,method,multiple,%
+ name,nohref,noresize,noshade,nowrap,onblur,onchange,onclick,%
+ ondblclick,onfocus,onkeydown,onkeypress,onkeyup,onload,onmousedown,%
+ profile,readonly,onmousemove,onmouseout,onmouseover,onmouseup,%
+ onselect,onunload,rel,rev,rows,rowspan,scheme,scope,scrolling,%
+ selected,shape,size,src,standby,style,tabindex,text,title,type,%
+ units,usemap,valign,value,valuetype,vlink,vspace,width,xmlns},%
+ tag=**[s]<>,%
+ sensitive=f,%
+ morestring=[d]",% ??? doubled
+ MoreSelectCharTable=%
+ \lst at CArgX--\relax\lst at DefDelimB{}{}%
+ {\ifnum\lst at mode=\lst at tagmode\else
+ \expandafter\@gobblethree
+ \fi}%
+ \lst at BeginComment\lst at commentmode{{\lst at commentstyle}}%
+ \lst at CArgX--\relax\lst at DefDelimE{}{}{}%
+ \lst at EndComment\lst at commentmode
+ }[keywords,comments,strings,html]%
+%%
+%% AspectJ definition (c) Robert Wenner
+%%
+\lst at definelanguage[AspectJ]{Java}[]{Java}%
+ {morekeywords={%
+ adviceexecution,after,args,around,aspect,aspectOf,before,%
+ call,cflow,cflowbelow,%
+ execution,get,handler,if,initialization,issingleton,pointcut,%
+ percflow,percflowbelow,perthis,pertarget,preinitialization,%
+ privileged,proceed,returning,set,staticinitialization,strictfp,%
+ target,this,thisEnclosingJoinPoint,thisJoinPoint,throwing,%
+ within,withincode},%
+ MoreSelectCharTable=%
+ \lst at DefSaveDef{`.}\lst at umdot{\lst at umdot\global\let\lst at derefop\@empty}%
+ \ifx\lst at derefinstalled\@empty\else
+ \global\let\lst at derefinstalled\@empty
+\lst at AddToHook{Output}%
+{\lst at ifkeywords
+ \ifx\lst at derefop\@empty
+ \global\let\lst at derefop\relax
+ \ifx\lst at thestyle\lst at gkeywords@sty
+ \ifx\lst at currstyle\relax
+ \let\lst at thestyle\lst at identifierstyle
+ \else
+ \let\lst at thestyle\lst at currstyle
+ \fi
+ \fi
+ \fi
+ \fi}
+\lst at AddToHook{BOL}{\global\let\lst at derefop\relax}%
+\lst at AddTo\lst at ProcessSpace{\global\let\lst at derefop\relax}%
+ \fi
+ }%
+\lst at definelanguage{Java}%
+ {morekeywords={abstract,boolean,break,byte,case,catch,char,class,%
+ const,continue,default,do,double,else,extends,false,final,%
+ finally,float,for,goto,if,implements,import,instanceof,int,%
+ interface,label,long,native,new,null,package,private,protected,%
+ public,return,short,static,super,switch,synchronized,this,throw,%
+ throws,transient,true,try,void,volatile,while},%
+ sensitive,%
+ morecomment=[l]//,%
+ morecomment=[s]{/*}{*/},%
+ morestring=[b]",%
+ morestring=[b]',%
+ }[keywords,comments,strings]%
+%%
+%% ByteCodeJava definition (c) 2004 Martine Gautier
+%%
+\lst at definelanguage{JVMIS}%
+ {morekeywords={aaload,astore,aconst_null,aload,aload_0,aload_1,%
+ aload_2,aload_3,anewarray,areturn,arraylength,astore,astore_0,%
+ astore_1,astore_2,astore_3,athrow,baload,bastore,bipush,caload,%
+ castore,checkcast,d2f,d2i,d2l,dadd,daload,dastore,dcmpg,dcmpl,%
+ dconst_0,dconst_1,ddiv,dload,dload_0,dload_1,dload_2,dload_3,%
+ dmul,dneg,drem,dreturn,dstore,dstore_0,dstore_1,dstore_2,%
+ dstore_3,dsub,dup,dup_x1,dup_x2,dup2,dup2_x1,dup2_x2,f2d,%
+ f2i,f2l,fadd,faload,fastore,fcmpg,fcmpl,fconst_0,fconst_1,%
+ fconst_2,fdiv,fload,fload_0,fload_1,fload_2,fload_3,fmul,%
+ fneg,frem,freturn,fstore,fstore_0,fstore_1,fstore_2,fstore_3,%
+ fsub,getfield,getstatic,goto,goto_w,i2b,i2c,i2d,i2f,i2l,i2s,%
+ iadd,iaload,iand,iastore,iconst_0,iconst_1,iconst_2,iconst_3,%
+ iconst_4,iconst_5,idiv,if_acmpeq,if_acmpne,if_icmpeq,if_icmpne,%
+ if_icmplt,if_cmpge,if_cmpgt,if_cmple,ifeq,ifne,iflt,ifge,ifgt,%
+ ifle,ifnonnull,ifnull,iinc,iload,iload_0,iload_1,iload_2,%
+ iload_3,imul,ineg,instanceof,invokeinterface,invokespecial,%
+ invokestatic,invokevirtual,ior,irem,ireturn,ishl,ishr,istore,%
+ istore_0,istore_1,istore_2,istore_3,isub,iushr,ixor,jsr,jsr_w,%
+ l2d,l2f,l2i,ladd,laload,land,lastore,lcmp,lconst_0,lconst_1,%
+ ldc,ldc_w,ldc2_w,ldiv,lload,lload_0,lload_1,lload_2,lload_3,%
+ lmul,lneg,lookupswitch,lor,lrem,lreturn,lshl,lshr,lstore,%
+ lstore_0,lstore_1,lstore_2,lstore_3,lsub,lushr,lxor,%
+ monitorenter,monitorexit,multianewarray,new,newarray,nop,pop,%
+ pop2,putfield,putstatic,ret,return,saload,sastore,sipush,swap,%
+ tableswitch,wide,limit,locals,stack},%
+ }[keywords]%
+\lst at definelanguage{Matlab}%
+ {morekeywords={gt,lt,gt,lt,amp,abs,acos,acosh,acot,acoth,acsc,acsch,%
+ all,angle,ans,any,asec,asech,asin,asinh,atan,atan2,atanh,auread,%
+ auwrite,axes,axis,balance,bar,bessel,besselk,bessely,beta,%
+ betainc,betaln,blanks,bone,break,brighten,capture,cart2pol,%
+ cart2sph,caxis,cd,cdf2rdf,cedit,ceil,chol,cla,clabel,clc,clear,%
+ clf,clock,close,colmmd,Colon,colorbar,colormap,ColorSpec,colperm,%
+ comet,comet3,compan,compass,computer,cond,condest,conj,contour,%
+ contour3,contourc,contrast,conv,conv2,cool,copper,corrcoef,cos,%
+ cosh,cot,coth,cov,cplxpair,cputime,cross,csc,csch,csvread,%
+ csvwrite,cumprod,cumsum,cylinder,date,dbclear,dbcont,dbdown,%
+ dbquit,dbstack,dbstatus,dbstep,dbstop,dbtype,dbup,ddeadv,ddeexec,%
+ ddeinit,ddepoke,ddereq,ddeterm,ddeunadv,deblank,dec2hex,deconv,%
+ del2,delete,demo,det,diag,diary,diff,diffuse,dir,disp,dlmread,%
+ dlmwrite,dmperm,dot,drawnow,echo,eig,ellipj,ellipke,else,elseif,%
+ end,engClose,engEvalString,engGetFull,engGetMatrix,engOpen,%
+ engOutputBuffer,engPutFull,engPutMatrix,engSetEvalCallback,%
+ engSetEvalTimeout,engWinInit,eps,erf,erfc,erfcx,erfinv,error,%
+ errorbar,etime,etree,eval,exist,exp,expint,expm,expo,eye,fclose,%
+ feather,feof,ferror,feval,fft,fft2,fftshift,fgetl,fgets,figure,%
+ fill,fill3,filter,filter2,find,findstr,finite,fix,flag,fliplr,%
+ flipud,floor,flops,fmin,fmins,fopen,for,format,fplot,fprintf,%
+ fread,frewind,fscanf,fseek,ftell,full,function,funm,fwrite,fzero,%
+ gallery,gamma,gammainc,gammaln,gca,gcd,gcf,gco,get,getenv,%
+ getframe,ginput,global,gplot,gradient,gray,graymon,grid,griddata,%
+ gtext,hadamard,hankel,help,hess,hex2dec,hex2num,hidden,hilb,hist,%
+ hold,home,hostid,hot,hsv,hsv2rgb,if,ifft,ifft2,imag,image,%
+ imagesc,Inf,info,input,int2str,interp1,interp2,interpft,inv,%
+ invhilb,isempty,isglobal,ishold,isieee,isinf,isletter,isnan,%
+ isreal,isspace,issparse,isstr,jet,keyboard,kron,lasterr,lcm,%
+ legend,legendre,length,lin2mu,line,linspace,load,log,log10,log2,%
+ loglog,logm,logspace,lookfor,lower,ls,lscov,lu,magic,matClose,%
+ matDeleteMatrix,matGetDir,matGetFp,matGetFull,matGetMatrix,%
+ matGetNextMatrix,matGetString,matlabrc,matlabroot,matOpen,%
+ matPutFull,matPutMatrix,matPutString,max,mean,median,menu,mesh,%
+ meshc,meshgrid,meshz,mexAtExit,mexCallMATLAB,mexdebug,%
+ mexErrMsgTxt,mexEvalString,mexFunction,mexGetFull,mexGetMatrix,%
+ mexGetMatrixPtr,mexPrintf,mexPutFull,mexPutMatrix,mexSetTrapFlag,%
+ min,more,movie,moviein,mu2lin,mxCalloc,mxCopyCharacterToPtr,%
+ mxCopyComplex16ToPtr,mxCopyInteger4ToPtr,mxCopyPtrToCharacter,%
+ mxCopyPtrToComplex16,mxCopyPtrToInteger4,mxCopyPtrToReal8,%
+ mxCopyReal8ToPtr,mxCreateFull,mxCreateSparse,mxCreateString,%
+ mxFree,mxFreeMatrix,mxGetIr,mxGetJc,mxGetM,mxGetN,mxGetName,%
+ mxGetNzmax,mxGetPi,mxGetPr,mxGetScalar,mxGetString,mxIsComplex,%
+ mxIsFull,mxIsNumeric,mxIsSparse,mxIsString,mxIsTypeDouble,%
+ mxSetIr,mxSetJc,mxSetM,mxSetN,mxSetName,mxSetNzmax,mxSetPi,%
+ mxSetPr,NaN,nargchk,nargin,nargout,newplot,nextpow2,nnls,nnz,%
+ nonzeros,norm,normest,null,num2str,nzmax,ode23,ode45,orient,orth,%
+ pack,pascal,patch,path,pause,pcolor,pi,pink,pinv,plot,plot3,%
+ pol2cart,polar,poly,polyder,polyeig,polyfit,polyval,polyvalm,%
+ pow2,print,printopt,prism,prod,pwd,qr,qrdelete,qrinsert,quad,%
+ quad8,quit,quiver,qz,rand,randn,randperm,rank,rat,rats,rbbox,%
+ rcond,real,realmax,realmin,refresh,rem,reset,reshape,residue,%
+ return,rgb2hsv,rgbplot,rootobject,roots,rose,rosser,rot90,rotate,%
+ round,rref,rrefmovie,rsf2csf,save,saxis,schur,sec,sech,semilogx,%
+ semilogy,set,setstr,shading,sign,sin,sinh,size,slice,sort,sound,%
+ spalloc,sparse,spaugment,spconvert,spdiags,specular,speye,spfun,%
+ sph2cart,sphere,spinmap,spline,spones,spparms,sprandn,sprandsym,%
+ sprank,sprintf,spy,sqrt,sqrtm,sscanf,stairs,startup,std,stem,%
+ str2mat,str2num,strcmp,strings,strrep,strtok,subplot,subscribe,%
+ subspace,sum,surf,surface,surfc,surfl,surfnorm,svd,symbfact,%
+ symmmd,symrcm,tan,tanh,tempdir,tempname,terminal,text,tic,title,%
+ toc,toeplitz,trace,trapz,tril,triu,type,uicontrol,uigetfile,%
+ uimenu,uiputfile,unix,unwrap,upper,vander,ver,version,view,%
+ viewmtx,waitforbuttonpress,waterfall,wavread,wavwrite,what,%
+ whatsnew,which,while,white,whitebg,who,whos,wilkinson,wk1read,%
+ wk1write,xlabel,xor,ylabel,zeros,zlabel,zoom},%
+ sensitive,%
+ morecomment=[l]\%,%
+ morestring=[m]'%
+ }[keywords,comments,strings]%
+%%
+%% Mathematica definitions (c) 1999 Michael Wiese
+%%
+\lst at definelanguage[3.0]{Mathematica}[1.0]{Mathematica}%
+ {morekeywords={Abort,AbortProtect,AbsoluteDashing,AbsolutePointSize,%
+ AbsoluteThickness,AbsoluteTime,AccountingFormAiry,AiPrime,AiryBi,%
+ AiryBiPrime,Alternatives,AnchoredSearch,AxesEdge,AxesOrigin,%
+ AxesStyle,Background,BetaRegularized,BoxStyle,C,CheckAbort,%
+ Circle,ClebschGordan,CMYKColor,ColorFunction,ColorOutput,Compile,%
+ Compiled,CompiledFunction,ComplexExpand,ComposeList,Composition,%
+ ConstrainedMax,ConstrainedMin,Contexts,ContextToFilename,%
+ ContourLines,Contours,ContourShading,ContourSmoothing,%
+ ContourStyle,CopyDirectory,CopyFile,CosIntegral,CreateDirectory,%
+ Cuboid,Date,DeclarePackage,DefaultColor,DefaultFont,Delete,%
+ DeleteCases,DeleteDirectory,DeleteFile,Dialog,DialogIndent,%
+ DialogProlog,DialogSymbols,DigitQ,Directory,DirectoryStack,Disk,%
+ Dispatch,DownValues,DSolve,Encode,Epilog,Erfc,Evaluate,%
+ ExponentFunction,FaceGrids,FileByteCount,FileDate,FileNames,%
+ FileType,Find,FindList,FixedPointList,FlattenAt,Fold,FoldList,%
+ Frame,FrameLabel,FrameStyle,FrameTicks,FromCharacterCode,%
+ FromDate,FullGraphics,FullOptions,GammaRegularized,%
+ GaussianIntegers,GraphicsArray,GraphicsSpacing,GridLines,%
+ GroebnerBasis,Heads,HeldPart,HomeDirectory,Hue,IgnoreCases,%
+ InputStream,Install,InString,IntegerDigits,InterpolatingFunction,%
+ InterpolatingPolynomial,Interpolation,Interrupt,InverseFunction,%
+ InverseFunctions,JacobiZeta,LetterQ,LinearProgramming,ListPlay,%
+ LogGamma,LowerCaseQ,MachineNumberQ,MantissaExponent,MapIndexed,%
+ MapThread,MatchLocalNames,MatrixExp,MatrixPower,MeshRange,%
+ MeshStyle,MessageList,Module,NDSolve,NSolve,NullRecords,%
+ NullWords,NumberFormat,NumberPadding,NumberSigns,OutputStream,%
+ PaddedForm,ParentDirectory,Pause,Play,PlayRange,PlotRegion,%
+ PolygonIntersections,PolynomialGCD,PolynomialLCM,PolynomialMod,%
+ PostScript,PowerExpand,PrecisionGoal,PrimePi,Prolog,%
+ QRDecomposition,Raster,RasterArray,RealDigits,Record,RecordLists,%
+ RecordSeparators,ReleaseHold,RenameDirectory,RenameFile,%
+ ReplaceHeldPart,ReplacePart,ResetDirectory,Residue,%
+ RiemannSiegelTheta,RiemannSiegelZ,RotateLabel,SameTest,%
+ SampleDepth,SampledSoundFunction,SampledSoundList,SampleRate,%
+ SchurDecomposition,SessionTime,SetAccuracy,SetDirectory,%
+ SetFileDate,SetPrecision,SetStreamPosition,Shallow,SignPadding,%
+ SinIntegral,SixJSymbol,Skip,Sound,SpellingCorrection,%
+ SphericalRegion,Stack,StackBegin,StackComplete,StackInhibit,%
+ StreamPosition,Streams,StringByteCount,StringConversion,%
+ StringDrop,StringInsert,StringPosition,StringReplace,%
+ StringReverse,StringTake,StringToStream,SurfaceColor,%
+ SyntaxLength,SyntaxQ,TableAlignments,TableDepth,%
+ TableDirections,TableHeadings,TableSpacing,ThreeJSymbol,TimeUsed,%
+ TimeZone,ToCharacterCode,ToDate,ToHeldExpression,TokenWords,%
+ ToLowerCase,ToUpperCase,Trace,TraceAbove,TraceBackward,%
+ TraceDepth,TraceDialog,TraceForward,TraceOff,TraceOn,%
+ TraceOriginal,TracePrint,TraceScan,Trig,Unevaluated,Uninstall,%
+ UnsameQ,UpperCaseQ,UpValues,ViewCenter,ViewVertical,With,Word,%
+ WordSearch,WordSeparators},%
+ morendkeywords={Stub,Temporary,$Aborted,$BatchInput,$BatchOutput,%
+ $CreationDate,$DefaultFont,$DumpDates,$DumpSupported,$Failed,%
+ $Input,$Inspector,$IterationLimit,$Language,$Letters,$Linked,%
+ $LinkSupported,$MachineEpsilon,$MachineID,$MachineName,%
+ $MachinePrecision,$MachineType,$MaxMachineNumber,$MessageList,%
+ $MessagePrePrint,$MinMachineNumber,$ModuleNumber,$NewMessage,%
+ $NewSymbol,$Notebooks,$OperatingSystem,$Packages,$PipeSupported,%
+ $PreRead,$ReleaseNumber,$SessionID,$SoundDisplayFunction,%
+ $StringConversion,$StringOrder,$SyntaxHandler,$TimeUnit,%
+ $VersionNumber}%
+ }%
+\lst at definelanguage[1.0]{Mathematica}%
+ {morekeywords={Abs,Accuracy,AccurayGoal,AddTo,AiryAi,AlgebraicRules,%
+ AmbientLight,And,Apart,Append,AppendTo,Apply,ArcCos,ArcCosh,%
+ ArcCot,ArcCoth,ArcCsc,ArcCsch,ArcSec,ArcSech,ArcSin,ArcSinh,%
+ ArcTan,ArcTanh,Arg,ArithmeticGeometricMean,Array,AspectRatio,%
+ AtomQ,Attributes,Axes,AxesLabel,BaseForm,Begin,BeginPackage,%
+ BernoulliB,BesselI,BesselJ,BesselK,BesselY,Beta,Binomial,Blank,%
+ BlankNullSequence,BlankSequence,Block,Boxed,BoxRatios,Break,Byte,%
+ ByteCount,Cancel,Cases,Catch,Ceiling,CForm,Character,Characters,%
+ ChebyshevT,ChebyshevU,Check,Chop,Clear,ClearAll,ClearAttributes,%
+ ClipFill,Close,Coefficient,CoefficientList,Collect,ColumnForm,%
+ Complement,Complex,CompoundExpression,Condition,Conjugate,%
+ Constants,Context,Continuation,Continue,ContourGraphics,%
+ ContourPlot,Cos,Cosh,Cot,Coth,Count,Csc,Csch,Cubics,Cyclotomic,%
+ D,Dashing,Decompose,Decrement,Default,Definition,Denominator,%
+ DensityGraphics,DensityPlot,Depth,Derivative,Det,DiagonalMatrix,%
+ DigitBlock,Dimensions,DirectedInfinity,Display,DisplayFunction,%
+ Distribute,Divide,DivideBy,Divisors,DivisorSigma,Do,Dot,Drop,Dt,%
+ Dump,EdgeForm,Eigensystem,Eigenvalues,Eigenvectors,Eliminate,%
+ EllipticE,EllipticExp,EllipticF,EllipticK,EllipticLog,EllipticPi,%
+ EllipticTheta,End,EndPackage,EngineeringForm,Environment,Equal,%
+ Erf,EulerE,EulerPhi,EvenQ,Exit,Exp,Expand,ExpandAll,%
+ ExpandDenominator,ExpandNumerator,ExpIntegralE,ExpIntegralEi,%
+ Exponent,Expression,ExtendedGCD,FaceForm,Factor,FactorComplete,%
+ Factorial,Factorial2,FactorInteger,FactorList,FactorSquareFree,%
+ FactorSquareFreeList,FactorTerms,FactorTermsList,FindMinimum,%
+ FindRoot,First,Fit,FixedPoint,Flatten,Floor,FontForm,For,Format,%
+ FormatType,FortranForm,Fourier,FreeQ,FullDefinition,FullForm,%
+ Function,Gamma,GCD,GegenbauerC,General,Get,Goto,Graphics,%
+ Graphics3D,GrayLevel,Greater,GreaterEqual,Head,HermiteH,%
+ HiddenSurface,Hold,HoldForm,Hypergeometric0F1, Hypergeometric1F1,%
+ Hypergeometric2F1,HypergeometricU,Identity,IdentityMatrix,If,Im,%
+ Implies,In,Increment,Indent,Infix,Information,Inner,Input,%
+ InputForm,InputString,Insert,Integer,IntegerQ,Integrate,%
+ Intersection,Inverse,InverseFourier,InverseJacobiSN,%
+ InverseSeries,JacobiAmplitude,JacobiP,JacobiSN,JacobiSymbol,Join,%
+ Label,LaguerreL,Last,LatticeReduce,LCM,LeafCount,LegendreP,%
+ LegendreQ,LegendreType,Length,LerchPhi,Less,LessEqual,Level,%
+ Lighting,LightSources,Limit,Line,LinearSolve,LineBreak,List,%
+ ListContourPlot,ListDensityPlot,ListPlot,ListPlot3D,Literal,Log,%
+ LogicalExpand,LogIntegral,MainSolve,Map,MapAll,MapAt,MatchQ,%
+ MatrixForm,MatrixQ,Max,MaxBend,MaxMemoryUsed,MemberQ,%
+ MemoryConstrained,MemoryInUse,Mesh,Message,MessageName,Messages,%
+ Min,Minors,Minus,Mod,Modulus,MoebiusMu,Multinomial,N,NameQ,Names,%
+ NBernoulliB,Needs,Negative,Nest,NestList,NIntegrate,%
+ NonCommutativeMultiply,NonConstants,NonNegative,Normal,Not,%
+ NProduct,NSum,NullSpace,Number,NumberForm,NumberPoint,NumberQ,%
+ NumberSeparator,Numerator,O,OddQ,Off,On,OpenAppend,OpenRead,%
+ OpenTemporary,OpenWrite,Operate,Optional,Options,Or,Order,%
+ OrderedQ,Out,Outer,OutputForm,PageHeight,PageWidth,%
+ ParametricPlot,ParametricPlot3D,Part,Partition,PartitionsP,%
+ PartitionsQ,Pattern,Permutations,Plot,Plot3D,PlotDivision,%
+ PlotJoined,PlotLabel,PlotPoints,PlotRange,PlotStyle,Pochhammer,%
+ Plus,Point,PointSize,PolyGamma,Polygon,PolyLog,PolynomialQ,%
+ PolynomialQuotient,PolynomialRemainder,Position,Positive,Postfix,%
+ Power,PowerMod,PrecedenceForm,Precision,PreDecrement,Prefix,%
+ PreIncrement,Prepend,PrependTo,Prime,PrimeQ,Print,PrintForm,%
+ Product,Protect,PseudoInverse,Put,PutAppend,Quartics,Quit,%
+ Quotient,Random,Range,Rational,Rationalize,Raw,Re,Read,ReadList,%
+ Real,Rectangle,Reduce,Remove,RenderAll,Repeated,RepeatedNull,%
+ Replace,ReplaceAll,ReplaceRepeated,Rest,Resultant,Return,Reverse,%
+ RGBColor,Roots,RotateLeft,RotateRight,Round,RowReduce,Rule,%
+ RuleDelayed,Run,RunThrough,SameQ,Save,Scaled,Scan,ScientificForm,%
+ Sec,Sech,SeedRandom,Select,Sequence,SequenceForm,Series,%
+ SeriesData,Set,SetAttributes,SetDelayed,SetOptions,Shading,Share,%
+ Short,Show,Sign,Signature,Simplify,Sin,SingularValues,Sinh,%
+ Skeleton,Slot,SlotSequence,Solve,SolveAlways,Sort,%
+ SphericalHarmonicY,Splice,Sqrt,StirlingS1,StirlingS2,String,%
+ StringBreak,StringForm,StringJoin,StringLength,StringMatchQ,%
+ StringSkeleton,Subscript,Subscripted,Subtract,SubtractForm,Sum,%
+ Superscript,SurfaceGraphics,Switch,Symbol,Table,TableForm,TagSet,%
+ TagSetDelayed,TagUnset,Take,Tan,Tanh,ToString,TensorRank,TeXForm,%
+ Text,TextForm,Thickness,Thread,Through,Throw,Ticks,%
+ TimeConstrained,Times,TimesBy,Timing,ToExpression,Together,%
+ ToRules,ToString,TotalHeight,TotalWidth,Transpose,TreeForm,TrueQ,%
+ Unequal,Union,Unique,Unprotect,Unset,Update,UpSet,UpSetDelayed,%
+ ValueQ,Variables,VectorQ,ViewPoint,WeierstrassP,%
+ WeierstrassPPrime,Which,While,WorkingPrecision,Write,WriteString,%
+ Xor,ZeroTest,Zeta},%
+ morendkeywords={All,Automatic,Catalan,ComplexInfinity,Constant,%
+ Degree,E,EndOfFile,EulerGamma,False,Flat,GoldenRatio,HoldAll,%
+ HoldFirst,HoldRest,I,Indeterminate,Infinity,Listable,Locked,%
+ Modular,None,Null,OneIdentity,Orderless,Pi,Protected,%
+ ReadProtected,True,$CommandLine,$Context,$ContextPath,$Display,%
+ $DisplayFunction,$Echo,$Epilog,$IgnoreEOF,$Line,$Messages,%
+ $Output,$Path,$Post,$Pre,$PrePrint,$RecursionLimit,$System,%
+ $Urgent,$Version},%
+ sensitive,%
+ morecomment=[s]{(*}{*)},%
+ morestring=[d]"%
+ }[keywords,comments,strings]%
+%%
+%% Octave definition (c) 2001,2002 Ulrich G. Wortmann
+%%
+\lst at definelanguage{Octave}%
+ {morekeywords={gt,lt,gt,lt,amp,abs,acos,acosh,acot,acoth,acsc,acsch,%
+ all,angle,ans,any,asec,asech,asin,asinh,atan,atan2,atanh,auread,%
+ auwrite,axes,axis,balance,bar,bessel,besselk,bessely,beta,%
+ betainc,betaln,blanks,bone,break,brighten,capture,cart2pol,%
+ cart2sph,caxis,cd,cdf2rdf,cedit,ceil,chol,cla,clabel,clc,clear,%
+ clf,clock,close,colmmd,Colon,colorbar,colormap,ColorSpec,colperm,%
+ comet,comet3,compan,compass,computer,cond,condest,conj,contour,%
+ contour3,contourc,contrast,conv,conv2,cool,copper,corrcoef,cos,%
+ cosh,cot,coth,cov,cplxpair,cputime,cross,csc,csch,csvread,%
+ csvwrite,cumprod,cumsum,cylinder,date,dbclear,dbcont,dbdown,%
+ dbquit,dbstack,dbstatus,dbstep,dbstop,dbtype,dbup,ddeadv,ddeexec,%
+ ddeinit,ddepoke,ddereq,ddeterm,ddeunadv,deblank,dec2hex,deconv,%
+ del2,delete,demo,det,diag,diary,diff,diffuse,dir,disp,dlmread,%
+ dlmwrite,dmperm,dot,drawnow,echo,eig,ellipj,ellipke,else,elseif,%
+ end,engClose,engEvalString,engGetFull,engGetMatrix,engOpen,%
+ engOutputBuffer,engPutFull,engPutMatrix,engSetEvalCallback,%
+ engSetEvalTimeout,engWinInit,eps,erf,erfc,erfcx,erfinv,%
+ errorbar,etime,etree,eval,exist,exp,expint,expm,expo,eye,fclose,%
+ feather,feof,ferror,feval,fft,fft2,fftshift,fgetl,fgets,figure,%
+ fill,fill3,filter,filter2,find,findstr,finite,fix,flag,fliplr,%
+ flipud,floor,flops,fmin,fmins,fopen,for,format,fplot,fprintf,%
+ fread,frewind,fscanf,fseek,ftell,full,function,funm,fwrite,fzero,%
+ gallery,gamma,gammainc,gammaln,gca,gcd,gcf,gco,get,getenv,%
+ getframe,ginput,global,gplot,gradient,gray,graymon,grid,griddata,%
+ gtext,hadamard,hankel,help,hess,hex2dec,hex2num,hidden,hilb,hist,%
+ hold,home,hostid,hot,hsv,hsv2rgb,if,ifft,ifft2,imag,image,%
+ imagesc,Inf,info,input,int2str,interp1,interp2,interpft,inv,%
+ invhilb,isempty,isglobal,ishold,isieee,isinf,isletter,isnan,%
+ isreal,isspace,issparse,isstr,jet,keyboard,kron,lasterr,lcm,%
+ legend,legendre,length,lin2mu,line,linspace,load,log,log10,log2,%
+ loglog,logm,logspace,lookfor,lower,ls,lscov,lu,magic,matClose,%
+ matDeleteMatrix,matGetDir,matGetFp,matGetFull,matGetMatrix,%
+ matGetNextMatrix,matGetString,matlabrc,matlabroot,matOpen,%
+ matPutFull,matPutMatrix,matPutString,max,mean,median,menu,mesh,%
+ meshc,meshgrid,meshz,mexAtExit,mexCallMATLAB,mexdebug,%
+ mexErrMsgTxt,mexEvalString,mexFunction,mexGetFull,mexGetMatrix,%
+ mexGetMatrixPtr,mexPrintf,mexPutFull,mexPutMatrix,mexSetTrapFlag,%
+ min,more,movie,moviein,mu2lin,mxCalloc,mxCopyCharacterToPtr,%
+ mxCopyComplex16ToPtr,mxCopyInteger4ToPtr,mxCopyPtrToCharacter,%
+ mxCopyPtrToComplex16,mxCopyPtrToInteger4,mxCopyPtrToReal8,%
+ mxCopyReal8ToPtr,mxCreateFull,mxCreateSparse,mxCreateString,%
+ mxFree,mxFreeMatrix,mxGetIr,mxGetJc,mxGetM,mxGetN,mxGetName,%
+ mxGetNzmax,mxGetPi,mxGetPr,mxGetScalar,mxGetString,mxIsComplex,%
+ mxIsFull,mxIsNumeric,mxIsSparse,mxIsString,mxIsTypeDouble,%
+ mxSetIr,mxSetJc,mxSetM,mxSetN,mxSetName,mxSetNzmax,mxSetPi,%
+ mxSetPr,NaN,nargchk,nargin,nargout,newplot,nextpow2,nnls,nnz,%
+ nonzeros,norm,normest,null,num2str,nzmax,ode23,ode45,orient,orth,%
+ pack,pascal,patch,path,pause,pcolor,pi,pink,pinv,plot,plot3,%
+ pol2cart,polar,poly,polyder,polyeig,polyfit,polyval,polyvalm,%
+ pow2,print,printopt,prism,prod,pwd,qr,qrdelete,qrinsert,quad,%
+ quad8,quit,quiver,qz,rand,randn,randperm,rank,rat,rats,rbbox,%
+ rcond,real,realmax,realmin,refresh,rem,reset,reshape,residue,%
+ return,rgb2hsv,rgbplot,rootobject,roots,rose,rosser,rot90,rotate,%
+ round,rref,rrefmovie,rsf2csf,save,saxis,schur,sec,sech,semilogx,%
+ semilogy,set,setstr,shading,sign,sin,sinh,size,slice,sort,sound,%
+ spalloc,sparse,spaugment,spconvert,spdiags,specular,speye,spfun,%
+ sph2cart,sphere,spinmap,spline,spones,spparms,sprandn,sprandsym,%
+ sprank,sprintf,spy,sqrt,sqrtm,sscanf,stairs,startup,std,stem,%
+ str2mat,str2num,strcmp,strings,strrep,strtok,subplot,subscribe,%
+ subspace,sum,surf,surface,surfc,surfl,surfnorm,svd,symbfact,%
+ symmmd,symrcm,tan,tanh,tempdir,tempname,terminal,text,tic,title,%
+ toc,toeplitz,trace,trapz,tril,triu,type,uicontrol,uigetfile,%
+ uimenu,uiputfile,unix,unwrap,upper,vander,ver,version,view,%
+ viewmtx,waitforbuttonpress,waterfall,wavread,wavwrite,what,%
+ whatsnew,which,while,white,whitebg,who,whos,wilkinson,wk1read,%
+ stderr,stdout,plot,set,endif,wk1write,xlabel,xor,ylabel,zeros,%
+ zlabel,zoom,endwhile,endfunction},%
+ sensitive=f,%
+ morecomment=[l]\#,%
+ morecomment=[l]\#\#,%
+ morestring=[m]',%
+ morestring=[m]"%
+ }[keywords,comments,strings]%
+\lst at definelanguage[XSC]{Pascal}[Standard]{Pascal}
+ {deletekeywords={alfa,byte,pack,unpack},% 1998 Andreas Stephan
+ morekeywords={dynamic,external,forward,global,module,nil,operator,%
+ priority,sum,type,use,dispose,mark,page,release,cimatrix,%
+ cinterval,civector,cmatrix,complex,cvector,dotprecision,imatrix,%
+ interval,ivector,rmatrix,rvector,string,im,inf,re,sup,chr,comp,%
+ eof,eoln,expo,image,ival,lb,lbound,length,loc,mant,maxlength,odd,%
+ ord,pos,pred,round,rval,sign,substring,succ,trunc,ub,ubound}%
+ }%
+\lst at definelanguage[Borland6]{Pascal}[Standard]{Pascal}
+ {morekeywords={asm,constructor,destructor,implementation,inline,%
+ interface,nil,object,shl,shr,string,unit,uses,xor},%
+ morendkeywords={Abs,Addr,ArcTan,Chr,Concat,Copy,Cos,CSeg,DiskFree,%
+ DiskSize,DosExitCode,DosVersion,DSeg,EnvCount,EnvStr,Eof,Eoln,%
+ Exp,FExpand,FilePos,FileSize,Frac,FSearch,GetBkColor,GetColor,%
+ GetDefaultPalette,GetDriverName,GetEnv,GetGraphMode,GetMaxMode,%
+ GetMaxX,GetMaxY,GetModeName,GetPaletteSize,GetPixel,GetX,GetY,%
+ GraphErrorMsg,GraphResult,Hi,ImageSize,InstallUserDriver,%
+ InstallUserFont,Int,IOResult,KeyPressed,Length,Lo,MaxAvail,%
+ MemAvail,MsDos,Odd,Ofs,Ord,OvrGetBuf,OvrGetRetry,ParamCount,%
+ ParamStr,Pi,Pos,Pred,Ptr,Random,ReadKey,Round,SeekEof,SeekEoln,%
+ Seg,SetAspectRatio,Sin,SizeOf,Sound,SPtr,Sqr,Sqrt,SSeg,Succ,%
+ Swap,TextHeight,TextWidth,Trunc,TypeOf,UpCase,WhereX,WhereY,%
+ Append,Arc,Assign,AssignCrt,Bar,Bar3D,BlockRead,BlockWrite,ChDir,%
+ Circle,ClearDevice,ClearViewPort,Close,CloseGraph,ClrEol,ClrScr,%
+ Dec,Delay,Delete,DelLine,DetectGraph,Dispose,DrawPoly,Ellipse,%
+ Erase,Exec,Exit,FillChar,FillEllipse,FillPoly,FindFirst,FindNext,%
+ FloodFill,Flush,FreeMem,FSplit,GetArcCoords,GetAspectRatio,%
+ GetDate,GetDefaultPalette,GetDir,GetCBreak,GetFAttr,%
+ GetFillSettings,GetFTime,GetImage,GetIntVec,GetLineSettings,%
+ GetMem,GetPalette,GetTextSettings,GetTime,GetVerify,%
+ GetViewSettings,GoToXY,Halt,HighVideo,Inc,InitGraph,Insert,%
+ InsLine,Intr,Keep,Line,LineRel,LineTo,LowVideo,Mark,MkDir,Move,%
+ MoveRel,MoveTo,MsDos,New,NormVideo,NoSound,OutText,OutTextXY,%
+ OvrClearBuf,OvrInit,OvrInitEMS,OvrSetBuf,PackTime,PieSlice,%
+ PutImage,PutPixel,Randomize,Rectangle,Release,Rename,%
+ RestoreCrtMode,RmDir,RunError,Sector,Seek,SetActivePage,%
+ SetAllPalette,SetBkColor,SetCBreak,SetColor,SetDate,SetFAttr,%
+ SetFillPattern,SetFillStyle,SetFTime,SetGraphBufSize,%
+ SetGraphMode,SetIntVec,SetLineStyle,SetPalette,SetRGBPalette,%
+ SetTextBuf,SetTextJustify,SetTextStyle,SetTime,SetUserCharSize,%
+ SetVerify,SetViewPort,SetVisualPage,SetWriteMode,Sound,Str,%
+ SwapVectors,TextBackground,TextColor,TextMode,Truncate,%
+ UnpackTime,Val,Window}%
+ }%
+\lst at definelanguage[Standard]{Pascal}%
+ {morekeywords={alfa,and,array,begin,boolean,byte,case,char,const,div,%
+ do,downto,else,end,false,file,for,function,get,goto,if,in,%
+ integer,label,maxint,mod,new,not,of,or,pack,packed,page,program,%
+ put,procedure,read,readln,real,record,repeat,reset,rewrite,set,%
+ text,then,to,true,type,unpack,until,var,while,with,write,%
+ writeln},%
+ sensitive=f,%
+ morecomment=[s]{(*}{*)},%
+ morecomment=[s]{\{}{\}},%
+ morestring=[d]'%
+ }[keywords,comments,strings]%
+\lst at definelanguage{Perl}%
+ {morekeywords={abs,accept,alarm,atan2,bind,binmode,bless,caller,%
+ chdir,chmod,chomp,chop,chown,chr,chroot,close,closedir,connect,%
+ continue,cos,crypt,dbmclose,dbmopen,defined,delete,die,do,dump,%
+ each,else,elsif,endgrent,endhostent,endnetent,endprotoent,%
+ endpwent,endservent,eof,eval,exec,exists,exit,exp,fcntl,fileno,%
+ flock,for,foreach,fork,format,formline,getc,getgrent,getgrgid,%
+ getgrnam,gethostbyaddr,gethostbyname,gethostent,getlogin,%
+ getnetbyaddr,getnetbyname,getnetent,getpeername,getpgrp,%
+ getppid,getpriority,getprotobyname,getprotobynumber,getprotoent,%
+ getpwent,getpwnam,getpwuid,getservbyname,getservbyport,%
+ getservent,getsockname,getsockopt,glob,gmtime,goto,grep,hex,if,%
+ import,index,int,ioctl,join,keys,kill,last,lc,lcfirst,length,%
+ link,listen,local,localtime,log,lstat,m,map,mkdir,msgctl,msgget,%
+ msgrcv,msgsnd,my,next,no,oct,open,opendir,ord,pack,package,pipe,%
+ pop,pos,print,printf,prototype,push,q,qq,quotemeta,qw,qx,rand,%
+ read,readdir,readlink,recv,redo,ref,rename,require,reset,return,%
+ reverse,rewinddir,rindex,rmdir,s,scalar,seek,seekdir,select,%
+ semctl,semget,semop,send,setgrent,sethostent,setnetent,setpgrp,%
+ setpriority,setprotoent,setpwent,setservent,setsockopt,shift,%
+ shmctl,shmget,shmread,shmwrite,shutdown,sin,sleep,socket,%
+ socketpair,sort,splice,split,sprintf,sqrt,srand,stat,study,sub,%
+ substr,symlink,syscall,sysopen,sysread,system,syswrite,tell,%
+ telldir,tie,tied,time,times,tr,truncate,uc,ucfirst,umask,undef,%
+ unless,unlink,unpack,unshift,untie,until,use,utime,values,vec,%
+ wait,waitpid,wantarray,warn,while,write,y},%
+ sensitive,%
+ morecomment=[l]\#,%
+ morestring=[b]",%
+ morestring=[b]',%
+ MoreSelectCharTable=%
+ \lst at ReplaceInput{\$\#}{\lst at ProcessOther\$\lst at ProcessOther\#}%
+ }[keywords,comments,strings]%
+%%
+%% POV definition (c) 1999 Berthold H\"ollmann
+%%
+\lst at definelanguage{POV}%
+ {morekeywords={abs,absorption,acos,acosh,adaptive,adc_bailout,agate,%
+ agate_turb,all,alpha,ambient,ambient_light,angle,aperture,append,%
+ arc_angle,area_light,array,asc,asin,asinh,assumed_gamma,atan,%
+ atan2,atanh,average,background,bezier_spline,bicubic_patch,%
+ black_hole,blob,blue,blur_samples,bounded_by,box,boxed,bozo,%
+ break,brick,brick_size,brightness,brilliance,bumps,bump_map,%
+ bump_size,camera,case,caustics,ceil,checker,chr,clipped_by,clock,%
+ clock_delta,color,color_map,colour,colour_map,component,%
+ composite,concat,cone,confidence,conic_sweep,control0,control1,%
+ cos,cosh,count,crackle,crand,cube,cubic,cubic_spline,cubic_wave,%
+ cylinder,cylindrical,debug,declare,default,defined,degrees,%
+ density,density_file,density_map,dents,difference,diffuse,%
+ dimensions,dimension_size,direction,disc,distance,%
+ distance_maximum,div,eccentricity,else,emission,end,error,%
+ error_bound,exp,extinction,fade_distance,fade_power,falloff,%
+ falloff_angle,false,fclose,file_exists,filter,finish,fisheye,%
+ flatness,flip,floor,focal_point,fog,fog_alt,fog_offset,fog_type,%
+ fopen,frequency,gif,global_settings,gradient,granite,%
+ gray_threshold,green,height_field,hexagon,hf_gray_16,hierarchy,%
+ hollow,hypercomplex,if,ifdef,iff,ifndef,image_map,include,int,%
+ interior,interpolate,intersection,intervals,inverse,ior,irid,%
+ irid_wavelength,jitter,julia_fractal,lambda,lathe,leopard,%
+ light_source,linear_spline,linear_sweep,local,location,log,%
+ looks_like,look_at,low_error_factor,macro,mandel,map_type,marble,%
+ material,material_map,matrix,max,max_intersections,max_iteration,%
+ max_trace_level,media,media_attenuation,media_interaction,merge,%
+ mesh,metallic,min,minimum_reuse,mod,mortar,nearest_count,no,%
+ normal,normal_map,no_shadow,number_of_waves,object,octaves,off,%
+ offset,omega,omnimax,on,once,onion,open,orthographic,panoramic,%
+ perspective,pgm,phase,phong,phong_size,pi,pigment,pigment_map,%
+ planar,plane,png,point_at,poly,polygon,poly_wave,pot,pow,ppm,%
+ precision,prism,pwr,quadratic_spline,quadric,quartic,quaternion,%
+ quick_color,quick_colour,quilted,radial,radians,radiosity,radius,%
+ rainbow,ramp_wave,rand,range,ratio,read,reciprocal,%
+ recursion_limit,red,reflection,reflection_exponent,refraction,%
+ render,repeat,rgb,rgbf,rgbft,rgbt,right,ripples,rotate,roughness,%
+ samples,scale,scallop_wave,scattering,seed,shadowless,sin,%
+ sine_wave,sinh,sky,sky_sphere,slice,slope_map,smooth,%
+ smooth_triangle,sor,specular,sphere,spherical,spiral1,spiral2,%
+ spotlight,spotted,sqr,sqrt,statistics,str,strcmp,strength,strlen,%
+ strlwr,strupr,sturm,substr,superellipsoid,switch,sys,t,tan,tanh,%
+ text,texture,texture_map,tga,thickness,threshold,tightness,tile2,%
+ tiles,torus,track,transform,translate,transmit,triangle,%
+ triangle_wave,true,ttf,turbulence,turb_depth,type,u,%
+ ultra_wide_angle,undef,union,up,use_color,use_colour,use_index,%
+ u_steps,v,val,variance,vaxis_rotate,vcross,vdot,version,vlength,%
+ vnormalize,vrotate,v_steps,warning,warp,water_level,waves,while,%
+ width,wood,wrinkles,write,x,y,yes,z},%
+ moredirectives={break,case,debug,declare,default,else,end,fclose,%
+ fopen,local,macro,read,render,statistics,switch,undef,version,%
+ warning,write},%
+ moredelim=*[directive]\#,%
+ sensitive,%
+ morecomment=[l]//,%
+ morecomment=[s]{/*}{*/},%
+ morestring=[d]",%
+ }[keywords,directives,comments,strings]%
+%%
+%% Python definition (c) 1998 Michael Weber
+%%
+\lst at definelanguage{Python}%
+ {morekeywords={access,and,break,class,continue,def,del,elif,else,%
+ except,exec,finally,for,from,global,if,import,in,is,lambda,not,%
+ or,pass,print,raise,return,try,while},%
+ sensitive=true,%
+ morecomment=[l]\#,%
+ morecomment=[s]{'''}{'''},% used for documentation text
+ morecomment=[s]{"""}{"""},% added by Philipp Matthias Hahn
+ morestring=[b]',%
+ morestring=[b]"%
+ }%
+%%
+%% Scilab definition (c) 2002,2003 Jean-Philippe Grivet
+%%
+\lst at definelanguage{Scilab}%
+ {morekeywords={abcd,abinv,abort,abs,acoshm,acosh,acosm,acos,addcolor,%
+ addf,addinter,addmenu,add_edge,add_node,adj2sp,adj_lists,aff2ab,%
+ amell,analpf,analyze,ans,apropos,arc_graph,arc_number,argn,arhnk,%
+ arl2,arma2p,armac,armax1,armax,arma,arsimul,artest,articul,ascii,%
+ asinhm,asinh,asinm,asin,atanhm,atanh,atanm,atan,augment,auread,%
+ auwrite,balanc,balreal,bandwr,basename,bdiag,besseli,besselj,%
+ besselk,bessely,best_match,bezout,bifish,bilin,binomial,black,%
+ bloc2exp,bloc2ss,bode,bool2s,boolean,boucle,break,bstap,buttmag,%
+ bvode,cainv,calerf,calfrq,call,canon,casc,case,ccontrg,cdfbet,%
+ cdfbin,cdfchi,cdfchn,cdffnc,cdff,cdfgam,cdfnbn,cdfnor,cdfpoi,%
+ cdft,ceil,center,cepstrum,chaintest,chain_struct,champ1,champ,%
+ chart,chdir,cheb1mag,cheb2mag,check_graph,check_io,chepol,chfact,%
+ chol,chsolve,circuit,classmarkov,clean,clearfun,clearglobal,%
+ clear,close,cls2dls,cmb_lin,cmndred,cmoment,code2str,coeff,coffg,%
+ coff,colcompr,colcomp,colinout,colormap,colregul,companion,comp,%
+ cond,conj,connex,contour2di,contour2d,contourf,contour,%
+ contract_edge,contrss,contr,cont_frm,cont_mat,convex_hull,convol,%
+ convstr,con_nodes,copfac,copy,correl,corr,coshm,cosh,cosm,cos,%
+ cotg,cothm,coth,covar,csim,cspect,ctr_gram,cumprod,cumsum,%
+ curblock,cycle_basis,czt,c_link,dasrt,dassl,datafit,date,dbphi,%
+ dcf,ddp,debug,dec2hex,deff,definedfields,degree,delbpt,%
+ delete_arcs,delete_nodes,delete,delip,delmenu,demos,denom,%
+ derivative,derivat,des2ss,des2tf,determ,detr,det,dft,dhinf,%
+ dhnorm,diag,diary,diff,diophant,dirname,dispbpt,dispfiles,disp,%
+ dlgamma,double,dragrect,drawaxis,drawlater,drawnow,draw,driver,%
+ dscr,dsearch,dsimul,dtsi,dt_ility,duplicate,edge_number,%
+ edit_curv,edit_graph_menus,edit_graph,edit,eigenmarkov,ell1mag,%
+ elseif,else,emptystr,endfunction,end,eqfir,eqiir,equil1,equil,%
+ ereduc,erfcx,erfc,erf,errbar,errcatch,errclear,error,eval3dp,%
+ eval3d,eval,evans,evstr,excel2sci,execstr,exec,exists,exit,expm,%
+ exp,external,eye,fac3d,factors,faurre,fchamp,fcontour2d,fcontour,%
+ fec,feedback,feval,ffilt,fftshift,fft,fgrayplot,figure,fileinfo,%
+ file,filter,findm,findobj,findx0BD,find_freq,find_path,find,%
+ findABCD,findAC,findBD,findBDK,findR,fit_dat,fix,floor,flts,foo,%
+ formatman,format,fort,for,fourplan,fplot2d,fplot3d1,fplot3d,%
+ fprintf,fprintfMat,frep2tf,freq,freson,frexp,frfit,frmag,fscanf,%
+ fscanfMat,fsfirlin,fsolve,fspecg,fstabst,fstair,ftest,ftuneq,%
+ fullrfk,fullrf,full,fun2string,funcprot,functions,function,%
+ funptr,fusee,gainplot,gamitg,gammaln,gamma,gcare,gcd,gcf,%
+ genfac3d,genlib,genmarkov,gen_net,geom3d,geomean,getblocklabel,%
+ getcolor,getcurblock,getcwd,getdate,getd,getenv,getfield,getfont,%
+ getf,getio,getlinestyle,getmark,getpid,getscicosvars,getsymbol,%
+ getvalue,getversion,get_function_path,get,gfare,gfrancis,girth,%
+ givens,glever,glist,global,glue,gpeche,graduate,grand,%
+ graphics_entities,graph_2_mat,graph_center,graph_complement,%
+ graph_diameter,graph_power,graph_simp,graph_sum,graph_union,%
+ graph-list,graycolormap,grayplot,graypolarplot,grep,group,%
+ gr_menu,gschur,gsort,gspec,gstacksize,gtild,g_margin,h2norm,halt,%
+ hamilton,hankelsv,hank,harmean,havewindow,help,hermit,hess,%
+ hex2dec,hilb,hinf,hist3d,histplot,horner,host,hotcolormap,%
+ householder,hrmt,htrianr,hypermat,h_cl,h_inf_st,h_inf,h_norm,%
+ iconvert,icon_edit,ieee,if,iirgroup,iirlp,iir,ilib_build,%
+ ilib_compile,ilib_for_link,ilib_gen_gateway,ilib_gen_loader,%
+ ilib_gen_Make,imag,impl,imrep2ss,imult,im_inv,inistate,input,%
+ int16,int2d,int32,int3d,int8,intc,intdec,integrate,interpln,%
+ interp,intersci,intersect,intg,intl,intppty,intsplin,inttrap,%
+ inttype,int,invr,invsyslin,inv_coeff,inv,iqr,isdef,isdir,isequal,%
+ iserror,isglobal,isinf,isnan,isoview,isreal,is_connex,jmat,%
+ justify,kalm,karmarkar,kernel,keyboard,knapsack,kpure,krac2,%
+ kroneck,kron,lasterror,lattn,lattp,lcf,lcmdiag,lcm,ldivf,ldiv,%
+ leastsq,legends,length,leqr,levin,lev,lex_sort,lft,lgfft,library,%
+ lib,lin2mu,lincos,lindquist,lines,line_graph,linfn,linf,link,%
+ linmeq,linpro,linsolve,linspace,lin,listfiles,list,lmisolver,%
+ lmitool,loadmatfile,loadplots,loadwave,load_graph,load,locate,%
+ log10,log1p,log2,logm,logspace,log,lotest,lqe,lqg2stan,lqg_ltr,%
+ lqg,lqr,lsq,lsslist,lstcat,lstsize,ltitr,ludel,lufact,luget,%
+ lusolve,lu,lyap,macglov,macr2lst,macrovar,macro,mad,make_graph,%
+ make_index,manedit,man,mapsound,markp2ss,matfile2sci,matrix,%
+ mat_2_graph,maxi,max_cap_path,max_clique,max_flow,max,mclearerr,%
+ mclose,meanf,mean,median,meof,mese,mesh2d,mfft,mfile2sci,mgeti,%
+ mgetl,mgetstr,mget,milk_drop,mine,mini,minreal,minss,%
+ min_lcost_cflow,min_lcost_flow1,min_lcost_flow2,min_qcost_flow,%
+ min_weight_tree,min,mlist,mode,modulo,moment,mopen,move,%
+ mps2linpro,mputl,mputstr,mput,mrfit,msd,mseek,mtell,mtlb_load,%
+ mtlb_mode,mtlb_save,mtlb_sparse,mu2lin,mulf,mvvacov,m_circle,%
+ names,nand2mean,nanmax,nanmeanf,nanmean,nanmedian,nanmin,%
+ nanstdev,nansum,narsimul,ndims,nearfloat,nehari,neighbors,%
+ netclose,netwindows,netwindow,newest,newfun,nextpow2,nf3d,nfreq,%
+ nlev,nnz,nodes_2_path,nodes_degrees,node_number,noisegen,norm,%
+ null,numdiff,numer,nyquist,obscont1,obscont,observer,obsvss,%
+ obsv_mat,obs_gram,odedc,odedi,odeoptions,ode_discrete,ode_root,%
+ ode,oldload,oldsave,ones,optim,orth,param3d1,param3d,%
+ paramfplot2d,parrot,part,pathconvert,path_2_nodes,pause,pbig,%
+ pdiv,pen2ea,pencan,penlaur,perctl,perfect_match,pertrans,pfss,%
+ phasemag,phc,pinv,pipe_network,playsnd,plot2d1,plot2d2,plot2d3,%
+ plot2d4,plot2d,plot3d1,plot3d2,plot3d3,plot3d,plotframe,%
+ plotprofile,plot_graph,plot,plzr,pmodulo,pol2des,pol2str,pol2tex,%
+ polarplot,polar,polfact,poly,portr3d,portrait,power,ppol,prbs_a,%
+ predecessors,predef,printf,printing,print,prod,profile,projsl,%
+ projspec,proj,psmall,pspect,pvm_addhosts,pvm_barrier,pvm_bcast,%
+ pvm_bufinfo,pvm_config,pvm_delhosts,pvm_error,pvm_exit,%
+ pvm_f772sci,pvm_getinst,pvm_gettid,pvm_get_timer,pvm_gsize,%
+ pvm_halt,pvm_joingroup,pvm_kill,pvm_lvgroup,pvm_mytid,pvm_parent,%
+ pvm_probe,pvm_recv,pvm_reduce,pvm_sci2f77,pvm_send,pvm_set_timer,%
+ pvm_spawn_independent,pvm_spawn,pvm_start,pvm_tasks,%
+ pvm_tidtohost,pvm,pwd,p_margin,qassign,qr,quapro,quart,quaskro,%
+ quit,randpencil,rand,range,rankqr,rank,rat,rcond,rdivf,read4b,%
+ readb,readc_,readmps,read,real,recur,reglin,regress,remezb,remez,%
+ repfreq,replot,residu,resume,return,riccati,riccsl,ricc,ric_desc,%
+ rlist,roots,rotate,round,routh_t,rowcompr,rowcomp,rowinout,%
+ rowregul,rowshuff,rpem,rref,rtitr,rubberbox,salesman,savewave,%
+ save_graph,save,scaling,scanf,schur,sci2exp,sci2for,sci2map,%
+ sciargs,scicosim,scicos,scifunc_block,sd2sci,secto3d,select,%
+ semidef,sensi,setbpt,seteventhandler,setfield,setmenu,%
+ setscicosvars,set,sfact,sgrid,shortest_path,showprofile,%
+ show_arcs,show_graph,show_nodes,sident,signm,sign,simp_mode,simp,%
+ sincd,sinc,sinc,sinhm,sinh,sinm,sin,size,sm2des,sm2ss,smooth,%
+ solve,sorder,sort,sound,sp2adj,spaninter,spanplus,spantwo,sparse,%
+ spchol,spcompack,specfact,spec,speye,spget,splin,split_edge,%
+ spones,sprand,sprintf,spzeros,sqroot,sqrtm,sqrt,squarewave,%
+ square,srfaur,srkf,ss2des,ss2ss,ss2tf,sscanf,sskf,ssprint,ssrand,%
+ stabil,stacksize,standard_define,standard_draw,standard_input,%
+ standard_origin,standard_output,startup,stdevf,stdev,steadycos,%
+ str2code,strange,strcat,strindex,strings,string,stripblanks,%
+ strong_connex,strong_con_nodes,strsubst,st_deviation,st_ility,%
+ subf,subgraph,subplot,successors,sum,supernode,sva,svd,svplot,%
+ sylm,sylv,sysconv,sysdiag,sysfact,syslin,syssize,systems,system,%
+ systmat,tabul,tangent,tanhm,tanh,tanm,tan,tdinit,testmatrix,%
+ texprint,tf2des,tf2ss,then,thrownan,timer,time_id,titlepage,%
+ tk_getdir,tk_getfile,tlist,toeplitz,tokenpos,tokens,trace,%
+ translatepaths,trans_closure,trans,trfmod,trianfml,tril,trimmean,%
+ trisolve,triu,trzeros,typename,typeof,type,uicontrol,uimenu,%
+ uint16,uint32,uint8,ui_observer,ulink,unglue,union,unique,unix_g,%
+ unix_s,unix_w,unix_x,unix,unobs,unsetmenu,user,varargin,%
+ varargout,variancef,variance,varn,warning,wavread,wavwrite,%
+ wcenter,wfir,what,whereami,whereis,where,while,whos,who_user,who,%
+ wiener,wigner,window,winsid,with_gtk,with_pvm,with_texmacs,%
+ with_tk,writb,write4b,write,xarcs,xarc,xarrows,xaxis,xbasc,%
+ xbasimp,xbasr,xchange,xclear,xclea,xclick,xclip,xdel,xend,xfarcs,%
+ xfarc,xfpolys,xfpoly,xfrect,xgetech,xgetfile,xgetmouse,xget,%
+ xgraduate,xgrid,xinfo,xinit,xlfont,xload,xname,xnumb,xpause,%
+ xpolys,xpoly,xrects,xrect,xrpoly,xs2fig,xs2gif,xs2ppm,xs2ps,%
+ xsave,xsegs,select,xsetech,xsetm,xset,xstringb,xstringl,xstring,%
+ xtape,xtitle,x_choices,x_choose,x_dialog,x_matrix,x_mdialog,%
+ x_message_modeless,x_message,yulewalk,zeropen,zeros,zgrid,zpbutt,%
+ zpch1,zpch2,zpell,mfprintf,mfscanf,mprintf,mscanf,msprintf,%
+ msscanf,mucomp,%
+ ABSBLK_f,AFFICH_f,ANDLOG_f,ANIMXY_f,BIGSOM_f,CLINDUMMY_f,CLKIN_f,%
+ CLKINV_f,CLKOUT_f,CLKOUTV_f,CLKSOM_f,CLKSOMV_f,CLKSPLIT_f,%
+ CLOCK_f,CLR_f,CLSS_f,CONST_f,COSBLK_f,CURV_f,DELAY_f,DELAYV_f,%
+ DEMUX_f,DLR_f,DLRADAPT_f,DLSS_f,EVENTSCOPE_f,EVTDLY_f,EVTGEN_f,%
+ EXPBLK_f,G_make,GAIN_f,GAINBLK_f,GENERAL_f,GENERIC_f,GENSIN_f,%
+ GENSQR_f,HALT_f,IFTHEL_f,IN_f,INTEGRAL_f,INTRP2BLK_f,INTRPLBLK_f,%
+ INVBLK_f,LOGBLK_f,LOOKUP_f,Matplot1,Matplot,MAX_f,MCLOCK_f,%
+ MFCLCK_f,MIN_f,MUX_f,NDcost,NEGTOPOS_f,OUT_f,POSTONEG_f,POWBLK_f,%
+ PROD_f,QUANT_f,RAND_f,READC_f,REGISTER_f,RELAY_f,RFILE_f,%
+ ScilabEval,Sfgrayplot,Sgrayplot,SAMPLEHOLD_f,SAT_f,SAWTOOTH_f,%
+ SCOPE_f,SCOPXY_f,SELECT_f,SINBLK_f,SOM_f,SPLIT_f,STOP_f,SUPER_f,%
+ TANBLK_f,TCLSS_f,TEXT_f,TIME_f,TK_EvalFile,TK_EvalStr,TK_GetVar,%
+ TK_SetVar,TRASH_f,WFILE_f,WRITEC_f,ZCROSS_f,%
+ \%asn,\%helps,\%k,\%sn},%
+ alsoletter=\%,% chmod
+ sensitive,%
+ morecomment=[l]//,%
+ morestring=[b]",%
+ morestring=[m]'%
+ }[keywords,comments,strings]%
+%%
+%% SQL definition (c) 1998 Christian Haul
+%% (c) 2002 Neil Conway
+%% (c) 2002 Robert Frank
+%% (c) 2003 Dirk Jesko
+%%
+\lst at definelanguage{SQL}%
+ {morekeywords={ABSOLUTE,ACTION,ADD,ALLOCATE,ALTER,ARE,AS,ASSERTION,%
+ AT,BETWEEN,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,%
+ CATALOG,CHAR_LENGTH,CHARACTER_LENGTH,CLUSTER,COALESCE,%
+ COLLATE,COLLATION,COLUMN,CONNECT,CONNECTION,CONSTRAINT,%
+ CONSTRAINTS,CONVERT,CORRESPONDING,CREATE,CROSS,CURRENT_DATE,%
+ CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,DAY,DEALLOCATE,%
+ DEC,DEFERRABLE,DEFERED,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,%
+ DISCONNECT,DOMAIN,DROP,ELSE,END,EXEC,EXCEPT,EXCEPTION,EXECUTE,%
+ EXTERNAL,EXTRACT,FALSE,FIRST,FOREIGN,FROM,FULL,GET,GLOBAL,%
+ GRAPHIC,HAVING,HOUR,IDENTITY,IMMEDIATE,INDEX,INITIALLY,INNER,%
+ INPUT,INSENSITIVE,INSERT,INTO,INTERSECT,INTERVAL,%
+ ISOLATION,JOIN,KEY,LAST,LEADING,LEFT,LEVEL,LIMIT,LOCAL,LOWER,%
+ MATCH,MINUTE,MONTH,NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NOT,NULL,%
+ NULLIF,OCTET_LENGTH,ON,ONLY,ORDER,ORDERED,OUTER,OUTPUT,OVERLAPS,%
+ PAD,PARTIAL,POSITION,PREPARE,PRESERVE,PRIMARY,PRIOR,READ,%
+ RELATIVE,RESTRICT,REVOKE,RIGHT,ROWS,SCROLL,SECOND,SELECT,SESSION,%
+ SESSION_USER,SIZE,SPACE,SQLSTATE,SUBSTRING,SYSTEM_USER,%
+ TABLE,TEMPORARY,THEN,TIMEZONE_HOUR,%
+ TIMEZONE_MINUTE,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,%
+ TRUE,UNIQUE,UNKNOWN,UPPER,USAGE,USING,VALUE,VALUES,%
+ VARGRAPHIC,VARYING,WHEN,WHERE,WRITE,YEAR,ZONE,%
+ AND,ASC,avg,CHECK,COMMIT,count,DECODE,DESC,DISTINCT,GROUP,IN,% FF
+ LIKE,NUMBER,ROLLBACK,SUBSTR,sum,VARCHAR2,% FF
+ MIN,MAX,UNION,UPDATE,% RF
+ ALL,ANY,CUBE,CUBE,DEFAULT,DELETE,EXISTS,GRANT,OR,RECURSIVE,% DJ
+ ROLE,ROLLUP,SET,SOME,TRIGGER,VIEW},% DJ
+ morendkeywords={BIT,BLOB,CHAR,CHARACTER,CLOB,DATE,DECIMAL,FLOAT,% DJ
+ INT,INTEGER,NUMERIC,SMALLINT,TIME,TIMESTAMP,VARCHAR},% moved here
+ sensitive=false,% DJ
+ morecomment=[l]--,%
+ morecomment=[s]{/*}{*/},%
+ morestring=[d]',%
+ morestring=[d]"%
+ }[keywords,comments,strings]%
+%%
+%% VHDL definition (c) 1997 Kai Wollenweber
+%%
+\lst at definelanguage{VHDL}%
+ {morekeywords={ALL,ARCHITECTURE,ABS,AND,ASSERT,ARRAY,AFTER,ALIAS,%
+ ACCESS,ATTRIBUTE,BEGIN,BODY,BUS,BLOCK,BUFFER,CONSTANT,CASE,%
+ COMPONENT,CONFIGURATION,DOWNTO,ELSE,ELSIF,END,ENTITY,EXIT,%
+ FUNCTION,FOR,FILE,GENERIC,GENERATE,GUARDED,GROUP,IF,IN,INOUT,IS,%
+ INERTIAL,IMPURE,LIBRARY,LOOP,LABEL,LITERAL,LINKAGE,MAP,MOD,NOT,%
+ NOR,NAND,NULL,NEXT,NEW,OUT,OF,OR,OTHERS,ON,OPEN,PROCESS,PORT,%
+ PACKAGE,PURE,PROCEDURE,POSTPONED,RANGE,REM,ROL,ROR,REPORT,RECORD,%
+ RETURN,REGISTER,REJECT,SIGNAL,SUBTYPE,SLL,SRL,SLA,SRA,SEVERITY,%
+ SELECT,THEN,TYPE,TRANSPORT,TO,USE,UNITS,UNTIL,VARIABLE,WHEN,WAIT,%
+ WHILE,XOR,XNOR,%
+ DISCONNECT,ELIF,WITH},% Arnaud Tisserand
+ sensitive=f,% 1998 Gaurav Aggarwal
+ morecomment=[l]--,%
+ morestring=[d]{"}%
+ }[keywords,comments,strings]%
+%%
+%% VHDL-AMS definition (c) Steffen Klupsch
+%%
+\lst at definelanguage[AMS]{VHDL}[]{VHDL}%
+ {morekeywords={ACROSS,ARRAY,BREAK,DISCONNECT,NATURE,NOISE,PORT,%
+ PROCEDURAL,QUANTITY,SHARED,SPECTRUM,SUBNATURE,TERMINAL,THROUGH,%
+ TOLERANCE,UNAFFACTED,UNITS}}
+\lst at definelanguage{XSLT}[]{XML}%
+ {morekeywords={%
+ % main elements
+ xsl:stylesheet,xsl:transform,%
+ % childs of the main element
+ xsl:apply-imports,xsl:attribute-set,xsl:decimal-format,xsl:import,%
+ xsl:include,xsl:key,xsl:namespace-alias,xsl:output,xsl:param,%
+ xsl:preserve-space,xsl:strip-space,xsl:template,xsl:variable,%
+ % 21 directives
+ xsl:apply-imports,xsl:apply-templates,xsl:attribute,%
+ xsl:call-template,xsl:choose,xsl:comment,xsl:copy,xsl:copy-of,%
+ xsl:element,xsl:fallback,xsl:for-each,xsl:if,xsl:message,%
+ xsl:number,xsl:otherwise,xsl:processing-instruction,xsl:text,%
+ xsl:value-of,xsl:variable,xsl:when,xsl:with-param},%
+ alsodigit={-},%
+ }%
+\lst at definelanguage{Ant}[]{XML}%
+ {morekeywords={%
+ project,target,patternset,include,exclude,excludesfile,includesfile,filterset,%
+ filter,filtersfile,libfileset,custom,classpath,fileset,none,depend,mapper,%
+ filename,not,date,contains,selector,depth,or,and,present,majority,size,dirset,%
+ filelist,pathelement,path,param,filterreader,extension,filterchain,linecontainsregexp,%
+ regexp,classconstants,headfilter,tabstospaces,striplinebreaks,tailfilter,stripjavacomments,%
+ expandproperties,linecontains,replacetokens,token,striplinecomments,comment,prefixlines,%
+ classfileset,rootfileset,root,description,xmlcatalog,entity,dtd,substitution,%
+ extensionSet,propertyfile,entry,vsscheckin,sql,transaction,cvspass,csc,%
+ dirname,wlrun,wlclasspath,p4label,replaceregexp,get,jjtree,sleep,jarlib,%
+ dependset,targetfileset,srcfileset,srcfilelist,targetfilelist,zip,zipgroupfileset,zipfileset,%
+ patch,jspc,webapp,style,test,arg,jvmarg,sysproperty,testlet,env,tstamp,%
+ format,unwar,vsshistory,icontract,cvschangelog,user,p4submit,ccmcheckin,%
+ p4change,bzip2,vssadd,javadoc,bottom,source,doctitle,header,excludepackage,bootclasspath,%
+ doclet,taglet,packageset,sourcepath,link,footer,package,group,title,tag,%
+ translate,signjar,vajload,vajproject,jarlib,extensionset,WsdlToDotnet,buildnumber,%
+ jpcovmerge,tomcat,ejbjar,weblogictoplink,jboss,borland,weblogic,iplanet,jonas,%
+ support,websphere,wasclasspath,war,manifest,attribute,section,metainf,lib,%
+ classes,webinf,rename,sequential,serverdeploy,generic,property,move,%
+ copydir,cccheckin,wljspc,fixcrlf,sosget,pathconvert,map,record,p4sync,exec,%
+ p4edit,maudit,rulespath,searchpath,antlr,netrexxc,jpcovreport,reference,filters,%
+ coveragepath,execon,targetfile,srcfile,ccmcheckout,ant,xmlvalidate,xslt,%
+ iplanet,ccmcheckintask,gzip,native2ascii,starteam,ear,archives,input,%
+ rmic,extdirs,compilerarg,checksum,mail,bcc,message,cc,to,from,loadfile,vsscheckout,%
+ stylebook,soscheckin,mimemail,stlabel,gunzip,concat,cab,touch,parallel,splash,%
+ antcall,cccheckout,typedef,p4have,xmlproperty,copy,tomcat,antstructure,ccmcreatetask,%
+ rpm,delete,replace,replacefilter,replacetoken,replacevalue,mmetrics,waitfor,isfalse,%
+ equals,available,filepath,os,filesmatch,istrue,isset,socket,http,uptodate,srcfiles,%
+ untar,loadproperties,echoproperties,vajexport,stcheckout,bunzip2,copyfile,vsscreate,%
+ ejbc,unjar,tomcat,wsdltodotnet,mkdir,condition,cvs,commandline,marker,argument,%
+ tempfile,junitreport,report,taskdef,echo,ccupdate,java,renameext,vsslabel,basename,%
+ javadoc2,vsscp,tar,tarfileset,tomcat,vajimport,setproxy,wlstop,p4counter,ilasm,%
+ soscheckout,apply,ccuncheckout,jarlib,location,url,cvstagdiff,jlink,mergefiles,%
+ addfiles,javacc,pvcs,pvcsproject,jarlib,options,depends,chmod,jar,sound,fail,%
+ success,mparse,blgenclient,genkey,dname,javah,class,ccmreconfigure,unzip,javac,%
+ src,p4add,soslabel,jpcoverage,triggers,method,vssget,deltree,ddcreator},
+ deletekeywords={default},%
+ }
+\lst at definelanguage{XML}%
+ {keywords={,CDATA,DOCTYPE,ATTLIST,termdef,ELEMENT,EMPTY,ANY,ID,%
+ IDREF,IDREFS,ENTITY,ENTITIES,NMTOKEN,NMTOKENS,NOTATION,%
+ INCLUDE,IGNORE,SYSTEM,PUBLIC,NDATA,PUBLIC,%
+ PCDATA,REQUIRED,IMPLIED,FIXED,%%% preceded by #
+ xml,xml:space,xml:lang,version,standalone,default,preserve},%
+ alsoother=$,%
+ alsoletter=:,%
+ tag=**[s]<>,%
+ morestring=[d]",% ??? doubled
+ morestring=[d]',% ??? doubled
+ MoreSelectCharTable=%
+ \lst at CArgX--\relax\lst at DefDelimB{}{}%
+ {\ifnum\lst at mode=\lst at tagmode\else
+ \expandafter\@gobblethree
+ \fi}%
+ \lst at BeginComment\lst at commentmode{{\lst at commentstyle}}%
+ \lst at CArgX--\relax\lst at DefDelimE{}{}{}%
+ \lst at EndComment\lst at commentmode
+ \lst at CArgX[CDATA[\relax\lst at CDef{}%
+ {\ifnum\lst at mode=\lst at tagmode
+ \expandafter\lst at BeginCDATA
+ \else \expandafter\lst at CArgEmpty
+ \fi}%
+ \@empty
+ \lst at CArgX]]\relax\lst at CDef{}%
+ {\ifnum\lst at mode=\lst at GPmode
+ \expandafter\lst at EndComment
+ \else \expandafter\lst at CArgEmpty
+ \fi}%
+ \@empty
+ }[keywords,comments,strings,html]%
+\endinput
+%%
+%% End of file `lstlang1.sty'.
File [added]: lstlang2.sty
Delta lines: +1532 -0
===================================================================
--- papers/CPC/saga_engine_2006/lstlang2.sty 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/lstlang2.sty 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,1532 @@
+%%
+%% This is file `lstlang2.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lstdrvrs-1.3.dtx (with options: `lang2')
+%%
+%% (w)(c) 1996/1997/1998/1999/2000/2001/2002/2003/2004 Carsten Heinz
+%% and/or any other author listed elsewhere in this file.
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+%% This file is completely free and comes without any warranty.
+%%
+%% Send comments and ideas on the package, error reports and additional
+%% programming languages to <cheinz at gmx.de>.
+%%
+\ProvidesFile{lstlang2.sty}
+ [2004/09/05 1.3 listings language file]
+%%
+%% Abap definition by Knut Lickert
+%%
+\lst at definelanguage[R/3 6.10]{ABAP}[R/3 4.6C]{ABAP}%
+ {morekeywords={try,endtry},%
+ }[keywords,comments,strings]
+\lst at definelanguage[R/3 4.6C]{ABAP}[R/3 3.1]{ABAP}%
+ {morekeywords={method,ref,class,create,object,%
+ methods,endmethod,private,protected,public,section,%
+ catch,system-exceptions,endcatch,%
+ },%
+ moreprocnamekeys={class},%
+ literate={->}{{$\rightarrow$}}1{=>}{{$\Rightarrow$}}1,%
+ }[keywords,comments,strings,procnames]
+\lst at definelanguage[R/3 3.1]{ABAP}[R/2 5.0]{ABAP}{}%
+\lst at definelanguage[R/2 5.0]{ABAP}%
+ {sensitive=f,%
+ procnamekeys={report,program,form,function,module},%
+ morekeywords={*,add,after,alias,analyzer,and,append,appending,area,assign,at,%
+ authority-check,before,binary,blank,break-point,calendar,call,%
+ case,change,changing,check,clear,cnt,co,collect,commit,common,%
+ component,compute,condense,corresponding,cos,cp,cs,currency-conversion,%
+ cursor,data,database,dataset,decimals,define,delete,deleting,dequeue,%
+ describe,detail,dialog,directory,div,divide,do,documentation,%
+ during,dynpro,else,end-of-page,end-of-selection,endat,endcase,%
+ enddo,endfor,endform,endif,endloop,endmodule,endselect,%
+ endwhile,enqueue,exceptions,exit,exp,export,exporting,extract,%
+ field,fields,field-groups,field-symbols,find,for,form,format,free,%
+ from,function,generating,get,giving,hide,id,if,import,%
+ importing,in,incl,include,initial,initialization,input,insert,%
+ interrupt,into,is,language,leave,leading,left-justified,like,line,lines,line-count,
+ line-selection,list-processing,load,local,log,logfile,loop,%
+ margin,mark,mask,memory,menue,message,mod,modify,module,move,%
+ move-text,multiply,na,new,new-line,new-page,no-gaps,np,ns,%
+ number,obligatory,occurs,of,on,or,others,output,parameter,%
+ parameters,parts,perform,pf-status,places,position,process,%
+ raise,raising,ranges,read,refresh,refresh-dynpro,reject,remote,%
+ replace,report,reserve,reset,restart,right-justified,run,screen,scroll,search,%
+ segments,select,select-options,selection-screen,set,shift,sin,%
+ single,sqrt,start-of-selection,statement,structure,submit,%
+ subtract,summary,summing,suppress,system,table,tables,task,%
+ text,time,to,top-of-page,trace,transaction,transfer,%
+ transfer-dynpro,translate,type,unpack,update,user-command,%
+ using,value,when,where,while,window,with,workfile,write,},%
+ morecomment=[l]",%
+ morecomment=[f][0]*,%
+ morestring=[d]'%
+ }[keywords,comments,strings,procnames]
+\lst at definelanguage[R/2 4.3]{ABAP}[R/2 5.0]{ABAP}%
+ {deletekeywords={function,importing,exporting,changing,exceptions,%
+ raise,raising}%
+ }[keywords,comments,strings]
+%%
+%% Corba IDL definition (c) 1999 Jens T. Berger Thielemann
+%%
+\lst at definelanguage[CORBA]{IDL}%
+ {morekeywords={any,attribute,boolean,case,char,const,context,default,%
+ double,enum,exception,fixed,float,in,inout,interface,long,module,%
+ native,Object,octet,oneway,out,raises,readonly,sequence,short,%
+ string,struct,switch,typedef,union,unsigned,void,wchar,wstring,%
+ FALSE,TRUE},%
+ sensitive,%
+ moredirectives={define,elif,else,endif,error,if,ifdef,ifndef,line,%
+ include,pragma,undef,warning},%
+ moredelim=*[directive]\#,%
+ morecomment=[l]//,%
+ morecomment=[s]{/*}{*/},%
+ morestring=[b]"%
+ }[keywords,comments,strings,directives]%
+%%
+%% (Objective) Caml definition (c) 1999 Patrick Cousot
+%%
+%% Objective CAML and Caml light are freely available, together with a
+%% reference manual, at URL ftp.inria.fr/lang/caml-light for the Unix,
+%% Windows and Macintosh OS operating systems.
+%%
+\lst at definelanguage[Objective]{Caml}[light]{Caml}
+ {deletekeywords={not,prefix,value,where},%
+ morekeywords={assert,asr,class,closed,constraint,external,false,%
+ functor,include,inherit,land,lazy,lor,lsl,lsr,lxor,method,mod,%
+ module,new,open,parser,private,sig,struct,true,val,virtual,when,%
+ object,ref},% TH
+ }%
+\lst at definelanguage[light]{Caml}
+ {morekeywords={and,as,begin,do,done,downto,else,end,exception,for,%
+ fun,function,if,in,let,match,mutable,not,of,or,prefix,rec,then,%
+ to,try,type,value,where,while,with},%
+ sensitive,%
+ morecomment=[n]{(*}{*)},%
+ morestring=[b]",%
+ moredelim=*[directive]\#,%
+ moredirectives={open,close,include}%
+ }[keywords,comments,strings,directives]%
+\lst at definelanguage[ibm]{Cobol}[1985]{Cobol}%
+ {morekeywords={ADDRESS,BEGINNING,COMP-3,COMP-4,COMPUTATIONAL,%
+ COMPUTATIONAL-3,COMPUTATIONAL-4,DISPLAY-1,EGCS,EJECT,ENDING,%
+ ENTRY,GOBACK,ID,MORE-LABELS,NULL,NULLS,PASSWORD,RECORDING,%
+ RETURN-CODE,SERVICE,SKIP1,SKIP2,SKIP3,SORT-CONTROL,SORT-RETURN,%
+ SUPPRESS,TITLE,WHEN-COMPILED},%
+ }%
+\lst at definelanguage[1985]{Cobol}[1974]{Cobol}%
+ {morekeywords={ALPHABET,ALPHABETIC-LOWER,ALPHABETIC-UPPER,%
+ ALPHANUMERIC,ALPHANUMERIC-EDITED,ANY,CLASS,COMMON,CONTENT,%
+ CONTINUE,DAY-OF-WEEK,END-ADD,END-CALL,END-COMPUTE,END-DELETE,%
+ END-DIVIDE,END-EVALUATE,END-IF,END-MULTIPLY,END-PERFORM,END-READ,%
+ END-RECEIVE,END-RETURN,END-REWRITE,END-SEARCH,END-START,%
+ END-STRING,END-SUBTRACT,END-UNSTRING,END-WRITE,EVALUATE,EXTERNAL,%
+ FALSE,GLOBAL,INITIALIZE,NUMERIC-EDITED,ORDER,OTHER,%
+ PACKED-DECIMAL,PADDING,PURGE,REFERENCE,RELOAD,REPLACE,STANDARD-1,%
+ STANDARD-2,TEST,THEN,TRUE},%
+ }%
+\lst at definelanguage[1974]{Cobol}%
+ {morekeywords={ACCEPT,ACCESS,ADD,ADVANCING,AFTER,ALL,ALPHABETIC,ALSO,%
+ ALTER,ALTERNATE,AND,ARE,AREA,AREAS,ASCENDING,ASSIGN,AT,AUTHOR,%
+ BEFORE,BINARY,BLANK,BLOCK,BOTTOM,BY,CALL,CANCEL,CD,CF,CH,%
+ CHARACTER,CHARACTERS,CLOCK-UNITS,CLOSE,COBOL,CODE,CODE-SET,%
+ COLLATING,COLUMN,COMMA,COMMUNICATION,COMP,COMPUTE,CONFIGURATION,%
+ CONTAINS,CONTROL,CONTROLS,CONVERTING,COPY,CORR,CORRESPONDING,%
+ COUNT,CURRENCY,DATA,DATE,DATE-COMPILED,DATE-WRITTEN,DAY,DE,%
+ DEBUG-CONTENTS,DEGUB-ITEM,DEBUG-LINE,DEBUG-NAME,DEBUG-SUB1,%
+ DEBUG-SUB2,DEBUG-SUB3,DEBUGGING,DECIMAL-POINT,DECLARATIVES,%
+ DELETE,DELIMITED,DELIMITER,DEPENDING,DESCENDING,DESTINATION,%
+ DETAIL,DISABLE,DISPLAY,DIVIDE,DIVISION,DOWN,DUPLICATES,DYNAMIC,%
+ EGI,ELSE,EMI,ENABLE,END,END-OF-PAGE,ENTER,ENVIRONMENT,EOP,EQUAL,%
+ ERROR,ESI,EVERY,EXCEPTION,EXIT,EXTEND,FD,FILE,FILE-CONTROL,%
+ FILLER,FINAL,FIRST,FOOTING,FOR,FROM,GENERATE,GIVING,GO,GREATER,%
+ GROUP,HEADING,HIGH-VALUE,HIGH-VALUES,I-O,I-O-CONTROL,%
+ IDENTIFICATION,IF,IN,INDEX,INDEXED,INDICATE,INITIAL,INITIATE,%
+ INPUT,INPUT-OUTPUT,INSPECT,INSTALLATION,INTO,INVALID,IS,JUST,%
+ JUSTIFIED,KEY,LABEL,LAST,LEADING,LEFT,LENGTH,LESS,LIMIT,LIMITS,%
+ LINAGE,LINAGE-COUNTER,LINE,LINE-COUNTER,LINES,LINKAGE,LOCK,%
+ LOW-VALUE,LOW-VALUES,MEMORY,MERGE,MESSAGE,MODE,MODULES,MOVE,%
+ MULTIPLE,MULTIPLY,NATIVE,NEGATIVE,NEXT,NO,NOT,NUMBER,NUMERIC,%
+ OBJECT-COMPUTER,OCCURS,OF,OFF,OMITTED,ON,OPEN,OPTIONAL,OR,%
+ ORGANIZATION,OUTPUT,OVERFLOW,PAGE,PAGE-COUNTER,PERFORM,PF,PH,PIC,%
+ PICTURE,PLUS,POINTER,POSITION,PRINTING,POSITIVE,PRINTING,%
+ PROCEDURE,PROCEDURES,PROCEED,PROGRAM,PROGRAM-ID,QUEUE,QUOTE,%
+ QUOTES,RANDOM,RD,READ,RECEIVE,RECORD,RECORDING,RECORDS,REDEFINES,%
+ REEL,REFERENCES,RELATIVE,RELEASE,REMAINDER,REMOVAL,RENAMES,%
+ REPLACING,REPORT,REPORTING,REPORTS,RERUN,RESERVE,RESET,RETURN,%
+ REVERSED,REWIND,REWRITE,RF,RH,RIGHT,ROUNDED,RUN,SAME,SD,SEARCH,%
+ SECTION,SECURITY,SEGMENT,SEGMENT-LIMIT,SELECT,SEND,SENTENCE,%
+ SEPARATE,SEQUENCE,SEQUENTIAL,SET,SIGN,SIZE,SORT,SORT-MERGE,%
+ SOURCE,SOURCE-COMPUTER,SPACE,SPACES,SPECIAL-NAMES,STANDARD,START,%
+ STATUS,STOP,STRING,SUB-QUEUE-1,SUB-QUEUE-2,SUB-QUEUE-3,SUBTRACT,%
+ SUM,SYMBOLIC,SYNC,SYNCHRONIZED,TABLE,TALLYING,TAPE,TERMINAL,%
+ TERMINATE,TEXT,THAN,THROUGH,THRU,TIME,TIMES,TO,TOP,TRAILING,TYPE,%
+ UNIT,UNSTRING,UNTIL,UP,UPON,USAGE,USE,USING,VALUE,VALUES,VARYING,%
+ WHEN,WITH,WORDS,WORKING-STORAGE,WRITE,ZERO,ZEROES,ZEROS},%
+ alsodigit=-,%
+ sensitive=f,% ???
+ morecomment=[f][commentstyle][6]*,%
+ morestring=[d]"% ??? doubled
+ }[keywords,comments,strings]%
+\lst at definelanguage{Delphi}%
+ {morekeywords={and,as,asm,array,begin,case,class,const,constructor,%
+ destructor,div,do,downto,else,end,except,exports,file,finally,%
+ for,function,goto,if,implementation,in,inherited,inline,%
+ initialization,interface,is,label,library,mod,nil,not,object,of,%
+ or,packed,procedure,program,property,raise,record,repeat,set,%
+ shl,shr,string,then,to,try,type,unit,until,uses,var,while,with,%
+ xor,%
+ absolute,abstract,assembler,at,cdecl,default,dynamic,export,%
+ external,far,forward,index,name,near,nodefault,on,override,%
+ private,protected,public,published,read,resident,storedDir,%
+ virtual,write},%
+ morendkeywords={Abs,AddExitProc,Addr,AllocMem,AnsiCompareStr,%
+ AnsiCompareText,AnsiLowerCase,AnsiUpperCase,Append,AppendStr,%
+ ArcTan,AssignCrt,Assigned,AssignFile,BlockRead,BlockWrite,Break,%
+ ChangeFileExt,ChDir,Chr,CloseFile,ClrEol,ClrScr,Concat,Continue,%
+ Copy,Cos,CSeg,CursorTo,Date,DateTimeToFileDate,DateTimeToStr,%
+ DateTimeToString,DateToStr,DayOfWeek,Dec,DecodeDate,DecodeTime,%
+ Delete,DeleteFile,DiskFree,DiskSize,Dispose,DisposeStr,%
+ DoneWinCrt,DSeg,EncodeDate,EncodeTime,Eof,Eoln,Erase,Exclude,%
+ Exit,Exp,ExpandFileName,ExtractFileExt,ExtractFileName,%
+ ExtractFilePath,FileAge,FileClose,FileDateToDateTime,FileExists,%
+ FileGetAttr,FileGetDate,FileOpen,FilePos,FileRead,FileSearch,%
+ FileSeek,FileSetAttr,FileSetDate,FileSize,FillChar,FindClose,%
+ FindFirst,FindNext,FloatToDecimal,FloatToStrF,FloatToStr,%
+ FloatToText,FloatToTextFmt,Flush,FmtLoadStr,FmtStr,Format,%
+ FormatBuf,FormatDateTime,FormatFloat,Frac,Free,FreeMem,GetDir,%
+ GetMem,GotoXY,Halt,Hi,High,Inc,Include,InitWinCrt,Insert,Int,%
+ IntToHex,IntToStr,IOResult,IsValidIdent,KeyPressed,Length,Ln,Lo,%
+ LoadStr,Low,LowerCase,MaxAvail,MemAvail,MkDir,Move,New,NewStr,%
+ Now,Odd,Ofs,Ord,ParamCount,ParamStr,Pi,Pos,Pred,Ptr,Random,%
+ Randomize,Read,ReadBuf,ReadKey,Readln,ReAllocMem,Rename,%
+ RenameFile,Reset,Rewrite,RmDir,Round,RunError,ScrollTo,Seek,%
+ SeekEof,SeekEoln,Seg,SetTextBuf,Sin,SizeOf,SPtr,Sqr,Sqrt,SSeg,%
+ Str,StrCat,StrComp,StrCopy,StrDispose,StrECopy,StrEnd,StrFmt,%
+ StrLCat,StrIComp,StrLComp,StrLCopy,StrLen,StrLFmt,StrLIComp,%
+ StrLower,StrMove,StrNew,StrPas,StrPCopy,StrPos,StrScan,StrRScan,%
+ StrToDate,StrToDateTime,StrToFloat,StrToInt,StrToIntDef,%
+ StrToTime,StrUpper,Succ,Swap,TextToFloat,Time,TimeToStr,%
+ TrackCursor,Trunc,Truncate,TypeOf,UpCase,UpperCase,Val,WhereX,%
+ WhereY,Write,WriteBuf,WriteChar,Writeln},%
+ sensitive=f,%
+ morecomment=[s]{(*}{*)},%
+ morecomment=[s]{\{}{\}},%
+ morecomment=[l]{//},% 2001 Christian Gudrian
+ morestring=[d]'%
+ }[keywords,comments,strings]%
+\lst at definelanguage{Eiffel}%
+ {morekeywords={alias,all,and,as,BIT,BOOLEAN,CHARACTER,check,class,%
+ creation,Current,debug,deferred,do,DOUBLE,else,elseif,end,%
+ ensure,expanded,export,external,false,feature,from,frozen,if,%
+ implies,indexing,infix,inherit,inspect,INTEGER,invariant,is,%
+ like,local,loop,NONE,not,obsolete,old,once,or,POINTER,prefix,%
+ REAL,redefine,rename,require,rescue,Result,retry,select,%
+ separate,STRING,strip,then,true,undefine,unique,until,variant,%
+ when,xor},%
+ sensitive,%
+ morecomment=[l]--,%
+ morestring=[d]",%
+ }[keywords,comments,strings]%
+%%
+%% Euphoria definition (c) 1998 Detlef Reimers
+%%
+\lst at definelanguage{Euphoria}%
+ {morekeywords={abort,and,and_bits,append,arctan,atom,by,call,%
+ call_proc,call_func,c_proc,c_func,clear_screen,close,%
+ command_line,compare,constant,cos,do,date,else,elsif,end,exit,%
+ find,floor,for,function,getc,getenv,get_key,gets,global,%
+ get_pixel,if,include,integer,length,log,match,machine_func,%
+ machine_proc,mem_copy,mem_set,not,not_bits,or,object,open,%
+ or_bits,procedure,puts,position,prepend,print,printf,power,peek,%
+ poke,pixel,poke4,peek4s,peek4u,return,rand,repeat,remainder,%
+ routine_id,sequence,sqrt,sin,system,sprintf,then,type,to,time,%
+ trace,tan,while,with,without,xor,xor_bits},%
+ sensitive,%
+ morecomment=[l]--,%
+ morestring=[d]',%
+ morestring=[d]"%
+ }[keywords,comments,strings]%
+%%
+%% Guarded Command Language (GCL) definition
+%% (c) 2002 Mark van Eijk
+%%
+\lst at definelanguage{GCL}%
+ {morekeywords={const,con,var,array,of,skip,if,fi,do,od,div,mod},%
+ literate={|[}{\ensuremath{|\hskip -0.1em[}}2%
+ {]|}{\ensuremath{]\hskip -0.1em|}}2%
+ {[]}{\ensuremath{[\hskip -0.1em]}}2%
+ {->}{\ensuremath{\rightarrow}~}2%
+ {==}{\ensuremath{\equiv}~}2%
+ {>=}{\ensuremath{\geq}~}2%
+ {<=}{\ensuremath{\leq}~}2%
+ {/\\}{\ensuremath{\land}~}2%
+ {\\/}{\ensuremath{\lor}~}2%
+ {!}{\ensuremath{\lnot}}1%
+ {!=}{\ensuremath{\neq}~}2%
+ {max}{\ensuremath{\uparrow}}1%
+ {min}{\ensuremath{\downarrow}}1,%
+ sensitive=f,%
+ morecomment=[s]{\{}{\}},%
+ morestring=[d]'%
+ }[keywords,comments,strings]%
+%%
+%% gnuplot definition (c) Christoph Giess
+%%
+\lst at definelanguage{Gnuplot}%
+ {keywords={abs,acos,acosh,arg,asin,asinh,atan,atan2,atanh,besj0,%
+ besj1,besy0,besy1,ceil,cos,cosh,erf,erfc,exp,floor,gamma,ibeta,%
+ inverf,igamma,imag,invnorm,int,lgamma,log,log10,norm,rand,real,%
+ sgn,sin,sinh,sqrt,tan,tanh,column,tm_hour,tm_mday,tm_min,tm_mon,%
+ tm_sec,tm_wday,tm_yday,tm_year,valid,cd,call,clear,exit,fit,%
+ help,if,load,pause,plot,print,pwd,quit,replot,reread,reset,save,%
+ set,show,shell,splot,test,update,angles,arrow,autoscale,border,%
+ boxwidth,clabel,clip,cntrparam,contour,data,dgrid3d,dummy,%
+ format,function,functions,grid,hidden3d,isosamples,key,keytitle,%
+ label,logscale,mapping,offsets,output,parametric,pointsize,%
+ polar,rrange,samples,size,style,surface,terminal,tics,time,%
+ timefmt,title,trange,urange,variables,view,vrange,xdata,xlabel,%
+ xmargin,xrange,xtics,mxtics,mytics,xdtics,xmtics,xzeroaxis,%
+ ydata,ylabel,yrange,ytics,ydtics,ymtics,yzeroaxis,zdata,zero,%
+ zeroaxis,zlabel,zrange,ztics,zdtics,zmtics,timefm,using,title,%
+ with,index,every,thru,smooth},%
+ sensitive,%
+ comment=[l]\#,%
+ morestring=[b]",%
+ morestring=[b]',%
+ }[keywords,comments,strings]%
+%%
+%% Haskell98 as implemented in Hugs98. See http://www.haskell.org
+%% All keywords from Prelude and Standard Libraries
+%% (c) 1999 Peter Bartke
+%%
+\lst at definelanguage{Haskell}%
+ {otherkeywords={=>},%
+ morekeywords={abstype,if,then,else,case,class,data,default,deriving,%
+ hiding,if,in,infix,infixl,infixr,import,instance,let,module,%
+ newtype,of,qualified,type,where,do,AbsoluteSeek,AppendMode,%
+ Array,BlockBuffering,Bool,BufferMode,Char,Complex,Double,Either,%
+ FilePath,Float,Int,Integer,IO,IOError,Ix,LineBuffering,Maybe,%
+ Ordering,NoBuffering,ReadMode,ReadWriteMode,ReadS,RelativeSeek,%
+ SeekFromEnd,SeekMode,ShowS,StdGen,String,Void,Bounded,Enum,Eq,%
+ Eval,ExitCode,exitFailure,exitSuccess,Floating,Fractional,%
+ Functor,Handle,HandlePosn,IOMode,Integral,List,Monad,MonadPlus,%
+ MonadZero,Num,Numeric,Ord,Random,RandomGen,Ratio,Rational,Read,%
+ Real,RealFloat,RealFrac,Show,System,Prelude,EQ,False,GT,Just,%
+ Left,LT,Nothing,Right,WriteMode,True,abs,accum,accumArray,%
+ accumulate,acos,acosh,all,and,any,ap,appendFile,applyM,%
+ approxRational,array,asTypeOf,asin,asinh,assocs,atan,atan2,atanh,%
+ bounds,bracket,bracket_,break,catch,catMaybes,ceiling,chr,cis,%
+ compare,concat,concatMap,conjugate,const,cos,cosh,curry,cycle,%
+ decodeFloat,delete,deleteBy,deleteFirstsBy,denominator,%
+ digitToInt,div,divMod,drop,dropWhile,either,elem,elems,elemIndex,%
+ elemIndices,encodeFloat,enumFrom,enumFromThen,enumFromThenTo,%
+ enumFromTo,error,even,exitFailure,exitWith,exp,exponent,fail,%
+ filter,filterM,find,findIndex,findIndices,flip,floatDigits,%
+ floatRadix,floatRange,floatToDigits,floor,foldl,foldM,foldl1,%
+ foldr,foldr1,fromDouble,fromEnum,fromInt,fromInteger,%
+ fromIntegral,fromJust,fromMaybe,fromRat,fromRational,%
+ fromRealFrac,fst,gcd,genericLength,genericTake,genericDrop,%
+ genericSplitAt,genericIndex,genericReplicate,getArgs,getChar,%
+ getContents,getEnv,getLine,getProgName,getStdGen,getStdRandom,%
+ group,groupBy,guard,hClose,hFileSize,hFlush,hGetBuffering,%
+ hGetChar,hGetContents,hGetLine,hGetPosn,hIsClosed,hIsEOF,hIsOpen,%
+ hIsReadable,hIsSeekable,hIsWritable,hLookAhead,hPutChar,hPutStr,%
+ hPutStrLn,hPrint,hReady,hSeek,hSetBuffering,hSetPosn,head,%
+ hugsIsEOF,hugsHIsEOF,hugsIsSearchErr,hugsIsNameErr,%
+ hugsIsWriteErr,id,ioError,imagPart,index,indices,init,inits,%
+ inRange,insert,insertBy,interact,intersect,intersectBy,%
+ intersperse,intToDigit,ioeGetErrorString,ioeGetFileName,%
+ ioeGetHandle,isAlreadyExistsError,isAlreadyInUseError,isAlpha,%
+ isAlphaNum,isAscii,isControl,isDenormalized,isDoesNotExistError,%
+ isDigit,isEOF,isEOFError,isFullError,isHexDigit,isIEEE,%
+ isIllegalOperation,isInfinite,isJust,isLower,isNaN,%
+ isNegativeZero,isNothing,isOctDigit,isPermissionError,isPrefixOf,%
+ isPrint,isSpace,isSuffixOf,isUpper,isUserError,iterate,ixmap,%
+ join,last,lcm,length,lex,lexDigits,lexLitChar,liftM,liftM2,%
+ liftM3,liftM4,liftM5,lines,listArray,listToMaybe,log,logBase,%
+ lookup,magnitude,makePolar,map,mapAccumL,mapAccumR,mapAndUnzipM,%
+ mapM,mapM_,mapMaybe,max,maxBound,maximum,maximumBy,maybe,%
+ maybeToList,min,minBound,minimum,minimumBy,mkPolar,mkStdGen,%
+ mplus,mod,msum,mzero,negate,next,newStdGen,not,notElem,nub,nubBy,%
+ null,numerator,odd,openFile,or,ord,otherwise,partition,phase,pi,%
+ polar,pred,print,product,properFraction,putChar,putStr,putStrLn,%
+ quot,quotRem,random,randomIO,randomR,randomRIO,randomRs,randoms,%
+ rangeSize,read,readDec,readFile,readFloat,readHex,readInt,readIO,%
+ readList,readLitChar,readLn,readParen,readOct,readSigned,reads,%
+ readsPrec,realPart,realToFrac,recip,rem,repeat,replicate,return,%
+ reverse,round,scaleFloat,scanl,scanl1,scanr,scanr1,seq,sequence,%
+ sequence_,setStdGen,show,showChar,showEFloat,showFFloat,%
+ showFloat,showGFloat,showInt,showList,showLitChar,showParen,%
+ showSigned,showString,shows,showsPrec,significand,signum,sin,%
+ sinh,snd,sort,sortBy,span,split,splitAt,sqrt,stderr,stdin,stdout,%
+ strict,subtract,succ,sum,system,tail,tails,take,takeWhile,tan,%
+ tanh,toEnum,toInt,toInteger,toLower,toRational,toUpper,transpose,%
+ truncate,try,uncurry,undefined,unfoldr,union,unionBy,unless,%
+ unlines,until,unwords,unzip,unzip3,unzip4,unzip5,unzip6,unzip7,%
+ userError,when,words,writeFile,zero,zip,zip3,zip4,zip5,zip6,zip7,%
+ zipWith,zipWithM,zipWithM_,zipWith3,zipWith4,zipWith5,zipWith6,%
+ zipWith7},%
+ sensitive,%
+ morecomment=[l]--,%
+ morecomment=[n]{\{-}{-\}},%
+ morestring=[b]"%
+ }[keywords,comments,strings]%
+%%
+%% IDL definition (c) 1998 Juergen Heim
+%%
+\lst at definelanguage{IDL}%
+ {morekeywords={and,begin,case,common,do,else,end,endcase,endelse,%
+ endfor,endif,endrep,endwhile,eq,for,function,ge,goto,gt,if,le,lt,%
+ mod,ne,not,of,on_ioerror,or,pro,repeat,return,then,until,while,%
+ xor,on_error,openw,openr,openu,print,printf,printu,plot,read,%
+ readf,readu,writeu,stop},%
+ sensitive=f,%
+ morecomment=[l];,%
+ morestring=[d]'%
+ }[keywords,comments,strings]%
+%%
+%% Inform definition (c) 2003 Jonathan Sauer
+%%
+\lst at definelanguage{inform}{%
+ % Language keywords
+ morekeywords={breakdo,else,false,for,has,hasnt,if,%
+ in,indirect,jump,notin,nothing,NULL,objectloop,ofclass,%
+ private,property,provides,return,rfalse,rtrue,self,string,%
+ switch,to,true,until,while,with,%
+ creature,held,multiexcept,multiheld,multiinside,noun,number,%
+ scope,topic},%
+ %
+ % Inform functions
+ morekeywords=[2]{box,child,children,font,give,inversion,metaclass,move,%
+ new_line,parent,print,print_ret,read,remove,restore,sibling,%
+ save,spaces,quit,style,bold,underline,reverse,roman remaining,%
+ create,destroy,recreate,copy},%
+ %
+ % Inform definitions
+ morekeywords=[3]{Attribute,Array,Class,Constant,Default,End,Endif,Extend,%
+ Global,Ifdef,Iffalse,Ifndef,Ifnot,Iftrue,Include,Object,%
+ Property,Verb,Release,Serial,Statusline},%
+ %
+ % Library attributes
+ morekeywords=[4]{absent,animate,clothing,concealed,container,door,edible,%
+ enterable,female,general,light,lockable locked,male,moved,%
+ neuter,on,open,openable,pluralname,proper,scenery,scored,%
+ static,supporter,switchable,talkable,transparent,visited,%
+ workflag,worn},%
+ %
+ % Libary properties
+ morekeywords=[5]{n_to,s_to,e_to,w_to,ne_to,nw_to,se_to,sw_to,in_to,%
+ out_to,u_to,d_to,add_to_scope,after,article,articles,before,%
+ cant_go,capacity,daemon,describe,description,door_dir,door_to,%
+ each_turn,found_in,grammar,initial,inside_description,invent,%
+ life,list_together,name number,orders,parse_name,plural,%
+ react_after,react_before,short_name,short_name_indef,time_left,%
+ time_out,when_closed,when_open,when_on,when_off,%
+ with_key},
+ %
+ % Library routines
+ morekeywords=[6]{Achieved,AfterRoutines,AllowPushDir,Banner,ChangePlayer,%
+ CommonAncestor,DictionaryLookup,GetGNAOfObject,HasLightSource,%
+ IndirectlyContains,IsSeeThrough,Locale,LoopOverScope,LTI_Insert,%
+ MoveFloatingObjects,NextWord,NextWordStopped,NounDomain,%
+ ObjectIsUntouchable OffersLight,ParseToken,PlaceInScope,PlayerTo,%
+ PronounNotice,PronounValue,ScopeWithin,SetPronoun,SetTime,%
+ StartDaemon,StartTimer,StopDaemon,StopTimer,TestScope,TryNumber,%
+ UnsignedCompare,WordAddress,WordInProperty,WordLength,%
+ WriteListFrom,YesOrNo},%
+ %
+ % Library,entry points
+ morekeywords=[7]{AfterLife,AfterPrompt,Amusing,BeforeParsing,ChooseObjects,%
+ DarkToDark,DeathMessage,GamePostRoutine GamePreRoutine,%
+ Initialise,InScope,LookRoutine,NewRoom,ParseNoun,ParseNumber,%
+ ParserError,PrintRank,PrintTaskName,PrintVerb,TimePasses,%
+ UnknownVerb},%
+ %
+ % Library constants
+ morekeywords=[8]{NEWLINE_BIT,INDENT_BIT,FULLINV_BIT,ENGLISH_BIT,RECURSE_BIT,%
+ ALWAYS_BIT,TERSE_BIT,PARTINV_BIT,DEFART_BIT,WORKFLAG_BIT,%
+ ISARE_BIT,CONCEAL_BIT},%
+ %
+ % Library,meta actions
+ morekeywords=[9]{Pronouns,Quit,Restart,Restore,Save,Verify,ScriptOn,ScriptOff,%
+ NotifyOn,NotifyOff,Places,Objects,Score,FullScore,Version,LMode1,%
+ LMode2,Lmode3},%
+ %
+ % Library,main actions
+ morekeywords=[10]{Close,Disrobe,Drop,Eat,Empty,EmptyT,Enter,Examine,Exit,GetOff,%
+ Give,Go,GoIn,Insert,Inv,InvTall,InvWide,Lock,Look,Open,PutOn,Remove,%
+ Search,Show,SwitchOff,SwitchOn,Take,Transfer,Unlock VagueGo,%
+ Wear},%
+ %
+ % Library,stub actions
+ morekeywords=[11]{Answer,Ask,AskFor,Attack,Blow,Burn,Buy,Climb,Consult,Cut,Dig,%
+ Drink,Fill,Jump,JumpOver,Kiss,Listen,LookUnder,Mild,No,Pray,Pull,%
+ Push,PushDir,Rub,Set,SetTo,Sing,Sleep,Smell,,Sleep,Smell,Sorry,%
+ Squeeze,Strong,Swim,Swing,Taste,Tell,Think,ThrowAt,Tie,Touch,Turn,%
+ Wait,Wake,WakeOther,Wave,WaveHands,Yes},%
+ %
+ otherkeywords={->,-->},%
+ sensitive=false,%
+ morestring=[d]{"},%
+ morecomment=[l]{!}%
+ }[keywords,comments,strings]%
+\lst at definelanguage{Lisp}%
+ {morekeywords={abort,abs,acons,acos,acosh,adjoin,alphanumericp,alter,%
+ append,apply,apropos,aref,arrayp,ash,asin,asinh,assoc,atan,atanh,%
+ atom,bit,boole,boundp,break,butlast,byte,catenate,ceiling,cerror,%
+ char,character,characterp,choose,chunk,cis,close,clrhash,coerce,%
+ collect,commonp,compile,complement,complex,complexp,concatenate,%
+ conjugate,cons,consp,constantp,continue,cos,cosh,cotruncate,%
+ count,delete,denominator,describe,directory,disassemble,%
+ documentation,dpb,dribble,ed,eighth,elt,enclose,endp,eq,eql,%
+ equal,equalp,error,eval,evalhook,evenp,every,exp,expand,export,%
+ expt,fboundp,fceiling,fdefinition,ffloor,fifth,fill,find,first,%
+ float,floatp,floor,fmakunbound,format,fourth,fround,ftruncate,%
+ funcall,functionp,gatherer,gcd,generator,gensym,gentemp,get,getf,%
+ gethash,identity,imagpart,import,inspect,integerp,intern,%
+ intersection,tively,isqrt,keywordp,last,latch,lcm,ldb,ldiff,%
+ length,list,listen,listp,load,log,logand,logbitp,logcount,logeqv,%
+ logior,lognand,lognor,lognot,logtest,logxor,macroexpand,%
+ makunbound,map,mapc,mapcan,mapcar,mapcon,maphash,mapl,maplist,%
+ mask,max,member,merge,min,mingle,minusp,mismatch,mod,namestring,%
+ nbutlast,nconc,nintersection,ninth,not,notany,notevery,nreconc,%
+ nreverse,nsublis,nsubst,nth,nthcdr,null,numberp,numerator,nunion,%
+ oddp,open,packagep,pairlis,pathname,pathnamep,phase,plusp,%
+ position,positions,pprint,previous,princ,print,proclaim,provide,%
+ random,rassoc,rational,rationalize,rationalp,read,readtablep,%
+ realp,realpart,reduce,rem,remhash,remove,remprop,replace,require,%
+ rest,revappend,reverse,room,round,rplaca,rplacd,sbit,scan,schar,%
+ search,second,series,set,seventh,shadow,signal,signum,sin,sinh,%
+ sixth,sleep,some,sort,split,sqrt,streamp,string,stringp,sublis,%
+ subseq,subseries,subsetp,subst,substitute,subtypep,svref,sxhash,%
+ symbolp,tailp,tan,tanh,tenth,terpri,third,truename,truncate,%
+ typep,unexport,unintern,union,until,values,vector,vectorp,warn,%
+ write,zerop,and,assert,case,ccase,cond,ctypecase,decf,declaim,%
+ defclass,defconstant,defgeneric,defmacro,defmethod,defpackage,%
+ defparameter,defsetf,defstruct,deftype,defun,defvar,do,dolist,%
+ dotimes,ecase,encapsulated,etypecase,flet,formatter,gathering,%
+ incf,iterate,labels,let,locally,loop,macrolet,mapping,or,pop,%
+ producing,prog,psetf,psetq,push,pushnew,remf,return,rotatef,%
+ setf,shiftf,step,time,trace,typecase,unless,untrace,when},%
+ sensitive,% ???
+ alsodigit=-,%
+ morecomment=[l];,%
+ morecomment=[s]{\#|}{|\#},% 1997 Aslak Raanes
+ morestring=[b]"%
+ }[keywords,comments,strings]%
+%%
+%% AutoLISP/VisualLISP - Stefan Lagotzki, info at lagotzki.de
+%%
+\lst at definelanguage[Auto]{Lisp}%
+ {morekeywords={abs,acad_colordlg,acad_helpdlg,acad_strlsort,%
+ action_tile,add_list,alert,alloc,and,angle,angtof,angtos,append,%
+ apply,arx,arxload,arxunload,ascii,assoc,atan,atof,atoi,atom,%
+ atoms-family,autoarxload,autoload,Boole,boundp,caddr,cadr,car,%
+ cdr,chr,client_data_tile,close,command,cond,cons,cos,cvunit,%
+ defun,defun-q,defun-q-list-ref,defun-q-list-set,dictadd,dictnext,%
+ dictremove,dictrename,dictsearch,dimx_tile,dimy_tile,distance,%
+ distof,done_dialog,end_image,end_list,entdel,entget,entlast,%
+ entmake,entmakex,entmod,entnext,entsel,entupd,eq,equal,*error*,%
+ eval,exit,exp,expand,expt,fill_image,findfile,fix,float,foreach,%
+ function,gc,gcd,get_attr,get_tile,getangle,getcfg,getcname,%
+ getcorner,getdist,getenv,getfiled,getint,getkword,getorient,%
+ getpoint,getreal,getstring,getvar,graphscr,grclear,grdraw,grread,%
+ grtext,grvecs,handent,help,if,initdia,initget,inters,itoa,lambda,%
+ last,layoutlist,length,list,listp,load,load_dialog,log,logand,%
+ logior,lsh,mapcar,max,mem,member,menucmd,menugroup,min,minusp,%
+ mode_tile,namedobjdict,nentsel,nentselp,new_dialog,not,nth,%
+ null,numberp,open,or,osnap,polar,prin1,princ,print,progn,prompt,%
+ quit,quote,read,read-char,read-line,redraw,regapp,rem,repeat,%
+ reverse,rtos,set,set_tile,setcfg,setenv,setfunhelp,setq,%
+ setvar,setview,sin,slide_image,snvalid,sqrt,ssadd,ssdel,ssget,%
+ ssgetfirst,sslength,ssmemb,ssname,ssnamex,sssetfirst,startapp,%
+ start_dialog,start_image,start_list,strcase,strcat,strlen,subst,%
+ substr,tablet,tblnext,tblobjname,tblsearch,term_dialog,terpri,%
+ textbox,textpage,textscr,trace,trans,type,unload_dialog,untrace,%
+ vector_image,ver,vl-acad-defun,vl-acad-undefun,vl-arx-import,%
+ vl-bb-ref,vl-bb-set,vl-catch-all-apply,%
+ vl-catch-all-error-message,vl-catch-all-error-p,vl-cmdf,vl-consp,%
+ vl-directory-files,vl-doc-export,vl-doc-import,vl-doc-ref,%
+ vl-doc-set,vl-every,vl-exit-with-error,vl-exit-with-value,%
+ vl-file-copy,vl-file-delete,vl-file-directory-p,vl-file-rename,%
+ vl-file-size,vl-file-systime,vl-filename-base,%
+ vl-filename-directory,vl-filename-extension,vl-filename-mktemp,%
+ vl-get-resource,vl-list*,vl-list->string,%
+ vl-list-exported-functions,vl-list-length,vl-list-loaded-vlx,%
+ vl-load-all,vl-load-com,vl-load-reactors,vl-member-if,%
+ vl-member-if-not,vl-position,vl-prin1-to-string,%
+ vl-princ-to-string,vl-propagate,vl-registry-delete,%
+ vl-registry-descendents,vl-registry-read,vl-registry-write,%
+ vl-remove,vl-remove-if,vl-remove-if-not,vl-some,vl-sort,%
+ vl-sort-i,vl-string->list,vl-string-elt,vl-string-left-trim,%
+ vl-string-mismatch,vl-string-position,vl-string-right-trim,%
+ vl-string-search,vl-string-subst,vl-string-translate,%
+ vl-string-trim,vl-symbol-name,vl-symbol-value,vl-symbolp,%
+ vl-unload-vlx,vl-vbaload,vl-vbarun,vl-vlx-loaded-p,vlax-3D-point,%
+ vlax-add-cmd,vlax-create-object,vlax-curve-getArea,%
+ vlax-curve-getDistAtParam,vlax-curve-getDistAtPoint,%
+ vlax-curve-getEndParam,vlax-curve-getEndPoint,%
+ vlax-curve-getParamAtDist,vlax-curve-getParamAtPoint,%
+ vlax-curve-getPointAtDist,vlax-curve-getPointAtParam,%
+ vlax-curve-getStartParam,vlax-curve-getStartPoint,%
+ vlax-curve-isClosed,vlax-curve-isPeriodic,vlax-curve-isPlanar,%
+ vlax-curve-getClosestPointTo,%
+ vlax-curve-getClosestPointToProjection,vlax-curve-getFirstDeriv,%
+ vlax-curve-getSecondDeriv,vlax-dump-object,%
+ vlax-ename->vla-object,vlax-erased-p,vlax-for,%
+ vlax-get-acad-object,vlax-get-object,vlax-get-or-create-object,%
+ vlax-get-property,vlax-import-type-library,vlax-invoke-method,%
+ vlax-ldata-delete,vlax-ldata-get,vlax-ldata-list,vlax-ldata-put,%
+ vlax-ldata-test,vlax-make-safearray,vlax-make-variant,%
+ vlax-map-collection,vlax-method-applicable-p,%
+ vlax-object-released-p,vlax-product-key,%
+ vlax-property-available-p,vlax-put-property,vlax-read-enabled-p,%
+ vlax-release-object,vlax-remove-cmd,vlax-safearray-fill,%
+ vlax-safearray-get-dim,vlax-safearray-get-element,%
+ vlax-safearray-get-l-bound,vlax-safearray-get-u-bound,%
+ vlax-safearray-put-element,vlax-safearray-type,%
+ vlax-safearray->list,vlax-tmatrix,vlax-typeinfo-available-p,%
+ vlax-variant-change-type,vlax-variant-type,vlax-variant-value,%
+ vlax-vla-object->ename,vlax-write-enabled-p,vlisp-compile,%
+ vlr-acdb-reactor,vlr-add,vlr-added-p,vlr-beep-reaction,%
+ vlr-command-reactor,vlr-current-reaction-name,vlr-data,%
+ vlr-data-set,vlr-deepclone-reactor,vlr-docmanager-reactor,%
+ vlr-dwg-reactor,vlr-dxf-reactor,vlr-editor-reactor,%
+ vlr-insert-reactor,vlr-linker-reactor,vlr-lisp-reactor,%
+ vlr-miscellaneous-reactor,vlr-mouse-reactor,vlr-notification,%
+ vlr-object-reactor,vlr-owner-add,vlr-owner-remove,vlr-owners,%
+ vlr-pers,vlr-pers-list,vlr-pers-p,vlr-pers-release,%
+ vlr-reaction-names,vlr-reaction-set,vlr-reactions,vlr-reactors,%
+ vlr-remove,vlr-remove-all,vlr-set-notification,%
+ vlr-sysvar-reactor,vlr-toolbar-reactor,vlr-trace-reaction,%
+ vlr-type,vlr-types,vlr-undo-reactor,vlr-wblock-reactor,%
+ vlr-window-reactor,vlr-xref-reactor,vports,wcmatch,while,%
+ write-char,write-line,xdroom,xdsize,zerop},%
+ alsodigit=->,%
+ otherkeywords={1+,1-},%
+ sensitive=false,%
+ morecomment=[l];,%
+ morecomment=[l];;,%
+ morestring=[b]"%
+ }[keywords,comments,strings]%
+%%
+%% Make definitions (c) 2000 Rolf Niepraschk
+%%
+\lst at definelanguage[gnu]{make}%
+ {morekeywords={SHELL,MAKE,MAKEFLAGS,$@,$\%,$<,$?,$^,$+,$*,%
+ @,^,<,\%,+,?,*,% Markus Pahlow
+ export,unexport,include,override,define,ifdef,ifneq,ifeq,else,%
+ endif,vpath,subst,patsubst,strip,findstring,filter,filter-out,%
+ sort,dir,notdir,suffix,basename,addsuffix,addprefix,join,word,%
+ words,firstword,wildcard,shell,origin,foreach,%
+ @D, at F,*D,*F,\%D,\%F,<D,<F,^D,^F,+D,+F,?D,?F,%
+ AR,AS,CC,CXX,CO,CPP,FC,GET,LEX,PC,YACC,YACCR,MAKEINFO,TEXI2DVI,%
+ WEAVE,CWEAVE,TANGLE,CTANGLE,RM,M2C,LINT,COMPILE,LINK,PREPROCESS,%
+ CHECKOUT,%
+ ARFLAGS,ASFLAGS,CFLAGS,CXXFLAGS,COFLAGS,CPPFLAGS,FFLAGS,GFLAGS,%
+ LDFLAGS,LOADLIBES,LFLAGS,PFLAGS,RFLAGS,YFLAGS,M2FLAGS,MODFLAGS,%
+ LINTFLAGS,MAKEINFO_FLAGS,TEXI2DVI_FLAGS,COFLAGS,GFLAGS,%
+ OUTPUT_OPTION,SCCS_OUTPUT_OPTION,% missing comma: Markus Pahlow
+ .PHONY,.SUFFIXES,.DEFAULT,.PRECIOUS,.INTERMEDIATE,.SECONDARY,%
+ .IGNORE,.SILENT,.EXPORT_ALL_VARIABLES,MAKEFILES,VPATH,MAKESHELL,%
+ MAKELEVEL,MAKECMDGOALS,SUFFIXES},%
+ sensitive=true,
+ morecomment=[l]\#,%
+ morestring=[b]"%
+ }[keywords,comments,strings,make]%
+\lst at definelanguage{make}
+ {morekeywords={SHELL,MAKE,MAKEFLAGS,$@,$\%,$<,$?,$^,$+,$*},%
+ sensitive=true,%
+ morecomment=[l]\#,%
+ morestring=[b]"%
+ }[keywords,comments,strings,make]%
+%%
+%% Mercury definition (c) 1997 Dominique de Waleffe
+%% Extended (c) 2001 Ralph Becket
+%%
+\lst at definelanguage{Mercury}%
+ {otherkeywords={::,->,-->,--->,:-,==,=>,<=,<=>},%
+ morekeywords={module,include_module,import_module,interface,%
+ end_module,implementation,mode,is,failure,semidet,nondet,det,%
+ multi,erroneous,inst,in,out,di,uo,ui,type,typeclass,instance,%
+ where,with_type,pred,func,lambda,impure,semipure,if,then,else,%
+ some,all,not,true,fail,pragma,memo,no_inline,inline,loop_check,%
+ minimal_model,fact_table,type_spec,terminates,does_not_terminate,%
+ check_termination,promise_only_solution,unsafe_promise_unique,%
+ source_file,obsolete,import,export,c_header_code,c_code,%
+ foreign_code,foreign_proc,may_call_mercury,will_not_call_mercury,%
+ thread_safe,not_thread_safe},%
+ sensitive=t,%
+ morecomment=[l]\%,%
+ morecomment=[s]{/*}{*/},%
+ morestring=[bd]",%
+ morestring=[bd]'%
+ }[keywords,comments,strings]%
+%%
+%% Miranda definition (c) 1998 Peter Bartke
+%%
+%% Miranda: pure lazy functional language with polymorphic type system,
+%% garbage collection and functions as first class citizens
+%%
+\lst at definelanguage{Miranda}%
+ {morekeywords={abstype,div,if,mod,otherwise,readvals,show,type,where,%
+ with,bool,char,num,sys_message,False,True,Appendfile,Closefile,%
+ Exit,Stderr,Stdout,System,Tofile,\%include,\%export,\%free,%
+ \%insert,abs,and,arctan,cjustify,code,concat,const,converse,cos,%
+ decode,digit,drop,dropwhile,entier,error,exp,filemode,filter,%
+ foldl,foldl1,foldr,foldr1,force,fst,getenv,hd,hugenum,id,index,%
+ init,integer,iterate,last,lay,layn,letter,limit,lines,ljustify,%
+ log,log10,map,map2,max,max2,member,merge,min,min2,mkset,neg,%
+ numval,or,pi,postfix,product,read,rep,repeat,reverse,rjustify,%
+ scan,seq,showfloat,shownum,showscaled,sin,snd,sort,spaces,sqrt,%
+ subtract,sum,system,take,takewhile,tinynum,tl,transpose,undef,%
+ until,zip2,zip3,zip4,zip5,zip6,zip},%
+ sensitive,%
+ morecomment=[l]||,%
+ morestring=[b]"%
+ }[keywords,comments,strings]%
+%%
+%% ML definition (c) 1999 Torben Hoffmann
+%%
+\lst at definelanguage{ML}%
+ {morekeywords={abstype,and,andalso,as,case,do,datatype,else,end,%
+ eqtype,exception,fn,fun,functor,handle,if,in,include,infix,%
+ infixr,let,local,nonfix,of,op,open,orelse,raise,rec,sharing,sig,%
+ signature,struct,structure,then,type,val,with,withtype,while},%
+ sensitive,%
+ morecomment=[n]{(*}{*)},%
+ morestring=[d]"%
+ }[keywords,comments,strings]%
+%%
+%% Oz definition (c) Andres Becerra Sandoval
+%%
+\lst at definelanguage{Oz}%
+ {morekeywords={andthen,at,attr,case,catch,choice,class,%
+ cond,declare,define,dis,div,else,elsecase,%
+ elseif,end,export,fail,false,feat,finally,%
+ from,fun,functor,if,import,in,local,%
+ lock,meth,mod,not,of,or,orelse,%
+ prepare,proc,prop,raise,require,self,skip,%
+ then,thread,true,try,unit},%
+ sensitive=true,%
+ morecomment=[l]{\%},%
+ morecomment=[s]{/*}{*/},%
+ morestring=[b]",%
+ morestring=[d]'%
+ }[keywords,comments,strings]%
+%%
+%% PHP definition by Luca Balzerani
+%%
+\lst at definelanguage{PHP}%
+ {morekeywords={%
+ %--- core language
+ <?,?>,::,break,case,continue,default,do,else,%
+ elseif,for,foreach,if,include,require,phpinfo,%
+ switch,while,false,FALSE,true,TRUE,%
+ %--- apache functions
+ apache_lookup_uri,apache_note,ascii2ebcdic,ebcdic2ascii,%
+ virtual,apache_child_terminate,apache_setenv,%
+ %--- array functions
+ array,array_change_key_case,array_chunk,array_count_values,%
+ array_filter,array_flip,array_fill,array_intersect,%
+ array_keys,array_map,array_merge,array_merge_recursive,%
+ array_pad,array_pop,array_push,array_rand,array_reverse,%
+ array_shift,array_slice,array_splice,array_sum,array_unique,%
+ array_values,array_walk,arsort,asort,compact,count,current,each,%
+ extract,in_array,array_search,key,krsort,ksort,list,natsort,%
+ next,pos,prev,range,reset,rsort,shuffle,sizeof,sort,uasort,%
+ usort,%
+ %--- aspell functions
+ aspell_new,aspell_check,aspell_check_raw,aspell_suggest,%
+ %--- bc functions
+ bcadd,bccomp,bcdiv,bcmod,bcmul,bcpow,bcscale,bcsqrt,bcsub,%
+ %--- bzip2 functions
+ bzclose,bzcompress,bzdecompress,bzerrno,bzerror,bzerrstr,%
+ bzopen,bzread,bzwrite,%
+ %--- calendar functions
+ JDToGregorian,GregorianToJD,JDToJulian,JulianToJD,JDToJewish,%
+ JDToFrench,FrenchToJD,JDMonthName,JDDayOfWeek,easter_date,%
+ unixtojd,jdtounix,cal_days_in_month,cal_to_jd,cal_from_jd,%
+ %--- ccvs functions
+ ccvs_init,ccvs_done,ccvs_new,ccvs_add,ccvs_delete,ccvs_auth,%
+ ccvs_reverse,ccvs_sale,ccvs_void,ccvs_status,ccvs_count,%
+ ccvs_report,ccvs_command,ccvs_textvalue,%
+ %--- classobj functions
+ call_user_method,call_user_method_array,class_exists,get_class,%
+ get_class_vars,get_declared_classes,get_object_vars,%
+ is_a,is_subclass_of,method_exists,%
+ %--- com functions
+ COM,VARIANT,com_load,com_invoke,com_propget,com_get,com_propput,%
+ com_set,com_addref,com_release,com_isenum,com_load_typelib,%
+ %--- cpdf functions
+ cpdf_add_annotation,cpdf_add_outline,cpdf_arc,cpdf_begin_text,%
+ cpdf_clip,cpdf_close,cpdf_closepath,cpdf_closepath_fill_stroke,%
+ cpdf_continue_text,cpdf_curveto,cpdf_end_text,cpdf_fill,%
+ cpdf_finalize,cpdf_finalize_page,%
+ cpdf_import_jpeg,cpdf_lineto,cpdf_moveto,cpdf_newpath,cpdf_open,%
+ cpdf_page_init,cpdf_place_inline_image,cpdf_rect,cpdf_restore,%
+ cpdf_rmoveto,cpdf_rotate,cpdf_rotate_text,cpdf_save,%
+ cpdf_scale,cpdf_set_char_spacing,cpdf_set_creator,%
+ cpdf_set_font,cpdf_set_horiz_scaling,cpdf_set_keywords,%
+ cpdf_set_page_animation,cpdf_set_subject,cpdf_set_text_matrix,%
+ cpdf_set_text_rendering,cpdf_set_text_rise,cpdf_set_title,%
+ cpdf_setdash,cpdf_setflat,cpdf_setgray,cpdf_setgray_fill,%
+ cpdf_setlinecap,cpdf_setlinejoin,cpdf_setlinewidth,%
+ cpdf_setrgbcolor,cpdf_setrgbcolor_fill,cpdf_setrgbcolor_stroke,%
+ cpdf_show_xy,cpdf_stringwidth,cpdf_set_font_directories,%
+ cpdf_set_viewer_preferences,cpdf_stroke,cpdf_text,%
+ cpdf_set_action_url,%
+ %--- crack functions
+ crack_opendict,crack_closedict,crack_check,crack_getlastmessage,%
+ %--- ctype functions
+ ctype_alnum,ctype_alpha,ctype_cntrl,ctype_digit,ctype_lower,%
+ ctype_print,ctype_punct,ctype_space,ctype_upper,ctype_xdigit,%
+ %--- curl functions
+ curl_init,curl_setopt,curl_exec,curl_close,curl_version,%
+ curl_error,curl_getinfo,%
+ %--- cybercash functions
+ cybercash_encr,cybercash_decr,cybercash_base64_encode,%
+ %--- cybermut functions
+ cybermut_creerformulairecm,cybermut_testmac,%
+ %--- cyrus functions
+ cyrus_connect,cyrus_authenticate,cyrus_bind,cyrus_unbind,%
+ cyrus_close,%
+ %--- datetime functions
+ checkdate,date,getdate,gettimeofday,gmdate,gmmktime,gmstrftime,%
+ microtime,mktime,strftime,time,strtotime,%
+ %--- dbase functions
+ dbase_create,dbase_open,dbase_close,dbase_pack,dbase_add_record,%
+ dbase_delete_record,dbase_get_record,%
+ dbase_numfields,dbase_numrecords,%
+ %--- dba functions
+ dba_close,dba_delete,dba_exists,dba_fetch,dba_firstkey,%
+ dba_nextkey,dba_popen,dba_open,dba_optimize,dba_replace,%
+ %--- dbm functions
+ dbmopen,dbmclose,dbmexists,dbmfetch,dbminsert,dbmreplace,%
+ dbmfirstkey,dbmnextkey,dblist,%
+ %--- dbx functions
+ dbx_close,dbx_connect,dbx_error,dbx_query,dbx_sort,dbx_compare,%
+ %--- dio functions
+ dio_open,dio_read,dio_write,dio_truncate,dio_stat,dio_seek,%
+ dio_close,%
+ %--- dir functions
+ chroot,chdir,dir,closedir,getcwd,opendir,readdir,rewinddir,%
+ %--- dotnet functions
+ dotnet_load,%
+ %--- errorfunc functions
+ error_log,error_reporting,restore_error_handler,%
+ trigger_error,user_error,%
+ %--- exec functions
+ escapeshellarg,escapeshellcmd,exec,passthru,system,shell_exec,%
+ %--- fbsql functions
+ fbsql_affected_rows,fbsql_autocommit,fbsql_change_user,%
+ fbsql_commit,fbsql_connect,fbsql_create_db,fbsql_create_blob,%
+ fbsql_database_password,fbsql_data_seek,fbsql_db_query,%
+ fbsql_drop_db,fbsql_errno,fbsql_error,fbsql_fetch_array,%
+ fbsql_fetch_field,fbsql_fetch_lengths,fbsql_fetch_object,%
+ fbsql_field_flags,fbsql_field_name,fbsql_field_len,%
+ fbsql_field_table,fbsql_field_type,fbsql_free_result,%
+ fbsql_list_dbs,fbsql_list_fields,fbsql_list_tables,%
+ fbsql_num_fields,fbsql_num_rows,fbsql_pconnect,fbsql_query,%
+ fbsql_read_clob,fbsql_result,fbsql_rollback,fbsql_set_lob_mode,%
+ fbsql_start_db,fbsql_stop_db,fbsql_tablename,fbsql_warnings,%
+ fbsql_get_autostart_info,fbsql_hostname,fbsql_password,%
+ fbsql_username,%
+ %--- fdf functions
+ fdf_open,fdf_close,fdf_create,fdf_save,fdf_get_value,%
+ fdf_next_field_name,fdf_set_ap,fdf_set_status,fdf_get_status,%
+ fdf_get_file,fdf_set_flags,fdf_set_opt,%
+ fdf_set_javascript_action,fdf_set_encoding,fdf_add_template,%
+ %--- filepro functions
+ filepro,filepro_fieldname,filepro_fieldtype,filepro_fieldwidth,%
+ filepro_fieldcount,filepro_rowcount,%
+ %--- filesystem functions
+ basename,chgrp,chmod,chown,clearstatcache,copy,delete,dirname,%
+ diskfreespace,disk_total_space,fclose,feof,fflush,fgetc,fgetcsv,%
+ fgetss,file_get_contents,file,file_exists,fileatime,filectime,%
+ fileinode,filemtime,fileowner,fileperms,filesize,filetype,flock,%
+ fopen,fpassthru,fputs,fread,fscanf,fseek,fstat,ftell,ftruncate,%
+ set_file_buffer,is_dir,is_executable,is_file,is_link,%
+ is_writable,is_writeable,is_uploaded_file,link,linkinfo,mkdir,%
+ parse_ini_file,pathinfo,pclose,popen,readfile,readlink,rename,%
+ rmdir,stat,lstat,realpath,symlink,tempnam,tmpfile,touch,umask,%
+ %--- fribidi functions
+ fribidi_log2vis,%
+ %--- ftp functions
+ ftp_connect,ftp_login,ftp_pwd,ftp_cdup,ftp_chdir,ftp_mkdir,%
+ ftp_nlist,ftp_rawlist,ftp_systype,ftp_pasv,ftp_get,ftp_fget,%
+ ftp_fput,ftp_size,ftp_mdtm,ftp_rename,ftp_delete,ftp_site,%
+ ftp_quit,ftp_exec,ftp_set_option,ftp_get_option,%
+ %--- funchand functions
+ call_user_func_array,call_user_func,create_function,%
+ func_get_args,func_num_args,function_exists,%
+ register_shutdown_function,register_tick_function,%
+ %--- gettext functions
+ bindtextdomain,bind_textdomain_codeset,dcgettext,dcngettext,%
+ dngettext,gettext,ngettext,textdomain,%
+ %--- gmp functions
+ gmp_init,gmp_intval,gmp_strval,gmp_add,gmp_sub,gmp_mul,%
+ gmp_div_r,gmp_div_qr,gmp_div,gmp_mod,gmp_divexact,gmp_cmp,%
+ gmp_com,gmp_abs,gmp_sign,gmp_fact,gmp_sqrt,gmp_sqrtrm,%
+ gmp_pow,gmp_powm,gmp_prob_prime,gmp_gcd,gmp_gcdext,gmp_invert,%
+ gmp_jacobi,gmp_random,gmp_and,gmp_or,gmp_xor,gmp_setbit,%
+ gmp_scan0,gmp_scan1,gmp_popcount,gmp_hamdist,%
+ %--- http functions
+ header,headers_sent,setcookie,%
+ %--- hw functions
+ hw_Array2Objrec,hw_Children,hw_ChildrenObj,hw_Close,hw_Connect,%
+ hw_Deleteobject,hw_DocByAnchor,hw_DocByAnchorObj,%
+ hw_Document_BodyTag,hw_Document_Content,hw_Document_SetContent,%
+ hw_ErrorMsg,hw_EditText,hw_Error,hw_Free_Document,hw_GetParents,%
+ hw_GetChildColl,hw_GetChildCollObj,hw_GetRemote,%
+ hw_GetSrcByDestObj,hw_GetObject,hw_GetAndLock,hw_GetText,%
+ hw_GetObjectByQueryObj,hw_GetObjectByQueryColl,%
+ hw_GetChildDocColl,hw_GetChildDocCollObj,hw_GetAnchors,%
+ hw_Mv,hw_Identify,hw_InCollections,hw_Info,hw_InsColl,hw_InsDoc,%
+ hw_InsertObject,hw_mapid,hw_Modifyobject,hw_New_Document,%
+ hw_Output_Document,hw_pConnect,hw_PipeDocument,hw_Root,%
+ hw_Who,hw_getusername,hw_stat,hw_setlinkroot,hw_connection_info,%
+ hw_insertanchors,hw_getrellink,hw_changeobject,%
+ %--- ibase functions
+ ibase_connect,ibase_pconnect,ibase_close,ibase_query,%
+ ibase_fetch_row,ibase_fetch_object,ibase_field_info,%
+ ibase_free_result,ibase_prepare,ibase_execute,ibase_trans,%
+ ibase_rollback,ibase_timefmt,ibase_num_fields,ibase_blob_add,%
+ ibase_blob_close,ibase_blob_create,ibase_blob_echo,%
+ ibase_blob_import,ibase_blob_info,ibase_blob_open,%
+ %--- icap functions
+ icap_open,icap_close,icap_fetch_event,icap_list_events,%
+ icap_delete_event,icap_snooze,icap_list_alarms,%
+ icap_rename_calendar,icap_delete_calendar,icap_reopen,%
+ %--- iconv functions
+ iconv,iconv_get_encoding,iconv_set_encoding,ob_iconv_handler,%
+ %--- ifx functions
+ ifx_connect,ifx_pconnect,ifx_close,ifx_query,ifx_prepare,ifx_do,%
+ ifx_errormsg,ifx_affected_rows,ifx_getsqlca,ifx_fetch_row,%
+ ifx_fieldtypes,ifx_fieldproperties,ifx_num_fields,ifx_num_rows,%
+ ifx_create_char,ifx_free_char,ifx_update_char,ifx_get_char,%
+ ifx_copy_blob,ifx_free_blob,ifx_get_blob,ifx_update_blob,%
+ ifx_textasvarchar,ifx_byteasvarchar,ifx_nullformat,%
+ ifxus_free_slob,ifxus_close_slob,ifxus_open_slob,%
+ ifxus_seek_slob,ifxus_read_slob,ifxus_write_slob,%
+ %--- iisfunc functions
+ iis_get_server_by_path,iis_get_server_by_comment,iis_add_server,%
+ iis_set_dir_security,iis_get_dir_security,iis_set_server_rights,%
+ iis_set_script_map,iis_get_script_map,iis_set_app_settings,%
+ iis_stop_server,iis_stop_service,iis_start_service,%
+ %--- image functions
+ exif_imagetype,exif_read_data,exif_thumbnail,getimagesize,%
+ imagealphablending,imagearc,imagefilledarc,imageellipse,%
+ imagechar,imagecharup,imagecolorallocate,imagecolordeallocate,%
+ imagecolorclosest,imagecolorclosestalpha,imagecolorclosestthwb,%
+ imagecolorexactalpha,imagecolorresolve,imagecolorresolvealpha,%
+ imagecolorset,imagecolorsforindex,imagecolorstotal,%
+ imagecopy,imagecopymerge,imagecopymergegray,imagecopyresized,%
+ imagecreate,imagecreatetruecolor,imagetruecolortopalette,%
+ imagecreatefromgd2,imagecreatefromgd2part,imagecreatefromgif,%
+ imagecreatefrompng,imagecreatefromwbmp,imagecreatefromstring,%
+ imagecreatefromxpm,imagedashedline,imagedestroy,imagefill,%
+ imagefilledrectangle,imagefilltoborder,imagefontheight,%
+ imagegd,imagegd2,imagegif,imagepng,imagejpeg,imagewbmp,%
+ imageline,imageloadfont,imagepalettecopy,imagepolygon,%
+ imagepsencodefont,imagepsfreefont,imagepsloadfont,%
+ imagepsslantfont,imagepstext,imagerectangle,imagesetpixel,%
+ imagesetstyle,imagesettile,imagesetthickness,imagestring,%
+ imagesx,imagesy,imagettfbbox,imageftbbox,imagettftext,%
+ imagetypes,jpeg2wbmp,png2wbmp,iptcembed,read_exif_data,%
+ %--- imap functions
+ imap_8bit,imap_alerts,imap_append,imap_base64,imap_binary,%
+ imap_bodystruct,imap_check,imap_clearflag_full,imap_close,%
+ imap_delete,imap_deletemailbox,imap_errors,imap_expunge,%
+ imap_fetchbody,imap_fetchheader,imap_fetchstructure,%
+ imap_getmailboxes,imap_getsubscribed,imap_header,%
+ imap_headers,imap_last_error,imap_listmailbox,%
+ imap_mail,imap_mail_compose,imap_mail_copy,imap_mail_move,%
+ imap_mime_header_decode,imap_msgno,imap_num_msg,imap_num_recent,%
+ imap_ping,imap_popen,imap_qprint,imap_renamemailbox,imap_reopen,%
+ imap_rfc822_parse_headers,imap_rfc822_write_address,%
+ imap_search,imap_setacl,imap_set_quota,imap_setflag_full,%
+ imap_status,imap_subscribe,imap_uid,imap_undelete,%
+ imap_utf7_decode,imap_utf7_encode,imap_utf8,imap_thread,%
+ %--- info functions
+ assert,assert_options,extension_loaded,dl,getenv,get_cfg_var,%
+ get_defined_constants,get_extension_funcs,getmygid,%
+ get_loaded_extensions,get_magic_quotes_gpc,%
+ getlastmod,getmyinode,getmypid,getmyuid,get_required_files,%
+ ini_alter,ini_get,ini_get_all,ini_restore,ini_set,phpcredits,%
+ phpversion,php_logo_guid,php_sapi_name,php_uname,putenv,%
+ set_time_limit,version_compare,zend_logo_guid,zend_version,%
+ %--- ircg functions
+ ircg_pconnect,ircg_fetch_error_msg,ircg_set_current,ircg_join,%
+ ircg_msg,ircg_notice,ircg_nick,ircg_topic,ircg_channel_mode,%
+ ircg_whois,ircg_kick,ircg_ignore_add,ircg_ignore_del,%
+ ircg_is_conn_alive,ircg_lookup_format_messages,%
+ ircg_set_on_die,ircg_set_file,ircg_get_username,%
+ ircg_nickname_unescape,%
+ %--- java functions
+ java_last_exception_clear,java_last_exception_get,%
+ %--- ldap functions
+ ldap_add,ldap_bind,ldap_close,ldap_compare,ldap_connect,%
+ ldap_delete,ldap_dn2ufn,ldap_err2str,ldap_errno,ldap_error,%
+ ldap_first_attribute,ldap_first_entry,ldap_free_result,%
+ ldap_get_dn,ldap_get_entries,ldap_get_option,ldap_get_values,%
+ ldap_list,ldap_modify,ldap_mod_add,ldap_mod_del,%
+ ldap_next_attribute,ldap_next_entry,ldap_read,ldap_rename,%
+ ldap_set_option,ldap_unbind,ldap_8859_to_t61,%
+ ldap_next_reference,ldap_parse_reference,ldap_parse_result,%
+ ldap_sort,ldap_start_tls,ldap_t61_to_8859,%
+ %--- mail functions
+ mail,ezmlm_hash,%
+ %--- math functions
+ abs,acos,acosh,asin,asinh,atan,atanh,atan2,base_convert,bindec,%
+ cos,cosh,decbin,dechex,decoct,deg2rad,exp,expm1,floor,%
+ hexdec,hypot,is_finite,is_infinite,is_nan,lcg_value,log,log10,%
+ max,min,mt_rand,mt_srand,mt_getrandmax,number_format,octdec,pi,%
+ rad2deg,rand,round,sin,sinh,sqrt,srand,tan,tanh,%
+ %--- mbstring functions
+ mb_language,mb_parse_str,mb_internal_encoding,mb_http_input,%
+ mb_detect_order,mb_substitute_character,mb_output_handler,%
+ mb_strlen,mb_strpos,mb_strrpos,mb_substr,mb_strcut,mb_strwidth,%
+ mb_convert_encoding,mb_detect_encoding,mb_convert_kana,%
+ mb_decode_mimeheader,mb_convert_variables,%
+ mb_decode_numericentity,mb_send_mail,mb_get_info,%
+ mb_ereg,mb_eregi,mb_ereg_replace,mb_eregi_replace,mb_split,%
+ mb_ereg_search,mb_ereg_search_pos,mb_ereg_search_regs,%
+ mb_ereg_search_getregs,mb_ereg_search_getpos,%
+ %--- mcal functions
+ mcal_open,mcal_popen,mcal_reopen,mcal_close,%
+ mcal_rename_calendar,mcal_delete_calendar,mcal_fetch_event,%
+ mcal_append_event,mcal_store_event,mcal_delete_event,%
+ mcal_list_alarms,mcal_event_init,mcal_event_set_category,%
+ mcal_event_set_description,mcal_event_set_start,%
+ mcal_event_set_alarm,mcal_event_set_class,mcal_is_leap_year,%
+ mcal_date_valid,mcal_time_valid,mcal_day_of_week,%
+ mcal_date_compare,mcal_next_recurrence,%
+ mcal_event_set_recur_daily,mcal_event_set_recur_weekly,%
+ mcal_event_set_recur_monthly_wday,mcal_event_set_recur_yearly,%
+ mcal_event_add_attribute,mcal_expunge,mcal_week_of_year,%
+ %--- mcrypt functions
+ mcrypt_get_cipher_name,mcrypt_get_block_size,%
+ mcrypt_create_iv,mcrypt_cbc,mcrypt_cfb,mcrypt_ecb,mcrypt_ofb,%
+ mcrypt_list_modes,mcrypt_get_iv_size,mcrypt_encrypt,%
+ mcrypt_module_open,mcrypt_module_close,mcrypt_generic_deinit,%
+ mcrypt_generic,mdecrypt_generic,mcrypt_generic_end,%
+ mcrypt_enc_is_block_algorithm_mode,%
+ mcrypt_enc_is_block_mode,mcrypt_enc_get_block_size,%
+ mcrypt_enc_get_supported_key_sizes,mcrypt_enc_get_iv_size,%
+ mcrypt_enc_get_modes_name,mcrypt_module_self_test,%
+ mcrypt_module_is_block_algorithm,mcrypt_module_is_block_mode,%
+ mcrypt_module_get_algo_key_size,%
+ %--- mhash functions
+ mhash_get_hash_name,mhash_get_block_size,mhash_count,mhash,%
+ %--- misc functions
+ connection_aborted,connection_status,connection_timeout,%
+ define,defined,die,eval,exit,get_browser,highlight_file,%
+ ignore_user_abort,iptcparse,leak,pack,show_source,sleep,uniqid,%
+ usleep,%
+ %--- mnogosearch functions
+ udm_add_search_limit,udm_alloc_agent,udm_api_version,%
+ udm_cat_list,udm_clear_search_limits,udm_errno,udm_error,%
+ udm_free_agent,udm_free_ispell_data,udm_free_res,%
+ udm_get_res_field,udm_get_res_param,udm_load_ispell_data,%
+ udm_check_charset,udm_check_stored,udm_close_stored,udm_crc32,%
+ %--- msession functions
+ msession_connect,msession_disconnect,msession_count,%
+ msession_destroy,msession_lock,msession_unlock,msession_set,%
+ msession_uniq,msession_randstr,msession_find,msession_list,%
+ msession_set_array,msession_listvar,msession_timeout,%
+ msession_getdata,msession_setdata,msession_plugin,%
+ %--- msql functions
+ msql,msql_affected_rows,msql_close,msql_connect,msql_create_db,%
+ msql_data_seek,msql_dbname,msql_drop_db,msql_dropdb,msql_error,%
+ msql_fetch_field,msql_fetch_object,msql_fetch_row,%
+ msql_field_seek,msql_fieldtable,msql_fieldtype,msql_fieldflags,%
+ msql_free_result,msql_freeresult,msql_list_fields,%
+ msql_list_dbs,msql_listdbs,msql_list_tables,msql_listtables,%
+ msql_num_rows,msql_numfields,msql_numrows,msql_pconnect,%
+ msql_regcase,msql_result,msql_select_db,msql_selectdb,%
+ %--- mssql functions
+ mssql_close,mssql_connect,mssql_data_seek,mssql_fetch_array,%
+ mssql_fetch_object,mssql_fetch_row,mssql_field_length,%
+ mssql_field_seek,mssql_field_type,mssql_free_result,%
+ mssql_min_error_severity,mssql_min_message_severity,%
+ mssql_num_fields,mssql_num_rows,mssql_pconnect,mssql_query,%
+ mssql_select_db,mssql_bind,mssql_execute,mssql_fetch_assoc,%
+ mssql_guid_string,mssql_init,mssql_rows_affected,%
+ %--- muscat functions
+ muscat_setup,muscat_setup_net,muscat_give,muscat_get,%
+ %--- mysql functions
+ mysql_affected_rows,mysql_change_user,mysql_character_set_name,%
+ mysql_connect,mysql_create_db,mysql_data_seek,mysql_db_name,%
+ mysql_drop_db,mysql_errno,mysql_error,mysql_escape_string,%
+ mysql_fetch_assoc,mysql_fetch_field,mysql_fetch_lengths,%
+ mysql_fetch_row,mysql_field_flags,mysql_field_name,%
+ mysql_field_seek,mysql_field_table,mysql_field_type,%
+ mysql_info,mysql_insert_id,mysql_list_dbs,mysql_list_fields,%
+ mysql_list_tables,mysql_num_fields,mysql_num_rows,%
+ mysql_ping,mysql_query,mysql_unbuffered_query,%
+ mysql_result,mysql_select_db,mysql_tablename,mysql_thread_id,%
+ mysql_get_host_info,mysql_get_proto_info,mysql_get_server_info,%
+ %--- network functions
+ checkdnsrr,closelog,debugger_off,debugger_on,%
+ fsockopen,gethostbyaddr,gethostbyname,gethostbynamel,getmxrr,%
+ getprotobynumber,getservbyname,getservbyport,ip2long,long2ip,%
+ pfsockopen,socket_get_status,socket_set_blocking,%
+ syslog,%
+ %--- nis functions
+ yp_get_default_domain,yp_order,yp_master,yp_match,yp_first,%
+ yp_errno,yp_err_string,yp_all,yp_cat,%
+ %--- oci8 functions
+ OCIDefineByName,OCIBindByName,OCILogon,OCIPLogon,OCINLogon,%
+ OCIExecute,OCICommit,OCIRollback,OCINewDescriptor,OCIRowCount,%
+ OCIResult,OCIFetch,OCIFetchInto,OCIFetchStatement,%
+ OCIColumnName,OCIColumnSize,OCIColumnType,OCIServerVersion,%
+ OCINewCursor,OCIFreeStatement,OCIFreeCursor,OCIFreeDesc,%
+ OCIError,OCIInternalDebug,OCICancel,OCISetPrefetch,%
+ OCISaveLobFile,OCISaveLob,OCILoadLob,OCIColumnScale,%
+ OCIColumnTypeRaw,OCINewCollection,OCIFreeCollection,%
+ OCICollAppend,OCICollAssignElem,OCICollGetElem,OCICollMax,%
+ OCICollTrim,%
+ %--- oracle functions
+ Ora_Bind,Ora_Close,Ora_ColumnName,Ora_ColumnSize,Ora_ColumnType,%
+ Ora_CommitOff,Ora_CommitOn,Ora_Do,Ora_Error,Ora_ErrorCode,%
+ Ora_Fetch,Ora_Fetch_Into,Ora_GetColumn,Ora_Logoff,Ora_Logon,%
+ Ora_Numcols,Ora_Numrows,Ora_Open,Ora_Parse,Ora_Rollback,%
+ %--- outcontrol functions
+ flush,ob_start,ob_get_contents,ob_get_length,ob_get_level,%
+ ob_flush,ob_clean,ob_end_flush,ob_end_clean,ob_implicit_flush,%
+ %--- ovrimos functions
+ ovrimos_connect,ovrimos_close,ovrimos_longreadlen,%
+ ovrimos_execute,ovrimos_cursor,ovrimos_exec,ovrimos_fetch_into,%
+ ovrimos_result,ovrimos_result_all,ovrimos_num_rows,%
+ ovrimos_field_name,ovrimos_field_type,ovrimos_field_len,%
+ ovrimos_free_result,ovrimos_commit,ovrimos_rollback,%
+ %--- pcntl functions
+ pcntl_fork,pcntl_signal,pcntl_waitpid,pcntl_wexitstatus,%
+ pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,%
+ pcntl_exec,%
+ %--- pcre functions
+ preg_match,preg_match_all,preg_replace,preg_replace_callback,%
+ preg_quote,preg_grep,Pattern Modifiers,Pattern Syntax,%
+ %--- pdf functions
+ pdf_add_annotation,pdf_add_bookmark,pdf_add_launchlink,%
+ pdf_add_note,pdf_add_outline,pdf_add_pdflink,pdf_add_thumbnail,%
+ pdf_arc,pdf_arcn,pdf_attach_file,pdf_begin_page,%
+ pdf_begin_template,pdf_circle,pdf_clip,pdf_close,pdf_closepath,%
+ pdf_closepath_stroke,pdf_close_image,pdf_close_pdi,%
+ pdf_concat,pdf_continue_text,pdf_curveto,pdf_delete,%
+ pdf_endpath,pdf_end_pattern,pdf_end_template,pdf_fill,%
+ pdf_findfont,pdf_get_buffer,pdf_get_font,pdf_get_fontname,%
+ pdf_get_image_height,pdf_get_image_width,pdf_get_parameter,%
+ pdf_get_pdi_value,pdf_get_majorversion,pdf_get_minorversion,%
+ pdf_initgraphics,pdf_lineto,pdf_makespotcolor,pdf_moveto,%
+ pdf_open,pdf_open_CCITT,pdf_open_file,pdf_open_gif,%
+ pdf_open_image_file,pdf_open_jpeg,pdf_open_memory_image,%
+ pdf_open_pdi_page,pdf_open_png,pdf_open_tiff,pdf_place_image,%
+ pdf_rect,pdf_restore,pdf_rotate,pdf_save,pdf_scale,pdf_setcolor,%
+ pdf_setflat,pdf_setfont,pdf_setgray,pdf_setgray_fill,%
+ pdf_setlinecap,pdf_setlinejoin,pdf_setlinewidth,pdf_setmatrix,%
+ pdf_setpolydash,pdf_setrgbcolor,pdf_setrgbcolor_fill,%
+ pdf_set_border_color,pdf_set_border_dash,pdf_set_border_style,%
+ pdf_set_duration,pdf_set_font,pdf_set_horiz_scaling,%
+ pdf_set_info_author,pdf_set_info_creator,pdf_set_info_keywords,%
+ pdf_set_info_title,pdf_set_leading,pdf_set_parameter,%
+ pdf_set_text_rendering,pdf_set_text_rise,pdf_set_text_matrix,%
+ pdf_set_word_spacing,pdf_show,pdf_show_boxed,pdf_show_xy,%
+ pdf_stringwidth,pdf_stroke,pdf_translate,%
+ %--- pfpro functions
+ pfpro_init,pfpro_cleanup,pfpro_process,pfpro_process_raw,%
+ %--- pgsql functions
+ pg_close,pg_affected_rows,pg_connect,pg_dbname,pg_end_copy,%
+ pg_query,pg_fetch_array,pg_fetch_object,pg_fetch_row,%
+ pg_field_name,pg_field_num,pg_field_prtlen,pg_field_size,%
+ pg_free_result,pg_last_oid,pg_host,pg_last_notice,pg_lo_close,%
+ pg_lo_export,pg_lo_import,pg_lo_open,pg_lo_read,pg_lo_seek,%
+ pg_lo_read_all,pg_lo_unlink,pg_lo_write,pg_num_fields,%
+ pg_options,pg_pconnect,pg_port,pg_put_line,pg_fetch_result,%
+ pg_client_encoding,pg_trace,pg_tty,pg_untrace,pg_get_result,%
+ pg_send_query,pg_cancel_query,pg_connection_busy,%
+ pg_connection_status,pg_copy_from,pg_copy_to,pg_escape_bytea,%
+ pg_result_error,%
+ %--- posix functions
+ posix_kill,posix_getpid,posix_getppid,posix_getuid,%
+ posix_getgid,posix_getegid,posix_setuid,posix_seteuid,%
+ posix_setegid,posix_getgroups,posix_getlogin,posix_getpgrp,%
+ posix_setpgid,posix_getpgid,posix_getsid,posix_uname,%
+ posix_ctermid,posix_ttyname,posix_isatty,posix_getcwd,%
+ posix_getgrnam,posix_getgrgid,posix_getpwnam,posix_getpwuid,%
+ %--- printer functions
+ printer_open,printer_abort,printer_close,printer_write,%
+ printer_set_option,printer_get_option,printer_create_dc,%
+ printer_start_doc,printer_end_doc,printer_start_page,%
+ printer_create_pen,printer_delete_pen,printer_select_pen,%
+ printer_delete_brush,printer_select_brush,printer_create_font,%
+ printer_select_font,printer_logical_fontheight,%
+ printer_draw_rectangle,printer_draw_elipse,printer_draw_text,%
+ printer_draw_chord,printer_draw_pie,printer_draw_bmp,%
+ %--- pspell functions
+ pspell_add_to_personal,pspell_add_to_session,pspell_check,%
+ pspell_config_create,pspell_config_ignore,pspell_config_mode,%
+ pspell_config_repl,pspell_config_runtogether,%
+ pspell_new,pspell_new_config,pspell_new_personal,%
+ pspell_store_replacement,pspell_suggest,%
+ %--- qtdom functions
+ qdom_tree,qdom_error,%
+ %--- readline functions
+ readline,readline_add_history,readline_clear_history,%
+ readline_info,readline_list_history,readline_read_history,%
+ %--- recode functions
+ recode_string,recode,recode_file,%
+ %--- regex functions
+ ereg,ereg_replace,eregi,eregi_replace,split,spliti,sql_regcase,%
+ %--- sem functions
+ sem_get,sem_acquire,sem_release,sem_remove,shm_attach,%
+ shm_remove,shm_put_var,shm_get_var,shm_remove_var,ftok,%
+ %--- sesam functions
+ sesam_connect,sesam_disconnect,sesam_settransaction,%
+ sesam_rollback,sesam_execimm,sesam_query,sesam_num_fields,%
+ sesam_diagnostic,sesam_fetch_result,sesam_affected_rows,%
+ sesam_field_array,sesam_fetch_row,sesam_fetch_array,%
+ sesam_free_result,%
+ %--- session functions
+ session_start,session_destroy,session_name,session_module_name,%
+ session_id,session_register,session_unregister,session_unset,%
+ session_get_cookie_params,session_set_cookie_params,%
+ session_encode,session_set_save_handler,session_cache_limiter,%
+ session_write_close,%
+ %--- shmop functions
+ shmop_open,shmop_read,shmop_write,shmop_size,shmop_delete,%
+ %--- snmp functions
+ snmpget,snmpset,snmpwalk,snmpwalkoid,snmp_get_quick_print,%
+ snmprealwalk,%
+ %--- strings functions
+ addcslashes,addslashes,bin2hex,chop,chr,chunk_split,%
+ count_chars,crc32,crypt,echo,explode,get_html_translation_table,%
+ hebrev,hebrevc,htmlentities,htmlspecialchars,implode,join,%
+ localeconv,ltrim,md5,md5_file,metaphone,nl_langinfo,nl2br,ord,%
+ print,printf,quoted_printable_decode,quotemeta,str_rot13,rtrim,%
+ setlocale,similar_text,soundex,sprintf,strncasecmp,strcasecmp,%
+ strcmp,strcoll,strcspn,strip_tags,stripcslashes,stripslashes,%
+ strlen,strnatcmp,strnatcasecmp,strncmp,str_pad,strpos,strrchr,%
+ strrev,strrpos,strspn,strstr,strtok,strtolower,strtoupper,%
+ strtr,substr,substr_count,substr_replace,trim,ucfirst,ucwords,%
+ vsprintf,wordwrap,%
+ %--- swf functions
+ swf_openfile,swf_closefile,swf_labelframe,swf_showframe,%
+ swf_getframe,swf_mulcolor,swf_addcolor,swf_placeobject,%
+ swf_removeobject,swf_nextid,swf_startdoaction,%
+ swf_actiongeturl,swf_actionnextframe,swf_actionprevframe,%
+ swf_actionstop,swf_actiontogglequality,swf_actionwaitforframe,%
+ swf_actiongotolabel,swf_enddoaction,swf_defineline,%
+ swf_definepoly,swf_startshape,swf_shapelinesolid,%
+ swf_shapefillsolid,swf_shapefillbitmapclip,%
+ swf_shapemoveto,swf_shapelineto,swf_shapecurveto,%
+ swf_shapearc,swf_endshape,swf_definefont,swf_setfont,%
+ swf_fontslant,swf_fonttracking,swf_getfontinfo,swf_definetext,%
+ swf_definebitmap,swf_getbitmapinfo,swf_startsymbol,%
+ swf_startbutton,swf_addbuttonrecord,swf_oncondition,%
+ swf_viewport,swf_ortho,swf_ortho2,swf_perspective,swf_polarview,%
+ swf_pushmatrix,swf_popmatrix,swf_scale,swf_translate,swf_rotate,%
+ %--- sybase functions
+ sybase_affected_rows,sybase_close,sybase_connect,%
+ sybase_fetch_array,sybase_fetch_field,sybase_fetch_object,%
+ sybase_field_seek,sybase_free_result,sybase_get_last_message,%
+ sybase_min_error_severity,sybase_min_message_severity,%
+ sybase_num_fields,sybase_num_rows,sybase_pconnect,sybase_query,%
+ sybase_select_db,%
+ %--- uodbc functions
+ odbc_autocommit,odbc_binmode,odbc_close,odbc_close_all,%
+ odbc_connect,odbc_cursor,odbc_do,odbc_error,odbc_errormsg,%
+ odbc_execute,odbc_fetch_into,odbc_fetch_row,odbc_fetch_array,%
+ odbc_fetch_object,odbc_field_name,odbc_field_num,%
+ odbc_field_len,odbc_field_precision,odbc_field_scale,%
+ odbc_longreadlen,odbc_num_fields,odbc_pconnect,odbc_prepare,%
+ odbc_result,odbc_result_all,odbc_rollback,odbc_setoption,%
+ odbc_tableprivileges,odbc_columns,odbc_columnprivileges,%
+ odbc_primarykeys,odbc_foreignkeys,odbc_procedures,%
+ odbc_specialcolumns,odbc_statistics,%
+ %--- url functions
+ base64_decode,base64_encode,parse_url,rawurldecode,rawurlencode,%
+ urlencode,%
+ %--- var functions
+ doubleval,empty,floatval,gettype,get_defined_vars,%
+ import_request_variables,intval,is_array,is_bool,is_double,%
+ is_int,is_integer,is_long,is_null,is_numeric,is_object,is_real,%
+ is_scalar,is_string,isset,print_r,serialize,settype,strval,%
+ unset,var_dump,var_export,is_callable,%
+ %--- vpopmail functions
+ vpopmail_add_domain,vpopmail_del_domain,%
+ vpopmail_add_domain_ex,vpopmail_del_domain_ex,%
+ vpopmail_add_user,vpopmail_del_user,vpopmail_passwd,%
+ vpopmail_auth_user,vpopmail_alias_add,vpopmail_alias_del,%
+ vpopmail_alias_get,vpopmail_alias_get_all,vpopmail_error,%
+ %--- w32api functions
+ w32api_set_call_method,w32api_register_function,%
+ w32api_deftype,w32api_init_dtype,%
+ %--- wddx functions
+ wddx_serialize_value,wddx_serialize_vars,wddx_packet_start,%
+ wddx_add_vars,wddx_deserialize,%
+ %--- xml functions
+ xml_parser_create,xml_set_object,xml_set_element_handler,%
+ xml_set_processing_instruction_handler,xml_set_default_handler,%
+ xml_set_notation_decl_handler,%
+ xml_parse,xml_get_error_code,xml_error_string,%
+ xml_get_current_column_number,xml_get_current_byte_index,%
+ xml_parser_free,xml_parser_set_option,xml_parser_get_option,%
+ utf8_encode,xml_parser_create_ns,%
+ xml_set_start_namespace_decl_handler,%
+ %--- xslt functions
+ xslt_set_log,xslt_create,xslt_errno,xslt_error,xslt_free,%
+ xslt_set_sax_handler,xslt_set_scheme_handler,%
+ xslt_set_base,xslt_set_encoding,xslt_set_sax_handlers,%
+ %--- yaz functions
+ yaz_addinfo,yaz_close,yaz_connect,yaz_errno,yaz_error,yaz_hits,%
+ yaz_database,yaz_range,yaz_record,yaz_search,yaz_present,%
+ yaz_scan,yaz_scan_result,yaz_ccl_conf,yaz_ccl_parse,%
+ yaz_wait,yaz_sort,%
+ %--- zip functions
+ zip_close,zip_entry_close,zip_entry_compressedsize,%
+ zip_entry_filesize,zip_entry_name,zip_entry_open,zip_entry_read,%
+ zip_read,%
+ %--- zlib functions
+ gzclose,gzeof,gzfile,gzgetc,gzgets,gzgetss,gzopen,gzpassthru,%
+ gzread,gzrewind,gzseek,gztell,gzwrite,readgzfile,gzcompress,%
+ gzdeflate,gzinflate,gzencode,},%
+ sensitive,%
+ morecomment=[l]\#,%
+ morecomment=[l]//,%
+ morecomment=[s]{/*}{*/},%
+ morestring=[b]",%
+ morestring=[b]'%
+ }[keywords,comments,strings]%
+%%
+%% Prolog definition (c) 1997 Dominique de Waleffe
+%%
+\lst at definelanguage{Prolog}%
+ {morekeywords={op,mod,abort,ancestors,arg,ascii,ask,assert,asserta,%
+ assertz,atom,atomic,char,clause,close,concat,consult,ed,ef,em,%
+ eof,fail,file,findall,write,functor,getc,integer,is,length,%
+ listing,load,name,nl,nonvar,not,numbervars,op,or,pp,prin,print,%
+ private,prompt,putc,ratom,read,read_from_this_file,rename,repeat,%
+ retract,retractall,save,see,seeing,seen,sh,skip,statistics,%
+ subgoal_of,system,tab,tell,telling,time,told,trace,true,unload,%
+ untrace,var,write},%
+ sensitive=f,%
+ morecomment=[l]\%,%
+ morecomment=[s]{/*}{*/},%
+ morestring=[bd]",%
+ morestring=[bd]'%
+ }[keywords,comments,strings]%
+%%
+%% classic rexx listings definition
+%% by Patrick TJ McPhee <ptjm at interlog.com>
+%%
+\lst at definelanguage{Rexx}
+ {morekeywords={address,arg,call,do,drop,else,end,exit,if,iterate,%
+ interpret,leave,nop,numeric,options,otherwise,parse,%
+ procedure,pull,push,queue,return,say,signal,then,to,%
+ trace,when},%
+ sensitive=false,%
+ morecomment=[n]{/*}{*/},%
+ morestring=[d]{'},%
+ morestring=[d]{"},%
+ }[keywords,comments,strings]%
+\lst at definelanguage{Ruby}%
+ {morekeywords={__FILE__,__LINE__,BEGIN,END,alias,and,begin,break,%
+ case,class,def,defined?,do,else,elsif,end,ensure,false,for,%
+ if,in,module,next,nil,not,or,redo,rescue,retry,return,self,%
+ super,then,true,undef,unless,until,when,while,yield},%
+ sensitive=true,%
+ morecomment=[l]\#,%
+ morecomment=[l]\#\#,%
+ morecomment=[s]{=BEGIN}{=END},%
+ morestring=[b]',%
+ morestring=[b]",%
+ morestring=[b]/%
+ }[keywords,comments,strings]%
+%%
+%% SHELXL definition (c) 1999 Aidan Philip Heerdegen
+%%
+\lst at definelanguage{SHELXL}%
+ {morekeywords={TITL,CELL,ZERR,LATT,SYMM,SFAC,DISP,UNIT,LAUE,%
+ REM,MORE,TIME,END,HKLF,OMIT,SHEL,BASF,TWIN,EXTI,SWAT,%
+ MERG,SPEC,RESI,MOVE,ANIS,AFIX,HFIX,FRAG,FEND,EXYZ,EADP,%
+ EQIV,OMIT,CONN,PART,BIND,FREE,DFIX,BUMP,SAME,SADI,CHIV,%
+ FLAT,DELU,SIMU,DEFS,ISOR,SUMP,L.S.,CGLS,SLIM,BLOC,DAMP,%
+ WGHT,FVAR,BOND,CONF,MPLA,RTAB,LIST,ACTA,SIZE,TEMP,WPDB,%
+ FMAP,GRID,PLAN,MOLE},%
+ sensitive=false,%
+ alsoother=_,% Makes the syntax highlighting ignore the underscores
+ morecomment=[l]{! },%
+ }%
+%%
+%% Tcl/Tk definition (c) Gerd Neugebauer
+%%
+\lst at definelanguage[tk]{tcl}[]{tcl}%
+ {morekeywords={activate,add,separator,radiobutton,checkbutton,%
+ command,cascade,all,bell,bind,bindtags,button,canvas,canvasx,%
+ canvasy,cascade,cget,checkbutton,config,configu,configur,%
+ configure,clipboard,create,arc,bitmap,image,line,oval,polygon,%
+ rectangle,text,textwindow,curselection,delete,destroy,end,entry,%
+ entrycget,event,focus,font,actual,families,measure,metrics,names,%
+ frame,get,grab,current,release,status,grid,columnconfigure,%
+ rowconfigure,image,image,create,bitmap,photo,delete,height,types,%
+ widt,names,index,insert,invoke,itemconfigure,label,listbox,lower,%
+ menu,menubutton,message,move,option,add,clear,get,readfile,pack,%
+ photo,place,radiobutton,raise,scale,scroll,scrollbar,search,see,%
+ selection,send,stdin,stdout,stderr,tag,bind,text,tk,tkerror,%
+ tkwait,window,variable,visibility,toplevel,unknown,update,winfo,%
+ class,exists,ismapped,parent,reqwidth,reqheight,rootx,rooty,%
+ width,height,wm,aspect,client,command,deiconify,focusmodel,frame,%
+ geometry,group,iconbitmap,iconify,iconmask,iconname,iconposition,%
+ iconwindow,maxsize,minsize,overrideredirect,positionfrom,%
+ protocol,sizefrom,state,title,transient,withdraw,xview,yview,%
+ yposition,%
+ -accelerator,-activebackground,-activeborderwidth,%
+ -activeforeground,-after,-anchor,-arrow,-arrowshape,-aspect,%
+ -async,-background,-before,-bg,-bigincrement,-bitmap,-bordermode,%
+ -borderwidth,-button,-capstyle,-channel,-class,-closeenough,%
+ -colormap,-column,-columnspan,-command,-confine,-container,%
+ -count,-cursor,-data,-default,-detail,-digits,-direction,%
+ -displayof,-disableforeground,-elementborderwidth,-expand,%
+ -exportselection,-extend,-family,-fg,-file,-fill,-focus,-font,%
+ -fontmap,-foreground,-format,-from,-gamma,-global,-height,%
+ -highlightbackground,-highlightcolor,-highlightthickness,-icon,%
+ -image,-in,-insertbackground,-insertborderwidth,-insertofftime,%
+ -insertontime,-imsertwidth,-ipadx,-ipady,-joinstyle,-jump,%
+ -justify,-keycode,-keysym,-label,-lastfor,-length,-maskdata,%
+ -maskfile,-menu,-message,-mode,-offvalue,-onvalue,-orient,%
+ -outlien,-outlinestipple,-overstrike,-override,-padx,-pady,%
+ -pageanchor,-pageheight,-pagewidth,-pagey,-pagey,-palette,%
+ -parent,-place,-postcommand,-relheight,-relief,-relwidth,-relx,%
+ -rely,-repeatdelay,-repeatinterval,-resolution,-root,-rootx,%
+ -rooty,-rotate,-row,-rowspan,-screen,-selectcolor,-selectimage,%
+ -sendevent,-serial,-setgrid,-showvalue,-shrink,-side,-size,%
+ -slant,-sliderlength,-sliderrelief,-smooth,-splinesteps,-state,%
+ -sticky,-stipple,-style,-subsample,-subwindow,-tags,-takefocus,%
+ -tearoff,-tearoffcommand,-text,-textvariable,-tickinterval,-time,%
+ -title,-to,-troughcolor,-type,-underline,-use,-value,-variable,%
+ -visual,-width,-wrap,-wraplength,-x,-xscrollcommand,-y,%
+ -bgstipple,-fgstipple,-lmargin1,-lmargin2,-rmargin,-spacing1,%
+ -spacing2,-spacing3,-tabs,-yscrollcommand,-zoom,%
+ activate,add,addtag,bbox,cget,clone,configure,coords,%
+ curselection,debug,delete,delta,deselect,dlineinfo,dtag,dump,%
+ entrycget,entryconfigure,find,flash,fraction,get,gettags,handle,%
+ icursor,identify,index,insert,invoke,itemcget,itemconfigure,mark,%
+ moveto,own,post,postcascade,postscript,put,redither,ranges,%
+ scale,select,show,tag,type,unpost,xscrollcommand,xview,%
+ yscrollcommand,yview,yposition}%
+ }%
+\lst at definelanguage[]{tcl}%
+ {alsoletter={.:,*=&-},%
+ morekeywords={after,append,array,names,exists,anymore,donesearch,%
+ get,nextelement,set,size,startsearch,auto_mkindex,binary,break,%
+ case,catch,cd,clock,close,concat,console,continue,default,else,%
+ elseif,eof,error,eval,exec,-keepnewline,exit,expr,fblocked,%
+ fconfigure,fcopy,file,atime,dirname,executable,exists,extension,%
+ isdirectory,isfile,join,lstat,mtime,owned,readable,readlink,%
+ rootname,size,stat,tail,type,writable,-permissions,-group,-owner,%
+ -archive,-hidden,-readonly,-system,-creator,-type,-force,%
+ fileevent,flush,for,foreach,format,gets,glob,global,history,if,%
+ incr,info,argsbody,cmdcount,commands,complete,default,exists,%
+ globals,level,library,locals,patchlevel,procs,script,tclversion,%
+ vars,interp,join,lappend,lindex,linsert,list,llength,lrange,%
+ lreplace,lsearch,-exact,-regexp,-glob,lsort,-ascii,-integer,%
+ -real,-dictionary,-increasing,-decreasing,-index,-command,load,%
+ namespace,open,package,forget,ifneeded,provide,require,unknown,%
+ vcompare,versions,vsatisfies,pid,proc,puts,-nonewline,pwd,read,%
+ regexp,-indices,regsub,-all,-nocaserename,return,scan,seek,set,%
+ socket,source,split,string,compare,first,index,last,length,match,%
+ range,tolower,toupper,trim,trimleft,trimright,subst,switch,tell,%
+ time,trace,variable,vdelete,vinfo,unknown,unset,uplevel,upvar,%
+ vwait,while,acos,asin,atan,atan2,ceil,cos,cosh,exp,floor,fmod,%
+ hypot,log,log10,pow,sin,sinh,sqrt,tan,tanh,abs,double,int,round%
+ },%
+ morestring=[d]",%
+ MoreSelectCharTable=%
+ \lst at CArgX\#\relax\lst at DefDelimB{}{}%
+ {\ifx\lst at lastother\lstum at backslash
+ \expandafter\@gobblethree
+ \fi}%
+ \lst at BeginComment\lst at commentmode
+ {{\lst at commentstyle}\lst at Lmodetrue}%
+ }[keywords,comments,strings]%
+%%
+%% VBScript definition (c) 2000 Sonja Weidmann
+%%
+\lst at definelanguage{VBScript}%
+ {morekeywords={Call,Case,Const,Dim,Do,Each,Else,End,Erase,Error,Exit,%
+ Explicit,For,Function,If,Loop,Next,On,Option,Private,Public,%
+ Randomize,ReDim,Rem,Select,Set,Sub,Then,Wend,While,Abs,Array,Asc,%
+ Atn,CBool,CByte,CCur,CDate,CDbl,Chr,CInt,CLng,Cos,CreateObject,%
+ CSng,CStr,Date,DateAdd,DateDiff,DatePart,DateSerial,DateValue,%
+ Day,Exp,Filter,Fix,FormatCurrency,FormatDateTime,FormatNumber,%
+ FormatPercent,GetObject,Hex,Hour,InputBox,InStr,InStrRev,Int,%
+ IsArray,IsDate,IsEmpty,IsNull,IsNumeric,IsObject,Join,LBound,%
+ LCase,Left,Len,LoadPicture,Log,LTrim,Mid,Minute,Month,MonthName,%
+ MsgBox,Now,Oct,Replace,RGB,Right,Rnd,Round,RTrim,ScriptEngine,%
+ ScriptEngineBuildVersion,ScriptEngineMajorVersion,%
+ ScriptEngineMinorVersion,Second,Sgn,Sin,Space,Split,Sqr,StrComp,%
+ StrReverse,String,Tan,Time,TimeSerial,TimeValue,Trim,TypeName,%
+ UBound,UCase,VarType,Weekday,WeekdayName,Year, And,Eqv,Imp,Is,%
+ Mod,Not,Or,Xor,Add,BuildPath,Clear,Close,Copy,CopyFile,%
+ CopyFolder,CreateFolder,CreateTextFile,Delete,DeleteFile,%
+ DeleteFolder,Dictionary,Drive,DriveExists,Drives,Err,Exists,File,%
+ FileExists,FileSystemObject,Files,Folder,FolderExists,Folders,%
+ GetAbsolutePathName,GetBaseName,GetDrive,GetDriveName,%
+ GetExtensionName,GetFile,GetFileName,GetFolder,%
+ GetParentFolderName,GetSpecialFolder,GetTempName,Items,Keys,Move,%
+ MoveFile,MoveFolder,OpenAsTextStream,OpenTextFile,Raise,Read,%
+ ReadAll,ReadLine,Remove,RemoveAll,Skip,SkipLine,TextStream,Write,%
+ WriteBlankLines,WriteLine,Alias,Archive,CDROM,Compressed,%
+ Directory,Fixed,ForAppending,ForReading,ForWriting,Hidden,Normal,%
+ RAMDisk,ReadOnly,Remote,Removable,System,SystemFolder,%
+ TemporaryFolder,TristateFalse,TristateTrue,TristateUseDefault,%
+ Unknown,Volume,WindowsFolder,vbAbortRetryIgnore,%
+ vbApplicationModal,vbArray,vbBinaryCompare,vbBlack,vbBlue,%
+ vbBoolean,vbByte,vbCr,vbCrLf,vbCritical,vbCurrency,vbCyan,%
+ vbDataObject,vbDate,vbDecimal,vbDefaultButton1,vbDefaultButton2,%
+ vbDefaultButton3,vbDefaultButton4,vbDouble,vbEmpty,vbError,%
+ vbExclamation,vbFirstFourDays,vbFirstFullWeek,vbFirstJan1,%
+ vbFormFeed,vbFriday,vbGeneralDate,vbGreen,vbInformation,%
+ vbInteger,vbLf,vbLong,vbLongDate,vbLongTime,vbMagenta,vbMonday,%
+ vbNewLine,vbNull,vbNullChar,vbNullString,vbOKC,ancel,vbOKOnly,%
+ vbObject,vbObjectError,vbQuestion,vbRed,vbRetryCancel,vbSaturday,%
+ vbShortDate,vbShortTime,vbSingle,vbString,vbSunday,vbSystemModal,%
+ vbTab,vbTextCompare,vbThursday,vbTuesday,vbUseSystem,%
+ vbUseSystemDayOfWeek,vbVariant,vbVerticalTab,vbWednesday,vbWhite,%
+ vbYellow,vbYesNo,vbYesNoCancel},%
+ sensitive=f,%
+ morecomment=[l]',%
+ morestring=[d]"%
+ }[keywords,comments,strings]%
+%%
+%% VRML definition (c) 2001 Oliver Baum
+%%
+\lst at definelanguage[97]{VRML}
+ {morekeywords={DEF,EXTERNPROTO,FALSE,IS,NULL,PROTO,ROUTE,TO,TRUE,USE,%
+ eventIn,eventOut,exposedField,field,Introduction,Anchor,%
+ Appearance,AudioClip,Background,Billboard,Box,Collision,Color,%
+ ColorInterpolator,Cone,Coordinate,CoordinateInterpolator,%
+ Cylinder,CylinderSensor,DirectionalLight,ElevationGrid,Extrusion,%
+ Fog,FontStyle,Group,ImageTexture,IndexedFaceSet,IndexedLineSet,%
+ Inline,LOD,Material,MovieTexture,NavigationInfo,Normal,%
+ NormalInterpolator,OrientationInterpolator,PixelTexture,%
+ PlaneSensor,PointLight,PointSet,PositionInterpolator,%
+ ProximitySensor,ScalarInterpolator,Script,Shape,Sound,Sphere,%
+ SphereSensor,SpotLight,Switch,Text,TextureCoordinate,%
+ TextureTransform,TimeSensor,TouchSensor,Transform,Viewpoint,%
+ VisibilitySensor,WorldInfo},%
+ morecomment=[l]\#,% bug: starts comment in the first column
+ morestring=[b]"%
+ }[keywords,comments,strings]
+\endinput
+%%
+%% End of file `lstlang2.sty'.
File [added]: lstlang3.sty
Delta lines: +1006 -0
===================================================================
--- papers/CPC/saga_engine_2006/lstlang3.sty 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/lstlang3.sty 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,1006 @@
+%%
+%% This is file `lstlang3.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lstdrvrs-1.3.dtx (with options: `lang3')
+%%
+%% (w)(c) 1996/1997/1998/1999/2000/2001/2002/2003/2004 Carsten Heinz
+%% and/or any other author listed elsewhere in this file.
+%%
+%% This file is distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+%% This file is completely free and comes without any warranty.
+%%
+%% Send comments and ideas on the package, error reports and additional
+%% programming languages to <cheinz at gmx.de>.
+%%
+\ProvidesFile{lstlang3.sty}
+ [2004/09/05 1.3 listings language file]
+\lst at definelanguage[68]{Algol}%
+ {morekeywords={abs,and,arg,begin,bin,bits,bool,by,bytes,case,channel,%
+ char,co,comment,compl,conj,divab,do,down,elem,elif,else,empty,%
+ end,entier,eq,esac,exit,false,fi,file,flex,for,format,from,ge,%
+ goto,gt,heap,if,im,in,int,is,isnt,le,leng,level,loc,long,lt,lwb,%
+ minusab,mod,modab,mode,ne,nil,not,od,odd,of,op,or,ouse,out,over,%
+ overab,par,plusab,plusto,pr,pragmat,prio,proc,re,real,ref,repr,%
+ round,sema,shl,short,shorten,shr,sign,skip,string,struct,then,%
+ timesab,to,true,union,up,upb,void,while},%
+ sensitive=f,% ???
+ morecomment=[s]{\#}{\#},%
+ keywordcomment={co,comment}%
+ }[keywords,comments,keywordcomments]%
+\lst at definelanguage[60]{Algol}%
+ {morekeywords={array,begin,Boolean,code,comment,div,do,else,end,%
+ false,for,goto,if,integer,label,own,power,procedure,real,step,%
+ string,switch,then,true,until,value,while},%
+ sensitive=f,% ???
+ keywordcommentsemicolon={end}{else,end}{comment}%
+ }[keywords,keywordcomments]%
+%%
+%% x86masm definition (c) 2002 Andrew Zabolotny
+%%
+\lst at definelanguage[x86masm]{Assembler}%
+ {morekeywords={al,ah,ax,eax,bl,bh,bx,ebx,cl,ch,cx,ecx,dl,dh,dx,edx,%
+ si,esi,di,edi,bp,ebp,sp,esp,cs,ds,es,ss,fs,gs,cr0,cr1,cr2,cr3,%
+ db0,db1,db2,db3,db4,db5,db6,db7,tr0,tr1,tr2,tr3,tr4,tr5,tr6,tr7,%
+ st,aaa,aad,aam,aas,adc,add,and,arpl,bound,bsf,bsr,bswap,bt,btc,%
+ btr,bts,call,cbw,cdq,clc,cld,cli,clts,cmc,cmp,cmps,cmpsb,cmpsw,%
+ cmpsd,cmpxchg,cwd,cwde,daa,das,dec,div,enter,hlt,idiv,imul,in,%
+ inc,ins,int,into,invd,invlpg,iret,ja,jae,jb,jbe,jc,jcxz,jecxz,%
+ je,jg,jge,jl,jle,jna,jnae,jnb,jnbe,jnc,jne,jng,jnge,jnl,jnle,%
+ jno,jnp,jns,jnz,jo,jp,jpe,jpo,js,jz,jmp,lahf,lar,lea,leave,lgdt,%
+ lidt,lldt,lmsw,lock,lods,lodsb,lodsw,lodsd,loop,loopz,loopnz,%
+ loope,loopne,lds,les,lfs,lgs,lss,lsl,ltr,mov,movs,movsb,movsw,%
+ movsd,movsx,movzx,mul,neg,nop,not,or,out,outs,pop,popa,popad,%
+ popf,popfd,push,pusha,pushad,pushf,pushfd,rcl,rcr,rep,repe,%
+ repne,repz,repnz,ret,retf,rol,ror,sahf,sal,sar,sbb,scas,seta,%
+ setae,setb,setbe,setc,sete,setg,setge,setl,setle,setna,setnae,%
+ setnb,setnbe,setnc,setne,setng,setnge,setnl,setnle,setno,setnp,%
+ setns,setnz,seto,setp,setpe,setpo,sets,setz,sgdt,shl,shld,shr,%
+ shrd,sidt,sldt,smsw,stc,std,sti,stos,stosb,stosw,stosd,str,sub,%
+ test,verr,verw,wait,wbinvd,xadd,xchg,xlatb,xor,fabs,fadd,fbld,%
+ fbstp,fchs,fclex,fcom,fcos,fdecstp,fdiv,fdivr,ffree,fiadd,ficom,%
+ fidiv,fidivr,fild,fimul,fincstp,finit,fist,fisub,fisubr,fld,fld1,%
+ fldl2e,fldl2t,fldlg2,fldln2,fldpi,fldz,fldcw,fldenv,fmul,fnop,%
+ fpatan,fprem,fprem1,fptan,frndint,frstor,fsave,fscale,fsetpm,%
+ fsin,fsincos,fsqrt,fst,fstcw,fstenv,fstsw,fsub,fsubr,ftst,fucom,%
+ fwait,fxam,fxch,fxtract,fyl2x,fyl2xp1,f2xm1},%
+ morekeywords=[2]{.align,.alpha,assume,byte,code,comm,comment,.const,%
+ .cref,.data,.data?,db,dd,df,dosseg,dq,dt,dw,dword,else,end,endif,%
+ endm,endp,ends,eq,equ,.err,.err1,.err2,.errb,.errdef,.errdif,%
+ .erre,.erridn,.errnb,.errndef,.errnz,event,exitm,extrn,far,%
+ .fardata,.fardata?,fword,ge,group,gt,high,if,if1,if2,ifb,ifdef,%
+ ifdif,ife,ifidn,ifnb,ifndef,include,includelib,irp,irpc,label,%
+ .lall,le,length,.lfcond,.list,local,low,lt,macro,mask,mod,.model,%
+ name,ne,near,offset,org,out,page,proc,ptr,public,purge,qword,.%
+ radix,record,rept,.sall,seg,segment,.seq,.sfcond,short,size,%
+ .stack,struc,subttl,tbyte,.tfcond,this,title,type,.type,width,%
+ word,.xall,.xcref,.xlist},%
+ alsoletter=.,alsodigit=?,%
+ sensitive=f,%
+ morestring=[b]",%
+ morestring=[b]',%
+ morecomment=[l];%
+ }[keywords,comments,strings]
+%%
+%% Clean definition (c) 1999 Jos\'e Romildo Malaquias
+%%
+%% Clean 1.3 : some standard functional language: pure, lazy,
+%% polymorphic type system, modules, type classes,
+%% garbage collection, functions as first class citizens
+%%
+\lst at definelanguage{Clean}%
+ {otherkeywords={:,::,=,:==,=:,=>,->,<-,<-:,\{,\},\{|,|\},\#,\#!,|,\&,%
+ [,],!,.,\\\\,;,_},%
+ morekeywords={from,definition,implementation,import,module,system,%
+ case,code,if,in,let,let!,of,where,with,infix,infixl,infixr},%
+ morendkeywords={True,False,Start,Int,Real,Char,Bool,String,World,%
+ File,ProcId},%
+ sensitive,%
+ morecomment=[l]//,% missing comma: Markus Pahlow
+ morecomment=[n]{/*}{*/},%
+ morestring=[b]"%
+ }[keywords,comments,strings]%
+\lst at definelanguage{Comal 80}%
+ {morekeywords={AND,AUTO,CASE,DATA,DEL,DIM,DIV,DO,ELSE,ENDCASE,ENDIF,%
+ ENDPROC,ENDWHILE,EOD,EXEC,FALSE,FOR,GOTO,IF,INPUT,INT,LIST,LOAD,%
+ MOD,NEW,NEXT,NOT,OF,OR,PRINT,PROC,RANDOM,RENUM,REPEAT,RND,RUN,%
+ SAVE,SELECT,STOP,TAB,THEN,TRUE,UNTIL,WHILE,ZONE},%
+ sensitive=f,% ???
+ morecomment=[l]//,%
+ morestring=[d]"%
+ }[keywords,comments,strings]%
+\lst at definelanguage{Elan}%
+ {morekeywords={ABS,AND,BOOL,CAND,CASE,CAT,COLUMNS,CONCR,CONJ,CONST,%
+ COR,DECR,DEFINES,DET,DIV,DOWNTO,ELIF,ELSE,END,ENDIF,ENDOP,%
+ ENDPACKET,ENDPROC,ENDREP,ENDSELECT,FALSE,FI,FILE,FOR,FROM,IF,%
+ INCR,INT,INV,LEAVE,LENGTH,LET,MOD,NOT,OF,OP,OR,OTHERWISE,PACKET,%
+ PROC,REAL,REP,REPEAT,ROW,ROWS,SELECT,SIGN,STRUCT,SUB,TEXT,THEN,%
+ TRANSP,TRUE,TYPE,UNTIL,UPTO,VAR,WHILE,WITH,XOR,%
+ maxint,sign,abs,min,max,random,initializerandom,subtext,code,%
+ replace,text,laenge,pos,compress,change,maxreal,smallreal,floor,%
+ pi,e,ln,log2,log10,sqrt,exp,tan,tand,sin,sind,cos,cosd,arctan,%
+ arctand,int,real,lastconversionok,put,putline,line,page,get,%
+ getline,input,output,sequentialfile,maxlinelaenge,reset,eof,%
+ close,complexzero,complexone,complexi,complex,realpart,imagpart,%
+ dphi,phi,vector,norm,replace,matrix,idn,row,column,sub,%
+ replacerow,replacecolumn,replaceelement,transp,errorsstop,stop},%
+ sensitive,%
+ morestring=[d]"%
+ }[keywords,strings]%
+%%
+%% Erlang definition (c) 2003 Daniel Gazard
+%%
+\lst at definelanguage{erlang}%
+ {morekeywords={abs,after,and,apply,atom,atom_to_list,band,binary,%
+ binary_to_list,binary_to_term,bor,bsl,bsr,bxor,case,catch,%
+ date,div,element,erase,end,exit,export,float,float_to_list,%
+ get,halt,hash,hd,if,info,import,integer,integer_to_list,%
+ length,link,list,list_to_atom,list_to_float,list_to_integer,%
+ list_to_tuple,module,node,nodes,now,of,or,pid,port,ports,%
+ processes,put,receive,reference,register,registered,rem,%
+ round,self,setelement,size,spawn,throw,time,tl,trace,trunc,%
+ tuple,tuple_to_list,unlink,unregister,whereis,error,false,%
+ infinity,nil,ok,true,undefined,when},%
+ otherkeywords={->,!,[,],\{,\},},%
+ morecomment=[l]\%,%
+ morestring=[b]",%
+ morestring=[b]'%
+ }[keywords,comments,strings]%
+\lst at definelanguage{ksh}
+ {morekeywords={alias,awk,cat,echo,else,elif,fi,exec,exit,%
+ for,in,do,done,select,case,esac,while,until,function,%
+ time,export,cd,eval,fc,fg,kill,let,pwd,read,return,rm,%
+ glob,goto,history,if,logout,nice,nohup,onintr,repeat,sed,%
+ set,setenv,shift,source,switch,then,umask,unalias,%
+ unset,wait,@,env,argv,child,home,ignoreeof,noclobber,%
+ noglob,nomatch,path,prompt,shell,status,verbose,print,printf,%
+ sqrt,BEGIN,END},%
+ morecomment=[l]\#,%
+ morestring=[d]",%
+ morestring=[d]',%
+ morestring=[d]`%
+ }[keywords,comments,strings]%
+\lst at definelanguage{Logo}%
+ {morekeywords={and,atan,arctan,both,break,bf,bl,butfirst,butlast,%
+ cbreak, close,co,continue,cos,count,clearscreen,cs,debquit,%
+ describe,diff,difference,ed,edit,either,emptyp,equalp,er,erase,%
+ errpause,errquit,fifp,filefprint,fifty,fileftype,fip,fileprint,%
+ fird,fileread,fity,filetype,fiwd,fileword,f,first,or,fp,fprint,%
+ fput,fty,ftype,full,fullscreen,go,bye,goodbye,gprop,greaterp,%
+ help,if,iff,iffalse,ift,iftrue,nth,item,keyp,llast,lessp,list,%
+ local,lput,make,max,maximum,memberp,memtrace,min,minimum,namep,%
+ not,numberp,oflush,openr,openread,openw,openwrite,op,output,%
+ pause,plist,pots,pow,pprop,pps,pr,print,product,quotient,random,%
+ rc,readchar,rl,readlist,remprop,repcount,repeat,request,rnd,run,%
+ se,sentence,sentencep,setc,setcolor,setipause,setqpause,po,show,%
+ sin,split,splitscreen,sqrt,stop,sum,test,text,textscreen,thing,%
+ to,tone,top,toplevel,type,untrace,wait,word,wordp,yaccdebug,is,%
+ mod,remainder,trace,zerop,back,bk,bto,btouch,fd,forward,fto,%
+ ftouch,getpen,heading,hit,hitoot,ht,hideturtle,loff,lampoff,lon,%
+ lampon,lt,left,lot,lotoot,lto,ltouch,penc,pencolor,pd,pendown,pe,%
+ penerase,penmode,pu,penup,px,penreverse,rt,right,rto,rtouch,%
+ scrunch,seth,setheading,setscrun,setscrunch,setxy,shownp,st,%
+ showturtle,towardsxy,clean,wipeclean,xcor,ycor,tur,turtle,%
+ display,dpy},%
+ sensitive=f% ???
+ }[keywords]%
+%%
+%% MetaPost definition (c) 2004 Brooks Moses
+%% This definition is based on the language specifications
+%% contained in the _User's Manual for Metapost_, with the core
+%% language enhancements that are described in the _Drawing
+%% Graphs with MetaPost_ documentation.
+%%
+\lst at definelanguage{MetaPost}%
+ {% keywords[1] = MetaPost primitives (not found in following tables)
+ morekeywords={end,begingroup,endgroup,beginfig,endfig,def,vardef,%
+ primary,secondary,tertiary,primarydef,secondarydef,tertiarydef,%
+ expr,suffix,text,enddef,if,fi,else,elseif,for,forsuffixes,%
+ forever,endfor,upto,downto,stop,until,tension,controls,on,off,%
+ btex,etex,within,input},
+ % keywords[2] = Operators (Tables 6-9 in MetaPost User's manual)
+ morekeywords=[2]{abs,and,angle,arclength,arctime,ASCII,bbox,bluepart,%
+ boolean,bot,ceiling,center,char,color,cosd,cutafter,cutbefore,%
+ cycle,decimal,dir,direction,directionpoint,directiontime,div,%
+ dotprod,floor,fontsize,greenpart,hex,infont,intersectionpoint,%
+ intersectiontimes,inverse,known,length,lft,llcorner,lrcorner,%
+ makepath,makepen,mexp,mlog,mod,normaldeviate,not,numeric,oct,%
+ odd,or,pair,path,pen,penoffset,picture,point,postcontrol,%
+ precontrol,redpart,reverse,rotated,round,rt,scaled,shifted,%
+ sind,slanted,sqrt,str,string,subpath,substring,top,transform,%
+ transformed,ulcorner,uniformdeviate,unitvector,unknown,%
+ urcorner,whatever,xpart,xscaled,xxpart,xypart,ypart,yscaled,%
+ yxpart,yypart,zscaled,of,reflectedabout,rotatedaround,ulft,urt,%
+ llft,lrt,readfrom,write,stroked,filled,textual,clipped,bounded,%
+ pathpart,penpart,dashpart,textpart,fontpart},%
+ % keywords[3] = Commands (Table 10)
+ morekeywords=[3]{addto,clip,cutdraw,draw,drawarrow,drawdblarrow,%
+ fill,filldraw,interim,let,loggingall,newinternal,pickup,%
+ save,setbounds,shipout,show,showdependencies,showtoken,%
+ showvariable,special,tracingall,tracingnone,undraw,unfill,%
+ unfilldraw,to,also,contour,doublepath,withcolor,withpen,%
+ dashed,randomseed},%
+ % keywords[4] = Function-Like Macros (Table 11)
+ morekeywords=[4]{boxit,boxjoin,bpath,buildcycle,circleit,dashpattern,%
+ decr,dotlabel,dotlabels,drawboxed,drawboxes,drawoptions,%
+ drawunboxed,fixpos,fixsize,incr,interpath,label,labels,max,min,pic,%
+ thelabel,z,image},%
+ % keywords[5] = Internal and Predefined Variables (Tables 3, 4)
+ morekeywords=[5]{ahangle,ahlength,bboxmargin,charcode,circmargin,%
+ day,defaultdx,defaultdy,defaultpen,defaultscale,labeloffset,%
+ linecap,linejoin,miterlimit,month,pausing,prologues,showstopping,%
+ time,tracingcapsules,tracingchoices,tracingcommands,%
+ tracingequations,tracinglostchars,tracingmacros,tracingonline,%
+ tracingoutput,tracingrestores,tracingspecs,tracingstats,%
+ tracingtitles,truecorners,warningcheck,year},
+ morekeywords=[5]{background,currentpen,currentpicture,cuttings,%
+ defaultfont},%
+ % keywords[6] = Predefined Constants (Table 5)
+ morekeywords=[6]{beveled,black,blue,bp,butt,cc,cm,dd,ditto,down,%
+ epsilon,evenly,false,fullcircle,green,halfcircle,identity,%
+ in,infinity,left,mitered,mm,nullpicture,origin,pc,pencircle,%
+ pt,quartercircle,red,right,rounded,squared,true,unitsquare,%
+ up,white,withdots},
+ sensitive=false,%
+ alsoother={0123456789$},%
+ morecomment=[l]\%,%
+ morestring=[mf]{input\ },%
+ morestring=[b]"%
+ }[keywords,comments,strings,mf]%
+%%
+%% Mizar definition (c) 2003 Adam Grabowski
+%%
+%% Mizar is freely available at URL www.mizar.org for the Linux x86,
+%% Solaris x86, and Windows operating systems.
+%%
+\lst at definelanguage{Mizar}%
+ {otherkeywords={->,(\#,\#),.=),\&},%
+ morekeywords={vocabulary,constructors,$1,$1,$2,$3,$4,$5,$6,$7,$8,%
+ @proof,according,aggregate,and,antonym,as,associativity,assume,%
+ asymmetry,attr,be,begin,being,by,canceled,case,cases,cluster,%
+ clusters,coherence,commutativity,compatibility,connectedness,%
+ consider,consistency,constructors,contradiction,correctness,def,%
+ deffunc,define,definition,definitions,defpred,end,environ,equals,%
+ ex,exactly,existence,for,from,func,given,hence,hereby,holds,%
+ idempotence,if,iff,implies,involutiveness,irreflexivity,is,it,%
+ let,means,mode,non,not,notation,now,of,or,otherwise,over,per,%
+ pred,prefix,projectivity,proof,provided,qua,reconsider,redefine,%
+ reflexivity,requirements,reserve,scheme,schemes,section,selector,%
+ set,st,struct,such,suppose,symmetry,synonym,take,that,the,then,%
+ theorem,theorems,thesis,thus,to,transitivity,uniqueness,%
+ vocabulary,where},%
+ sensitive=t,%
+ morecomment=[l]::%
+ }[keywords,comments]%
+\lst at definelanguage{Modula-2}%
+ {morekeywords={AND,ARRAY,BEGIN,BY,CASE,CONST,DIV,DO,ELSE,ELSIF,END,%
+ EXIT,EXPORT,FOR,FROM,IF,IMPLEMENTATION,IMPORT,IN,MOD,MODULE,NOT,%
+ OF,OR,POINTER,PROCEDURE,QUALIFIED,RECORD,REPEAT,RETURN,SET,THEN,%
+ TYPE,UNTIL,VAR,WHILE,WITH,ABS,BITSET,BOOLEAN,CAP,CARDINAL,CHAR,%
+ CHR,DEC,EXCL,FALSE,FLOAT,HALT,HIGH,INC,INCL,INTEGER,LONGCARD,%
+ LONGINT,LONGREAL,MAX,MIN,NIL,ODD,ORD,PROC,REAL,SIZE,TRUE,TRUNC,%
+ VAL,DEFINITION,LOOP},% added keywords due to Peter Bartke 99/07/22
+ sensitive,%
+ morecomment=[n]{(*}{*)},%
+ morestring=[d]',%
+ morestring=[d]"%
+ }[keywords,comments,strings]%
+\lst at definelanguage{MuPAD}{%
+ morekeywords={end,next,break,if,then,elif,else,end_if,case,end_case,%
+ otherwise,for,from,to,step,downto,in,end_for,while,end_while,%
+ repeat,until,end_repeat,or,and,not,xor,div,mod,union,minus,%
+ intersect,subset,proc,begin,end_proc,domain,end_domain,category,%
+ end_category,axiom,end_axiom,quit,delete,frame},%
+ morekeywords=[2]{NIL,FAIL,TRUE,FALSE,UNKNOWN,I,RD_INF,RD_NINF,%
+ RD_NAN,name,local,option,save,inherits,of,do},%
+ otherkeywords={\%if,?,!,:=,<,>,=,<=,<>,>=,==>,<=>,::,..,...,->,%
+ @,@@,\$},%
+ sensitive=true,%
+ morecomment=[l]{//},%
+ morecomment=[n]{/*}{*/},%
+ morestring=[b]",%
+ morestring=[d]{`}%
+ }[keywords,comments,strings]
+\lst at definelanguage{NASTRAN}
+ {morekeywords={ENDDATA},%
+ morecomment=[l]$,%
+ MoreSelectCharTable=%
+ \lst at CArgX BEGIN\ BULK\relax\lst at CDef{}%
+ {\lst at ifmode\else \ifnum\lst at length=\z@
+ \lst at EnterMode{\lst at GPmode}{\lst at modetrue
+ \let\lst at currstyle\lst at gkeywords@sty}%
+ \fi \fi}%
+ {\ifnum\lst at mode=\lst at GPmode
+ \lst at XPrintToken \lst at LeaveMode
+ \fi}%
+ }[keywords,comments]%
+\lst at definelanguage{Oberon-2}%
+ {morekeywords={ARRAY,BEGIN,BOOLEAN,BY,CASE,CHAR,CONST,DIV,DO,ELSE,%
+ ELSIF,END,EXIT,FALSE,FOR,IF,IMPORT,IN,INTEGER,IS,LONGINT,%
+ LONGREAL,LOOP,MOD,MODULE,NIL,OF,OR,POINTER,PROCEDURE,REAL,RECORD,%
+ REPEAT,RETURN,SET,SHORTINT,THEN,TO,TRUE,TYPE,UNTIL,VAR,WHILE,%
+ WITH,ABS,ASH,CAP,CHR,COPY,DEC,ENTIER,EXCL,HALT,INC,INCL,LEN,LONG,%
+ MAX,MIN,NEW,ODD,ORD,SHORT,SIZE},%
+ sensitive,%
+ morecomment=[n]{(*}{*)},%
+ morestring=[d]',%
+ morestring=[d]"%
+ }[keywords,comments,strings]%
+%%
+%% OCL definition (c) 2000 Achim D. Brucker
+%%
+%% You are allowed to use, modify and distribute this code either under
+%% the terms of the LPPL (version 1.0 or later) or the GPL (version 2.0
+%% or later).
+%%
+\lst at definelanguage[decorative]{OCL}[OMG]{OCL}
+ {otherkeywords={@pre},%
+ morendkeywords={name,attributes,associatoinEnds,operations,%
+ supertypes,allSupertypes,allInstances,oclIsKindOf,oclIsTypeOf,%
+ oclAsType,oclInState,oclIsNew,evaluationType,abs,floor,round,max,%
+ min,div,mod,size,concat,toUpper,toLower,substring,includes,%
+ excludes,count,includesAll,exludesAll,isEmpty,notEmpty,sum,%
+ exists,forAll,isUnique,sortedBy,iterate,union,intersection,%
+ including,excluding,symmetricDifference,select,reject,collect,%
+ asSequence,asBag,asSequence,asSet,append,prepend,subSequence,at,%
+ first,last,true,false,isQuery}%
+ }%
+\lst at definelanguage[OMG]{OCL}%
+ {morekeywords={context,pre,inv,post},%
+ ndkeywords={or,xor,and,not,implies,if,then,else,endif},%
+ morekeywords=[3]{Boolean,Integer,Real,String,Set,Sequence,Bag,%
+ OclType,OclAny,OclExpression,Enumeration,Collection,},%
+ sensitive=t,%
+ morecomment=[l]--,%
+ morestring=[d]'%
+ }[keywords,comments,strings]%
+\lst at definelanguage{Plasm}%
+ {sensitive=false,%
+ morekeywords={aa,abs,ac,acolor,acos,actor,al,alias,align,and,%
+ animation,animation,appearance,apply,ar,arc,as,asin,assoc,atan,%
+ axialcamera,axialcameras,basehermite,bbox,bbox,bernstein,%
+ bernsteinbasis,bezier,beziercurve,beziermanifold,bezierstripe,%
+ beziersurface,bigger,biggest,bilinearsurface,binormal,%
+ biquadraticsurface,black,blend,blue,bottom,box,brown,bspize,%
+ bspline,bsplinebasis,c,cabinet,camera,cart,case,cat,catch,ceil,%
+ centeredcameras,centralcavalier,char,charseq,choose,circle,%
+ circumference,class,cmap,color,comp,computecoords,cone,%
+ conicalsurface,cons,control,convexcoords,convexhull,coonspatch,%
+ copy,cos,cosh,crease,crosspolytope,cube,cubiccardinal,%
+ cubiccardinalbasis,cubichermite,cubicubspline,cubicubsplinebasis,%
+ cuboid,curl,curvature,curve2cspath,curve2mapvect,cyan,cylinder,%
+ cylindricalsurface,d,deboor,def,depol,depth_sort,depth_test,%
+ derbernstein,derbernsteinbase,derbezier,determinant,difference,%
+ differencepr,dim,dimetric,dirproject,displaygraph,displaynubspline,%
+ displaynurbspline,distl,distr,div,divergence,dodecahedron,dot,down,%
+ dp,drawedges,drawforks,drawtree,ds,dsphere,dump,dumprep,ellipse,%
+ embed,end,eq,ex,exp,explode,export,extract_bodies,extract_polygons,%
+ extract_wires,extrude,extrusion,fact,false,feature,ff,fillcolor,%
+ filter,finitecone,first,flash,flashani,floor,fontcolor,fontheight,%
+ fontspacing,fontwidth,fractalsimplex,frame,frame,frameflash,fromto,%
+ gausscurvature,ge,grad,gradient,gradmap,gray,green,gt,help,hermite,%
+ hermitebasis,hermitesurface,hexahedron,icosahedron,id,idnt,if,in,%
+ inarcs,innerprod,inset,insl,insr,intersection,intersectionpr,%
+ intervals,intmax,intmin,intsto,inv,isa,isanimpol,isbool,ischar,%
+ isclosedshape,iscloseto,isempty,iseven,isfun,isfunvect,isge,isgt,%
+ isint,isintneg,isinto,isintpos,isle,islt,ismat,ismatof,isnat,%
+ isnull,isnum,isnumneg,isnumpos,isodd,isometric,isorthoshape,ispair,%
+ ispoint,ispointseq,ispol,ispoldim,ispolytope,ispurepol,isreal,%
+ isrealneg,isrealpos,isrealvect,isseq,isseqof,isshape,issimplex,%
+ issqrmat,isstring,isvect,iszero,jacobian,join,joints,k,last,le,%
+ left,leftcavalier,len,less,lesseq,lex,lift,light,linecolor,%
+ linesize,list,ln,load,loadlib,loop,lt,lxmy,magenta,map,mapshapes,%
+ markersize,mat,matdotprod,material,mathom,max,mean,meanpoint,med,%
+ merge,mesh,min,minkowski,mirror,mixedprod,mk,mkframe,mkpol,%
+ mkvector,mkversork,mod,model,move,mul,multextrude,mxby,mxmy,mxty,%
+ myfont,n,nat2string,neq,ngon,norm2,normalmap,not,nu_grid,nubspline,%
+ nubsplineknots,nurbspline,nurbsplineknots,octahedron,offset,%
+ onepoint,open,optimize,or,orange,ord,ortho,orthoproject,orthox,%
+ orthoy,orthoz,outarcs,outerloop,outerwarp,pairdiff,parallel,%
+ pascaltriangle,pdiff,pdifference,permutahedron,permutations,%
+ perspective,perspective,pi,pivotop,plane,planemapping,pmap,%
+ points2shape,polar,polyline,polymarker,polypoint,power,powerset,%
+ presort,principalnormal,print,prism,profileprodsurface,%
+ progressivesum,project,projection,purple,pyramid,q,quadarray,%
+ quadmesh,quote,r,raise,range,rationalbezier,rationalblend,%
+ rationalbspline,rationalize,red,rev,reverse,rgbacolor,right,%
+ rightcavalier,ring,rn,rotatedtext,rotationalsurface,rotn,rtail,%
+ ruledsurface,rxmy,s,save,scalarmatprod,scalarvectprod,schlegel2d,%
+ schlegel3d,sdifference,sdifferencepr,segment,sel,setand,setdiff,%
+ setfontcolor,setor,setxor,sex,shape_0,shape_1,shape2points,%
+ shape2pol,shapeclosed,shapecomb,shapediff,shapedist,%
+ shapeinbetweening,shapeinf,shapejoin,shapelen,shapenorm,%
+ shapenormal,shapeprod,shaperot,shapesum,shapesup,shapezero,shift,%
+ showprop,sign,signal,simplex,simplexpile,sin,sinh,size,skeleton,%
+ skew,smaller,smallest,solidifier,solidify,sort,sphere,spline,%
+ splinesampling,splitcells,splitpols,sqr,sqrt,star,string,%
+ stringtokens,struct,sub,svg,sweep,t,tail,tan,tangent,tanh,%
+ tensorprodsurface,tetrahedron,text,texture,textwithattributes,%
+ thinsolid,threepoints,time,tmax,tmin,top,torus,torusmap,trace,%
+ trans,tree,trianglefan,trianglestripe,trimetric,true,truncone,tt,%
+ tube,twopoints,uk,ukpol,ukpolf,union,unionpr,unitvect,unprune,up,%
+ vect2dtoangle,vect2mat,vectdiff,vectnorm,vectprod,vectsum,view,%
+ viewmodel,viewmodel,vrml,warp,warp,where,white,with,xcavalier,xor,%
+ xquadarray,xx,ycavalier,yellow},%
+ moredirectives={loadlib},%
+ otherkeywords={-,+,*,**,/,~,|,..,^,\&,\&\&,\#,\#\#},%
+ morecomment=[s]{\%}{\%},%
+ morestring=[b]',%
+ literate={~}{{$\sim$}}{1} {^}{$\wedge$}{1},%
+ }[keywords,directives,comments,strings]%
+\lst at definelanguage{PL/I}%
+ {morekeywords={ABS,ATAN,AUTOMATIC,AUTO,ATAND,BEGIN,BINARY,BIN,BIT,%
+ BUILTIN,BY,CALL,CHARACTER,CHAR,CHECK,COLUMN,COL,COMPLEX,CPLX,%
+ COPY,COS,COSD,COSH,DATA,DATE,DECIMAL,DEC,DECLARE,DCL,DO,EDIT,%
+ ELSE,END,ENDFILE,ENDPAGE,ENTRY,EXP,EXTERNAL,EXT,FINISH,FIXED,%
+ FIXEDOVERFLOW,FOFL,FLOAT,FORMAT,GET,GO,GOTO,IF,IMAG,INDEX,%
+ INITIAL,INIT,INTERNAL,INT,LABEL,LENGTH,LIKE,LINE,LIST,LOG,LOG2,%
+ LOG10,MAIN,MAX,MIN,MOD,NOCHECK,NOFIXEDOVERFLOW,NOFOFL,NOOVERFLOW,%
+ NOOFL,NOSIZE,NOUNDERFLOW,NOUFL,NOZERODIVIDE,NOZDIV,ON,OPTIONS,%
+ OVERFLOW,OFL,PAGE,PICTURE,PROCEDURE,PROC,PUT,READ,REPEAT,RETURN,%
+ RETURNS,ROUND,SIN,SIND,SINH,SIZE,SKIP,SQRT,STATIC,STOP,STRING,%
+ SUBSTR,SUM,SYSIN,SYSPRINT,TAN,TAND,TANH,THEN,TO,UNDERFLOW,UFL,%
+ VARYING,WHILE,WRITE,ZERODIVIDE,ZDIV},%
+ sensitive=f,%
+ morecomment=[s]{/*}{*/},%
+ morestring=[d]'%
+ }[keywords,comments,strings]%
+%%
+%% Promela definition (c) 2004 William Thimbleby
+%%
+\lst at definelanguage{Promela}
+ {morekeywords={active,assert,atomic,bit,bool,break,byte,chan,d_step,%
+ Dproctype,do,else,empty,enabled,fi,full,goto,hidden,if,init,int,%
+ len,mtype,nempty,never,nfull,od,of,pcvalue,printf,priority,%
+ proctype,provided,run,short,skip,timeout,typedef,unless,unsigned,%
+ xr,xs,true,false,inline,eval},%
+ moredirectives={define,ifdef,ifndef,if,if,else,endif,undef,include},%
+ moredelim=*[directive]\#,%
+ morecomment=[s]{/*}{*/},%
+ morestring=[b]"%
+ }[keywords,comments,strings,directives]%
+%%
+%% Reduce definition (c) 2002 Geraint Paul Bevan
+%%
+\lst at definelanguage{Reduce}%
+ {morekeywords={%
+%% reserved identifiers
+abs,acos,acosh,acot,acoth,acsc,acsch,%
+adjprec,algebraic,algint,allbranch,allfac,and,%
+antisymmetric,append,arglength,array,asec,asech,%
+asin,asinh,atan,atan2,atanh,begin,bfspace,bye,%
+card_no,ceiling,clear,clearrules,coeff,coeffn,%
+cofactor,combineexpt,combinelogs,comment,comp,%
+complex,conj,cons,cont,cos,cosh,cot,coth,cramer,%
+cref,csc,csch,decompose,define,defn,deg,demo,den,%
+depend,det,df,difference,dilog,display,div,do,e,%
+echo,ed,editdef,ei,end,eps,eq,equal,erf,errcont,%
+evallhseqp,eval_mode,even,evenp,exp,expandlogs,%
+expr,expt,ezgcd,factor,factorial,factorize,fexpr,%
+first,fix,fixp,floor,for,forall,foreach,fort,%
+fort_width,freeof,fullroots,g,gcd,geq,go,goto,%
+greaterp,high_pow,hypot,i,if,ifactor,impart,in,%
+index,infinity,infix,input,int,integer,interpol,%
+intstr,k,korder,lambda,lcm,lcof,length,leq,lessp,%
+let,lhs,linear,linelength,lisp,list,listargp,%
+listargs,ln,load,load_package,log,log10,logb,%
+low_pow,lterm,macro,mainvar,mass,mat,match,%
+mateigen,matrix,max,mcd,member,memq,min,minus,mkid,%
+modular,msg,mshell,multiplicities,nat,neq,nero,%
+nextprime,nil,nodepend,noncom,nonzero,nosplit,%
+nospur,nullspace,num,numberp,odd,off,on,operator,%
+or,order,ordp,out,output,part,pause,period,pf,pi,%
+plus,precedence,precise,precision,pret,pri,primep,%
+print_precision,procedure,product,quit,quotient,%
+random,random_new_seed,rank,rat,ratarg,rational,%
+rationalize,ratpri,real,rederr,reduct,remainder,%
+remfac,remind,repart,repeat,rest,resultant,retry,%
+return,reverse,revpri,rhs,rlisp88,%
+root_multiplicity,round,roundall,roundbf,rounded,%
+saveas,savestructr,scalar,sec,sech,second,set,%
+setmod,setq,share,showrules,showtime,shut,sign,sin,%
+sinh,smacro,solve,solvesingular,spur,sqrt,structr,%
+sub,sum,symbolic,symmetric,t,tan,tanh,third,time,%
+times,tp,tra,trace,trfac,trigform,trint,until,%
+varname,vecdim,vector,weight,when,where,while,%
+write,ws,wtlevel,%
+%% identifiers with spaces
+%% for all,for each,go to,such that,%
+},%
+ sensitive=false,%
+ morecomment=[l]\%,%
+ morecomment=[s]{COMMENT}{;},%
+ morecomment=[s]{COMMENT}{$},%
+ morestring="%
+ }[keywords,comments,strings]%
+%%
+%% RSL definition (c) 2004 Brian Christensen
+%%
+\lst at definelanguage{RSL}%
+ {morekeywords={Bool,Char,devt_relation,Int,Nat,Real,Text,Unit,abs,any,%
+ as,axiom,card,case,channel,chaos,class,do,dom,elems,else,elsif,end,%
+ extend,false,for,hd,hide,if,in,inds,initialise,int,len,let,local,%
+ object,of,out,post,pre,read,real,rng,scheme,skip,stop,swap,%
+ test_case,theory,then,tl,true,type,until,use,value,variable,while,%
+ with,write},%
+literate=%
+{<}{$<$}{1}%
+{>}{$>$}{1}%
+{[}{$[$}{1}%%
+{]}{$]$}{1}%%
+{^}{{\mbox{$\widehat{\;}$}}}{1}%%
+{'}{{\raisebox{1ex}[1ex][0ex]{\protect\scriptsize$\prime$}}}{1}%%
+{||}{{\mbox{$\parallel$}}}{2}%%
+{|-}{$\vdash$}{1}%%
+{|=|}{{\mbox{$\lceil\!\rceil\!\!\!\!\!\!\;\lfloor\!\rfloor$}}}{1}%%
+{**}{$\uparrow$}{1}%
+{/\\}{$\wedge$}{1}%%
+{inter}{$\cap$}{1}%%
+{-\\}{$\lambda$}{1}%%
+{->}{$\rightarrow$}{1}%%
+{-m->}{{\mbox{$\rightarrow \hspace{-2.5\lst at width} _{m}\;$}}}{1}%
+{-~m->}{{\mbox{$\stackrel{\sim}{\mbox{$\rightarrow\hspace{-2.5\lst at width} _{m}\;$}}$}}}{1}%
+{-~->}{{\mbox{$\stackrel{\sim}{\rightarrow}$}}}{1}%%
+{-set}{\bf{-set}}{4}%%
+{-list}{{$^{\ast}$}}{1}%%
+{-inflist}{$^\omega$}{1}%
+{-infset}{{\mbox{{\bf -infset}}}}{7}%
+{\#}{$\circ$}{1}%
+{:-}{{\raisebox{.4ex}{\tiny $\bullet$}}}{1}%%
+{=}{$=$}{1}%%
+{==}{$==$}{2}%%
+{=>}{$\Rightarrow$}{1}%%
+{\ is\protect\^^M}{{$\;\equiv$}}{2}%
+{\ is\ }{{$\equiv$}}{3}%%
+{\ isin\protect\^^M}{$\;\in$}{2}%%
+{~}{$\sim$}{1}%%
+{~=}{$\neq$}{1}%%
+{~isin}{$\notin$}{1}%%
+{+>}{$\mapsto$}{1}%%
+{++}{}{1}%
+{|^|}{{\mbox{$\lceil\!\rceil$}}}{1}%%
+{\\/}{$\vee$}{1}%%
+{exists}{$\exists$}{1}%%
+{union}{$\cup$}{1}%%
+{>=}{$\geq$}{1}%%
+{><}{$\times$}{1}%%
+{>>}{$\supset$}{1}%
+{>>=}{$\supseteq$}{1}%%
+{<=}{$\leq$}{1}%%
+{<<}{$\subset$}{1}%
+{<.}{$\langle$}{1}%%
+{<<=}{$\subseteq$}{1}%%
+{<->}{$\leftrightarrow$}{1}%%
+{[=}{$\sqsubseteq$}{1}%%
+{\{=}{$\preceq$}{1}%%
+{\ all\protect\^^M}{$\forall$}{2}%%
+{\ all\ }{$\forall$}{3}%%
+{!!}{$\dagger$}{1}%%
+{always}{$\Box$}{1}%%
+{.>}{$\rangle$}{1}%%
+{`alpha}{$\alpha$}{1}%
+{`beta}{$\beta$}{1}%
+{`gamma}{$\gamma$}{1}%
+{`delta}{$\delta$}{1}%
+{`epsilon}{$\epsilon$}{1}%
+{`zeta}{$\zeta$}{1}%
+{`eta}{$\eta$}{1}%
+{`theta}{$\theta$}{1}%
+{`iota}{$\iota$}{1}%
+{`kappa}{$\kappa$}{1}%
+{`mu}{$\mu$}{1}%
+{`nu}{$\nu$}{1}%
+{`xi}{$\xi$}{1}%
+{`pi}{$\pi$}{1}%
+{`rho}{$\rho$}{1}%
+{`sigma}{$\sigma$}{1}%
+{`tau}{$\tau$}{1}%
+{`upsilon}{$\upsilon$}{1}%
+{`phi}{$\phi$}{1}%
+{`chi}{$\chi$}{1}%
+{`psi}{$\psi$}{1}%
+{`omega}{$\omega$}{1}%
+{`Gamma}{$\Gamma$}{1}%
+{`Delta}{$\Delta$}{1}%
+{`Theta}{$\Theta$}{1}%
+{`Lambda}{$\Lambda$}{1}%
+{`Xi}{$\Xi$}{1}%
+{`Pi}{$\Pi$}{1}%
+{`Sigma}{$\Sigma$}{1}%
+{`Upsilon}{$\Upsilon$}{1}%
+{`Phi}{$\Phi$}{1}%
+{`Psi}{$\Psi$}{1}%
+{`Omega}{$\Omega$}{1},%
+ sensitive=true,%
+ morecomment=[l]{--},%
+ morecomment=[s]{/*}{*/}%
+ }[keywords,comments]%
+\lst at definelanguage[IBM]{Simula}[DEC]{Simula}{}%
+\lst at definelanguage[DEC]{Simula}[67]{Simula}%
+ {morekeywords={and,eq,eqv,ge,gt,hidden,imp,le,long,lt,ne,not,%
+ options,or,protected,short}%
+ }%
+\lst at definelanguage[CII]{Simula}[67]{Simula}%
+ {morekeywords={and,equiv,exit,impl,not,or,stop}}%
+\lst at definelanguage[67]{Simula}%
+ {morekeywords={activate,after,array,at,before,begin,boolean,%
+ character,class,comment,delay,detach,do,else,end,external,false,%
+ for,go,goto,if,in,inner,inspect,integer,is,label,name,new,none,%
+ notext,otherwise,prior,procedure,qua,reactivate,real,ref,resume,%
+ simset,simulation,step,switch,text,then,this,to,true,until,value,%
+ virtual,when,while},%
+ sensitive=f,%
+ keywordcommentsemicolon={end}{else,end,otherwise,when}{comment},%
+ morestring=[d]",%
+ morestring=[d]'%
+ }[keywords,keywordcomments,strings]%
+\lst at definelanguage{S}[]{R}{}
+\lst at definelanguage[PLUS]{S}[]{R}{}
+\lst at definelanguage{R}%
+ {keywords={abbreviate,abline,abs,acos,acosh,action,add1,add,%
+ aggregate,alias,Alias,alist,all,anova,any,aov,aperm,append,apply,%
+ approx,approxfun,apropos,Arg,args,array,arrows,as,asin,asinh,%
+ atan,atan2,atanh,attach,attr,attributes,autoload,autoloader,ave,%
+ axis,backsolve,barplot,basename,besselI,besselJ,besselK,besselY,%
+ beta,binomial,body,box,boxplot,break,browser,bug,builtins,bxp,by,%
+ c,C,call,Call,case,cat,category,cbind,ceiling,character,char,%
+ charmatch,check,chol,chol2inv,choose,chull,class,close,cm,codes,%
+ coef,coefficients,co,col,colnames,colors,colours,commandArgs,%
+ comment,complete,complex,conflicts,Conj,contents,contour,%
+ contrasts,contr,control,helmert,contrib,convolve,cooks,coords,%
+ distance,coplot,cor,cos,cosh,count,fields,cov,covratio,wt,CRAN,%
+ create,crossprod,cummax,cummin,cumprod,cumsum,curve,cut,cycle,D,%
+ data,dataentry,date,dbeta,dbinom,dcauchy,dchisq,de,debug,%
+ debugger,Defunct,default,delay,delete,deltat,demo,de,density,%
+ deparse,dependencies,Deprecated,deriv,description,detach,%
+ dev2bitmap,dev,cur,deviance,off,prev,,dexp,df,dfbetas,dffits,%
+ dgamma,dgeom,dget,dhyper,diag,diff,digamma,dim,dimnames,dir,%
+ dirname,dlnorm,dlogis,dnbinom,dnchisq,dnorm,do,dotplot,double,%
+ download,dpois,dput,drop,drop1,dsignrank,dt,dummy,dump,dunif,%
+ duplicated,dweibull,dwilcox,dyn,edit,eff,effects,eigen,else,%
+ emacs,end,environment,env,erase,eval,equal,evalq,example,exists,%
+ exit,exp,expand,expression,External,extract,extractAIC,factor,%
+ fail,family,fft,file,filled,find,fitted,fivenum,fix,floor,for,%
+ For,formals,format,formatC,formula,Fortran,forwardsolve,frame,%
+ frequency,ftable,ftable2table,function,gamma,Gamma,gammaCody,%
+ gaussian,gc,gcinfo,gctorture,get,getenv,geterrmessage,getOption,%
+ getwd,gl,glm,globalenv,gnome,GNOME,graphics,gray,grep,grey,grid,%
+ gsub,hasTsp,hat,heat,help,hist,home,hsv,httpclient,I,identify,if,%
+ ifelse,Im,image,\%in\%,index,influence,measures,inherits,install,%
+ installed,integer,interaction,interactive,Internal,intersect,%
+ inverse,invisible,IQR,is,jitter,kappa,kronecker,labels,lapply,%
+ layout,lbeta,lchoose,lcm,legend,length,levels,lgamma,library,%
+ licence,license,lines,list,lm,load,local,locator,log,log10,log1p,%
+ log2,logical,loglin,lower,lowess,ls,lsfit,lsf,ls,machine,Machine,%
+ mad,mahalanobis,make,link,margin,match,Math,matlines,mat,matplot,%
+ matpoints,matrix,max,mean,median,memory,menu,merge,methods,min,%
+ missing,Mod,mode,model,response,mosaicplot,mtext,mvfft,na,nan,%
+ names,omit,nargs,nchar,ncol,NCOL,new,next,NextMethod,nextn,%
+ nlevels,nlm,noquote,NotYetImplemented,NotYetUsed,nrow,NROW,null,%
+ numeric,\%o\%,objects,offset,old,on,Ops,optim,optimise,optimize,%
+ options,or,order,ordered,outer,package,packages,page,pairlist,%
+ pairs,palette,panel,par,parent,parse,paste,path,pbeta,pbinom,%
+ pcauchy,pchisq,pentagamma,persp,pexp,pf,pgamma,pgeom,phyper,pico,%
+ pictex,piechart,Platform,plnorm,plogis,plot,pmatch,pmax,pmin,%
+ pnbinom,pnchisq,pnorm,points,poisson,poly,polygon,polyroot,pos,%
+ postscript,power,ppoints,ppois,predict,preplot,pretty,Primitive,%
+ print,prmatrix,proc,prod,profile,proj,prompt,prop,provide,%
+ psignrank,ps,pt,ptukey,punif,pweibull,pwilcox,q,qbeta,qbinom,%
+ qcauchy,qchisq,qexp,qf,qgamma,qgeom,qhyper,qlnorm,qlogis,qnbinom,%
+ qnchisq,qnorm,qpois,qqline,qqnorm,qqplot,qr,Q,qty,qy,qsignrank,%
+ qt,qtukey,quantile,quasi,quit,qunif,quote,qweibull,qwilcox,%
+ rainbow,range,rank,rbeta,rbind,rbinom,rcauchy,rchisq,Re,read,csv,%
+ csv2,fwf,readline,socket,real,Recall,rect,reformulate,regexpr,%
+ relevel,remove,rep,repeat,replace,replications,report,require,%
+ resid,residuals,restart,return,rev,rexp,rf,rgamma,rgb,rgeom,R,%
+ rhyper,rle,rlnorm,rlogis,rm,rnbinom,RNGkind,rnorm,round,row,%
+ rownames,rowsum,rpois,rsignrank,rstandard,rstudent,rt,rug,runif,%
+ rweibull,rwilcox,sample,sapply,save,scale,scan,scan,screen,sd,se,%
+ search,searchpaths,segments,seq,sequence,setdiff,setequal,set,%
+ setwd,show,sign,signif,sin,single,sinh,sink,solve,sort,source,%
+ spline,splinefun,split,sqrt,stars,start,stat,stem,step,stop,%
+ storage,strstrheight,stripplot,strsplit,structure,strwidth,sub,%
+ subset,substitute,substr,substring,sum,summary,sunflowerplot,svd,%
+ sweep,switch,symbol,symbols,symnum,sys,status,system,t,table,%
+ tabulate,tan,tanh,tapply,tempfile,terms,terrain,tetragamma,text,%
+ time,title,topo,trace,traceback,transform,tri,trigamma,trunc,try,%
+ ts,tsp,typeof,unclass,undebug,undoc,union,unique,uniroot,unix,%
+ unlink,unlist,unname,untrace,update,upper,url,UseMethod,var,%
+ variable,vector,Version,vi,warning,warnings,weighted,weights,%
+ which,while,window,write,\%x\%,x11,X11,xedit,xemacs,xinch,xor,%
+ xpdrows,xy,xyinch,yinch,zapsmall,zip},%
+ otherkeywords={!,!=,~,$,*,\&,\%/\%,\%*\%,\%\%,<-,<<-,_,/},%
+ alsoother={._$},%
+ sensitive,%
+ morecomment=[l]\#,%
+ morestring=[d]",%
+ morestring=[d]'% 2001 Robert Denham
+ }%
+\lst at definelanguage{SAS}%
+ {procnamekeys={proc},%
+ morekeywords={DATA,AND,OR,NOT,EQ,GT,LT,GE,LE,NE,INFILE,INPUT,DO,BY,%
+ TO,SIN,COS,OUTPUT,END,PLOT,RUN,LIBNAME,VAR,TITLE,FIRSTOBS,OBS,%
+ DELIMITER,DLM,EOF,ABS,DIM,HBOUND,LBOUND,MAX,MIN,MOD,SIGN,SQRT,%
+ CEIL,FLOOR,FUZZ,INT,ROUND,TRUNC,DIGAMMA,ERF,ERFC,EXP,GAMMA,%
+ LGAMMA,LOG,LOG2,LOG10,ARCOS,ARSIN,ATAN,COSH,SINH,TANH,TAN,%
+ POISSON,PROBBETA,PROBBNML,PROBCHI,PROBF,PROBGAM,PROBHYPR,%
+ PROBNEGB,PROBNORM,PROBT,BETAINV,CINV,FINV,GAMINV,PROBIT,TINV,CSS,%
+ CV,KURTOSIS,MEAN,NMISS,RANGE,SKEWNESS,STD,STDERR,SUM,USS,NORMAL,%
+ RANBIN,RANCAU,RANEXP,RANGAM,RANNOR,RANPOI,RANTBL,RANTRI,RANUNI,%
+ UNIFORM,IF,THEN,ELSE,WHILE,UNTIL,DROP,KEEP,LABEL,DEFAULT,ARRAY,%
+ MERGE,CARDS,CARDS4,PUT,SET,UPDATE,ABORT,DELETE,DISPLAY,LIST,%
+ LOSTCARD,MISSING,STOP,WHERE,ARRAY,DROP,KEEP,WINDOW,LENGTH,RENAME,%
+ RETAIN,MEANS,UNIVARIATE,SUMMARY,TABULATE,CORR,FREQ,FOOTNOTE,NOTE,%
+ SHOW},%
+ otherkeywords={!,!=,~,$,*,\&,_,/,<,>=,=<,>},%
+ morestring=[d]'%
+ }[keywords,comments,strings,procnames]%
+\lst at definelanguage[AlLaTeX]{TeX}[LaTeX]{TeX}%
+ {moretexcs={AtBeginDocument,AtBeginDvi,AtEndDocument,AtEndOfClass,%
+ AtEndOfPackage,ClassError,ClassInfo,ClassWarning,%
+ ClassWarningNoLine,CurrentOption,DeclareErrorFont,%
+ DeclareFixedFont,DeclareFontEncoding,DeclareFontEncodingDefaults,%
+ DeclareFontFamily,DeclareFontShape,DeclareFontSubstitution,%
+ DeclareMathAccent,DeclareMathAlphabet,DeclareMathAlphabet,%
+ DeclareMathDelimiter,DeclareMathRadical,DeclareMathSizes,%
+ DeclareMathSymbol,DeclareMathVersion,DeclareOldFontCommand,%
+ DeclareOption,DeclarePreloadSizes,DeclareRobustCommand,%
+ DeclareSizeFunction,DeclareSymbolFont,DeclareSymbolFontAlphabet,%
+ DeclareTextAccent,DeclareTextAccentDefault,DeclareTextCommand,%
+ DeclareTextCommandDefault,DeclareTextComposite,%
+ DeclareTextCompositeCommand,DeclareTextFontCommand,%
+ DeclareTextSymbol,DeclareTextSymbolDefault,ExecuteOptions,%
+ GenericError,GenericInfo,GenericWarning,IfFileExists,%
+ InputIfFileExists,LoadClass,LoadClassWithOptions,MessageBreak,%
+ OptionNotUsed,PackageError,PackageInfo,PackageWarning,%
+ PackageWarningNoLine,PassOptionsToClass,PassOptionsToPackage,%
+ ProcessOptionsProvidesClass,ProvidesFile,ProvidesFile,%
+ ProvidesPackage,ProvideTextCommand,RequirePackage,%
+ RequirePackageWithOptions,SetMathAlphabet,SetSymbolFont,%
+ TextSymbolUnavailable,UseTextAccent,UseTextSymbol},%
+ morekeywords={array,center,displaymath,document,enumerate,eqnarray,%
+ equation,flushleft,flushright,itemize,list,lrbox,math,minipage,%
+ picture,sloppypar,tabbing,tabular,trivlist,verbatim}%
+ }%
+\lst at definelanguage[LaTeX]{TeX}[common]{TeX}%
+ {moretexcs={a,AA,aa,addcontentsline,addpenalty,addtocontents,%
+ addtocounter,addtolength,addtoversion,addvspace,alph,Alph,and,%
+ arabic,array,arraycolsep,arrayrulewidth,arraystretch,author,%
+ baselinestretch,begin,bezier,bfseries,bibcite,bibdata,bibitem,%
+ bibliography,bibliographystyle,bibstyle,bigskip,boldmath,%
+ botfigrule,bottomfraction,Box,caption,center,CheckCommand,circle,%
+ citation,cite,cleardoublepage,clearpage,cline,columnsep,%
+ columnseprule,columnwidth,contentsline,dashbox,date,dblfigrule,%
+ dblfloatpagefraction,dblfloatsep,dbltextfloatsep,dbltopfraction,%
+ defaultscriptratio,defaultscriptscriptratio,depth,Diamond,%
+ displaymath,document,documentclass,documentstyle,doublerulesep,%
+ em,emph,endarray,endcenter,enddisplaymath,enddocument,%
+ endenumerate,endeqnarray,endequation,endflushleft,endflushright,%
+ enditemize,endlist,endlrbox,endmath,endminipage,endpicture,%
+ endsloppypar,endtabbing,endtabular,endtrivlist,endverbatim,%
+ enlargethispage,ensuremath,enumerate,eqnarray,equation,%
+ evensidemargin,extracolsep,fbox,fboxrule,fboxsep,filecontents,%
+ fill,floatpagefraction,floatsep,flushbottom,flushleft,flushright,%
+ fnsymbol,fontencoding,fontfamily,fontseries,fontshape,fontsize,%
+ fontsubfuzz,footnotemark,footnotesep,footnotetext,footskip,frac,%
+ frame,framebox,fussy,glossary,headheight,headsep,height,hline,%
+ hspace,I,include,includeonly,index,inputlineno,intextsep,%
+ itemindent,itemize,itemsep,iterate,itshape,Join,kill,label,%
+ labelsep,labelwidth,LaTeX,LaTeXe,leadsto,lefteqn,leftmargin,%
+ leftmargini,leftmarginii,leftmarginiii,leftmarginiv,leftmarginv,%
+ leftmarginvi,leftmark,lhd,lim,linebreak,linespread,linethickness,%
+ linewidth,list,listfiles,listfiles,listparindent,lrbox,%
+ makeatletter,makeatother,makebox,makeglossary,makeindex,%
+ makelabel,MakeLowercase,MakeUppercase,marginpar,marginparpush,%
+ marginparsep,marginparwidth,markboth,markright,math,mathbf,%
+ mathellipsis,mathgroup,mathit,mathrm,mathsf,mathsterling,mathtt,%
+ mathunderscore,mathversion,mbox,mdseries,mho,minipage,%
+ multicolumn,multiput,NeedsTeXFormat,newcommand,newcounter,%
+ newenvironment,newfont,newhelp,newlabel,newlength,newline,%
+ newmathalphabet,newpage,newsavebox,newtheorem,nobreakspace,%
+ nobreakspace,nocite,nocorr,nocorrlist,nofiles,nolinebreak,%
+ nonumber,nopagebreak,normalcolor,normalfont,normalmarginpar,%
+ numberline,obeycr,oddsidemargin,oldstylenums,onecolumn,oval,%
+ pagebreak,pagenumbering,pageref,pagestyle,paperheight,paperwidth,%
+ paragraphmark,parbox,parsep,partopsep,picture,poptabs,pounds,%
+ protect,pushtabs,put,qbezier,qbeziermax,r,raggedleft,raisebox,%
+ ref,refstepcounter,renewcommand,renewenvironment,restorecr,%
+ reversemarginpar,rhd,rightmargin,rightmark,rmfamily,roman,Roman,%
+ rootbox,rule,samepage,sbox,scshape,secdef,section,sectionmark,%
+ selectfont,setcounter,settodepth,settoheight,settowidth,sffamily,%
+ shortstack,showoutput,showoverfull,sloppy,sloppypar,slshape,%
+ smallskip,sqsubset,sqsupset,SS,stackrel,stepcounter,stop,stretch,%
+ subparagraphmark,subsectionmark,subsubsectionmark,sum,%
+ suppressfloats,symbol,tabbing,tabbingsep,tabcolsep,tabular,%
+ tabularnewline,textasciicircum,textasciitilde,textbackslash,%
+ textbar,textbf,textbraceleft,textbraceright,textbullet,%
+ textcircled,textcompwordmark,textdagger,textdaggerdbl,textdollar,%
+ textellipsis,textemdash,textendash,textexclamdown,textfloatsep,%
+ textfraction,textgreater,textheight,textit,textless,textmd,%
+ textnormal,textparagraph,textperiodcentered,textquestiondown,%
+ textquotedblleft,textquotedblright,textquoteleft,textquoteright,%
+ textregistered,textrm,textsc,textsection,textsf,textsl,%
+ textsterling,textsuperscript,texttrademark,texttt,textunderscore,%
+ textup,textvisiblespace,textwidth,thanks,thefootnote,thempfn,%
+ thempfn,thempfootnote,thepage,thepage,thicklines,thinlines,%
+ thispagestyle,title,today,topfigrule,topfraction,topmargin,%
+ topsep,totalheight,tracingfonts,trivlist,ttfamily,twocolumn,%
+ typein,typeout,unboldmath,unitlength,unlhd,unrhd,upshape,usebox,%
+ usecounter,usefont,usepackage,value,vector,verb,verbatim,vline,%
+ vspace,width,%
+ normalsize,small,footnotesize,scriptsize,tiny,large,Large,LARGE,%
+ huge,Huge}%
+ }%
+\lst at definelanguage[plain]{TeX}[common]{TeX}%
+ {moretexcs={advancepageno,beginsection,bf,bffam,bye,cal,cleartabs,%
+ columns,dosupereject,endinsert,eqalign,eqalignno,fiverm,fivebf,%
+ fivei,fivesy,folio,footline,hang,headline,it,itemitem,itfam,%
+ leqalignno,magnification,makefootline,makeheadline,midinsert,mit,%
+ mscount,nopagenumbers,normalbottom,of,oldstyle,pagebody,%
+ pagecontents,pageinsert,pageno,plainoutput,preloaded,proclaim,rm,%
+ settabs,sevenbf,seveni,sevensy,sevenrm,sl,slfam,supereject,%
+ tabalign,tabs,tabsdone,tabsyet,tenbf,tenex,teni,tenit,tenrm,%
+ tensl,tensy,tentt,textindent,topglue,topins,topinsert,tt,ttfam,%
+ ttraggedright,vfootnote}%
+ }%
+\lst at definelanguage[common]{TeX}[primitive]{TeX}
+ {moretexcs={active,acute,ae,AE,aleph,allocationnumber,allowbreak,%
+ alpha,amalg,angle,approx,arccos,arcsin,arctan,arg,arrowvert,%
+ Arrowvert,ast,asymp,b,backslash,bar,beta,bgroup,big,Big,bigbreak,%
+ bigcap,bigcirc,bigcup,bigg,Bigg,biggl,Biggl,biggm,Biggm,biggr,%
+ Biggr,bigl,Bigl,bigm,Bigm,bigodot,bigoplus,bigotimes,bigr,Bigr,%
+ bigskip,bigskipamount,bigsqcup,bigtriangledown,bigtriangleup,%
+ biguplus,bigvee,bigwedge,bmod,bordermatrix,bot,bowtie,brace,%
+ braceld,bracelu,bracerd,braceru,bracevert,brack,break,breve,%
+ buildrel,bullet,c,cap,cases,cdot,cdotp,cdots,centering,%
+ centerline,check,chi,choose,circ,clubsuit,colon,cong,coprod,%
+ copyright,cos,cosh,cot,coth,csc,cup,d,dag,dagger,dashv,ddag,%
+ ddagger,ddot,ddots,deg,delta,Delta,det,diamond,diamondsuit,dim,%
+ displaylines,div,do,dospecials,dot,doteq,dotfill,dots,downarrow,%
+ Downarrow,downbracefill,egroup,eject,ell,empty,emptyset,endgraf,%
+ endline,enskip,enspace,epsilon,equiv,eta,exists,exp,filbreak,%
+ flat,fmtname,fmtversion,footins,footnote,footnoterule,forall,%
+ frenchspacing,frown,gamma,Gamma,gcd,ge,geq,gets,gg,goodbreak,%
+ grave,H,hat,hbar,heartsuit,hglue,hideskip,hidewidth,hom,%
+ hookleftarrow,hookrightarrow,hphantom,hrulefill,i,ialign,iff,Im,%
+ imath,in,inf,infty,int,interdisplaylinepenalty,%
+ interfootnotelinepenalty,intop,iota,item,j,jmath,joinrel,jot,%
+ kappa,ker,l,L,lambda,Lambda,land,langle,lbrace,lbrack,lceil,%
+ ldotp,ldots,le,leavevmode,leftarrow,Leftarrow,leftarrowfill,%
+ leftharpoondown,leftharpoonup,leftline,leftrightarrow,%
+ Leftrightarrow,leq,lfloor,lg,lgroup,lhook,lim,liminf,limsup,line,%
+ ll,llap,lmoustache,ln,lnot,log,longleftarrow,Longleftarrow,%
+ longleftrightarrow,Longleftrightarrow,longmapsto,longrightarrow,%
+ Longrightarrow,loop,lor,lq,magstep,magstep,magstephalf,mapsto,%
+ mapstochar,mathhexbox,mathpalette,mathstrut,matrix,max,maxdimen,%
+ medbreak,medskip,medskipamount,mid,min,models,mp,mu,multispan,%
+ nabla,narrower,natural,ne,nearrow,neg,negthinspace,neq,newbox,%
+ newcount,newdimen,newfam,newif,newinsert,newlanguage,newmuskip,%
+ newread,newskip,newtoks,newwrite,next,ni,nobreak,nointerlineskip,%
+ nonfrenchspacing,normalbaselines,normalbaselineskip,%
+ normallineskip,normallineskiplimit,not,notin,nu,null,nwarrow,o,O,%
+ oalign,obeylines,obeyspaces,odot,oe,OE,offinterlineskip,oint,%
+ ointop,omega,Omega,ominus,ooalign,openup,oplus,oslash,otimes,%
+ overbrace,overleftarrow,overrightarrow,owns,P,parallel,partial,%
+ perp,phantom,phi,Phi,pi,Pi,pm,pmatrix,pmod,Pr,prec,preceq,prime,%
+ prod,propto,psi,Psi,qquad,quad,raggedbottom,raggedright,rangle,%
+ rbrace,rbrack,rceil,Re,relbar,Relbar,removelastskip,repeat,%
+ rfloor,rgroup,rho,rhook,rightarrow,Rightarrow,rightarrowfill,%
+ rightharpoondown,rightharpoonup,rightleftharpoons,rightline,rlap,%
+ rmoustache,root,rq,S,sb,searrow,sec,setminus,sharp,showhyphens,%
+ sigma,Sigma,sim,simeq,sin,sinh,skew,slash,smallbreak,smallint,%
+ smallskip,smallskipamount,smash,smile,sp,space,spadesuit,sqcap,%
+ sqcup,sqrt,sqsubseteq,sqsupseteq,ss,star,strut,strutbox,subset,%
+ subseteq,succ,succeq,sum,sup,supset,supseteq,surd,swarrow,t,tan,%
+ tanh,tau,TeX,theta,Theta,thinspace,tilde,times,to,top,tracingall,%
+ triangle,triangleleft,triangleright,u,underbar,underbrace,%
+ uparrow,Uparrow,upbracefill,updownarrow,Updownarrow,uplus,%
+ upsilon,Upsilon,v,varepsilon,varphi,varpi,varrho,varsigma,%
+ vartheta,vdash,vdots,vec,vee,vert,Vert,vglue,vphantom,wedge,%
+ widehat,widetilde,wlog,wp,wr,xi,Xi,zeta}%
+ }%
+\lst at definelanguage[primitive]{TeX}%
+ {moretexcs={above,abovedisplayshortskip,abovedisplayskip,aftergroup,%
+ abovewithdelims,accent,adjdemerits,advance,afterassignment,atop,%
+ atopwithdelims,badness,baselineskip,batchmode,begingroup,%
+ belowdisplayshortskip,belowdisplayskip,binoppenalty,botmark,box,%
+ boxmaxdepth,brokenpenalty,catcode,char,chardef,cleaders,closein,%
+ closeout,clubpenalty,copy,count,countdef,cr,crcr,csname,day,%
+ deadcycles,def,defaulthyphenchar,defaultskewchar,delcode,%
+ delimiter,delimiterfactor,delimitershortfall,dimen,dimendef,%
+ discretionary,displayindent,displaylimits,displaystyle,%
+ displaywidowpenalty,displaywidth,divide,doublehyphendemerits,dp,%
+ edef,else,emergencystretch,end,endcsname,endgroup,endinput,%
+ endlinechar,eqno,errhelp,errmessage,errorcontextlines,%
+ errorstopmode,escapechar,everycr,everydisplay,everyhbox,everyjob,%
+ everymath,everypar,everyvbox,exhyphenpenalty,expandafter,fam,fi,%
+ finalhypendemerits,firstmark,floatingpenalty,font,fontdimen,%
+ fontname,futurelet,gdef,global,globaldefs,halign,hangafter,%
+ hangindent,hbadness,hbox,hfil,hfill,hfilneg,hfuzz,hoffset,%
+ holdinginserts,hrule,hsize,hskip,hss,ht,hyphenation,hyphenchar,%
+ hyphenpenalty,if,ifcase,ifcat,ifdim,ifeof,iffalse,ifhbox,ifhmode,%
+ ifinner,ifmmode,ifnum,ifodd,iftrue,ifvbox,ifvmode,ifvoid,ifx,%
+ ignorespaces,immediate,indent,input,insert,insertpenalties,%
+ interlinepenalty,jobname,kern,language,lastbox,lastkern,%
+ lastpenalty,lastskip,lccode,leaders,left,lefthyphenmin,leftskip,%
+ leqno,let,limits,linepenalty,lineskip,lineskiplimits,long,%
+ looseness,lower,lowercase,mag,mark,mathaccent,mathbin,mathchar,%
+ mathchardef,mathchoice,mathclose,mathcode,mathinner,mathop,%
+ mathopen,mathord,mathpunct,mathrel,mathsurround,maxdeadcycles,%
+ maxdepth,meaning,medmuskip,message,mkern,month,moveleft,%
+ moveright,mskip,multiply,muskip,muskipdef,newlinechar,noalign,%
+ noboundary,noexpand,noindent,nolimits,nonscript,nonstopmode,%
+ nulldelimiterspace,nullfont,number,omit,openin,openout,or,outer,%
+ output,outputpenalty,over,overfullrule,overline,overwithdelims,%
+ pagedepth,pagefilllstretch,pagefillstretch,pagefilstretch,%
+ pagegoal,pageshrink,pagestretch,pagetotal,par,parfillskip,%
+ parindent,parshape,parskip,patterns,pausing,penalty,%
+ postdisplaypenalty,predisplaypenalty,predisplaysize,pretolerance,%
+ prevdepth,prevgraf,radical,raise,read,relax,relpenalty,right,%
+ righthyphenmin,rightskip,romannumeral,scriptfont,%
+ scriptscriptfont,scriptscriptstyle,scriptspace,scriptstyle,%
+ scrollmode,setbox,setlanguage,sfcode,shipout,show,showbox,%
+ showboxbreadth,showboxdepth,showlists,showthe,skewchar,skip,%
+ skipdef,spacefactor,spaceskip,span,special,splitbotmark,%
+ splitfirstmark,splitmaxdepth,splittopskip,string,tabskip,%
+ textfont,textstyle,the,thickmuskip,thinmuskip,time,toks,toksdef,%
+ tolerance,topmark,topskip,tracingcommands,tracinglostchars,%
+ tracingmacros,tracingonline,tracingoutput,tracingpages,%
+ tracingparagraphs,tracingrestores,tracingstats,uccode,uchyph,%
+ underline,unhbox,unhcopy,unkern,unpenalty,unskip,unvbox,unvcopy,%
+ uppercase,vadjust,valign,vbadness,vbox,vcenter,vfil,vfill,%
+ vfilneg,vfuzz,voffset,vrule,vsize,vskip,vsplit,vss,vtop,wd,%
+ widowpenalty,write,xdef,xleaders,xspaceskip,year},%
+ sensitive,%
+ alsoother={0123456789$_},%
+ morecomment=[l]\%%
+ }[keywords,tex,comments]%
+%%
+%% Verilog definition (c) 2003 Cameron H. G. Wright <c.h.g.wright at ieee.org>
+%% Based on the IEEE 1364-2001 Verilog HDL standard
+%% Ref: S. Palnitkar, "Verilog HDL: A Guide to Digital Design and Synthesis,"
+%% Prentice Hall, 2003. ISBN: 0-13-044911-3
+%%
+\lst at definelanguage{Verilog}%
+ {morekeywords={% reserved keywords
+ always,and,assign,automatic,begin,buf,bufif0,bufif1,case,casex,%
+ casez,cell,cmos,config,deassign,default,defparam,design,disable,%
+ edge,else,end,endcase,endconfig,endfunction,endgenerate,%
+ endmodule,endprimitive,endspecify,endtable,endtask,event,for,%
+ force,forever,fork,function,generate,genvar,highz0,highz1,if,%
+ ifnone,incdir,include,initial,inout,input,instance,integer,join,%
+ large,liblist,library,localparam,macromodule,medium,module,nand,%
+ negedge,nmos,nor,noshowcancelled,not,notif0,notif1,or,output,%
+ parameter,pmos,posedge,primitive,pull0,pull1,pulldown,pullup,%
+ pulsestyle_onevent,pulsestyle_ondetect,rcmos,real,realtime,reg,%
+ release,repeat,rnmos,rpmos,rtran,rtranif0,rtranif1,scalared,%
+ showcancelled,signed,small,specify,specparam,strong0,strong1,%
+ supply0,supply1,table,task,time,tran,tranif0,tranif1,tri,tri0,%
+ tri1,triand,trior,trireg,unsigned,use,vectored,wait,wand,weak0,%
+ weak1,while,wire,wor,xnor,xor},%
+ morekeywords=[2]{% system tasks and functions
+ $bitstoreal,$countdrivers,$display,$fclose,$fdisplay,$fmonitor,%
+ $fopen,$fstrobe,$fwrite,$finish,$getpattern,$history,$incsave,%
+ $input,$itor,$key,$list,$log,$monitor,$monitoroff,$monitoron,%
+ $nokey},%
+ morekeywords=[3]{% compiler directives
+ `accelerate,`autoexpand_vectornets,`celldefine,`default_nettype,%
+ `define,`else,`elsif,`endcelldefine,`endif,`endprotect,%
+ `endprotected,`expand_vectornets,`ifdef,`ifndef,`include,%
+ `no_accelerate,`noexpand_vectornets,`noremove_gatenames,%
+ `nounconnected_drive,`protect,`protected,`remove_gatenames,%
+ `remove_netnames,`resetall,`timescale,`unconnected_drive},%
+ alsoletter=\`,%
+ sensitive,%
+ morecomment=[s]{/*}{*/},%
+ morecomment=[l]//,% nonstandard
+ morestring=[b]"%
+ }[keywords,comments,strings]%
+\endinput
+%%
+%% End of file `lstlang3.sty'.
File [added]: lstmisc.sty
Delta lines: +2086 -0
===================================================================
--- papers/CPC/saga_engine_2006/lstmisc.sty 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/lstmisc.sty 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,2086 @@
+%%
+%% This is file `lstmisc.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% listings-1.3.dtx (with options: `misc,0.21')
+%%
+%% Please read the software license in listings-1.3.dtx or listings-1.3.pdf.
+%%
+%% (w)(c) 1996--2004 Carsten Heinz and/or any other author listed
+%% elsewhere in this file.
+%%
+%% Send comments and ideas on the package, error reports and additional
+%% programming languages to <cheinz at gmx.de>.
+%%
+\def\filedate{2004/09/07}
+\def\fileversion{1.3}
+\ProvidesFile{lstmisc.sty}
+ [\filedate\space\fileversion\space(Carsten Heinz)]
+\lst at CheckVersion\fileversion
+ {\typeout{^^J%
+ ***^^J%
+ *** This file requires `listings.sty' version \fileversion.^^J%
+ *** You have a serious problem, so I'm exiting ...^^J%
+ ***^^J}%
+ \batchmode \@@end}
+\lst at BeginAspect{writefile}
+\newtoks\lst at WFtoken % global
+\lst at AddToHook{InitVarsBOL}{\global\lst at WFtoken{}}
+\newwrite\lst at WF
+\global\let\lst at WFifopen\iffalse % init
+\gdef\lst at WFWriteToFile{%
+ \begingroup
+ \let\lst at UM\@empty
+ \expandafter\edef\expandafter\lst at temp\expandafter{\the\lst at WFtoken}%
+ \immediate\write\lst at WF{\lst at temp}%
+ \endgroup
+ \global\lst at WFtoken{}}
+\gdef\lst at WFAppend#1{%
+ \global\lst at WFtoken=\expandafter{\the\lst at WFtoken#1}}
+\gdef\lst at BeginWriteFile{\lst at WFBegin\@gobble}
+\gdef\lst at BeginAlsoWriteFile{\lst at WFBegin\lst at OutputBox}
+\begingroup \catcode`\^^I=11
+\gdef\lst at WFBegin#1#2{%
+ \begingroup
+ \let\lst at OutputBox#1%
+ \def\lst at Append##1{%
+ \advance\lst at length\@ne
+ \expandafter\lst at token\expandafter{\the\lst at token##1}%
+ \ifx ##1\lst at outputspace \else
+ \lst at WFAppend##1%
+ \fi}%
+ \lst at lAddTo\lst at PreGotoTabStop{\lst at WFAppend{^^I}}%
+ \lst at lAddTo\lst at ProcessSpace{\lst at WFAppend{ }}%
+ \let\lst at DeInit\lst at WFDeInit
+ \let\lst at MProcessListing\lst at WFMProcessListing
+ \lst at WFifopen\else
+ \immediate\openout\lst at WF=#2\relax
+ \global\let\lst at WFifopen\iftrue
+ \@gobbletwo\fi\fi
+ \fi}
+\endgroup
+\gdef\lst at EndWriteFile{%
+ \immediate\closeout\lst at WF \endgroup
+ \global\let\lst at WFifopen\iffalse}
+\global\let\lst at WFMProcessListing\lst at MProcessListing
+\global\let\lst at WFDeInit\lst at DeInit
+\lst at AddToAtTop\lst at WFMProcessListing{\lst at WFWriteToFile}
+\lst at AddToAtTop\lst at WFDeInit{%
+ \ifnum\lst at length=\z@\else \lst at WFWriteToFile \fi}
+\lst at EndAspect
+\lst at BeginAspect{strings}
+\gdef\lst at stringtypes{d,b,m,bd,db}
+\gdef\lst at StringKey#1#2{%
+ \lst at Delim\lst at stringstyle #2\relax
+ {String}\lst at stringtypes #1%
+ {\lst at BeginString\lst at EndString}%
+ \@@end\@empty{}}
+\lst at Key{string}\relax{\lst at StringKey\@empty{#1}}
+\lst at Key{morestring}\relax{\lst at StringKey\relax{#1}}
+\lst at Key{deletestring}\relax{\lst at StringKey\@nil{#1}}
+\lst at Key{stringstyle}{}{\def\lst at stringstyle{#1}}
+\lst at AddToHook{EmptyStyle}{\let\lst at stringstyle\@empty}
+\lst at Key{showstringspaces}t[t]{\lstKV at SetIf{#1}\lst at ifshowstringspaces}
+\gdef\lst at BeginString{%
+ \lst at DelimOpen
+ \lst at ifexstrings\else
+ {\lst at ifshowstringspaces
+ \lst at keepspacestrue
+ \let\lst at outputspace\lst at visiblespace
+ \fi}}
+\lst at AddToHookExe{ExcludeDelims}{\let\lst at ifexstrings\iffalse}
+\gdef\lst at EndString{\lst at DelimClose\lst at ifexstrings\else}
+\gdef\lst at StringDM@d#1#2\@empty#3#4#5{%
+ \lst at CArg #2\relax\lst at DefDelimBE{}{}{}#3{#1}{#5}#4}
+\gdef\lst at StringDM@b#1#2\@empty#3#4#5{%
+ \let\lst at ifbstring\iftrue
+ \lst at CArg #2\relax\lst at DefDelimBE
+ {\lst at ifletter \lst at Output \lst at letterfalse \fi}%
+ {\ifx\lst at lastother\lstum at backslash
+ \expandafter\@gobblethree
+ \fi}{}#3{#1}{#5}#4}
+\global\let\lst at ifbstring\iffalse % init
+\lst at AddToHook{SelectCharTable}{%
+ \lst at ifbstring
+ \lst at CArgX \\\\\relax \lst at CDefX{}%
+ {\lst at ProcessOther\lstum at backslash
+ \lst at ProcessOther\lstum at backslash
+ \let\lst at lastother\relax}%
+ {}%
+ \fi}
+\global\let\lst at StringDM@bd\lst at StringDM@b
+\global\let\lst at StringDM@db\lst at StringDM@bd
+\gdef\lst at StringDM@a#1#2\@empty#3#4#5{%
+ \lst at CArg #2\relax\lst at DefDelimBE{}{}%
+ {\let\lst at next\@gobblethree
+ \lst at ifletter\else
+ \ifx\lst at lastother)\else \ifx\lst at lastother]\else
+ \let\lst at next\@empty
+ \fi \fi \fi
+ \lst at next}#3{#1}{#5}#4}
+\gdef\lst at StringDM@m#1#2\@empty#3#4#5{%
+ \lst at CArg #2\relax\lst at DefDelimBE{}{}%
+ {\let\lst at next\@gobblethree
+ \lst at ifletter\else
+ \lst at IfLastOtherOneOf{)].0123456789\lstum at rbrace'}%
+ {}%
+ {\let\lst at next\@empty}%
+ \fi
+ \lst at next}#3{#1}{#5}#4}
+\lst at SaveOutputDef{"7D}\lstum at rbrace
+\lst at EndAspect
+\lst at BeginAspect{mf}
+\lst at AddTo\lst at stringtypes{,mf}
+\lst at NewMode\lst at mfinputmode
+\gdef\lst at String@mf#1\@empty#2#3#4{%
+ \lst at CArg #1\relax\lst at DefDelimB
+ {}{}{\lst at ifletter \expandafter\@gobblethree \fi}%
+ \lst at BeginStringMFinput\lst at mfinputmode{#4\lst at Lmodetrue}%
+ \@ifundefined{lsts at semicolon}%
+ {\lst at DefSaveDef{`\;}\lsts at semicolon{% ; and space end the filename
+ \ifnum\lst at mode=\lst at mfinputmode
+ \lst at XPrintToken
+ \expandafter\lst at LeaveMode
+ \fi
+ \lsts at semicolon}%
+ \lst at DefSaveDef{`\ }\lsts at space{%
+ \ifnum\lst at mode=\lst at mfinputmode
+ \lst at XPrintToken
+ \expandafter\lst at LeaveMode
+ \fi
+ \lsts at space}%
+ }{}}
+\gdef\lst at BeginStringMFinput#1#2#3\@empty{%
+ \lst at TrackNewLines \lst at XPrintToken
+ \begingroup
+ \lst at mode\lst at nomode
+ #3\lst at XPrintToken
+ \endgroup
+ \lst at ResetToken
+ \lst at EnterMode{#1}{\def\lst at currstyle#2}%
+ \lst at ifshowstringspaces
+ \lst at keepspacestrue
+ \let\lst at outputspace\lst at visiblespace
+ \fi}
+\lst at EndAspect
+\lst at BeginAspect{comments}
+\lst at NewMode\lst at commentmode
+\gdef\lst at commenttypes{l,f,s,n}
+\gdef\lst at CommentKey#1#2{%
+ \lst at Delim\lst at commentstyle #2\relax
+ {Comment}\lst at commenttypes #1%
+ {\lst at BeginComment\lst at EndComment}%
+ i\@empty{\lst at BeginInvisible\lst at EndInvisible}}
+\lst at Key{comment}\relax{\lst at CommentKey\@empty{#1}}
+\lst at Key{morecomment}\relax{\lst at CommentKey\relax{#1}}
+\lst at Key{deletecomment}\relax{\lst at CommentKey\@nil{#1}}
+\lst at Key{commentstyle}{}{\def\lst at commentstyle{#1}}
+\lst at AddToHook{EmptyStyle}{\let\lst at commentstyle\itshape}
+\gdef\lst at BeginComment{%
+ \lst at DelimOpen
+ \lst at ifexcomments\else
+ \lsthk at AfterBeginComment}
+\gdef\lst at EndComment{\lst at DelimClose\lst at ifexcomments\else}
+\lst at AddToHook{AfterBeginComment}{}
+\lst at AddToHookExe{ExcludeDelims}{\let\lst at ifexcomments\iffalse}
+\gdef\lst at BeginInvisible#1#2#3\@empty{%
+ \lst at TrackNewLines \lst at XPrintToken
+ \lst at BeginDropOutput{#1}}
+\gdef\lst at EndInvisible#1\@empty{\lst at EndDropOutput}
+\gdef\lst at CommentDM@l#1#2\@empty#3#4#5{%
+ \lst at CArg #2\relax\lst at DefDelimB{}{}{}#3{#1}{#5\lst at Lmodetrue}}
+\gdef\lst at CommentDM@f#1{%
+ \@ifnextchar[{\lst at Comment@@f{#1}}%
+ {\lst at Comment@@f{#1}[0]}}
+\gdef\lst at Comment@@f#1[#2]#3\@empty#4#5#6{%
+ \lst at CArg #3\relax\lst at DefDelimB{}{}%
+ {\lst at CalcColumn
+ \ifnum #2=\@tempcnta\else
+ \expandafter\@gobblethree
+ \fi}%
+ #4{#1}{#6\lst at Lmodetrue}}
+\gdef\lst at CommentDM@s#1#2#3\@empty#4#5#6{%
+ \lst at CArg #2\relax\lst at DefDelimB{}{}{}#4{#1}{#6}%
+ \lst at CArg #3\relax\lst at DefDelimE{}{}{}#5{#1}}
+\gdef\lst at CommentDM@n#1#2#3\@empty#4#5#6{%
+ \ifx\@empty#3\@empty\else
+ \def\@tempa{#2}\def\@tempb{#3}%
+ \ifx\@tempa\@tempb
+ \PackageError{Listings}{Identical delimiters}%
+ {These delimiters make no sense with nested comments.}%
+ \else
+ \lst at CArg #2\relax\lst at DefDelimB
+ {}%
+ {\ifnum\lst at mode=#1\relax \expandafter\@gobble \fi}%
+ {}#4{#1}{#6}%
+ \lst at CArg #3\relax\lst at DefDelimE{}{}{}#5{#1}%
+ \fi
+ \fi}
+\lst at EndAspect
+\lst at BeginAspect{pod}
+\lst at Key{printpod}{false}[t]{\lstKV at SetIf{#1}\lst at ifprintpod}
+\lst at Key{podcomment}{false}[t]{\lstKV at SetIf{#1}\lst at ifpodcomment}
+\lst at AddToHookExe{SetLanguage}{\let\lst at ifpodcomment\iffalse}
+\lst at NewMode\lst at PODmode
+\lst at AddToHook{SelectCharTable}
+ {\lst at ifpodcomment
+ \lst at CArgX =\relax\lst at DefDelimB{}{}%
+ {\ifnum\@tempcnta=\z@
+ \lst at ifprintpod\else
+ \def\lst at bnext{\lst at BeginDropOutput\lst at PODmode}%
+ \expandafter\expandafter\expandafter\@gobblethree
+ \fi
+ \else
+ \expandafter\@gobblethree
+ \fi}%
+ \lst at BeginComment\lst at PODmode{{\lst at commentstyle}}%
+ \lst at CArgX =cut\^^M\relax\lst at DefDelimE
+ {\lst at CalcColumn}%
+ {\ifnum\@tempcnta=\z@\else
+ \expandafter\@gobblethree
+ \fi}%
+ {}%
+ \lst at EndComment\lst at PODmode
+ \fi}
+\lst at EndAspect
+\lst at BeginAspect[keywords]{html}
+\gdef\lst at tagtypes{s}
+\gdef\lst at TagKey#1#2{%
+ \lst at Delim\lst at tagstyle #2\relax
+ {Tag}\lst at tagtypes #1%
+ {\lst at BeginTag\lst at EndTag}%
+ \@@end\@empty{}}
+\lst at Key{tag}\relax{\lst at TagKey\@empty{#1}}
+\lst at Key{tagstyle}{}{\def\lst at tagstyle{#1}}
+\lst at AddToHook{EmptyStyle}{\let\lst at tagstyle\@empty}
+\gdef\lst at BeginTag{%
+ \lst at DelimOpen
+ \lst at ifextags\else
+ {\let\lst at ifkeywords\iftrue
+ \lst at ifmarkfirstintag \lst at firstintagtrue \fi}}
+\lst at AddToHookExe{ExcludeDelims}{\let\lst at ifextags\iffalse}
+\gdef\lst at EndTag{\lst at DelimClose\lst at ifextags\else}
+\lst at Key{usekeywordsintag}t[t]{\lstKV at SetIf{#1}\lst at ifusekeysintag}
+\lst at Key{markfirstintag}f[t]{\lstKV at SetIf{#1}\lst at ifmarkfirstintag}
+\gdef\lst at firstintagtrue{\global\let\lst at iffirstintag\iftrue}
+\global\let\lst at iffirstintag\iffalse
+\lst at AddToHook{PostOutput}{\lst at tagresetfirst}
+\lst at AddToHook{Output}
+ {\gdef\lst at tagresetfirst{\global\let\lst at iffirstintag\iffalse}}
+\lst at AddToHook{OutputOther}{\gdef\lst at tagresetfirst{}}
+\lst at AddToHook{Output}
+ {\ifnum\lst at mode=\lst at tagmode
+ \lst at iffirstintag \let\lst at thestyle\lst at gkeywords@sty \fi
+ \lst at ifusekeysintag\else \let\lst at thestyle\lst at gkeywords@sty\fi
+ \fi}
+\lst at NewMode\lst at tagmode
+\lst at AddToHook{Init}{\global\let\lst at ifnotag\iftrue}
+\lst at AddToHook{SelectCharTable}{\let\lst at ifkeywords\lst at ifnotag}
+\gdef\lst at Tag@s#1#2\@empty#3#4#5{%
+ \global\let\lst at ifnotag\iffalse
+ \lst at CArg #1\relax\lst at DefDelimB {}{}%
+ {\ifnum\lst at mode=\lst at tagmode \expandafter\@gobblethree \fi}%
+ #3\lst at tagmode{#5}%
+ \lst at CArg #2\relax\lst at DefDelimE {}{}{}#4\lst at tagmode}%
+\gdef\lst at BeginCDATA#1\@empty{%
+ \lst at TrackNewLines \lst at PrintToken
+ \lst at EnterMode\lst at GPmode{}\let\lst at ifmode\iffalse
+ \lst at mode\lst at tagmode #1\lst at mode\lst at GPmode\relax\lst at modetrue}
+\lst at EndAspect
+\lst at BeginAspect{escape}
+\lst at Key{texcl}{false}[t]{\lstKV at SetIf{#1}\lst at iftexcl}
+\lst at AddToHook{TextStyle}{\let\lst at iftexcl\iffalse}
+\lst at AddToHook{EOL}
+ {\ifnum\lst at mode=\lst at TeXLmode
+ \expandafter\lst at escapeend
+ \expandafter\lst at LeaveAllModes
+ \expandafter\lst at ReenterModes
+ \fi}
+\lst at AddToHook{AfterBeginComment}
+ {\lst at iftexcl \lst at ifLmode \lst at ifdropinput\else
+ \lst at PrintToken
+ \lst at LeaveMode \lst at InterruptModes
+ \lst at EnterMode{\lst at TeXLmode}{\lst at modetrue\lst at commentstyle}%
+ \expandafter\expandafter\expandafter\lst at escapebegin
+ \fi \fi \fi}
+\lst at NewMode\lst at TeXLmode
+\gdef\lst at ActiveCDefX#1{\lst at ActiveCDefX@#1}
+\gdef\lst at ActiveCDefX@#1#2#3{
+ \catcode`#1\active\lccode`\~=`#1%
+ \lowercase{\lst at CDefIt~}{#2}{#3}{}}
+\gdef\lst at Escape#1#2#3#4{%
+ \lst at CArgX #1\relax\lst at CDefX
+ {}%
+ {\lst at ifdropinput\else
+ \lst at TrackNewLines\lst at OutputLostSpace \lst at XPrintToken
+ \lst at InterruptModes
+ \lst at EnterMode{\lst at TeXmode}{\lst at modetrue}%
+ \ifx\^^M#2%
+ \lst at CArg #2\relax\lst at ActiveCDefX
+ {}%
+ {\lst at escapeend #4\lst at LeaveAllModes\lst at ReenterModes}%
+ {\lst at MProcessListing}%
+ \else
+ \lst at CArg #2\relax\lst at ActiveCDefX
+ {}%
+ {\lst at escapeend #4\lst at LeaveAllModes\lst at ReenterModes
+ \lst at whitespacefalse}%
+ {}%
+ \fi
+ #3\lst at escapebegin
+ \fi}%
+ {}}
+\lst at NewMode\lst at TeXmode
+\lst at Key{escapebegin}{}{\def\lst at escapebegin{#1}}
+\lst at Key{escapeend}{}{\def\lst at escapeend{#1}}
+\lst at Key{escapechar}{}
+ {\ifx\@empty#1\@empty
+ \let\lst at DefEsc\relax
+ \else
+ \def\lst at DefEsc{\lst at Escape{#1}{#1}{}{}}%
+ \fi}
+\lst at AddToHook{TextStyle}{\let\lst at DefEsc\@empty}
+\lst at AddToHook{SelectCharTable}{\lst at DefEsc}
+\lst at Key{escapeinside}{}{\lstKV at TwoArg{#1}%
+ {\let\lst at DefEsc\@empty
+ \ifx\@empty##1 at empty\else \ifx\@empty##2\@empty\else
+ \def\lst at DefEsc{\lst at Escape{##1}{##2}{}{}}%
+ \fi\fi}}
+\lst at Key{mathescape}{false}[t]{\lstKV at SetIf{#1}\lst at ifmathescape}
+\lst at AddToHook{SelectCharTable}
+ {\lst at ifmathescape \lst at Escape{\$}{\$}%
+ {\setbox\@tempboxa=\hbox\bgroup$}%
+ {$\egroup \lst at CalcLostSpaceAndOutput}\fi}
+\lst at EndAspect
+\lst at BeginAspect{keywords}
+\global\let\lst at ifsensitive\iftrue % init
+\global\let\lst at ifsensitivedefed\iffalse % init % \global
+\lst at ifsavemem\else
+\gdef\lst at KeywordTest#1#2#3{%
+ \begingroup \let\lst at UM\@empty
+ \global\expandafter\let\expandafter\@gtempa
+ \csname\@lst#1@\the\lst at token\endcsname
+ \endgroup
+ \ifx\@gtempa\relax\else
+ \let\lst at thestyle\@gtempa
+ \fi}
+\gdef\lst at KEYWORDTEST{%
+ \uppercase\expandafter{\expandafter
+ \lst at KEYWORDTEST@\the\lst at token}\relax}
+\gdef\lst at KEYWORDTEST@#1\relax#2#3#4{%
+ \begingroup \let\lst at UM\@empty
+ \global\expandafter\let\expandafter\@gtempa
+ \csname\@lst#2@#1\endcsname
+ \endgroup
+ \ifx\@gtempa\relax\else
+ \let\lst at thestyle\@gtempa
+ \fi}
+\gdef\lst at WorkingTest#1#2#3{%
+ \begingroup \let\lst at UM\@empty
+ \global\expandafter\let\expandafter\@gtempa
+ \csname\@lst#1@\the\lst at token\endcsname
+ \endgroup
+ \@gtempa}
+\gdef\lst at WORKINGTEST{%
+ \uppercase\expandafter{\expandafter
+ \lst at WORKINGTEST@\the\lst at token}\relax}
+\gdef\lst at WORKINGTEST@#1\relax#2#3#4{%
+ \begingroup \let\lst at UM\@empty
+ \global\expandafter\let\expandafter\@gtempa
+ \csname\@lst#2@#1\endcsname
+ \endgroup
+ \@gtempa}
+\gdef\lst at DefineKeywords#1#2#3{%
+ \lst at ifsensitive
+ \def\lst at next{\lst at for#2}%
+ \else
+ \def\lst at next{\uppercase\expandafter{\expandafter\lst at for#2}}%
+ \fi
+ \lst at next\do
+ {\expandafter\ifx\csname\@lst#1@##1\endcsname\relax
+ \global\expandafter\let\csname\@lst#1@##1\endcsname#3%
+ \fi}}
+\gdef\lst at UndefineKeywords#1#2#3{%
+ \lst at ifsensitivedefed
+ \def\lst at next{\lst at for#2}%
+ \else
+ \def\lst at next{\uppercase\expandafter{\expandafter\lst at for#2}}%
+ \fi
+ \lst at next\do
+ {\expandafter\ifx\csname\@lst#1@##1\endcsname#3%
+ \global\expandafter\let\csname\@lst#1@##1\endcsname\relax
+ \fi}}
+\fi
+\lst at ifsavemem
+\gdef\lst at IfOneOutOf#1\relax#2{%
+ \def\lst at temp##1,#1,##2##3\relax{%
+ \ifx\@empty##2\else \expandafter\lst at IOOOfirst \fi}%
+ \def\lst at next{\lst at IfOneOutOf@#1\relax}%
+ \expandafter\lst at next#2\relax\relax}
+\gdef\lst at IfOneOutOf@#1\relax#2#3{%
+ \ifx#2\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\lst at temp\expandafter,#2,#1,\@empty\relax
+ \expandafter\lst at next
+ \fi}
+\ifx\iffalse\else\fi
+\gdef\lst at IOOOfirst#1\relax#2#3{\fi#2}
+\gdef\lst at IFONEOUTOF#1\relax#2{%
+ \uppercase{\def\lst at temp##1,#1},##2##3\relax{%
+ \ifx\@empty##2\else \expandafter\lst at IOOOfirst \fi}%
+ \def\lst at next{\lst at IFONEOUTOF@#1\relax}%
+ \expandafter\lst at next#2\relax}
+\gdef\lst at IFONEOUTOF@#1\relax#2#3{%
+ \ifx#2\relax
+ \expandafter\@secondoftwo
+ \else
+ \uppercase
+ {\expandafter\lst at temp\expandafter,#2,#1,\@empty\relax}%
+ \expandafter\lst at next
+ \fi}
+\gdef\lst at KWTest{%
+ \begingroup \let\lst at UM\@empty
+ \expandafter\xdef\expandafter\@gtempa\expandafter{\the\lst at token}%
+ \endgroup
+ \expandafter\lst at IfOneOutOf\@gtempa\relax}
+\gdef\lst at KeywordTest#1#2#3{\lst at KWTest #2{\let\lst at thestyle#3}{}}
+\global\let\lst at KEYWORDTEST\lst at KeywordTest
+\gdef\lst at WorkingTest#1#2#3{\lst at KWTest #2#3{}}
+\global\let\lst at WORKINGTEST\lst at WorkingTest
+\fi
+\lst at Key{sensitive}\relax[t]{\lstKV at SetIf{#1}\lst at ifsensitive}
+\lst at AddToHook{SetLanguage}{\let\lst at ifsensitive\iftrue}
+\lst at AddToHook{Init}
+ {\lst at ifsensitive\else
+ \let\lst at KeywordTest\lst at KEYWORDTEST
+ \let\lst at WorkingTest\lst at WORKINGTEST
+ \let\lst at IfOneOutOf\lst at IFONEOUTOF
+ \fi}
+\gdef\lst at MakeMacroUppercase#1{%
+ \ifx\@undefined#1\else \uppercase\expandafter
+ {\expandafter\def\expandafter#1\expandafter{#1}}%
+ \fi}
+\gdef\lst at InstallTest#1#2#3#4#5#6#7#8{%
+ \lst at AddToHook{TrackKeywords}{\lst at TrackKeywords{#1}#2#4#6#7#8}%
+ \lst at AddToHook{PostTrackKeywords}{\lst at PostTrackKeywords#2#3#4#5}}
+\lst at AddToHook{Init}{\lsthk at TrackKeywords\lsthk at PostTrackKeywords}
+\lst at AddToHook{TrackKeywords}
+ {\global\let\lst at DoDefineKeywords\@empty}% init
+\lst at AddToHook{PostTrackKeywords}
+ {\lst at DoDefineKeywords
+ \global\let\lst at DoDefineKeywords\@empty}% init
+\lst at AddToHook{Output}{\lst at ifkeywords \lsthk at DetectKeywords \fi}
+\lst at AddToHook{DetectKeywords}{}% init
+\lst at AddToHook{ModeTrue}{\let\lst at ifkeywords\iffalse}
+\lst at AddToHookExe{Init}{\let\lst at ifkeywords\iftrue}
+\gdef\lst at InstallTestNow#1#2#3#4#5{%
+ \@ifundefined{\string#2#1}%
+ {\global\@namedef{\string#2#1}{}%
+ \edef\@tempa{%
+ \noexpand\lst at AddToHook{\ifx#5dDetectKeywords\else Output\fi}%
+ {\ifx #4w\noexpand\lst at WorkingTest
+ \else\noexpand\lst at KeywordTest \fi
+ {#1}\noexpand#2\noexpand#3}}%
+ \lst at ifsavemem
+ \@tempa
+ \else
+ \@ifundefined{\@lst#1 at if@ins}%
+ {\@tempa \global\@namedef{\@lst#1 at if@ins}{}}%
+ {}%
+ \fi}
+ {}}
+\gdef\lst at TrackKeywords#1#2#3#4#5#6{%
+ \lst at false
+ \def\lst at arg{{#1}#4}%
+ \expandafter\expandafter\expandafter\lst at TK@
+ \expandafter\lst at arg#2\relax\relax
+ \lst at ifsavemem\else
+ \def\lst at arg{{#1}#4#2}%
+ \expandafter\expandafter\expandafter\lst at TK@@
+ \expandafter\lst at arg#3\relax\relax
+ \fi
+ \lst at if \lst at InstallTestNow{#1}#2#4#5#6\fi}
+\gdef\lst at TK@#1#2#3#4{%
+ \ifx\lst at ifsensitive\lst at ifsensitivedefed
+ \ifx#3#4\else
+ \lst at true
+ \lst at ifsavemem\else
+ \lst at UndefineKeywords{#1}#4#2%
+ \lst at AddTo\lst at DoDefineKeywords{\lst at DefineKeywords{#1}#3#2}%
+ \fi
+ \fi
+ \else
+ \ifx#3\relax\else
+ \lst at true
+ \lst at ifsavemem\else
+ \lst at UndefineKeywords{#1}#4#2%
+ \lst at AddTo\lst at DoDefineKeywords{\lst at DefineKeywords{#1}#3#2}%
+ \fi
+ \fi
+ \fi
+ \lst at ifsavemem \ifx#3\relax\else
+ \lst at ifsensitive\else \lst at MakeMacroUppercase#3\fi
+ \fi \fi
+ \ifx#3\relax
+ \expandafter\@gobblethree
+ \fi
+ \lst at TK@{#1}#2}
+\gdef\lst at TK@@#1#2#3#4#5{%
+ \ifx#4\relax
+ \expandafter\@gobblefour
+ \else
+ \lst at IfSubstring{#4#5}#3{}{\lst at UndefineKeywords{#1}#5#2}%
+ \fi
+ \lst at TK@@{#1}#2#3}
+\lst at AddToHook{InitVars}
+ {\global\let\lst at ifsensitivedefed\lst at ifsensitive}
+\gdef\lst at PostTrackKeywords#1#2#3#4{%
+ \lst at ifsavemem\else
+ \global\let#3#1%
+ \global\let#4#2%
+ \fi}
+\lst at Key{classoffset}\z@{\def\lst at classoffset{#1}}
+\gdef\lst at InstallFamily#1#2#3#4#5{%
+ \lst at Key{#2}\relax{\lst at UseFamily{#2}##1\relax\lst at MakeKeywords}%
+ \lst at Key{more#2}\relax
+ {\lst at UseFamily{#2}##1\relax\lst at MakeMoreKeywords}%
+ \lst at Key{delete#2}\relax
+ {\lst at UseFamily{#2}##1\relax\lst at DeleteKeywords}%
+ \ifx\@empty#3\@empty\else
+ \lst at Key{#3}{#4}{\lstKV at OptArg[\@ne]{##1}%
+ {\@tempcnta\lst at classoffset \advance\@tempcnta####1\relax
+ \@namedef{lst@#3\ifnum\@tempcnta=\@ne\else \the\@tempcnta
+ \fi}{####2}}}%
+ \fi
+ \expandafter\lst at InstallFamily@
+ \csname\@lst @#2 at data\expandafter\endcsname
+ \csname\@lst @#5\endcsname {#1}{#2}{#3}}
+\gdef\lst at InstallFamily@#1#2#3#4#5#6#7#8{%
+ \gdef#1{{#3}{#4}{#5}#2#7}%
+ \long\def\lst at temp##1{#6}%
+ \ifx\lst at temp\@gobble
+ \lst at AddTo#1{s#8}%
+ \else
+ \lst at AddTo#1{w#8}%
+ \global\@namedef{lst at g#4 at wp}##1{#6}%
+ \fi}
+\gdef\lst at UseFamily#1{%
+ \def\lst at family{#1}%
+ \@ifnextchar[\lst at UseFamily@{\lst at UseFamily@[\@ne]}}
+\gdef\lst at UseFamily@[#1]{%
+ \@tempcnta\lst at classoffset \advance\@tempcnta#1\relax
+ \lst at ProvideFamily\lst at family
+ \lst at UseFamily@a
+ {\lst at family\ifnum\@tempcnta=\@ne\else \the\@tempcnta \fi}}
+\gdef\lst at UseFamily@a#1{%
+ \expandafter\lst at UseFamily@b
+ \csname\@lst @#1 at list\expandafter\endcsname
+ \csname\@lst @#1\expandafter\endcsname
+ \csname\@lst @#1 at also\expandafter\endcsname
+ \csname\@lst @g#1\endcsname}
+\gdef\lst at UseFamily@b#1#2#3#4#5\relax#6{\lstKV at XOptArg[]{#5}#6#1#2#3#4}
+\gdef\lst at ProvideFamily#1{%
+ \@ifundefined{lstfam@#1\ifnum\@tempcnta=\@ne\else\the\@tempcnta\fi}%
+ {\global\@namedef{lstfam@#1\ifnum\@tempcnta=\@ne\else
+ \the\@tempcnta\fi}{}%
+ \expandafter\expandafter\expandafter\lst at ProvideFamily@
+ \csname\@lst @#1 at data\endcsname
+ {\ifnum\@tempcnta=\@ne\else \the\@tempcnta \fi}}%
+ {}}%
+\gdef\lst at ProvideFamily@#1#2#3#4#5#6#7#8{%
+ \expandafter\xdef\csname\@lst @g#2#8 at sty\endcsname
+ {\if #6w%
+ \expandafter\noexpand\csname\@lst @g#2 at wp\endcsname{#8}%
+ \else
+ \expandafter\noexpand\csname\@lst @#3#8\endcsname
+ \fi}%
+ \ifx\@empty#3\@empty\else
+ \edef\lst at temp{\noexpand\lst at AddToHook{Init}{%
+ \noexpand\lst at ProvideStyle\expandafter\noexpand
+ \csname\@lst @#3#8\endcsname\noexpand#4}}%
+ \lst at temp
+ \fi
+ \expandafter\lst at ProvideFamily@@
+ \csname\@lst @#2#8 at list\expandafter\endcsname
+ \csname\@lst @#2#8\expandafter\endcsname
+ \csname\@lst @#2#8 at also\expandafter\endcsname
+ \csname\@lst @g#2#8 at list\expandafter\endcsname
+ \csname\@lst @g#2#8\expandafter\endcsname
+ \csname\@lst @g#2#8 at sty\expandafter\endcsname
+ {#1}#5#6#7}
+\gdef\lst at ProvideFamily@@#1#2#3#4#5#6#7#8{%
+ \gdef#1{#2#5}\global\let#2\@empty \global\let#3\@empty % init
+ \gdef#4{#2#5}\global\let#5\@empty % init
+ \if #8l\relax
+ \lst at AddToHook{SetLanguage}{\def#1{#2#5}\let#2\@empty}%
+ \fi
+ \lst at InstallTest{#7}#1#2#4#5#6}
+\gdef\lst at InstallKeywords#1#2#3#4#5{%
+ \lst at Key{#2}\relax
+ {\lst at UseFamily{#2}[\@ne]##1\relax\lst at MakeKeywords}%
+ \lst at Key{more#2}\relax
+ {\lst at UseFamily{#2}[\@ne]##1\relax\lst at MakeMoreKeywords}%
+ \lst at Key{delete#2}\relax
+ {\lst at UseFamily{#2}[\@ne]##1\relax\lst at DeleteKeywords}%
+ \ifx\@empty#3\@empty\else
+ \lst at Key{#3}{#4}{\@namedef{lst@#3}{##1}}%
+ \fi
+ \expandafter\lst at InstallFamily@
+ \csname\@lst @#2 at data\expandafter\endcsname
+ \csname\@lst @#5\endcsname {#1}{#2}{#3}}
+\gdef\lst at ProvideStyle#1#2{%
+ \ifx#1\@undefined \let#1#2%
+ \else\ifx#1\relax \let#1#2\fi\fi}
+\gdef\lst at BuildClassList#1#2,{%
+ \ifx\relax#2\@empty\else
+ \ifx\@empty#2\@empty\else
+ \lst at lExtend#1{\csname\@lst @#2\expandafter\endcsname
+ \csname\@lst @g#2\endcsname}%
+ \fi
+ \expandafter\lst at BuildClassList\expandafter#1
+ \fi}
+\gdef\lst at DeleteClassesIn#1#2{%
+ \expandafter\lst at DCI@\expandafter#1#2\relax\relax}
+\gdef\lst at DCI@#1#2#3{%
+ \ifx#2\relax
+ \expandafter\@gobbletwo
+ \else
+ \def\lst at temp##1#2#3##2{%
+ \lst at lAddTo#1{##1}%
+ \ifx ##2\relax\else
+ \expandafter\lst at temp
+ \fi ##2}%
+ \let\@tempa#1\let#1\@empty
+ \expandafter\lst at temp\@tempa#2#3\relax
+ \fi
+ \lst at DCI@#1}
+\gdef\lst at MakeKeywords[#1]#2#3#4#5#6{%
+ \def#3{#4#6}\let#4\@empty \let#5\@empty
+ \lst at MakeMoreKeywords[#1]{#2}#3#4#5#6}
+\gdef\lst at MakeMoreKeywords[#1]#2#3#4#5#6{%
+ \lst at BuildClassList#3#1,\relax,%
+ \lst at DefOther\lst at temp{,#2}\lst at lExtend#4\lst at temp}
+\gdef\lst at DeleteKeywords[#1]#2#3#4#5#6{%
+ \lst at MakeKeywords[#1]{#2}\@tempa\@tempb#5#6%
+ \lst at DeleteClassesIn#3\@tempa
+ \lst at DeleteKeysIn#4\@tempb}
+\lst at InstallFamily k{keywords}{keywordstyle}\bfseries{keywordstyle}{}ld
+\gdef\lst at DefKeywordstyle#1#2\@nil@{%
+ \@namedef{lst at keywordstyle\ifnum\@tempcnta=\@ne\else\the\@tempcnta
+ \fi}{#1#2}}%
+\lst at Key{keywordstyle}{\bfseries}{\lstKV at OptArg[\@ne]{#1}%
+ {\@tempcnta\lst at classoffset \advance\@tempcnta##1\relax
+ \@ifstar{\lst at DefKeywordstyle{\uppercase\expandafter{%
+ \expandafter\lst at token
+ \expandafter{\the\lst at token}}}}%
+ {\lst at DefKeywordstyle{}}##2\@nil@}}
+\lst at Key{ndkeywords}\relax
+ {\lst at UseFamily{keywords}[\tw@]#1\relax\lst at MakeKeywords}%
+\lst at Key{morendkeywords}\relax
+ {\lst at UseFamily{keywords}[\tw@]#1\relax\lst at MakeMoreKeywords}%
+\lst at Key{deletendkeywords}\relax
+ {\lst at UseFamily{keywords}[\tw@]#1\relax\lst at DeleteKeywords}%
+\lst at Key{ndkeywordstyle}\relax{\@namedef{lst at keywordstyle2}{#1}}%
+\lst at Key{keywordsprefix}\relax{\lst at DefActive\lst at keywordsprefix{#1}}
+\global\let\lst at keywordsprefix\@empty
+\lst at AddToHook{SelectCharTable}
+ {\ifx\lst at keywordsprefix\@empty\else
+ \expandafter\lst at CArg\lst at keywordsprefix\relax
+ \lst at CDef{}%
+ {\lst at ifletter\else
+ \global\let\lst at prefixkeyword\@empty
+ \fi}%
+ {}%
+ \fi}
+\lst at AddToHook{Init}{\global\let\lst at prefixkeyword\relax}
+\lst at AddToHook{Output}
+ {\ifx\lst at prefixkeyword\@empty
+ \let\lst at thestyle\lst at gkeywords@sty
+ \global\let\lst at prefixkeyword\relax
+ \fi}%
+\lst at Key{otherkeywords}{}{%
+ \let\lst at otherkeywords\@empty
+ \lst at for{#1}\do{%
+ \lst at MakeActive{##1}%
+ \lst at lExtend\lst at otherkeywords{%
+ \expandafter\lst at CArg\lst at temp\relax\lst at CDef
+ {}\lst at PrintOtherKeyword\@empty}}}
+\lst at AddToHook{SelectCharTable}{\lst at otherkeywords}
+\gdef\lst at PrintOtherKeyword#1\@empty{%
+ \lst at XPrintToken
+ \begingroup
+ \lst at modetrue \lsthk at TextStyle
+ \let\lst at ProcessDigit\lst at ProcessLetter
+ \let\lst at ProcessOther\lst at ProcessLetter
+ \lst at lettertrue
+ #1%
+ \lst at SaveToken
+ \endgroup
+\lst at RestoreToken
+\global\let\lst at savedcurrstyle\lst at currstyle
+\let\lst at currstyle\lst at gkeywords@sty
+ \lst at Output
+\let\lst at currstyle\lst at savedcurrstyle}
+\lst at EndAspect
+\lst at BeginAspect[keywords]{emph}
+\lst at InstallFamily e{emph}{emphstyle}{}{emphstyle}{}od
+\lst at EndAspect
+\lst at BeginAspect[keywords]{tex}
+\lst at InstallFamily {cs}{texcs}{texcsstyle}\relax{keywordstyle}
+ {\ifx\lst at lastother\lstum at backslash
+ \expandafter\let\expandafter\lst at thestyle
+ \csname lst at texcsstyle#1\endcsname
+ \fi}
+ ld
+\lst at Key{texcsstyle}\relax
+ {\@ifstar{\lst at true\lst at DefTexcsstyle}%
+ {\lst at false\lst at DefTexcsstyle}#1\@nil@}
+\gdef\lst at DefTexcsstyle#1\@nil@{%
+ \let\lst at iftexcsincludebs\lst at if
+ \lstKV at OptArg[\@ne]{#1}%
+ {\@tempcnta\lst at classoffset \advance\@tempcnta##1\relax
+ \@namedef{lst at texcsstyle\ifnum\@tempcnta=\@ne\else
+ \the\@tempcnta \fi}{##2}}}%
+\global\let\lst at iftexcsincludebs\iffalse
+\let\lst at iftexcsincludebs\iffalse
+\lst at AddToHook{SelectCharTable}
+{\lst at iftexcsincludebs \ifx\@empty\lst at texcs\else
+ \lst at DefSaveDef{`\\}\lsts at texcsbs
+ {\ifx\lst at lastother\lstum at backslash
+ \lsts at texcsbs\lst at XPrintToken
+ \else
+ \lst at Merge\lsts at texcsbs
+ \fi}%
+ \fi \fi}
+\lst at EndAspect
+\lst at BeginAspect[keywords]{directives}
+\lst at NewMode\lst at CDmode
+\lst at AddToHook{EOL}{\ifnum\lst at mode=\lst at CDmode \lst at LeaveMode \fi}
+\lst at InstallKeywords{d}{directives}{directivestyle}\relax{keywordstyle}
+ {\ifnum\lst at mode=\lst at CDmode
+ \let\lst at thestyle\lst at directivestyle
+ \fi}
+ ld
+\global\let\lst at directives\@empty % init
+\lst at AddTo\lst at delimtypes{,directive}
+\gdef\lst at Delim@directive#1\@empty#2#3#4{%
+ \lst at CArg #1\relax\lst at DefDelimB
+ {\lst at CalcColumn}%
+ {}%
+ {\ifnum\@tempcnta=\z@
+ \def\lst at bnext{#2\lst at CDmode{#4\lst at Lmodetrue}%
+ \let\lst at currstyle\lst at directivestyle}%
+ \fi
+ \@gobblethree}%
+ #2\lst at CDmode{#4\lst at Lmodetrue}}
+\lst at AddTo\lst at stringtypes{,directive}
+\gdef\lst at StringDM@directive#1#2#3\@empty{%
+ \lst at CArg #2\relax\lst at CDef
+ {}%
+ {\let\lst at bnext\lst at CArgEmpty
+ \ifnum\lst at mode=\lst at CDmode
+ \def\lst at bnext{\lst at BeginString{#1}}%
+ \fi
+ \lst at bnext}%
+ \@empty
+ \lst at CArg #3\relax\lst at CDef
+ {}%
+ {\let\lst at enext\lst at CArgEmpty
+ \ifnum #1=\lst at mode
+ \let\lst at bnext\lst at EndString
+ \fi
+ \lst at bnext}%
+ \@empty}
+\lst at EndAspect
+\lst at BeginAspect[keywords,comments]{keywordcomments}
+\lst at NewMode\lst at KCmode \lst at NewMode\lst at KCSmode
+\gdef\lst at BeginKC{\aftergroup\aftergroup\aftergroup\lst at BeginKC@}%
+\gdef\lst at BeginKC@{%
+ \lst at ResetToken
+ \lst at BeginComment\lst at KCmode{{\lst at commentstyle}\lst at modetrue}%
+ \@empty}%
+\gdef\lst at BeginKCS{\aftergroup\aftergroup\aftergroup\lst at BeginKCS@}%
+\gdef\lst at BeginKCS@{%
+ \lst at ResetToken
+ \lst at BeginComment\lst at KCSmode{{\lst at commentstyle}\lst at modetrue}%
+ \@empty}%
+\lst at AddToHook{PostOutput}{\lst at KCpost \global\let\lst at KCpost\@empty}
+\global\let\lst at KCpost\@empty % init
+\gdef\lst at EndKC{\lst at SaveToken \lst at LeaveMode \lst at RestoreToken
+ \let\lst at thestyle\lst at identifierstyle \lsthk at Output}
+\lst at InstallKeywords{kc}{keywordcomment}{}\relax{}
+ {\ifnum\lst at mode=\lst at KCmode
+ \edef\lst at temp{\the\lst at token}%
+ \ifx\lst at temp\lst at KCmatch
+ \lst at EndKC
+ \fi
+ \else
+ \lst at ifmode\else
+ \xdef\lst at KCmatch{\the\lst at token}%
+ \global\let\lst at KCpost\lst at BeginKC
+ \fi
+ \fi}
+ lo
+\lst at Key{keywordcommentsemicolon}{}{\lstKV at ThreeArg{#1}%
+ {\def\lst at KCAkeywordsB{##1}%
+ \def\lst at KCAkeywordsE{##2}%
+ \def\lst at KCBkeywordsB{##3}%
+ \def\lst at KCkeywords{##1##2##3}}}
+\lst at AddToHook{SetLanguage}{%
+ \let\lst at KCAkeywordsB\@empty \let\lst at KCAkeywordsE\@empty
+ \let\lst at KCBkeywordsB\@empty \let\lst at KCkeywords\@empty}
+\lst at AddToHook{SelectCharTable}
+ {\ifx\lst at KCkeywords\@empty\else
+ \lst at DefSaveDef{`\;}\lsts at EKC
+ {\lst at XPrintToken
+ \ifnum\lst at mode=\lst at KCmode \lst at EndComment\@empty \else
+ \ifnum\lst at mode=\lst at KCSmode \lst at EndComment\@empty
+ \fi \fi
+ \lsts at EKC}%
+ \fi}
+\gdef\lst at KCAWorkB{%
+ \lst at ifmode\else \global\let\lst at KCpost\lst at BeginKC \fi}
+\gdef\lst at KCBWorkB{%
+ \lst at ifmode\else \global\let\lst at KCpost\lst at BeginKCS \fi}
+\gdef\lst at KCAWorkE{\ifnum\lst at mode=\lst at KCmode \lst at EndKC \fi}
+\lst at ProvideFamily@@
+ \lst at KCAkeywordsB@list\lst at KCAkeywordsB \lst at KC@also
+ \lst at gKCAkeywordsB@list\lst at gKCAkeywordsB \lst at KCAWorkB
+ {kcb}owo % prefix, other key, working procedure, Output hook
+\lst at ProvideFamily@@
+ \lst at KCAkeywordsE@list\lst at KCAkeywordsE \lst at KC@also
+ \lst at gKCAkeywordsE@list\lst at gKCAkeywordsE \lst at KCAWorkE
+ {kce}owo
+\lst at ProvideFamily@@
+ \lst at KCBkeywordsB@list\lst at KCBkeywordsB \lst at KC@also
+ \lst at gKCBkeywordsB@list\lst at gKCBkeywordsB \lst at KCBWorkB
+ {kcs}owo
+\lst at EndAspect
+\lst at BeginAspect[keywords]{index}
+\lst at InstallFamily w{index}{indexstyle}\lstindexmacro{indexstyle}
+ {\csname\@lst @indexstyle#1\expandafter\endcsname
+ \expandafter{\the\lst at token}}
+ od
+\lst at UserCommand\lstindexmacro#1{\index{{\ttfamily#1}}}
+\lst at EndAspect
+\lst at BeginAspect[keywords]{procnames}
+\gdef\lst at procnametrue{\global\let\lst at ifprocname\iftrue}
+\gdef\lst at procnamefalse{\global\let\lst at ifprocname\iffalse}
+\lst at AddToHook{Init}{\lst at procnamefalse}
+\lst at AddToHook{DetectKeywords}
+ {\lst at ifprocname
+ \let\lst at thestyle\lst at procnamestyle
+ \lst at ifindexproc \csname\@lst @gindex at sty\endcsname \fi
+ \lst at procnamefalse
+ \fi}
+\lst at Key{procnamestyle}{}{\def\lst at procnamestyle{#1}}
+\lst at Key{indexprocnames}{false}[t]{\lstKV at SetIf{#1}\lst at ifindexproc}
+\lst at AddToHook{Init}{\lst at ifindexproc \lst at indexproc \fi}
+\gdef\lst at indexproc{%
+ \@ifundefined{lst at indexstyle1}%
+ {\@namedef{lst at indexstyle1}##1{}}%
+ {}}
+\lst at InstallKeywords w{procnamekeys}{}\relax{}
+ {\global\let\lst at PNpost\lst at procnametrue}
+ od
+\lst at AddToHook{PostOutput}{\lst at PNpost\global\let\lst at PNpost\@empty}
+\global\let\lst at PNpost\@empty % init
+\lst at EndAspect
+\lst at BeginAspect{style}
+\@ifundefined{lststylefiles}
+ {\lst at UserCommand\lststylefiles{lststy0.sty}}{}
+\lst at UserCommand\lstdefinestyle{\lst at DefStyle\iftrue}
+\lst at UserCommand\lst at definestyle{\lst at DefStyle\iffalse}
+\gdef\lst at DefStyle{\lst at DefDriver{style}{sty}\lstset}
+\global\@namedef{lststy@$}{\lsthk at EmptyStyle}
+\lst at AddToHook{EmptyStyle}{}% init
+\lst at Key{style}\relax{%
+ \lst at LAS{style}{sty}{[]{#1}}\lst at NoAlias\lststylefiles
+ \lsthk at SetStyle
+ {}}
+\lst at AddToHook{SetStyle}{}% init
+\lst at EndAspect
+\lst at BeginAspect{language}
+\@ifundefined{lstdriverfiles}
+ {\lst at UserCommand\lstlanguagefiles{lstlang0.sty}}{}
+\lst at UserCommand\lstdefinelanguage{\lst at DefLang\iftrue}
+\lst at UserCommand\lst at definelanguage{\lst at DefLang\iffalse}
+\gdef\lst at DefLang{\lst at DefDriver{language}{lang}\lstset}
+\lstdefinelanguage{}{}
+\lst at Key{language}\relax{\lstKV at OptArg[]{#1}%
+ {\lst at LAS{language}{lang}{[##1]{##2}}\lst at FindAlias\lstlanguagefiles
+ \lsthk at SetLanguage
+ {\lst at FindAlias[##1]{##2}%
+ \let\lst at language\lst at malias
+ \let\lst at dialect\lst at oalias}}}
+\lst at Key{alsolanguage}\relax{\lstKV at OptArg[]{#1}%
+ {\lst at LAS{language}{lang}{[##1]{##2}}\lst at FindAlias\lstlanguagefiles
+ {}%
+ {\lst at FindAlias[##1]{##2}%
+ \let\lst at language\lst at malias
+ \let\lst at dialect\lst at oalias}}}
+\lst at AddToHook{SetLanguage}{}% init
+\lst at UserCommand\lstalias{\@ifnextchar[\lstalias@\lstalias@@}
+\gdef\lstalias@[#1]#2{\lstalias at b #2$#1}
+\gdef\lstalias at b#1[#2]#3{\lst at NormedNameDef{lsta@#1}{#3$#2}}
+\gdef\lstalias@@#1#2{\lst at NormedNameDef{lsta@#1}{#2}}
+\lst at Key{defaultdialect}\relax
+ {\lstKV at OptArg[]{#1}{\lst at NormedNameDef{lstdd@##2}{##1}}}
+\gdef\lst at FindAlias[#1]#2{%
+ \lst at NormedDef\lst at oalias{#1}%
+ \lst at NormedDef\lst at malias{#2}%
+ \@ifundefined{lsta@\lst at malias}{}%
+ {\edef\lst at malias{\csname\@lst a@\lst at malias\endcsname}}%
+ \ifx\@empty\lst at oalias \@ifundefined{lstdd@\lst at malias}{}%
+ {\edef\lst at oalias{\csname\@lst dd@\lst at malias\endcsname}}%
+ \fi
+ \edef\lst at temp{\lst at malias $\lst at oalias}%
+ \@ifundefined{lsta@\lst at temp}{}%
+ {\edef\lst at temp{\csname\@lst a@\lst at temp\endcsname}}%
+ \expandafter\lst at FindAlias@\lst at temp $}
+\gdef\lst at FindAlias@#1$#2${%
+ \def\lst at malias{#1}\def\lst at oalias{#2}%
+ \ifx\@empty\lst at oalias \@ifundefined{lstdd@\lst at malias}{}%
+ {\edef\lst at oalias{\csname\@lst dd@\lst at malias\endcsname}}%
+ \fi}
+\gdef\lst at RequireLanguages#1{%
+ \lst at Require{language}{lang}{#1}\lst at FindAlias\lstlanguagefiles
+ \ifx\lst at loadaspects\@empty\else
+ \lst at RequireAspects\lst at loadaspects
+ \fi}
+\global\let\lstloadlanguages\lst at RequireLanguages
+\lst at EndAspect
+\lst at BeginAspect{formats}
+\@ifundefined{lstformatfiles}
+ {\lst at UserCommand\lstformatfiles{lstfmt0.sty}}{}
+\lst at UserCommand\lstdefineformat{\lst at DefFormat\iftrue}
+\lst at UserCommand\lst at defineformat{\lst at DefFormat\iffalse}
+\gdef\lst at DefFormat{\lst at DefDriver{format}{fmt}\lst at UseFormat}
+\lstdefineformat{}{}
+\lst at Key{format}\relax{%
+ \lst at LAS{format}{fmt}{[]{#1}}\lst at NoAlias\lstformatfiles
+ \lsthk at SetFormat
+ {}}
+\lst at AddToHook{SetFormat}{\let\lst at fmtformat\@empty}% init
+\gdef\lst at fmtSplit#1#2{%
+ \def\lst at temp##1#2##2\relax##3{%
+ \ifnum##3=\z@
+ \ifx\@empty##2\@empty
+ \lst at false
+ \let\lst at fmta#1%
+ \let\lst at fmtb\@empty
+ \else
+ \expandafter\lst at temp#1\relax\@ne
+ \fi
+ \else
+ \def\lst at fmta{##1}\def\lst at fmtb{##2}%
+ \fi}%
+ \lst at true
+ \expandafter\lst at temp#1#2\relax\z@}
+\gdef\lst at IfNextCharWhitespace#1#2#3{%
+ \lst at IfSubstring#3\lst at whitespaces{#1}{#2}#3}
+\begingroup
+\catcode`\^^I=12\catcode`\^^J=12\catcode`\^^M=12\catcode`\^^L=12\relax%
+\lst at DefActive\lst at whitespaces{\ ^^I^^J^^M}% add ^^L
+\global\let\lst at whitespaces\lst at whitespaces%
+\endgroup
+\gdef\lst at fmtIfIdentifier#1{%
+ \ifx\relax#1\@empty
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\lst at fmtIfIdentifier@\expandafter#1%
+ \fi}
+\gdef\lst at fmtIfIdentifier@#1#2\relax{%
+ \let\lst at next\@secondoftwo
+ \ifnum`#1=`_\else
+ \ifnum`#1<64\else
+ \ifnum`#1<91\let\lst at next\@firstoftwo\else
+ \ifnum`#1<97\else
+ \ifnum`#1<123\let\lst at next\@firstoftwo\else
+ \fi \fi \fi \fi \fi
+ \lst at next}
+\gdef\lst at fmtIfNextCharIn#1{%
+ \ifx\@empty#1\@empty \expandafter\@secondoftwo \else
+ \def\lst at next{\lst at fmtIfNextCharIn@{#1}}%
+ \expandafter\lst at next\fi}
+\gdef\lst at fmtIfNextCharIn@#1#2#3#4{%
+ \def\lst at temp##1#4##2##3\relax{%
+ \ifx \@empty##2\expandafter\@secondoftwo
+ \else \expandafter\@firstoftwo \fi}%
+ \lst at temp#1#4\@empty\relax{#2}{#3}#4}
+\gdef\lst at fmtCDef#1{\lst at fmtCDef@#1}
+\gdef\lst at fmtCDef@#1#2#3#4#5#6#7{%
+ \lst at CDefIt#1{#2}{#3}%
+ {\lst at fmtIfNextCharIn{#5}{#4#2#3}{#6#4#2#3#7}}%
+ #4%
+ {}{}{}}
+\gdef\lst at fmtCDefX#1{\lst at fmtCDefX@#1}
+\gdef\lst at fmtCDefX@#1#2#3#4#5#6#7{%
+ \let#4#1%
+ \ifx\@empty#2\@empty
+ \def#1{\lst at fmtIfNextCharIn{#5}{#4}{#6#7}}%
+ \else \ifx\@empty#3\@empty
+ \def#1##1{%
+ \ifx##1#2%
+ \def\lst at next{\lst at fmtIfNextCharIn{#5}{#4##1}%
+ {#6#7}}%
+ \else
+ \def\lst at next{#4##1}%
+ \fi
+ \lst at next}%
+ \else
+ \def#1{%
+ \lst at IfNextCharsArg{#2#3}%
+ {\lst at fmtIfNextCharIn{#5}{\expandafter#4\lst at eaten}%
+ {#6#7}}%
+ {\expandafter#4\lst at eaten}}%
+ \fi \fi}
+\gdef\lst at UseFormat#1{%
+ \def\lst at fmtwhole{#1}%
+ \lst at UseFormat@}
+\gdef\lst at UseFormat@{%
+ \lst at fmtSplit\lst at fmtwhole,%
+ \let\lst at fmtwhole\lst at fmtb
+ \ifx\lst at fmta\@empty\else
+ \lst at fmtSplit\lst at fmta=%
+ \ifx\@empty\lst at fmta\else
+ \expandafter\lstKV at XOptArg\expandafter[\expandafter]%
+ \expandafter{\lst at fmtb}\lst at UseFormat@b
+ \fi
+ \fi
+ \ifx\lst at fmtwhole\@empty\else
+ \expandafter\lst at UseFormat@
+ \fi}
+\gdef\lst at UseFormat@b[#1]#2{%
+ \def\lst at fmtc{{#1}}\lst at lExtend\lst at fmtc{\expandafter{\lst at fmta}}%
+ \def\lst at fmtb{#2}%
+ \lst at fmtSplit\lst at fmtb\string
+ \ifx\@empty\lst at fmta
+ \lst at lAddTo\lst at fmtc{{}}%
+ \else
+ \lst at lExtend\lst at fmtc{\expandafter
+ {\expandafter\lst at fmtPre\expandafter{\lst at fmta}}}%
+ \fi
+ \ifx\@empty\lst at fmtb
+ \lst at lAddTo\lst at fmtc{{}}%
+ \else
+ \lst at lExtend\lst at fmtc{\expandafter
+ {\expandafter\lst at fmtPost\expandafter{\lst at fmtb}}}%
+ \fi
+ \expandafter\lst at UseFormat@c\lst at fmtc}
+\gdef\lst at UseFormat@c#1#2#3#4{%
+ \lst at fmtIfIdentifier#2\relax
+ {\lst at fmtIdentifier{#2}%
+ \lst at if\else \PackageWarning{Listings}%
+ {Cannot drop identifier in format definition}%
+ \fi}%
+ {\lst at if
+ \lst at lAddTo\lst at fmtformat{\lst at CArgX#2\relax\lst at fmtCDef}%
+ \else
+ \lst at lAddTo\lst at fmtformat{\lst at CArgX#2\relax\lst at fmtCDefX}%
+ \fi
+ \lst at DefActive\lst at fmtc{#1}%
+ \lst at lExtend\lst at fmtformat{\expandafter{\lst at fmtc}{#3}{#4}}}}
+\lst at AddToHook{SelectCharTable}{\lst at fmtformat}
+\global\let\lst at fmtformat\@empty
+\gdef\lst at fmtPre#1{%
+ \lst at PrintToken
+ \begingroup
+ \let\newline\lst at fmtEnsureNewLine
+ \let\space\lst at fmtEnsureSpace
+ \let\indent\lst at fmtIndent
+ \let\noindent\lst at fmtNoindent
+ #1%
+ \endgroup}
+\gdef\lst at fmtPost#1{%
+ \global\let\lst at fmtPostOutput\@empty
+ \begingroup
+ \def\newline{\lst at AddTo\lst at fmtPostOutput\lst at fmtEnsureNewLine}%
+ \def\space{\aftergroup\lst at fmtEnsurePostSpace}%
+ \def\indent{\lst at AddTo\lst at fmtPostOutput\lst at fmtIndent}%
+ \def\noindent{\lst at AddTo\lst at fmtPostOutput\lst at fmtNoindent}%
+ \aftergroup\lst at PrintToken
+ #1%
+ \endgroup}
+\lst at AddToHook{Init}{\global\let\lst at fmtPostOutput\@empty}
+\lst at AddToHook{PostOutput}
+ {\lst at fmtPostOutput \global\let\lst at fmtPostOutput\@empty}
+\gdef\lst at fmtEnsureSpace{%
+ \lst at ifwhitespace\else \expandafter\lst at ProcessSpace \fi}
+\gdef\lst at fmtEnsurePostSpace{%
+ \lst at IfNextCharWhitespace{}{\lst at ProcessSpace}}
+\lst at Key{fmtindent}{20pt}{\def\lst at fmtindent{#1}}
+\newdimen\lst at fmtcurrindent
+\lst at AddToHook{InitVars}{\global\lst at fmtcurrindent\z@}
+\gdef\lst at fmtIndent{\global\advance\lst at fmtcurrindent\lst at fmtindent}
+\gdef\lst at fmtNoindent{\global\advance\lst at fmtcurrindent-\lst at fmtindent}
+\gdef\lst at fmtEnsureNewLine{%
+ \global\advance\lst at newlines\@ne
+ \global\advance\lst at newlinesensured\@ne
+ \lst at fmtignoretrue}
+\lst at AddToAtTop\lst at DoNewLines{%
+ \ifnum\lst at newlines>\lst at newlinesensured
+ \global\advance\lst at newlines-\lst at newlinesensured
+ \fi
+ \global\lst at newlinesensured\z@}
+\newcount\lst at newlinesensured % global
+\lst at AddToHook{Init}{\global\lst at newlinesensured\z@}
+\gdef\lst at fmtignoretrue{\let\lst at fmtifignore\iftrue}
+\gdef\lst at fmtignorefalse{\let\lst at fmtifignore\iffalse}
+\lst at AddToHook{InitVars}{\lst at fmtignorefalse}
+\lst at AddToHook{Output}{\lst at fmtignorefalse}
+\gdef\lst at fmtUseLostSpace{%
+ \lst at ifnewline \kern\lst at fmtcurrindent \global\lst at lostspace\z@
+ \else
+ \lst at OldOLS
+ \fi}
+\lst at AddToHook{Init}
+ {\lst at true
+ \ifx\lst at fmtformat\@empty \ifx\lst at fmt\@empty \lst at false \fi\fi
+ \lst at if
+ \let\lst at OldOLS\lst at OutputLostSpace
+ \let\lst at OutputLostSpace\lst at fmtUseLostSpace
+ \let\lst at ProcessSpace\lst at fmtProcessSpace
+ \fi}
+\gdef\lst at fmtProcessSpace{%
+ \lst at ifletter
+ \lst at Output
+ \lst at fmtifignore\else
+ \lst at AppendOther\lst at outputspace
+ \fi
+ \else \lst at ifkeepspaces
+ \lst at AppendOther\lst at outputspace
+ \else \ifnum\lst at newlines=\z@
+ \lst at AppendSpecialSpace
+ \else \ifnum\lst at length=\z@
+ \global\advance\lst at lostspace\lst at width
+ \global\advance\lst at pos\m at ne
+ \else
+ \lst at AppendSpecialSpace
+ \fi
+ \fi \fi \fi
+ \lst at whitespacetrue}
+\lst at InstallTest{f}
+ \lst at fmt@list\lst at fmt \lst at gfmt@list\lst at gfmt
+ \lst at gfmt@wp
+ wd
+\gdef\lst at fmt@list{\lst at fmt\lst at gfmt}\global\let\lst at fmt\@empty
+\gdef\lst at gfmt@list{\lst at fmt\lst at gfmt}\global\let\lst at gfmt\@empty
+\gdef\lst at gfmt@wp{%
+ \begingroup \let\lst at UM\@empty
+ \let\lst at PrintToken\@empty
+ \csname\@lst @fmt$\the\lst at token\endcsname
+ \endgroup}
+\gdef\lst at fmtIdentifier#1#2#3#4{%
+ \lst at DefOther\lst at fmta{#2}\edef\lst at fmt{\lst at fmt,\lst at fmta}%
+ \@namedef{\@lst @fmt$\lst at fmta}{#3#4}}
+\lst at EndAspect
+\lst at BeginAspect{labels}
+\lst at Key{numbers}{none}{%
+ \let\lst at PlaceNumber\@empty
+ \lstKV at SwitchCases{#1}%
+ {none&\\%
+ left&\def\lst at PlaceNumber{\llap{\normalfont
+ \lst at numberstyle{\thelstnumber}\kern\lst at numbersep}}\\%
+ right&\def\lst at PlaceNumber{\rlap{\normalfont
+ \kern\linewidth \kern\lst at numbersep
+ \lst at numberstyle{\thelstnumber}}}%
+ }{\PackageError{Listings}{Numbers #1 unknown}\@ehc}}
+\lst at Key{numberstyle}{}{\def\lst at numberstyle{#1}}
+\lst at Key{numbersep}{10pt}{\def\lst at numbersep{#1}}
+\lst at Key{stepnumber}{1}{\def\lst at stepnumber{#1\relax}}
+\lst at AddToHook{EmptyStyle}{\let\lst at stepnumber\@ne}
+\lst at Key{numberblanklines}{true}[t]
+ {\lstKV at SetIf{#1}\lst at ifnumberblanklines}
+\lst at Key{numberfirstline}{f}[t]{\lstKV at SetIf{#1}\lst at ifnumberfirstline}
+\gdef\lst at numberfirstlinefalse{\let\lst at ifnumberfirstline\iffalse}
+\lst at Key{firstnumber}{auto}{%
+ \lstKV at SwitchCases{#1}%
+ {auto&\let\lst at firstnumber\@undefined\\%
+ last&\let\lst at firstnumber\c at lstnumber
+ }{\def\lst at firstnumber{#1\relax}}}
+\lst at AddToHook{PreSet}{\let\lst at advancenumber\z@}
+\lst at AddToHook{PreInit}
+ {\ifx\lst at firstnumber\@undefined
+ \let\lst at firstnumber\lst at firstline
+ \fi}
+\gdef\lst at SetFirstNumber{%
+ \ifx\lst at firstnumber\@undefined
+ \@tempcnta 0\csname\@lst no@\lst at intname\endcsname\relax
+ \ifnum\@tempcnta=\z@ \@tempcnta\lst at firstline
+ \else \lst at nololtrue \fi
+ \advance\@tempcnta\lst at advancenumber
+ \edef\lst at firstnumber{\the\@tempcnta\relax}%
+ \fi}
+\gdef\lst at SaveFirstNumber{%
+ \expandafter\xdef
+ \csname\@lst no\ifx\lst at intname\@empty @ \else @\lst at intname\fi
+ \endcsname{\the\c at lstnumber}}
+\newcounter{lstnumber}% \global
+\global\c at lstnumber\@ne % init
+\renewcommand*\thelstnumber{\@arabic\c at lstnumber}
+\lst at AddToHook{EveryPar}
+ {\global\advance\c at lstnumber\lst at advancelstnum
+ \global\advance\c at lstnumber\m at ne \refstepcounter{lstnumber}%
+ \lst at SkipOrPrintLabel}%
+\global\let\lst at advancelstnum\@ne
+\lst at AddToHook{Init}{\def\@currentlabel{\thelstnumber}}
+\lst at AddToHook{InitVars}
+ {\global\c at lstnumber\lst at firstnumber
+ \global\advance\c at lstnumber\lst at advancenumber
+ \global\advance\c at lstnumber-\lst at advancelstnum
+ \ifx \lst at firstnumber\c at lstnumber
+ \global\advance\c at lstnumber-\lst at advancelstnum
+ \fi}
+\lst at AddToHook{ExitVars}
+ {\global\advance\c at lstnumber\lst at advancelstnum}
+\AtBeginDocument{%
+ \def\theHlstnumber{\ifx\lst@@caption\@empty \lst at neglisting
+ \else \thelstlisting \fi
+ .\thelstnumber}}
+\newcount\lst at skipnumbers % \global
+\lst at AddToHook{Init}
+ {\ifnum \z@>\lst at stepnumber
+ \let\lst at advancelstnum\m at ne
+ \edef\lst at stepnumber{-\lst at stepnumber}%
+ \fi
+ \ifnum \z@<\lst at stepnumber
+ \global\lst at skipnumbers\lst at firstnumber
+ \global\divide\lst at skipnumbers\lst at stepnumber
+ \global\multiply\lst at skipnumbers-\lst at stepnumber
+ \global\advance\lst at skipnumbers\lst at firstnumber
+ \ifnum\lst at skipnumbers>\z@
+ \global\advance\lst at skipnumbers -\lst at stepnumber
+ \fi
+ \else
+ \let\lst at SkipOrPrintLabel\relax
+ \fi}
+\gdef\lst at SkipOrPrintLabel{%
+ \ifnum\lst at skipnumbers=\z@
+ \global\advance\lst at skipnumbers-\lst at stepnumber\relax
+ \lst at PlaceNumber
+ \lst at numberfirstlinefalse
+ \else
+ \lst at ifnumberfirstline
+ \lst at PlaceNumber
+ \lst at numberfirstlinefalse
+ \fi
+ \fi
+ \global\advance\lst at skipnumbers\@ne}%
+\lst at AddToHook{OnEmptyLine}{%
+ \lst at ifnumberblanklines\else \ifnum\lst at skipnumbers=\z@
+ \global\advance\lst at skipnumbers-\lst at stepnumber\relax
+ \fi\fi}
+\lst at EndAspect
+\lst at BeginAspect{lineshape}
+\lst at Key{xleftmargin}{\z@}{\def\lst at xleftmargin{#1}}
+\lst at Key{xrightmargin}{\z@}{\def\lst at xrightmargin{#1}}
+\lst at Key{resetmargins}{false}[t]{\lstKV at SetIf{#1}\lst at ifresetmargins}
+\lst at AddToHook{BoxUnsafe}{\let\lst at xleftmargin\z@
+ \let\lst at xrightmargin\z@}
+\lst at AddToHook{TextStyle}{%
+ \let\lst at xleftmargin\z@ \let\lst at xrightmargin\z@
+ \let\lst at ifresetmargins\iftrue}
+\lst at Key{linewidth}\linewidth{\def\lst at linewidth{#1}}
+\lst at AddToHook{PreInit}{\linewidth\lst at linewidth\relax}
+\gdef\lst at parshape{%
+ \parshape\@ne \@totalleftmargin \linewidth}
+\lst at AddToHook{Init}
+ {\lst at ifresetmargins
+ \advance\linewidth\@totalleftmargin
+ \advance\linewidth\rightmargin
+ \@totalleftmargin\z@
+ \fi
+ \advance\linewidth-\lst at xleftmargin
+ \advance\linewidth-\lst at xrightmargin
+ \advance\@totalleftmargin\lst at xleftmargin\relax}
+\lst at Key{lineskip}{\z@}{\def\lst at lineskip{#1\relax}}
+\lst at AddToHook{Init}
+ {\parskip\z@
+ \ifdim\z@=\lst at lineskip\else
+ \@tempdima\baselineskip
+ \advance\@tempdima\lst at lineskip
+ \multiply\@tempdima\@cclvi
+ \divide\@tempdima\baselineskip\relax
+ \multiply\@tempdima\@cclvi
+ \edef\baselinestretch{\strip at pt\@tempdima}%
+ \selectfont
+ \fi}
+\lst at Key{breaklines}{false}[t]{\lstKV at SetIf{#1}\lst at ifbreaklines}
+\lst at Key{breakindent}{20pt}{\def\lst at breakindent{#1}}
+\lst at Key{breakautoindent}{t}[t]{\lstKV at SetIf{#1}\lst at ifbreakautoindent}
+\lst at Key{breakatwhitespace}{false}[t]%
+ {\lstKV at SetIf{#1}\lst at ifbreakatwhitespace}
+\lst at Key{prebreak}{}{\def\lst at prebreak{#1}}
+\lst at Key{postbreak}{}{\def\lst at postbreak{#1}}
+\lst at AddToHook{Init}
+ {\lst at ifbreaklines
+ \hbadness\@M \pretolerance\@M
+ \@rightskip\@flushglue \rightskip\@rightskip % \raggedright
+ \leftskip\z at skip \parindent\z@
+ \def\lst at parshape{\parshape\tw@ \@totalleftmargin\linewidth
+ \lst at breakshape}%
+ \else
+ \let\lst at discretionary\@empty
+ \fi}
+\lst at AddToHook{OnNewLine}
+ {\lst at ifbreaklines \lst at breakNewLine \fi}
+\gdef\lst at discretionary{%
+ \lst at ifbreakatwhitespace
+ \lst at ifwhitespace \lst@@discretionary \fi
+ \else
+ \lst@@discretionary
+ \fi}%
+\gdef\lst@@discretionary{%
+ \discretionary{\let\space\lst at spacekern\lst at prebreak}%
+ {\llap{\lsthk at EveryLine
+ \kern\lst at breakcurrindent \kern-\@totalleftmargin}%
+ \let\space\lst at spacekern\lst at postbreak}{}}
+\lst at AddToHook{PostOutput}{\lst at discretionary}
+\gdef\lst at spacekern{\kern\lst at width}
+\gdef\lst at breakNewLine{%
+ \@tempdima\lst at breakindent\relax
+ \lst at ifbreakautoindent \advance\@tempdima\lst at lostspace \fi
+ \@tempdimc-\@tempdima \advance\@tempdimc\linewidth
+ \advance\@tempdima\@totalleftmargin
+ \xdef\lst at breakshape{\noexpand\lst at breakcurrindent \the\@tempdimc}%
+ \xdef\lst at breakcurrindent{\the\@tempdima}}
+\global\let\lst at breakcurrindent\z@ % init
+\gdef\lst at breakshape{\@totalleftmargin \linewidth}
+\gdef\lst at breakProcessOther#1{\lst at ProcessOther#1\lst at OutputOther}
+\lst at AddToHook{SelectCharTable}
+ {\lst at ifbreaklines \lst at Def{`)}{\lst at breakProcessOther)}\fi}
+\lst at EndAspect
+\lst at BeginAspect[lineshape]{frames}
+\lst at Key{framexleftmargin}{\z@}{\def\lst at framexleftmargin{#1}}
+\lst at Key{framexrightmargin}{\z@}{\def\lst at framexrightmargin{#1}}
+\lst at Key{framextopmargin}{\z@}{\def\lst at framextopmargin{#1}}
+\lst at Key{framexbottommargin}{\z@}{\def\lst at framexbottommargin{#1}}
+\lst at Key{backgroundcolor}{}{\def\lst at bkgcolor{#1}}
+\lst at Key{fillcolor}{}{\def\lst at fillcolor{#1}}
+\lst at Key{rulecolor}{}{\def\lst at rulecolor{#1}}
+\lst at Key{rulesepcolor}{}{\def\lst at rulesepcolor{#1}}
+\lst at AddToHook{Init}{%
+ \ifx\lst at fillcolor\@empty
+ \let\lst at fillcolor\lst at bkgcolor
+ \fi
+ \ifx\lst at rulesepcolor\@empty
+ \let\lst at rulesepcolor\lst at fillcolor
+ \fi}
+\lst at Key{rulesep}{2pt}{\def\lst at rulesep{#1}}
+\lst at Key{framerule}{.4pt}{\def\lst at framerulewidth{#1}}
+\lst at Key{framesep}{3pt}{\def\lst at frametextsep{#1}}
+\lst at Key{frameshape}{}{%
+ \let\lst at xrulecolor\@empty
+ \lstKV at FourArg{#1}%
+ {\uppercase{\def\lst at frametshape{##1}}%
+ \uppercase{\def\lst at framelshape{##2}}%
+ \uppercase{\def\lst at framershape{##3}}%
+ \uppercase{\def\lst at framebshape{##4}}%
+ \let\lst at ifframeround\iffalse
+ \lst at IfSubstring R\lst at frametshape{\let\lst at ifframeround\iftrue}{}%
+ \lst at IfSubstring R\lst at framebshape{\let\lst at ifframeround\iftrue}{}%
+ \def\lst at frame{##1##2##3##4}}}
+\lst at Key{frameround}\relax
+ {\uppercase{\def\lst at frameround{#1}}%
+ \expandafter\lstframe@\lst at frameround ffff\relax}
+\global\let\lst at frameround\@empty
+\lst at Key{frame}\relax{%
+ \let\lst at xrulecolor\@empty
+ \lstKV at SwitchCases{#1}%
+ {none&\let\lst at frame\@empty\\%
+ leftline&\def\lst at frame{l}\\%
+ topline&\def\lst at frame{t}\\%
+ bottomline&\def\lst at frame{b}\\%
+ lines&\def\lst at frame{tb}\\%
+ single&\def\lst at frame{trbl}\\%
+ shadowbox&\def\lst at frame{tRBl}%
+ \def\lst at xrulecolor{\lst at rulesepcolor}%
+ \def\lst at rulesep{\lst at frametextsep}%
+ }{\def\lst at frame{#1}}%
+ \expandafter\lstframe@\lst at frameround ffff\relax}
+\gdef\lstframe@#1#2#3#4#5\relax{%
+ \lst at IfSubstring T\lst at frame{\edef\lst at frame{t\lst at frame}}{}%
+ \lst at IfSubstring R\lst at frame{\edef\lst at frame{r\lst at frame}}{}%
+ \lst at IfSubstring B\lst at frame{\edef\lst at frame{b\lst at frame}}{}%
+ \lst at IfSubstring L\lst at frame{\edef\lst at frame{l\lst at frame}}{}%
+ \let\lst at frametshape\@empty \let\lst at framebshape\@empty
+ \lst at frameCheck
+ ltr\lst at framelshape\lst at frametshape\lst at framershape #4#1%
+ \lst at frameCheck
+ LTR\lst at framelshape\lst at frametshape\lst at framershape #4#1%
+ \lst at frameCheck
+ lbr\lst at framelshape\lst at framebshape\lst at framershape #3#2%
+ \lst at frameCheck
+ LBR\lst at framelshape\lst at framebshape\lst at framershape #3#2%
+ \let\lst at ifframeround\iffalse
+ \lst at IfSubstring R\lst at frametshape{\let\lst at ifframeround\iftrue}{}%
+ \lst at IfSubstring R\lst at framebshape{\let\lst at ifframeround\iftrue}{}%
+ \let\lst at framelshape\@empty \let\lst at framershape\@empty
+ \lst at IfSubstring L\lst at frame
+ {\def\lst at framelshape{YY}}%
+ {\lst at IfSubstring l\lst at frame{\def\lst at framelshape{Y}}{}}%
+ \lst at IfSubstring R\lst at frame
+ {\def\lst at framershape{YY}}%
+ {\lst at IfSubstring r\lst at frame{\def\lst at framershape{Y}}{}}}
+\gdef\lst at frameCheck#1#2#3#4#5#6#7#8{%
+ \lst at IfSubstring #1\lst at frame
+ {\if #7T\def#4{R}\else \def#4{Y}\fi}%
+ {\def#4{N}}%
+ \lst at IfSubstring #3\lst at frame
+ {\if #8T\def#6{R}\else \def#6{Y}\fi}%
+ {\def#6{N}}%
+ \lst at IfSubstring #2\lst at frame{\edef#5{#5#4Y#6}}{}}
+\lst at AddToHook{TextStyle}
+ {\let\lst at frame\@empty
+ \let\lst at frametshape\@empty
+ \let\lst at framershape\@empty
+ \let\lst at framebshape\@empty
+ \let\lst at framelshape\@empty}
+\gdef\lst at frameMakeBoxV#1#2#3{%
+ \setbox#1\hbox{%
+ \color at begingroup \lst at rulecolor
+ \llap{\setbox\z@\hbox{\vrule\@width\z@\@height#2\@depth#3%
+ \lst at frameL}%
+ \rlap{\lst at frameBlock\lst at rulesepcolor{\wd\z@}%
+ {\ht\z@}{\dp\z@}}%
+ \box\z@
+ \ifx\lst at framelshape\@empty
+ \kern\lst at frametextsep\relax
+ \else
+ \lst at frameBlock\lst at fillcolor\lst at frametextsep{#2}{#3}%
+ \fi
+ \kern\lst at framexleftmargin}%
+ \rlap{\kern-\lst at framexleftmargin
+ \@tempdima\linewidth
+ \advance\@tempdima\lst at framexleftmargin
+ \advance\@tempdima\lst at framexrightmargin
+ \lst at frameBlock\lst at bkgcolor\@tempdima{#2}{#3}%
+ \ifx\lst at framershape\@empty
+ \kern\lst at frametextsep\relax
+ \else
+ \lst at frameBlock\lst at fillcolor\lst at frametextsep{#2}{#3}%
+ \fi
+ \setbox\z@\hbox{\vrule\@width\z@\@height#2\@depth#3%
+ \lst at frameR}%
+ \rlap{\lst at frameBlock\lst at rulesepcolor{\wd\z@}%
+ {\ht\z@}{\dp\z@}}%
+ \box\z@}%
+ \color at endgroup}}
+\gdef\lst at frameBlock#1#2#3#4{%
+ \color at begingroup
+ #1%
+ \setbox\z@\hbox{\vrule\@height#3\@depth#4%
+ \ifx#1\@empty \@width\z@ \kern#2\relax
+ \else \@width#2\relax \fi}%
+ \box\z@
+ \color at endgroup}
+\gdef\lst at frameR{%
+ \expandafter\lst at frameR@\lst at framershape\relax
+ \kern-\lst at rulesep}
+\gdef\lst at frameR@#1{%
+ \ifx\relax#1\@empty\else
+ \if #1Y\lst at framevrule \else \kern\lst at framerulewidth \fi
+ \kern\lst at rulesep
+ \expandafter\lst at frameR@b
+ \fi}
+\gdef\lst at frameR@b#1{%
+ \ifx\relax#1\@empty
+ \else
+ \if #1Y\color at begingroup
+ \lst at xrulecolor
+ \lst at framevrule
+ \color at endgroup
+ \else
+ \kern\lst at framerulewidth
+ \fi
+ \kern\lst at rulesep
+ \expandafter\lst at frameR@
+ \fi}
+\gdef\lst at frameL{%
+ \kern-\lst at rulesep
+ \expandafter\lst at frameL@\lst at framelshape\relax}
+\gdef\lst at frameL@#1{%
+ \ifx\relax#1\@empty\else
+ \kern\lst at rulesep
+ \if#1Y\lst at framevrule \else \kern\lst at framerulewidth \fi
+ \expandafter\lst at frameL@
+ \fi}
+\gdef\lst at frameH#1#2{%
+ \global\let\lst at framediml\z@ \global\let\lst at framedimr\z@
+ \setbox\z@\hbox{}\@tempcntb\z@
+ \expandafter\lst at frameH@\expandafter#1#2\relax\relax\relax
+ \@tempdimb\lst at frametextsep\relax
+ \advance\@tempdimb\lst at framerulewidth\relax
+ \@tempdimc-\@tempdimb
+ \advance\@tempdimc\ht\z@
+ \advance\@tempdimc\dp\z@
+ \setbox\z@=\hbox{%
+ \lst at frameHBkg\lst at fillcolor\@tempdimb\@firstoftwo
+ \if#1T\rlap{\raise\dp\@tempboxa\box\@tempboxa}%
+ \else\rlap{\lower\ht\@tempboxa\box\@tempboxa}\fi
+ \lst at frameHBkg\lst at rulesepcolor\@tempdimc\@secondoftwo
+ \advance\@tempdimb\ht\@tempboxa
+ \if#1T\rlap{\raise\lst at frametextsep\box\@tempboxa}%
+ \else\rlap{\lower\@tempdimb\box\@tempboxa}\fi
+ \rlap{\box\z@}%
+ }}
+\gdef\lst at frameH@#1#2#3#4{%
+ \ifx\relax#4\@empty\else
+ \lst at frameh \@tempcntb#1#2#3#4%
+ \advance\@tempcntb\@ne
+ \expandafter\lst at frameH@\expandafter#1%
+ \fi}
+\gdef\lst at frameHBkg#1#2#3{%
+ \setbox\@tempboxa\hbox{%
+ \kern-\lst at framexleftmargin
+ #3{\kern-\lst at framediml\relax}{\@tempdima\z@}%
+ \ifdim\lst at framediml>\@tempdimb
+ #3{\@tempdima\lst at framediml \advance\@tempdima-\@tempdimb
+ \lst at frameBlock\lst at rulesepcolor\@tempdima\@tempdimb\z@}%
+ {\kern-\lst at framediml
+ \advance\@tempdima\lst at framediml\relax}%
+ \fi
+ #3{\@tempdima\z@
+ \ifx\lst at framelshape\@empty\else
+ \advance\@tempdima\@tempdimb
+ \fi
+ \ifx\lst at framershape\@empty\else
+ \advance\@tempdima\@tempdimb
+ \fi}%
+ {\ifdim\lst at framedimr>\@tempdimb
+ \advance\@tempdima\lst at framedimr\relax
+ \fi}%
+ \advance\@tempdima\linewidth
+ \advance\@tempdima\lst at framexleftmargin
+ \advance\@tempdima\lst at framexrightmargin
+ \lst at frameBlock#1\@tempdima#2\z@
+ #3{\ifdim\lst at framedimr>\@tempdimb
+ \@tempdima-\@tempdimb
+ \advance\@tempdima\lst at framedimr\relax
+ \lst at frameBlock\lst at rulesepcolor\@tempdima\@tempdimb\z@
+ \fi}{}%
+ }}
+\gdef\lst at frameh#1#2#3#4#5{%
+ \lst at frameCalcDimA#1%
+ \lst at ifframeround \@getcirc\@tempdima \fi
+ \setbox\z@\hbox{%
+ \begingroup
+ \setbox\z@\hbox{%
+ \kern-\lst at framexleftmargin
+ \color at begingroup
+ \ifnum#1=\z@ \lst at rulecolor \else \lst at xrulecolor \fi
+ \lst at frameCornerX\llap{#2L}#3#1%
+ \ifdim\lst at framediml<\@tempdimb
+ \xdef\lst at framediml{\the\@tempdimb}%
+ \fi
+ \begingroup
+ \if#4Y\else \let\lst at framerulewidth\z@ \fi
+ \@tempdima\lst at framexleftmargin
+ \advance\@tempdima\lst at framexrightmargin
+ \advance\@tempdima\linewidth
+ \vrule\@width\@tempdima\@height\lst at framerulewidth \@depth\z@
+ \endgroup
+ \lst at frameCornerX\rlap{#2R}#5#1%
+ \ifdim\lst at framedimr<\@tempdimb
+ \xdef\lst at framedimr{\the\@tempdimb}%
+ \fi
+ \color at endgroup}%
+ \if#2T\rlap{\raise\dp\z@\box\z@}%
+ \else\rlap{\lower\ht\z@\box\z@}\fi
+ \endgroup
+ \box\z@}}
+\gdef\lst at frameCornerX#1#2#3#4{%
+ \setbox\@tempboxa\hbox{\csname\@lst @frame\if#3RR\fi #2\endcsname}%
+ \@tempdimb\wd\@tempboxa
+ \if #3R%
+ #1{\box\@tempboxa}%
+ \else
+ \if #3Y\expandafter#1\else
+ \@tempdimb\z@ \expandafter\vphantom \fi
+ {\box\@tempboxa}%
+ \fi}
+\gdef\lst at frameCalcDimA#1{%
+ \@tempdima\lst at rulesep
+ \advance\@tempdima\lst at framerulewidth
+ \multiply\@tempdima#1\relax
+ \advance\@tempdima\lst at frametextsep
+ \advance\@tempdima\lst at framerulewidth
+ \multiply\@tempdima\tw@}
+\lst at AddToHook{Init}{\lst at frameInit}
+\newbox\lst at framebox
+\gdef\lst at frameInit{%
+ \ifx\lst at framelshape\@empty \let\lst at frameL\@empty \fi
+ \ifx\lst at framershape\@empty \let\lst at frameR\@empty \fi
+ \def\lst at framevrule{\vrule\@width\lst at framerulewidth\relax}%
+ \lst at ifframeround
+ \lst at frameCalcDimA\z@ \@getcirc\@tempdima
+ \@tempdimb\@tempdima \divide\@tempdimb\tw@
+ \advance\@tempdimb -\@wholewidth
+ \edef\lst at frametextsep{\the\@tempdimb}%
+ \edef\lst at framerulewidth{\the\@wholewidth}%
+ \lst at frameCalcDimA\@ne \@getcirc\@tempdima
+ \@tempdimb\@tempdima \divide\@tempdimb\tw@
+ \advance\@tempdimb -\tw@\@wholewidth
+ \advance\@tempdimb -\lst at frametextsep
+ \edef\lst at rulesep{\the\@tempdimb}%
+ \fi
+ \lst at frameMakeBoxV\lst at framebox{\ht\strutbox}{\dp\strutbox}%
+ \def\lst at framelr{\copy\lst at framebox}%
+ \ifx\lst at frametshape\@empty\else
+ \lst at frameH T\lst at frametshape
+ \ifvoid\z@\else
+ \par\lst at parshape
+ \@tempdima-\baselineskip \advance\@tempdima\ht\z@
+ \ifdim\prevdepth<\@cclvi\p@\else
+ \advance\@tempdima\prevdepth
+ \fi
+ \ifdim\@tempdima<\z@
+ \vskip\@tempdima\vskip\lineskip
+ \fi
+ \noindent\box\z@\par
+ \lineskiplimit\maxdimen \lineskip\z@
+ \fi
+ \lst at frameSpreadV\lst at framextopmargin
+ \fi}
+\lst at AddToHook{EveryLine}{\lst at framelr}
+\global\let\lst at framelr\@empty
+\lst at AddToHook{DeInit}
+ {\ifx\lst at framebshape\@empty\else \lst at frameExit \fi}
+\gdef\lst at frameExit{%
+ \lst at frameSpreadV\lst at framexbottommargin
+ \lst at frameH B\lst at framebshape
+ \ifvoid\z@\else
+ \everypar{}\par\lst at parshape\nointerlineskip\noindent\box\z@
+ \fi}
+\gdef\lst at frameSpreadV#1{%
+ \ifdim\z@=#1\else
+ \everypar{}\par\lst at parshape\nointerlineskip\noindent
+ \lst at frameMakeBoxV\z@{#1}{\z@}%
+ \box\z@
+ \fi}
+\gdef\lst at frameTR{%
+ \vrule\@width.5\@tempdima\@height\lst at framerulewidth\@depth\z@
+ \kern-\lst at framerulewidth
+ \raise\lst at framerulewidth\hbox{%
+ \vrule\@width\lst at framerulewidth\@height\z@\@depth.5\@tempdima}}
+\gdef\lst at frameBR{%
+ \vrule\@width.5\@tempdima\@height\lst at framerulewidth\@depth\z@
+ \kern-\lst at framerulewidth
+ \vrule\@width\lst at framerulewidth\@height.5\@tempdima\@depth\z@}
+\gdef\lst at frameBL{%
+ \vrule\@width\lst at framerulewidth\@height.5\@tempdima\@depth\z@
+ \kern-\lst at framerulewidth
+ \vrule\@width.5\@tempdima\@height\lst at framerulewidth\@depth\z@}
+\gdef\lst at frameTL{%
+ \raise\lst at framerulewidth\hbox{%
+ \vrule\@width\lst at framerulewidth\@height\z@\@depth.5\@tempdima}%
+ \kern-\lst at framerulewidth
+ \vrule\@width.5\@tempdima\@height\lst at framerulewidth\@depth\z@}
+\gdef\lst at frameRoundT{%
+ \setbox\@tempboxa\hbox{\@circlefnt\char\@tempcnta}%
+ \ht\@tempboxa\lst at framerulewidth
+ \box\@tempboxa}
+\gdef\lst at frameRoundB{%
+ \setbox\@tempboxa\hbox{\@circlefnt\char\@tempcnta}%
+ \dp\@tempboxa\z@
+ \box\@tempboxa}
+\gdef\lst at frameRTR{%
+ \hb at xt@.5\@tempdima{\kern-\lst at framerulewidth
+ \kern.5\@tempdima \lst at frameRoundT \hss}}
+\gdef\lst at frameRBR{%
+ \hb at xt@.5\@tempdima{\kern-\lst at framerulewidth
+ \advance\@tempcnta\@ne \kern.5\@tempdima \lst at frameRoundB \hss}}
+\gdef\lst at frameRBL{%
+ \advance\@tempcnta\tw@ \lst at frameRoundB
+ \kern-.5\@tempdima}
+\gdef\lst at frameRTL{%
+ \advance\@tempcnta\thr@@\lst at frameRoundT
+ \kern-.5\@tempdima}
+\lst at EndAspect
+\lst at BeginAspect[keywords]{make}
+\lst at NewMode\lst at makemode
+\lst at AddToHook{Output}{%
+ \ifnum\lst at mode=\lst at makemode
+ \ifx\lst at thestyle\lst at gkeywords@sty
+ \lst at makekeytrue
+ \fi
+ \fi}
+\gdef\lst at makekeytrue{\let\lst at ifmakekey\iftrue}
+\gdef\lst at makekeyfalse{\let\lst at ifmakekey\iffalse}
+\global\lst at makekeyfalse % init
+\lst at Key{makemacrouse}f[t]{\lstKV at SetIf{#1}\lst at ifmakemacrouse}
+\gdef\lst at MakeSCT{%
+ \lst at ifmakemacrouse
+ \lst at ReplaceInput{$(}{%
+ \lst at PrintToken
+ \lst at EnterMode\lst at makemode{\lst at makekeyfalse}%
+ \lst at Merge{\lst at ProcessOther\$\lst at ProcessOther(}}%
+ \lst at ReplaceInput{)}{%
+ \ifnum\lst at mode=\lst at makemode
+ \lst at PrintToken
+ \begingroup
+ \lst at ProcessOther)%
+ \lst at ifmakekey
+ \let\lst at currstyle\lst at gkeywords@sty
+ \fi
+ \lst at OutputOther
+ \endgroup
+ \lst at LeaveMode
+ \else
+ \expandafter\lst at ProcessOther\expandafter)%
+ \fi}%
+ \else
+ \lst at ReplaceInput{$(}{\lst at ProcessOther\$\lst at ProcessOther(}%
+ \fi}
+\lst at EndAspect
+\lst at BeginAspect{0.21}
+\lst at Key{labelstyle}{}{\def\lst at numberstyle{#1}}
+\lst at Key{labelsep}{10pt}{\def\lst at numbersep{#1}}
+\lst at Key{labelstep}{0}{%
+ \ifnum #1=\z@ \KV at lst@numbers{none}%
+ \else \KV at lst@numbers{left}\fi
+ \def\lst at stepnumber{#1\relax}}
+\lst at Key{firstlabel}\relax{\def\lst at firstnumber{#1\relax}}
+\lst at Key{advancelabel}\relax{\def\lst at advancenumber{#1\relax}}
+\let\c at lstlabel\c at lstnumber
+\lst at AddToHook{Init}{\def\thelstnumber{\thelstlabel}}
+\newcommand*\thelstlabel{\@arabic\c at lstlabel}
+\lst at Key{first}\relax{\def\lst at firstline{#1\relax}}
+\lst at Key{last}\relax{\def\lst at lastline{#1\relax}}
+\lst at Key{framerulewidth}{.4pt}{\def\lst at framerulewidth{#1}}
+\lst at Key{framerulesep}{2pt}{\def\lst at rulesep{#1}}
+\lst at Key{frametextsep}{3pt}{\def\lst at frametextsep{#1}}
+\lst at Key{framerulecolor}{}{\lstKV at OptArg[]{#1}%
+ {\ifx\@empty##2\@empty
+ \let\lst at rulecolor\@empty
+ \else
+ \ifx\@empty##1\@empty
+ \def\lst at rulecolor{\color{##2}}%
+ \else
+ \def\lst at rulecolor{\color[##1]{##2}}%
+ \fi
+ \fi}}
+\lst at Key{backgroundcolor}{}{\lstKV at OptArg[]{#1}%
+ {\ifx\@empty##2\@empty
+ \let\lst at bkgcolor\@empty
+ \else
+ \ifx\@empty##1\@empty
+ \def\lst at bkgcolor{\color{##2}}%
+ \else
+ \def\lst at bkgcolor{\color[##1]{##2}}%
+ \fi
+ \fi}}
+\lst at Key{framespread}{\z@}{\def\lst at framespread{#1}}
+\lst at AddToHook{PreInit}
+ {\@tempdima\lst at framespread\relax \divide\@tempdima\tw@
+ \edef\lst at framextopmargin{\the\@tempdima}%
+ \let\lst at framexrightmargin\lst at framextopmargin
+ \let\lst at framexbottommargin\lst at framextopmargin
+ \advance\@tempdima\lst at xleftmargin\relax
+ \edef\lst at framexleftmargin{\the\@tempdima}}
+\newdimen\lst at innerspread \newdimen\lst at outerspread
+\lst at Key{spread}{\z@,\z@}{\lstKV at CSTwoArg{#1}%
+ {\lst at innerspread##1\relax
+ \ifx\@empty##2\@empty
+ \divide\lst at innerspread\tw@\relax
+ \lst at outerspread\lst at innerspread
+ \else
+ \lst at outerspread##2\relax
+ \fi}}
+\lst at AddToHook{BoxUnsafe}{\lst at outerspread\z@ \lst at innerspread\z@}
+\lst at Key{wholeline}{false}[t]{\lstKV at SetIf{#1}\lst at ifresetmargins}
+\lst at Key{indent}{\z@}{\def\lst at xleftmargin{#1}}
+\lst at AddToHook{PreInit}
+ {\lst at innerspread=-\lst at innerspread
+ \lst at outerspread=-\lst at outerspread
+ \ifodd\c at page \advance\lst at innerspread\lst at xleftmargin
+ \else \advance\lst at outerspread\lst at xleftmargin \fi
+ \ifodd\c at page
+ \edef\lst at xleftmargin{\the\lst at innerspread}%
+ \edef\lst at xrightmargin{\the\lst at outerspread}%
+ \else
+ \edef\lst at xleftmargin{\the\lst at outerspread}%
+ \edef\lst at xrightmargin{\the\lst at innerspread}%
+ \fi}
+\lst at Key{defaultclass}\relax{\def\lst at classoffset{#1}}
+\lst at Key{stringtest}\relax{}% dummy
+\lst at Key{outputpos}\relax{\lst at outputpos#1\relax\relax}
+\lst at Key{stringspaces}\relax[t]{\lstKV at SetIf{#1}\lst at ifshowstringspaces}
+\lst at Key{visisblespaces}\relax[t]{\lstKV at SetIf{#1}\lst at ifshowspaces}
+\lst at Key{visibletabs}\relax[t]{\lstKV at SetIf{#1}\lst at ifshowtabs}
+\lst at EndAspect
+\lst at BeginAspect{fancyvrb}
+\@ifundefined{FancyVerbFormatLine}
+ {\typeout{^^J%
+ ***^^J%
+ *** `listings.sty' needs `fancyvrb.sty' right now.^^J%
+ *** Please ensure its availability and try again.^^J%
+ ***^^J}%
+ \batchmode \@@end}{}
+\gdef\lstFV at fancyvrb{%
+ \lst at iffancyvrb
+ \ifx\FancyVerbFormatLine\lstFV at FancyVerbFormatLine\else
+ \let\lstFV at FVFL\FancyVerbFormatLine
+ \let\FancyVerbFormatLine\lstFV at FancyVerbFormatLine
+ \fi
+ \else
+ \ifx\lstFV at FVFL\@undefined\else
+ \let\FancyVerbFormatLine\lstFV at FVFL
+ \let\lstFV at FVFL\@undefined
+ \fi
+ \fi}
+\gdef\lstFV at VerbatimBegin{%
+ \ifx\FancyVerbFormatLine\lstFV at FancyVerbFormatLine
+ \lsthk at TextStyle \lsthk at BoxUnsafe
+ \lsthk at PreSet
+ \lst at activecharsfalse
+ \let\normalbaselines\relax
+\xdef\lstFV at RestoreData{\noexpand\linewidth\the\linewidth\relax}%
+ \lst at Init\relax
+ \lst at ifresetmargins \advance\linewidth-\@totalleftmargin \fi
+\lstFV at RestoreData
+ \everypar{}\global\lst at newlines\z@
+ \lst at mode\lst at nomode \let\lst at entermodes\@empty
+ \lst at InterruptModes
+%% D.G. modification begin - Nov. 25, 1998
+ \let\@noligs\relax
+%% D.G. modification end
+ \fi}
+\gdef\lstFV at VerbatimEnd{%
+ \ifx\FancyVerbFormatLine\lstFV at FancyVerbFormatLine
+ \global\setbox\lstFV at gtempboxa\box\@tempboxa
+ \global\let\@gtempa\FV at ProcessLine
+ \lst at mode\lst at Pmode
+ \lst at DeInit
+ \let\FV at ProcessLine\@gtempa
+ \setbox\@tempboxa\box\lstFV at gtempboxa
+ \par
+ \fi}
+\newbox\lstFV at gtempboxa
+\lst at AddTo\FV at VerbatimBegin\lstFV at VerbatimBegin
+\lst at AddToAtTop\FV at VerbatimEnd\lstFV at VerbatimEnd
+\lst at AddTo\FV at LVerbatimBegin\lstFV at VerbatimBegin
+\lst at AddToAtTop\FV at LVerbatimEnd\lstFV at VerbatimEnd
+\lst at AddTo\FV at BVerbatimBegin\lstFV at VerbatimBegin
+\lst at AddToAtTop\FV at BVerbatimEnd\lstFV at VerbatimEnd
+\gdef\lstFV at FancyVerbFormatLine#1{%
+ \let\lst at arg\@empty \lst at FVConvert#1\@nil
+ \global\lst at newlines\z@
+ \vtop{\noindent\lst at parshape
+ \lst at ReenterModes
+ \lst at arg \lst at PrintToken\lst at EOLUpdate\lsthk at InitVarsBOL
+ \lst at InterruptModes}}
+\lst at Key{fvcmdparams}%
+ {\overlay\@ne}%
+ {\def\lst at FVcmdparams{,#1}}
+\lst at Key{morefvcmdparams}\relax{\lst at lAddTo\lst at FVcmdparams{,#1}}
+\gdef\lst at FVConvert{\@tempcnta\z@ \lst at FVConvertO@}%
+\gdef\lst at FVConvertO@{%
+ \ifcase\@tempcnta
+ \expandafter\futurelet\expandafter\@let at token
+ \expandafter\lst at FVConvert@@
+ \else
+ \expandafter\lst at FVConvertO@a
+ \fi}
+\gdef\lst at FVConvertO@a#1{%
+ \lst at lAddTo\lst at arg{{#1}}\advance\@tempcnta\m at ne
+ \lst at FVConvertO@}%
+\gdef\lst at FVConvert@@{%
+ \ifcat\noexpand\@let at token\bgroup \expandafter\lst at FVConvertArg
+ \else \expandafter\lst at FVConvert@ \fi}
+\gdef\lst at FVConvertArg#1{%
+ {\let\lst at arg\@empty
+ \lst at FVConvert#1\@nil
+ \global\let\@gtempa\lst at arg}%
+ \lst at lExtend\lst at arg{\expandafter{\@gtempa\lst at PrintToken}}%
+ \lst at FVConvert}
+\gdef\lst at FVConvert@#1{%
+ \ifx \@nil#1\else
+ \if\relax\noexpand#1%
+ \lst at lAddTo\lst at arg{\lst at OutputLostSpace\lst at PrintToken#1}%
+ \else
+ \lccode`\~=`#1\lowercase{\lst at lAddTo\lst at arg~}%
+ \fi
+ \expandafter\lst at FVConvert
+ \fi}
+\gdef\lst at FVConvert@#1{%
+ \ifx \@nil#1\else
+ \if\relax\noexpand#1%
+ \lst at lAddTo\lst at arg{\lst at OutputLostSpace\lst at PrintToken#1}%
+ \def\lst at temp##1,#1##2,##3##4\relax{%
+ \ifx##3\@empty \else \@tempcnta##2\relax \fi}%
+ \expandafter\lst at temp\lst at FVcmdparams,#1\z@,\@empty\relax
+ \else
+ \lccode`\~=`#1\lowercase{\lst at lAddTo\lst at arg~}%
+ \fi
+ \expandafter\lst at FVConvertO@
+ \fi}
+\lst at EndAspect
+\lst at BeginAspect[keywords,comments,strings,language]{lgrind}
+\gdef\lst at LGGetNames#1:#2\relax{%
+ \lst at NormedDef\lstlang@{#1}\lst at ReplaceInArg\lstlang@{|,}%
+ \def\lst at arg{:#2}}
+\gdef\lst at LGGetValue#1{%
+ \lst at false
+ \def\lst at temp##1:#1##2##3\relax{%
+ \ifx\@empty##2\else \lst at LGGetValue@{#1}\fi}
+ \expandafter\lst at temp\lst at arg:#1\@empty\relax}
+\gdef\lst at LGGetValue@#1{%
+ \lst at true
+ \def\lst at temp##1:#1##2:##3\relax{%
+ \@ifnextchar=\lst at LGGetValue@@{\lst at LGGetValue@@=}##2\relax
+ \def\lst at arg{##1:##3}}%
+ \expandafter\lst at temp\lst at arg\relax}
+\gdef\lst at LGGetValue@@=#1\relax{\def\lst at LGvalue{#1}}
+\gdef\lst at LGGetComment#1#2{%
+ \let#2\@empty
+ \lst at LGGetValue{#1b}%
+ \lst at if
+ \let#2\lst at LGvalue
+ \lst at LGGetValue{#1e}%
+ \ifx\lst at LGvalue\lst at LGEOL
+ \edef\lstlang@{\lstlang@,commentline={#2}}%
+ \let#2\@empty
+ \else
+ \edef#2{{#2}{\lst at LGvalue}}%
+ \fi
+ \fi}
+\gdef\lst at LGGetString#1#2{%
+ \lst at LGGetValue{#1b}%
+ \lst at if
+ \let#2\lst at LGvalue
+ \lst at LGGetValue{#1e}%
+ \ifx\lst at LGvalue\lst at LGEOL
+ \edef\lstlang@{\lstlang@,morestringizer=[l]{#2}}%
+ \else
+ \ifx #2\lst at LGvalue
+ \edef\lstlang@{\lstlang@,morestringizer=[d]{#2}}%
+ \else
+ \edef\lst at temp{\lst at LGe#2}%
+ \ifx \lst at temp\lst at LGvalue
+ \edef\lstlang@{\lstlang@,morestringizer=[b]{#2}}%
+ \else
+ \PackageWarning{Listings}%
+ {String #2...\lst at LGvalue\space not supported}%
+ \fi
+ \fi
+ \fi
+ \fi}
+\gdef\lst at LGDefLang{%
+ \lst at LGReplace
+ \let\lstlang@\empty
+ \lst at LGGetValue{kw}%
+ \lst at if
+ \lst at ReplaceInArg\lst at LGvalue{{ },}%
+ \edef\lstlang@{\lstlang@,keywords={\lst at LGvalue}}%
+ \fi
+ \lst at LGGetValue{oc}%
+ \lst at if
+ \edef\lstlang@{\lstlang@,sensitive=f}%
+ \fi
+ \lst at LGGetValue{id}%
+ \lst at if
+ \edef\lstlang@{\lstlang@,alsoletter=\lst at LGvalue}%
+ \fi
+ \lst at LGGetComment a\lst at LGa
+ \lst at LGGetComment c\lst at LGc
+ \ifx\lst at LGa\@empty
+ \ifx\lst at LGc\@empty\else
+ \edef\lstlang@{\lstlang@,singlecomment=\lst at LGc}%
+ \fi
+ \else
+ \ifx\lst at LGc\@empty
+ \edef\lstlang@{\lstlang@,singlecomment=\lst at LGa}%
+ \else
+ \edef\lstlang@{\lstlang@,doublecomment=\lst at LGc\lst at LGa}%
+ \fi
+ \fi
+ \lst at LGGetString s\lst at LGa
+ \lst at LGGetString l\lst at LGa
+ \lst at LGGetValue{tc}%
+ \lst at if
+ \edef\lstlang@{\lstlang@,lgrindef=\lst at LGvalue}%
+ \fi
+ \expandafter\xdef\csname\@lst LGlang@\lst at language@\endcsname
+ {\noexpand\lstset{\lstlang@}}%
+ \lst at ReplaceInArg\lst at arg{{: :}:}\let\lst at LGvalue\@empty
+ \expandafter\lst at LGDroppedCaps\lst at arg\relax\relax
+ \ifx\lst at LGvalue\@empty\else
+ \PackageWarningNoLine{Listings}{Ignored capabilities for
+ \space `\lst at language@' are\MessageBreak\lst at LGvalue}%
+ \fi}
+\gdef\lst at LGDroppedCaps#1:#2#3{%
+ \ifx#2\relax
+ \lst at RemoveCommas\lst at LGvalue
+ \else
+ \edef\lst at LGvalue{\lst at LGvalue,#2#3}%
+ \expandafter\lst at LGDroppedCaps
+ \fi}
+\begingroup
+\catcode`\/=0
+\lccode`\z=`\:\lccode`\y=`\^\lccode`\x=`\$\lccode`\v=`\|
+\catcode`\\=12\relax
+/lowercase{%
+/gdef/lst at LGReplace{/lst at ReplaceInArg/lst at arg
+ {{\:}{z }{\^}{y}{\$}{x}{\|}{v}{ \ }{ }{:\ :}{:}{\ }{ }{\(}({\)})}}
+/gdef/lst at LGe{\e}
+}
+/endgroup
+\gdef\lst at LGRead#1\par{%
+ \lst at LGGetNames#1:\relax
+ \def\lst at temp{endoflanguagedefinitions}%
+ \ifx\lstlang@\lst at temp
+ \let\lst at next\endinput
+ \else
+ \expandafter\lst at IfOneOf\lst at language@\relax\lstlang@
+ {\lst at LGDefLang \let\lst at next\endinput}%
+ {\let\lst at next\lst at LGRead}%
+ \fi
+ \lst at next}
+\lst at Key{lgrindef}\relax{%
+ \lst at NormedDef\lst at language@{#1}%
+ \begingroup
+ \@ifundefined{lstLGlang@\lst at language@}%
+ {\everypar{\lst at LGRead}%
+ \catcode`\\=12\catcode`\{=12\catcode`\}=12\catcode`\%=12%
+ \catcode`\#=14\catcode`\$=12\catcode`\^=12\catcode`\_=12\relax
+ \input{\lstlgrindeffile}%
+ }{}%
+ \endgroup
+ \@ifundefined{lstLGlang@\lst at language@}%
+ {\PackageError{Listings}%
+ {LGrind language \lst at language@\space undefined}%
+ {The language is not loadable. \@ehc}}%
+ {\lsthk at SetLanguage
+ \csname\@lst LGlang@\lst at language@\endcsname}}
+\@ifundefined{lstlgrindeffile}
+ {\lst at UserCommand\lstlgrindeffile{lgrindef.}}{}
+\lst at EndAspect
+\lst at BeginAspect[keywords]{hyper}
+\lst at Key{hyperanchor}\hyper@@anchor{\let\lst at hyperanchor#1}
+\lst at Key{hyperlink}\hyperlink{\let\lst at hyperlink#1}
+\lst at InstallKeywords{h}{hyperref}{}\relax{}
+ {\begingroup
+ \let\lst at UM\@empty \xdef\@gtempa{\the\lst at token}%
+ \endgroup
+ \lst at GetFreeMacro{lstHR@\@gtempa}%
+ \global\expandafter\let\lst at freemacro\@empty
+ \@tempcntb\@tempcnta \advance\@tempcntb\m at ne
+ \edef\lst at alloverstyle##1{%
+ \let\noexpand\lst at alloverstyle\noexpand\@empty
+ \noexpand\smash{\raise\baselineskip\hbox
+ {\noexpand\lst at hyperanchor{lst.\@gtempa\the\@tempcnta}%
+ {\relax}}}%
+ \ifnum\@tempcnta=\z@ ##1\else
+ \noexpand\lst at hyperlink{lst.\@gtempa\the\@tempcntb}{##1}%
+ \fi}%
+ }
+ od
+\lst at EndAspect
+\endinput
+%%
+%% End of file `lstmisc.sty'.
File [added]: lstpatch.sty
Delta lines: +393 -0
===================================================================
--- papers/CPC/saga_engine_2006/lstpatch.sty 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/lstpatch.sty 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,393 @@
+%%
+%% This is file `lstpatch.sty', generated manually.
+%%
+%% (w)(c) 2004 Carsten Heinz
+%%
+%% This file may be distributed under the terms of the LaTeX Project Public
+%% License from CTAN archives in directory macros/latex/base/lppl.txt.
+%% Either version 1.0 or, at your option, any later version.
+%%
+%% Send comments and ideas on the package, error reports and additional
+%% programming languages to <cheinz at gmx.de>.
+%%
+%% This patch file will remove the following bugs from the listings package.
+%% Each item contains the bug finder with date of report and first bug fix
+%% version, a short description of the problem, and the reason for the bug
+%% in parenthesis.
+%%
+%% 1) Frank Atanassow, 2004/10/07, 1.3b
+%%
+%% space after mathescape is not preserved
+%% (\lst at newlines>0)
+%%
+%% 2) Benjamin Lings, 2004/10/15, 1.3b (2004/10/17)
+%%
+%% \usepackage{xy,listings} yields:
+%% "Forbidden control sequence found while scanning use of \lst at lExtend"
+%% (xy-pic correctly resets catcode of ^^L (to active), which is \outer)
+%%
+%%
+%% The following features are added to the base package.
+%%
+%% 1.3a (2004/09/07)
+%%
+%% a) H I G H L Y E X P E R I M E N T A L
+%%
+%% Use the options
+%% rangeprefix=<prefix for begin and end of range>
+%% rangesuffix=<suffix for begin and end of range>
+%%
+%% rangebeginprefix=<prefix for begin of range>
+%% rangebeginsuffix=<suffix for begin of range>
+%%
+%% rangeendprefix=<prefix for end of range>
+%% rangeendsuffix=<suffix for end of range>
+%%
+%% includerangemarker=true|false
+%% together with
+%% firstline=<begin marker>
+%% lastline=<end marker>
+%% or
+%% linerange={<begin marker 1>-<end marker 1>,
+%% <begin marker 2>-<end marker 2>, ...}
+%% The according markers in the source code are
+%% <prefix><marker><suffix>
+%% for begin respectively end of range. Moreover, one can use
+%% includerangemarker=true|false
+%% to show or hide the range markers in the output.
+%%
+%% 1.3b (2004/10/17)
+%%
+%% b) multicols=<number> (requires loaded multicol package)
+%%
+%%
+\lst at CheckVersion{1.3}
+{\typeout{^^J%
+ ***^^J%
+ *** This is a patch for listings 1.3, but you're using^^J%
+ *** version \lst at version.^^J%
+ ***^^J
+ *** Patch file not loaded.^^J%
+ ***^^J}%
+ \endinput
+}
+\def\fileversion{1.3b}
+\def\filedate{2004/10/17}
+\ProvidesFile{lstpatch.sty}[\filedate\space\fileversion\space (Carsten Heinz)]
+%
+% 0) Insert % after #1.
+\def\@@xbitor #1{\@tempcntb \count#1%
+ \ifnum \@tempcnta =\z@
+ \else
+ \divide\@tempcntb\@tempcnta
+ \ifodd\@tempcntb \@testtrue\fi
+ \fi}
+%
+% 1) Reset \lst at newlines at end of escape.
+\def\lstpatch at escape{%
+\gdef\lst at Escape##1##2##3##4{%
+ \lst at CArgX ##1\relax\lst at CDefX
+ {}%
+ {\lst at ifdropinput\else
+ \lst at TrackNewLines\lst at OutputLostSpace \lst at XPrintToken
+ \lst at InterruptModes
+ \lst at EnterMode{\lst at TeXmode}{\lst at modetrue}%
+ \ifx\^^M##2%
+ \lst at CArg ##2\relax\lst at ActiveCDefX
+ {}%
+ {\lst at escapeend ##4\lst at LeaveAllModes\lst at ReenterModes}%
+ {\lst at MProcessListing}%
+ \else
+ \lst at CArg ##2\relax\lst at ActiveCDefX
+ {}%
+ {\lst at escapeend ##4\lst at LeaveAllModes\lst at ReenterModes
+ \lst at newlines\z@ \lst at whitespacefalse}%
+ {}%
+ \fi
+ ##3\lst at escapebegin
+ \fi}%
+ {}}%
+}
+%
+% 2) Deactivate \outer definition of ^^L temporarily (inside and outside
+% of \lst at ScanChars) and restore \catcode at end of package.
+\begingroup \catcode12=\active\let^^L\@empty
+\gdef\lst at ScanChars{%
+ \let\lsts at ssL^^L%
+ \def^^L{\par}%
+ \lst at GetChars\lst at RestoreOrigCatcodes\@ne {128}%
+ \let^^L\lsts at ssL
+ \lst at GetChars\lst at RestoreOrigExtendedCatcodes{128}{256}}
+\endgroup
+\lst at lAddTo\lst at RestoreCatcodes{\catcode12\active}
+%
+% a) Let's start with the options:
+\lst at Key{rangeprefix}\relax{\def\lst at rangebeginprefix{#1}%
+ \def\lst at rangeendprefix{#1}}
+\lst at Key{rangesuffix}\relax{\def\lst at rangebeginsuffix{#1}%
+ \def\lst at rangeendsuffix{#1}}
+\lst at Key{rangebeginprefix}{}{\def\lst at rangebeginprefix{#1}}
+\lst at Key{rangebeginsuffix}{}{\def\lst at rangebeginsuffix{#1}}
+\lst at Key{rangeendprefix}{}{\def\lst at rangeendprefix{#1}}
+\lst at Key{rangeendsuffix}{}{\def\lst at rangeendsuffix{#1}}
+\lst at Key{includerangemarker}{true}[t]{\lstKV at SetIf{#1}\lst at ifincluderangemarker}
+%
+% The key is a redefinition of \lst at GLI@ checking for numbers.
+\def\lst at GLI@#1-#2-#3\@nil{%
+ \lst at IfNumber{#1}%
+ {\ifx\@empty#1\@empty
+ \let\lst at firstline\@ne
+ \else
+ \def\lst at firstline{#1\relax}%
+ \fi
+ \ifx\@empty#3\@empty
+ \def\lst at lastline{9999999\relax}%
+ \else
+ \ifx\@empty#2\@empty
+ \let\lst at lastline\lst at firstline
+ \else
+ \def\lst at lastline{#2\relax}%
+ \fi
+ \fi}%
+%
+% If we've found a general marker, we set firstline and lastline to 9999999.
+% This prevents (almost) anything to be printed for now.
+ {\def\lst at firstline{9999999\relax}%
+ \let\lst at lastline\lst at firstline
+%
+% We add the prefixes and suffixes to the markers.
+ \let\lst at rangebegin\lst at rangebeginprefix
+ \lst at AddTo\lst at rangebegin{#1}\lst at Extend\lst at rangebegin\lst at rangebeginsuffix
+ \ifx\@empty#3\@empty
+ \let\lst at rangeend\lst at rangeendprefix
+ \lst at AddTo\lst at rangeend{#1}\lst at Extend\lst at rangeend\lst at rangeendsuffix
+ \else
+ \ifx\@empty#2\@empty
+ \let\lst at rangeend\@empty
+ \else
+ \let\lst at rangeend\lst at rangeendprefix
+ \lst at AddTo\lst at rangeend{#2}\lst at Extend\lst at rangeend\lst at rangeendsuffix
+ \fi
+ \fi
+% The following definition will be executed in the SelectCharTable hook
+% and here right now if we are already processing a listing.
+ \global\def\lst at DefRange{\expandafter\lst at CArgX\lst at rangebegin\relax\lst at DefRangeB}%
+ \ifnum\lst at mode=\lst at Pmode \expandafter\lst at DefRange \fi}}
+% \lst at DefRange is not inserted via a hook anymore. Instead it is now called
+% directly from \lst at SelectCharTable. This was necessary to get rid of an
+% interference with the escape-to-LaTeX-feature. The bug was reported by
+% \lsthelper{Michael~Bachmann}{2004/07/21}{Keine label-Referenzierung
+% m\"oglich...}. Another chance is due to the same bug: \lst at DefRange is
+% redefined globally when the begin of code is found, see below. The bug was
+% reported by \lsthelper{Tobias~Rapp}{2004/04/06}{undetected end of range if
+% listing crosses page break} \lsthelper{Markus~Luisser}{2004/08/13}{Bug mit
+% 'linerangemarker' in umgebrochenen listings}
+%\lst at AddToHook{SelectCharTable}{\lst at DefRange}
+\lst at AddToHookExe{DeInit}{\global\let\lst at DefRange\@empty}
+%
+% Actually defining the marker (via \lst at GLI@, \lst at DefRange, \lst at CArgX as
+% seen above) is similar to \lst at DefDelimB---except that we unfold the first
+% parameter and use different <execute>, <pre>, and <post> statements.
+\def\lst at DefRangeB#1#2{\lst at DefRangeB@#1#2}
+\def\lst at DefRangeB@#1#2#3#4{%
+ \lst at CDef{#1{#2}{#3}}#4{}%
+ {\lst at ifincluderangemarker
+ \lst at LeaveMode
+ \let#1#4%
+ \lst at DefRangeEnd
+ \lst at InitLstNumber
+ \else
+ \@tempcnta\lst at lineno \advance\@tempcnta\@ne
+ \edef\lst at firstline{\the\@tempcnta\relax}%
+ \gdef\lst at OnceAtEOL{\let#1#4\lst at DefRangeEnd}%
+ \lst at InitLstNumber
+ \fi
+ \global\let\lst at DefRange\lst at DefRangeEnd
+ \lst at CArgEmpty}%
+ \@empty}
+%
+% Modify labels and define |\lst at InitLstNumber| used above.
+% \lsthelper{Omair-Inam~Abdul-Matin}{2004/05/10}{experimental linerange
+% feature does not work with firstnumber}
+\def\lstpatch at labels{%
+\gdef\lst at SetFirstNumber{%
+ \ifx\lst at firstnumber\@undefined
+ \@tempcnta 0\csname\@lst no@\lst at intname\endcsname\relax
+ \ifnum\@tempcnta=\z@ \else
+ \lst at nololtrue
+ \advance\@tempcnta\lst at advancenumber
+ \edef\lst at firstnumber{\the\@tempcnta\relax}%
+ \fi
+ \fi}%
+}
+\lst at AddToAtTop\lsthk at PreInit
+ {\ifx\lst at firstnumber\@undefined
+ \def\lst at firstnumber{\lst at lineno}%
+ \fi}
+\def\lst at InitLstNumber{%
+ \global\c at lstnumber\lst at firstnumber
+ \global\advance\c at lstnumber\lst at advancenumber
+ \global\advance\c at lstnumber-\lst at advancelstnum
+ \ifx \lst at firstnumber\c at lstnumber
+ \global\advance\c at lstnumber-\lst at advancelstnum
+ \fi}
+%
+% The end-marker is defined if and only if it's not empty. The definition is
+% similar to \lst at DefDelimE---with the above exceptions and except that we
+% define the re-entry point \lst at DefRangeE@@ as it is defined in the new
+% version of \lst at MProcessListing above.
+\def\lst at DefRangeEnd{%
+ \ifx\lst at rangeend\@empty\else
+ \expandafter\lst at CArgX\lst at rangeend\relax\lst at DefRangeE
+ \fi}
+\def\lst at DefRangeE#1#2{\lst at DefRangeE@#1#2}
+\def\lst at DefRangeE@#1#2#3#4{%
+ \lst at CDef{#1#2{#3}}#4{}%
+ {\let#1#4%
+ \edef\lst at lastline{\the\lst at lineno\relax}%
+ \lst at DefRangeE@@}%
+ \@empty}
+\def\lst at DefRangeE@@#1\@empty{%
+ \lst at ifincluderangemarker
+ #1\lst at XPrintToken
+ \fi
+ \lst at LeaveModeToPmode
+ \lst at BeginDropInput{\lst at Pmode}}
+%
+\def\lst at LeaveModeToPmode{%
+ \ifnum\lst at mode=\lst at Pmode
+ \expandafter\lsthk at EndGroup
+ \else
+ \expandafter\egroup\expandafter\lst at LeaveModeToPmode
+ \fi}
+%
+% Eventually we shouldn't forget to install \lst at OnceAtEOL, which must
+% also be called in \lst at MSkipToFirst.
+\lst at AddToHook{EOL}{\lst at OnceAtEOL\global\let\lst at OnceAtEOL\@empty}
+\gdef\lst at OnceAtEOL{}% Init
+\def\lst at MSkipToFirst{%
+ \global\advance\lst at lineno\@ne
+ \ifnum \lst at lineno=\lst at firstline
+ \def\lst at next{\lst at LeaveMode \global\lst at newlines\z@
+ \lst at OnceAtEOL \global\let\lst at OnceAtEOL\@empty
+ \lst at InitLstNumber % Added to work with modified \lsthk at PreInit.
+ \lsthk at InitVarsBOL
+ \lst at BOLGobble}%
+ \expandafter\lst at next
+ \fi}
+\def\lst at SkipToFirst{%
+ \ifnum \lst at lineno<\lst at firstline
+ \def\lst at next{\lst at BeginDropInput\lst at Pmode
+ \lst at Let{13}\lst at MSkipToFirst
+ \lst at Let{10}\lst at MSkipToFirst}%
+ \expandafter\lst at next
+ \else
+ \expandafter\lst at BOLGobble
+ \fi}
+%
+% Finally the service macro \lst at IfNumber:
+\def\lst at IfNumber#1{%
+ \ifx\@empty#1\@empty
+ \let\lst at next\@firstoftwo
+ \else
+ \lst at IfNumber@#1\@nil
+ \fi
+ \lst at next}
+\def\lst at IfNumber@#1#2\@nil{%
+ \let\lst at next\@secondoftwo
+ \ifnum`#1>47\relax \ifnum`#1>57\relax\else
+ \let\lst at next\@firstoftwo
+ \fi\fi}
+%
+% b) The following is known to fail with some keys.
+\lst at Key{multicols}{}{\@tempcnta=0#1\relax\def\lst at multicols{#1}}
+\def\lst at Init#1{%
+ \begingroup
+ \ifx\lst at float\relax\else
+ \edef\@tempa{\noexpand\lst at beginfloat{lstlisting}[\lst at float]}%
+ \expandafter\@tempa
+ \fi
+% chmod begin
+ \ifx\lst at multicols\@empty\else
+ \edef\lst at next{\noexpand\multicols{\lst at multicols}}
+ \expandafter\lst at next
+ \fi
+% chmod end
+ \ifhmode\ifinner \lst at boxtrue \fi\fi
+ \lst at ifbox
+ \lsthk at BoxUnsafe
+ \hbox to\z@\bgroup
+ $\if t\lst at boxpos \vtop
+ \else \if b\lst at boxpos \vbox
+ \else \vcenter \fi\fi
+ \bgroup \par\noindent
+ \else
+ \lst at ifdisplaystyle
+ \lst at EveryDisplay
+ \par\penalty-50\relax
+ \vspace\lst at aboveskip
+ \fi
+ \fi
+ \normalbaselines
+ \abovecaptionskip\lst at abovecaption\relax
+ \belowcaptionskip\lst at belowcaption\relax
+ \lst at MakeCaption t%
+ \lsthk at PreInit \lsthk at Init
+ \lst at ifdisplaystyle
+ \global\let\lst at ltxlabel\@empty
+ \if at inlabel
+ \lst at ifresetmargins
+ \leavevmode
+ \else
+ \xdef\lst at ltxlabel{\the\everypar}%
+ \lst at AddTo\lst at ltxlabel{%
+ \global\let\lst at ltxlabel\@empty
+ \everypar{\lsthk at EveryLine\lsthk at EveryPar}}%
+ \fi
+ \fi
+ \everypar\expandafter{\lst at ltxlabel
+ \lsthk at EveryLine\lsthk at EveryPar}%
+ \else
+ \everypar{}\let\lst at NewLine\@empty
+ \fi
+ \lsthk at InitVars \lsthk at InitVarsBOL
+ \lst at Let{13}\lst at MProcessListing
+ \let\lst at Backslash#1%
+ \lst at EnterMode{\lst at Pmode}{\lst at SelectCharTable}%
+ \lst at InitFinalize}
+\def\lst at DeInit{%
+ \lst at XPrintToken \lst at EOLUpdate
+ \global\advance\lst at newlines\m at ne
+ \lst at ifshowlines
+ \lst at DoNewLines
+ \else
+ \setbox\@tempboxa\vbox{\lst at DoNewLines}%
+ \fi
+ \lst at ifdisplaystyle \par\removelastskip \fi
+ \lsthk at ExitVars\everypar{}\lsthk at DeInit\normalbaselines\normalcolor
+ \lst at MakeCaption b%
+ \lst at ifbox
+ \egroup $\hss \egroup
+ \vrule\@width\lst at maxwidth\@height\z@\@depth\z@
+ \else
+ \lst at ifdisplaystyle
+ \par\penalty-50\vspace\lst at belowskip
+ \fi
+ \fi
+% chmod begin
+ \ifx\lst at multicols\@empty\else
+ \def\lst at next{\global\let\@checkend\@gobble
+ \endmulticols
+ \global\let\@checkend\lst@@checkend}
+ \expandafter\lst at next
+ \fi
+% chmod end
+ \ifx\lst at float\relax\else
+ \expandafter\lst at endfloat
+ \fi
+ \endgroup}
+\let\lst@@checkend\@checkend
+%%
+\endinput
+%%
+%% End of file `lstpatch.sty'.
File [added]: properties.tex
Delta lines: +105 -0
===================================================================
--- papers/CPC/saga_engine_2006/properties.tex 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/properties.tex 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,105 @@
+% $Header: /projects/VU-SAGA/Papers/saga_engine_2006/properties.tex,v 1.14 2006/10/11 02:57:17 gallen Exp $
+
+This section
+summarizes the properties of our SAGA implementation from an
+end user perspective, gives an overview about the lessons learnt, and
+motivates further developments and extensions.
+
+
+\subsection{Uniformity over Programming Languages}
+\label{ssec:lang}
+
+ The SAGA API specification is language independent.
+ One of the consequences of this is that it does not use templates, which were thought too
+ difficult to express uniformly over many languages. Also, the
+ specification tries to be concise about object state management, and
+ hence also expresses semantics for shallow and deep copies.
+ Our implementation follows the SAGA API specification closely. It is also
+ designed to accommodate wrappers in other languages.
+ A Python wrapper for our library is in
+ alpha status, and we plan to add wrappers to provide
+ bindings to C, FORTRAN, Perl, and possibly others. In the past we found it
+ very useful to be able to write Python adaptors for the
+ GAT~\cite{gat}, a predecessor of SAGA,
+ and we will provide similar support here as well.
+
+\subsection{Genericity in Respect to Middleware, and
+ Adaptability to Dynamic Environments}
+
+ The dynamic nature of grid middleware
+ is addressed in our implementation
+ by the described adaptor mechanism which binds to diverse middleware.
+ Late binding, fall back mechanisms, and
+ flexible adaptor selection allow for additional resilience against
+ an dynamic and evolving run time environment.
+ Adaptors need to deploy mechanisms like resource
+ discovery, and need to implement fully asynchronous operations, if
+ the complete software stack is to be able to cope with dynamic grids.
+
+
+\subsection{Modularity ensures Extensibility}
+
+ Section~\ref{ssec:macros} described how the SAGA
+ implementation will be able to cope with the expected evolution and
+ extension of the SAGA API. The adaptor mechanism
+ allows for easy extensions of the library, providing additional
+ middleware bindings.
+ The task of adaptor writing
+ requires massively more effort than the implementation of the
+ presented library.
+ Ideally, middleware vendors will
+ \I{implement} adaptors for SAGA, and deliver them
+ as part of their client side software stack.
+ This would be a major step towards wide spread grid applications.
+
+
+\subsection{Portability and Scalability}
+
+ Heterogeneous distributed systems naturally require por\-table code
+ bases. Our library implementation is very
+ portable, as we strictly adhere to the C++ standard and portable
+ libraries. We currently develop the library on Windows, Linux and MacOS
+ concurrently, covering three
+ major target platforms without any problems.
+ However, the portability of our SAGA implementation
+ depends on the portability of the adaptors, and hence on the portability
+ of the grid middleware client interfaces, being the much greater problem
+ if compared to the library code itself.
+
+ Distributed applications are often sensitive to sca\-lability
+ issues, in particular in respect to remote communications. This equally
+ applies to SAGA, so that scalability concerns
+ are naturally raised in respect to SAGA implementations as well.
+ Even if the SAGA API is not targeting
+ high performance communication schemes, but tries to stick to
+ simple communication paradigms,
+ our design allows for zero-copy implementations of the
+ SAGA communication APIs, and for fast asynchronous
+ notification on events -- both are deemed critical for implementing
+ scalable distributed applications.
+
+\subsection{Simplicity for the End User}
+
+ SAGA is \I{designed} to be simple. However, simplicity
+ of an API is not only determined by its API specification, but also
+ by its implementation: simple deployment and configuration,
+ resilience against lower level failures, adaptability to diverse
+ environments, stability, correctness, and peaceful coexistence with
+ other programming paradigms, tools and libraries are some of the
+ characteristics which need attention while implementing the SAGA API.
+
+ A modular implementation helps to keep a library implementation itself
+ simple.
+ Features as the generic call routing, or the adaptor selection are hidden
+ in the engine module.
+ Modeling these central properties
+ as modules increases the readability and maintainability of the code
+ significantly.
+
+ Due to its notion of tasks the SAGA API implicitly introduces a concurrent
+ programming model.
+ Our C++ language binding of the API, allows to combine
+ that model with arbitrary mechanisms for managing concurrent program
+ elements (thread safety, object state consistency, etc.).
+
+
File [added]: requirements.tex
Delta lines: +35 -0
===================================================================
--- papers/CPC/saga_engine_2006/requirements.tex 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/requirements.tex 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,35 @@
+% $Header: /projects/VU-SAGA/Papers/saga_engine_2006/requirements.tex,v 1.15 2006/10/11 01:30:32 hkaiser Exp $
+
+ As mentioned in the introduction, the SAGA C++ reference
+ implementation must cope with a number of very dynamic requirements.
+ Additionally, it must provide the ``simple'' and
+ ``easy-to-use'' API the SAGA standard is intended to specify.
+ We describe the resulting requirements in some detail
+ motivating our SAGA implementation design described in
+ section~\ref{sec:generaldesign}.
+
+We identified several main characteristics the SAGA C++ reference
+implementation must provide, if any of these properties is missing,
+acceptance in the targeted user community will be severely limited:
+
+\begin{shortlist}
+ \item It must cope with evolving grid standards
+ and changing grid environments.
+ \item It must be able to cope with future SAGA
+ extensions, without breaking backward compatibility.
+ \item It must shield application programmers
+ from the evolving middleware, and X
+ should allow various incarnations of grid middleware to co-exist.
+ \item It must actively support fail safety mechanisms, and hide
+ the dynamic nature of resource availability.
+ \item It must be portable and, both
+ syntactically and semantically, platform independent.
+ \item It must allow
+ these and other latency hiding techniques to be implemented.
+ \item It must meet other end user
+ requirements outside of the actual API scope,
+ such as ease of deployment, ease of configuration,
+ documentation, and support of multiple language bindings.
+\end{shortlist}
+
+
File [added]: reviews.txt
Delta lines: +124 -0
===================================================================
--- papers/CPC/saga_engine_2006/reviews.txt 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/reviews.txt 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,124 @@
+Dear Hartmut Kaiser,
+
+Thank you for your submission to LCSD'06.
+We are pleased to inform you that your extended abstract
+
+"The SAGA C++ Reference Implementation"
+
+has been accepted as a short/position paper to be presented at the workshop, and to be included in the workshop proceedings. Papers went through a rigorous reviewing process. Each paper was reviewed by at least three program committee members. Submissions to the workshop were of very high quality and interest. Of 20 papers, 9 were accepted as full papers,
+4 as short papers.
+
+Please consider carefully the enclosed comments by the reviewers when preparing the final version of your paper.
+It is incumbent upon you to do so.
+
+To submit your paper, revisit the LCSD 2006 submission site at https://www.osl.iu.edu/conferences/lcsd06, go to step 2, and use the following login name and password to enter your files:
+
+Login: _LOGIN_NAME_
+Password: _PASSWORD_
+
+Please remember that the dead-line for submitting the final versions of your paper is October 10th.
+
+Short/position papers are limited to a total of 6 pages. You will have a time slot of approximately 15 minutes for presentation at the workshop. Please let us know as soon as possible if you will not be able to attend.
+
+Congratulations on having your paper accepted. We look forward to seeing you in Portland,
+
+Sincerely,
+Jaakko Jarvi and Josh Bloch,
+On behalf of the LCSD'06 Program Committee
+
+*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=
+
+First reviewer's review:
+
+ >>> Summary of the paper <<<
+
+This paper presents the design of a C++ library which mediates between grid applications (in various languages), and complex and evolving grid middleware. The paper documents the design principles of the library, and ends with an analysis of some of the benefits which arise from the design approach.
+
+The library has some interesting features:
+
+ * Support for synchronous, asynchronous and batched ("bulk") invocation
+
+ * A generic "adaptor" mechanism, that searches a database of applicable methods to find one that succeeds in a given context.
+
+ * Consistent use of an opaque interface whose handles can then be exported to allow use of the library from other languages.
+
+The paper presents no experimental work, nor practical evaluation of the claims.
+
+
+
+ >>> Comments <<<
+
+The title is weak - it would be good to identify the message for this audience, and highlight this is the title.
+
+Similarly, the abstract is not an abstract. An abstract should succinctly characterise teh subject area, and briefly summarise the *conclusions* of the *paper*.
+
+re: "we think there are lessons to learn for other API implementation" This is actually true, and it would be really good to bring this out in the later sections of the paper. But it *really* doesn't belong in the abstract. If you could make good on this promise I would really like this paper.
+
+Apostrophes: libraries -> library's templates's -> templates engines -> engine's
+
+The term "look and feel" doesn't seem to me to be very useful; I wonder if there is a better term?
+
+
+
+ >>> Points in favour or against <<<
+
+Strengths:
+
+ * Interesting readable report on experience potentially valuable to others.
+
+Weaknesses:
+
+* The analysis and evaluation does not identify limitations, problems or shortcomings (except commenting that performance issues are unimportant in this distributed context). Perhaps the entire exercise has been totally successful - but but for this workshop, a critical evaluation that explores the limits of the techniques would add to the work's value.
+
+* There are lessons here for other API implementations, but the paper does not succeed, in my view, in telling us what they are.
+
+
+
+ =*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=
+
+Second reviewer's review:
+
+ >>> Summary of the paper <<<
+
+This paper describes the design and C++ implementation of SAGA, which is Grid computing middleware.
+
+
+
+ >>> Points in favour or against <<<
+
+Pros
+
+. Paper is well written. In particular, the use of italicized requirements in Section 2 was nicely done.
+
+. It's nice to see someone in the Grid community finally trying to design well-structured APIs since most of the APIs in Grid middleware like PVM and MPI are pretty horrible.
+
+. The discussion of using boost and STL to implement SAGA was very interesting.
+
+Cons
+
+. There isn't much in SAGA that appears to be new relative to the vast amount of work on distributed computing middleware over the past several decades. In particular, the authors need to compare the capabilities of SAGA with other advanced middleware technologies, such as CORBA, DDS, etc.
+
+. Ultimately, the acceptance of a new technology for the Grid community seems to be (1) how well it performs and (2) how easy it is for scientists (rather than software engineers) to use. These important issues were not addresssed in this paper.
+
+
+
+ =*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=
+
+Third reviewer's review:
+
+ >>> Summary of the paper <<<
+
+The paper describes the implementation of a binding for C++ to SAGA (Grid computing).
+
+
+
+ >>> Comments <<<
+
+I would like to see a few more implementation details. In particular, I think you need to show one of the macros and explain (1) what purpose it servers over straight C++ code (e.g. "defines two entities tham must be
+consistent") and (2) explain why you eed to use facilities beyond the standard (#pragmas are by definition beyond the scope of the standard).
+
+Please briefly describe alternative design or implementations that you seriously considered to illustrate your actual choices.
+
+
+
+ =*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=--=*=
Property changes on: papers/CPC/saga_engine_2006/reviews.txt
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
File [added]: saga_engine.bib
Delta lines: +227 -0
===================================================================
--- papers/CPC/saga_engine_2006/saga_engine.bib 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/saga_engine.bib 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,227 @@
+% $Header: /projects/VU-SAGA/Papers/saga_engine_2006/saga_engine.bib,v 1.8 2006/10/11 01:30:32 hkaiser Exp $
+
+ at article{cog,
+ author = "G. v. Laszewski and I. Foster and J. Gawor
+ and P. Lane",
+ title = "A {Java} commodity grid kit",
+ journal = "Concurrency and Computation: Practice and Experience",
+ volume = "13",
+ number = "8--9",
+ pages = "645--662",
+ year = "2001",
+ url = "citeseer.ist.psu.edu/article/vonlaszewski01java.html",
+}
+
+ at techreport{saga_uc,
+ author = {Andre Merzky and Shantenu Jha},
+ title = {{Simple API for Grid Applications -- Use Case Document}},
+ institution = {Open Grid Forum},
+ year = 2006,
+ month = {March},
+ note = {{GFD.70}},
+}
+
+ at techreport{saga_req,
+ author = {Andre Merzky and Shantenu Jha},
+ title = {{A Requirements Analysis for a Simple API for Grid
+ Applications}},
+ institution = {Open Grid Forum},
+ year = 2006,
+ month = {May},
+ note = {{GFD.71}},
+}
+
+ at article{gridrpc,
+ title = {{Overview of GridRPC: A Remote Procedure Call API for Grid Computing}},
+ author = {Seymour, K. and Nakada, H. and Matsuoka, S. and Dongarra, J. and
+ Lee, C. and Casanova, H.},
+ journal = {3rd International Workshop on Grid Computing, November},
+ year = {2002},
+ publisher = {Springer}
+}
+ at techreport{drmaa,
+ title = {{Distributed Resource Management Application API Specification}},
+ author = {Rajic, H. and Inc, I.A. and Chan, W. and Ferstl, I.B.M.F. and Haas, A.
+ and Tollefsrud, J.},
+ institution = {Open Grid Forum},
+ month = {September},
+ year = {2002},
+ note = {{GFD.22}},
+}
+
+
+ at misc{ogf_website,
+ author = {},
+ title = {{Open Grid Forum (OGF)}},
+ note = {{\url{http://www.ogf.org/}}},
+}
+
+ at misc{gridlab_webpage,
+ author = {},
+ title = {{Gridlab: A Grid Application Toolkit and Tsetbed}},
+ note = {{\url{http://www.gridlab.org/}}},
+}
+
+ at inproceedings{glite,
+ author = {R\&\#252;diger Berlich and Marcel Kunze and Kilian Schwarz},
+ title = {{Grid computing in Europe: from research to deployment}},
+ booktitle = {{CRPIT '44: Proceedings of the 2005 Australasian workshop on
+ Grid computing and e-research}},
+ year = {2005},
+ isbn = {1-920-68226-0},
+ pages = {21--27},
+ location = {Newcastle, New South Wales, Australia},
+ publisher = {Australian Computer Society, Inc.},
+ address = {Darlinghurst, Australia},
+}
+
+
+ at article{future,
+ title = {{Asynchronous remote operation execution in distributed systems}},
+ author = {Walker, EF and Floyd, R. and Neves, P.},
+ journal = {Distributed Computing Systems, 1990. Proceedings.,
+ 10th International Conference on},
+ pages = {253-259}
+}
+
+
+ at article{gat,
+ author = {G. Allen and K. Davis and T. Goodale and
+ A. Hutanu and H. Kaiser and T. Kielmann
+ and A. Merzky and R. Nieuwpoort and A.
+ Reinefeld and F. Schintke and T. Sch{\"u}tt
+ and E. Seidel and B. Ullmer},
+ title = {{The Grid Application Toolkit: Towards Generic and Easy
+ Application Programming Interfaces for the Grid.}},
+ journal = {Proceedings of the IEEE},
+ year = {2004},
+}
+
+
+ at techreport{saga_spec,
+ title = {{Simple API for Grid Applications -- API Version 1.0}},
+ author = {{SAGA Core Working Group}},
+ note = {{\url{http://forge.ggf.org/sf/projects/saga-core-wg}}},
+ institution = {{OGF}},
+ year = 2006
+}
+
+
+ at misc{boost_website,
+ author = {},
+ title = {{Boost C++ libraries}},
+ note = {{\url{http://www.boost.org/}}},
+}
+
+ at misc{wave_website,
+ author = {Hartmut Kaiser},
+ title = {{Boost.Wave: A Standard Compliant C++ Preprocessor Library}},
+ note = {{\url{http://www.boost.org/libs/wave/index.html}}},
+}
+
+ at misc{globus,
+ author = {},
+ title = {{The Globus Alliance}},
+ note = {{\url{http://www.globus.org/}}},
+}
+
+ at misc{sidl,
+ author = {{SIDL}},
+ title = {{Scientific Interface Definition Language}},
+ note = {{\url{http://www.llnl.gov/CASC/components/babel.html}}},
+}
+
+ at article{CS_Foster01a,
+ key = {CS_Foster01a},
+ author = {I. Foster and C. Kesselman and S. Tuecke},
+ title = {{The Anatomy of the Grid: Enabling Scalable Virtual Organizations}},
+ journal = {{Intl J. Supercomputer Applications}},
+ volume = {15},
+ number = {3},
+ year = 2001,
+ note = {{\url{http://www.globus.org/research/papers/anatomy.pdf}}}
+}
+
+ at article{CS_Foster02a,
+ author = {Ian Foster},
+ title = {{The Grid: A New Infrastructure for 21st Century Science}},
+ journal = {{Physics Today}},
+ volume = {Febrary},
+ year = 2002,
+ pages = {},
+ eprint = {{\url{http://www.physicstoday.org/vol-55/iss-2/p42.html}}}
+}
+
+ at article{pimpl,
+ author = {H. Sutter},
+ title = {{Pimples--Beauty Marks You Can Depend On}},
+ year = 1998,
+ volume = {10},
+ number = {5},
+ journal = {{C++ Report}},
+ publisher = {{Cambridge University Press}},
+ note = {{\url{http://www.gotw.ca/publications/mill04.htm}}},
+}
+
+ at article{saga-paper,
+ author = {T. Goodale and S. Jha and H. Kaiser and
+ T. Kielmann and P. Kleijer and G. v. Laszewski and
+ C. Lee and A. Merzky and H. Rajic and J. Shalf},
+ title = {{SAGA: A Simple API for Grid Applications
+ -- High-Level Application Programming on the Grid}},
+ journal = {{Computational Methods in Science and Technology: special
+ issue "Grid Applications: New Challenges for Computational
+ Methods"}},
+ volume = {8},
+ number = {2},
+ year = {2005},
+ month = {SC05, November},
+}
+
+ at article{futures,
+ author = {R. H. Halstead Jr.},
+ title = {{Multilisp: A language for concurrent symbolic computation}},
+ journal = {{Transactions on Programming Languages and Systems}},
+ volume = {7},
+ number = {4},
+ year = {1985},
+ month = {October},
+ pages = {501-538},
+}
+
+ at techreport{ogsa_roadmap,
+ author = {{OGSA Working Group}},
+ editors = {{H. Kishimoto and J. Treadwell}},
+ title = {{Defining the Grid: A Roadmap for OGSA Standards}},
+ institution = {Open Grid Forum},
+ year = 2005,
+ month = {September},
+ note = {{GFD.53}},
+}
+
+ at inproceedings{CS_Hirmer_06a,
+ author = {S.~Hirmer and H.~Kaiser and A.~Merzky and A.~Hutanu and G.~Allen},
+ title = {{Seamless Integration of Generic Bulk Operations in Grid Applications}},
+ booktitle = {{Submitted to International Workshop on Grid Computing and its Application to Data Analysis (GADA'06)}},
+ publisher = {Springer Verlag},
+ Address = {Agia Napa, Cyprus},
+ year = {2006}
+}
+
+ at inproceedings{CS_Allen06a,
+ author = {{Gabrielle Allen and Philip Bogden and Gerald Creager and Chirag Dekate
+ and Carola Jesch and Hartmut Kaiser and Jon MacLaren and Will Perriea
+ and Gregory Stone and Xiongping Zhang}},
+ title = {{GIS and Integrated Coastal Ocean Forecasting}},
+ booktitle = {{Submitted to Concurrency and Computation: Practice and Experience}},
+ year = {2006},
+}
+ at inproceedings{CS_Huang06a,
+ author = {{D. Huang and G. Allen and C. Dekate and H. Kaiser
+ and Z. Lei and J. MacLaren}},
+ title = {{getdata: A Grid Enabled Data Client for Coastal Modeling}},
+ booktitle = {{High Performance Computing Symposium (HPC 2006)}},
+ month = {{April 3--6}},
+ year = {2006},
+ location = {{Huntsville, AL}},
+}
File [added]: saga_engine.pdf
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/saga_engine.pdf
___________________________________________________________________
Name: svn:mime-type
+ application/pdf
File [added]: saga_engine.tex
Delta lines: +164 -0
===================================================================
--- papers/CPC/saga_engine_2006/saga_engine.tex 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/saga_engine.tex 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,164 @@
+% $Header: /projects/VU-SAGA/Papers/saga_engine_2006/saga_engine.tex,v 1.28 2006/10/11 02:55:39 gallen Exp $
+
+\documentclass{acm_proc_article-sp}
+
+\usepackage{ifpdf}
+\usepackage{srcltx}
+\usepackage{fancyvrb}
+
+\ifpdf
+ \usepackage{graphicx}
+ \usepackage[pdftex]{hyperref}
+ \DeclareGraphicsExtensions{.pdf, .png, .jpg, .JPG}
+\else
+ \usepackage{graphicx}
+ \usepackage[hypertex]{hyperref}
+ \DeclareGraphicsExtensions{.ps, .eps}
+\fi
+
+\newcommand{\I}{\textit}
+\newcommand{\B}{\textbf}
+\newcommand{\T}{\texttt}
+
+\newcommand{\IB}[1]{\textbf{\textit{#1}}}
+
+\newcommand{\NT}[1]{\normalsize\T{#1}}
+
+\newcommand{\F}[1]{\B{FIXME: #1}}
+
+\newcommand{\up}{\vspace*{-1em}}
+\newcommand{\down}{\vspace*{1em}}
+
+\newenvironment{shortlist}{
+ \vspace*{-0.85em}
+ \begin{itemize}
+ \setlength{\itemsep}{-0.3em}
+}{
+ \end{itemize}
+ \vspace*{-0.6em}
+}
+
+\setlength{\floatsep}{1em}
+\setlength{\textfloatsep}{1em}
+\setlength{\intextsep}{1.3em}
+
+\DefineShortVerb{\|}
+\DefineVerbatimEnvironment{mycode}{Verbatim}
+{
+ label=Code Example,
+ fontsize=\small,
+ frame=single,
+% framerule=1pt,
+ framesep=1em,
+% numbers=left,
+ gobble=2
+}
+
+
+\pagestyle{plain}
+
+% -------------------------------------------------------------------
+
+\begin{document}
+
+\title{The SAGA C++ Reference Implementation}
+\subtitle{Lessons Learnt from Juggling with Seemingly Contradictory Goals}
+
+\numberofauthors{1}
+\author{
+ \alignauthor ~ \hfill Hartmut Kaiser \hfill Andre Merzky \hfill Stephan Hirmer \hfill Gabrielle Allen \hfill ~ \\
+ \affaddr{ ~ \hfill Louisiana State University \hfill ~~~~Vrije Universiteit \hfill ~~Louisiana State University \hfill Louisiana State University \hfill ~}\\
+ \affaddr{ ~ \hfill Baton Rouge \hfill Amsterdam \hfill Baton Rouge \hfill Baton Rouge \hfill ~}\\
+ \affaddr{ ~ \hfill Louisiana, USA \hfill ~~Netherlands \hfill Louisiana, USA \hfill Louisiana, USA \hfill ~}
+ \email{ ~ \hfill \NT{hkaiser at cct.lsu.edu \hfill andre at merzky.net \hfill shirmer at cct.lsu.edu \hfill gallen at cct.lsu.edu \hfill ~}}
+}
+
+\date{}
+
+\maketitle
+
+\begin{abstract}
+
+ The Simple API for Grid Applications (SAGA) is an API
+ standardization effort within the Open Grid Forum (OGF). OGF
+ strives to standardize grid middleware and grid architectures.
+ Many OGF specifications are still in flux, and multiple,
+ incompatible grid middleware systems are used in research or
+ production environments. SAGA provides a simple API to programmers
+ of scientific applications, with high level grid computing
+ paradigms which shield from the diversity and dynamic nature of grid
+ environments.
+
+ The SAGA specification scope will be extended in the coming years, in
+ sync with maturing service specifications. SAGA is defined in SIDL
+ (Scientific IDL). A C++ language binding is under development,
+ language bindings for FORTRAN, Java, Python and C are planned.
+
+ Implementing the SAGA API specification is an interesting
+ and challenging problem itself, due to the dynamic
+ environment presented by current grids.
+ Nevertheless, the perceived need of the grid community for a high
+ level API is great enough to tackle that problem \I{now}, and not to
+ wait until the standardization landscape settles. This paper
+ describes how the C++ SAGA reference implementation tries to cope
+ with these requirements -- we believe there are lessons to learn for
+ other API implementations.
+
+\end{abstract}
+
+% -------------------------------------------------------------------
+
+ \section{Introduction}
+ \label{sec:intro}
+ \input{intro.tex}
+
+ \section{Requirements}
+ \label{sec:requirements}
+ \input{requirements.tex}
+
+ \section{General Design}
+ \label{sec:generaldesign}
+ \input{generaldesign.tex}
+
+ \section{Implementation Details}
+ \label{sec:details}
+ \input{details.tex}
+
+ \section{Implementation Properties}
+ \label{sec:props}
+ \input{properties.tex}
+
+ \section{Future Work}
+ \label{sec:futurework}
+
+ As mentioned, work on appropriate middleware adaptors will
+ undoubtedly require significant resources in the future.
+ This motivates us to work on simplifying adaptor creation,
+ integration and maintenance, and seek support and contributions from the OpenSource
+ community, and from grid middleware vendors.
+ We will develop other language bindings on API and adaptor level, and
+ apply further generic latency hiding techniques.
+
+ \section{Conclusion}
+ \label{sec:Conclusion}
+ \input{conclusion.tex}
+
+% -------------------------------------------------------------------
+
+ \section{Acknowledgments}
+ \label{sec:ack}
+
+ We thank Thorsten Sch\"utt for his work on Futures; Michel Zsandstra
+ and Vladimir Prus for their initial work on dynamic loading; the SAGA
+ groups in OGF for their work on the SAGA specification; the Center
+ for Computation \& Technology at
+ Louisiana State University, the Vrije Universiteit Amsterdam, and
+ the XtreemOS project for funding this work.
+
+% -------------------------------------------------------------------
+
+\bibliographystyle{unsrt}
+\bibliography{saga_engine}
+
+\end{document}
+
File [added]: saga_engine_talk.pdf
Delta lines: +0 -0
===================================================================
(Binary files differ)
Property changes on: papers/CPC/saga_engine_2006/saga_engine_talk.pdf
___________________________________________________________________
Name: svn:mime-type
+ application/pdf
File [added]: splncs.bst
Delta lines: +1088 -0
===================================================================
--- papers/CPC/saga_engine_2006/splncs.bst 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/splncs.bst 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,1088 @@
+% BibTeX bibliography style `splncs'
+
+% An attempt to match the bibliography style required for use with
+% numbered references in Springer Verlag's "Lecture Notes in Computer
+% Science" series. (See Springer's documentation for llncs.sty for
+% more details of the suggested reference format.) Note that this
+% file will not work for author-year style citations.
+
+% Use \documentclass{llncs} and \bibliographystyle{splncs}, and cite
+% a reference with (e.g.) \cite{smith77} to get a "[1]" in the text.
+
+% Copyright (C) 1999 Jason Noble.
+% Last updated: Friday 05 November 2004, 15:18:19 Frank Holzwarth, Springer
+%
+% Based on the BibTeX standard bibliography style `unsrt'
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence
+ after.block after.authors between.elements}
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+ #4 'after.authors :=
+ #5 'between.elements :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { " " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ {
+ output.state after.authors =
+ { ": " * write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state between.elements =
+ { ", " * write$ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {stupid.colon}
+{ after.authors 'output.state := }
+
+FUNCTION {insert.comma}
+{ output.state before.all =
+ 'skip$
+ { between.elements 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "" swap$ * "" * }
+ if$
+}
+
+FUNCTION {bold}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\textbf{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {parens}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "(" swap$ * ")" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.springer.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{vv~}{ll}{, jj}{, f{.}.}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #1 >
+ { ", " * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { "" * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " \& " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.springer.names }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.springer.names
+ editor num.names$ #1 >
+ { ", eds." * }
+ { ", ed." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ }
+ if$
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {format.date}
+{ year empty$
+ { "there's no year in " cite$ * warning$ }
+ 'year
+ if$
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "Volume" volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { " of " * series emphasize * }
+ if$
+ add.period$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "number" }
+ { "Number" }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { edition "l" change.case$ " edn." * }
+ { edition "t" change.case$ " edn." * }
+ if$
+ }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { "" pages n.dashify tie.or.space.connect }
+ { "" pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol}
+{ volume bold
+}
+
+FUNCTION {format.vol.num}
+{ volume bold
+number empty$
+{ }
+{ number "(" swap$ * * ")" * }
+if$
+}
+
+FUNCTION {pre.format.pages}
+{ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { " " * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "chapter" }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { " " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "In: " booktitle emphasize * }
+ { "In " format.editors * ": " * booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Technical Report" }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+ { "In {\em " journal * "\/}" * }
+ if$
+ }
+ { "In " key * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect
+ " of " *
+ }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+ { "" }
+ if$
+ }
+ { "" }
+ if$
+ }
+ { "" }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {and.the.note}
+{ note output
+ note empty$
+ 'skip$
+ { add.period$ }
+ if$
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ stupid.colon
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { journal emphasize "journal" output.check
+ format.vol.num output
+ format.date parens output
+ format.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ and.the.note
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ stupid.colon
+ format.btitle "title" output.check
+ new.sentence
+ crossref missing$
+ { format.edition output
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address empty$
+ 'skip$
+ { insert.comma }
+ if$
+ address output
+ format.date parens output
+ }
+ { format.book.crossref output.nonnull
+ }
+ if$
+ and.the.note
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ stupid.colon
+ format.title "title" output.check
+ howpublished address new.block.checkb
+ howpublished output
+ address empty$
+ 'skip$
+ { insert.comma }
+ if$
+ address output
+ format.date parens output
+ and.the.note
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ stupid.colon
+ crossref missing$
+ { chapter output
+ new.block
+ format.number.series output
+ new.sentence
+ "In:" output
+ format.btitle "title" output.check
+ new.sentence
+ format.edition output
+ format.bvolume output
+ publisher "publisher" output.check
+ address empty$
+ 'skip$
+ { insert.comma }
+ if$
+ address output
+ format.date parens output
+ }
+ { chapter output
+ new.block
+ format.incoll.inproc.crossref output.nonnull
+ }
+ if$
+ format.pages output
+ and.the.note
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ stupid.colon
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ new.block
+ format.edition output
+ publisher "publisher" output.check
+ address empty$
+ 'skip$
+ { insert.comma }
+ if$
+ address output
+ format.date parens output
+ format.pages output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ and.the.note
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ stupid.colon
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ address empty$
+ { organization publisher new.sentence.checkb
+ organization empty$
+ 'skip$
+ { insert.comma }
+ if$
+ organization output
+ publisher empty$
+ 'skip$
+ { insert.comma }
+ if$
+ publisher output
+ format.date parens output
+ }
+ { insert.comma
+ address output.nonnull
+ organization empty$
+ 'skip$
+ { insert.comma }
+ if$
+ organization output
+ publisher empty$
+ 'skip$
+ { insert.comma }
+ if$
+ publisher output
+ format.date parens output
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ }
+ if$
+ format.pages output
+ and.the.note
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { organization empty$
+ 'skip$
+ { organization output.nonnull
+ address output
+ }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ stupid.colon
+ format.btitle "title" output.check
+ author empty$
+ { organization empty$
+ { address new.block.checka
+ address output
+ }
+ 'skip$
+ if$
+ }
+ { organization address new.block.checkb
+ organization output
+ address empty$
+ 'skip$
+ { insert.comma }
+ if$
+ address output
+ }
+ if$
+ new.sentence
+ format.edition output
+ format.date parens output
+ and.the.note
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ stupid.colon
+ format.title "title" output.check
+ new.block
+ "Master's thesis" format.thesis.type output.nonnull
+ school empty$
+ 'skip$
+ { insert.comma }
+ if$
+ school "school" output.check
+ address empty$
+ 'skip$
+ { insert.comma }
+ if$
+ address output
+ format.date parens output
+ and.the.note
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors "author" output.check
+ stupid.colon
+ format.title "title" output.check
+ howpublished new.block.checka
+ howpublished output
+ format.date parens output
+ and.the.note
+ fin.entry
+ empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ stupid.colon
+ format.btitle "title" output.check
+ new.block
+ "PhD thesis" format.thesis.type output.nonnull
+ school empty$
+ 'skip$
+ { insert.comma }
+ if$
+ school "school" output.check
+ address empty$
+ 'skip$
+ { insert.comma }
+ if$
+ address output
+ format.date parens output
+ and.the.note
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ editor empty$
+ { organization empty$
+ { "" }
+ { organization output
+ stupid.colon }
+ if$
+ }
+ { format.editors output.nonnull
+ stupid.colon
+ }
+ if$
+ format.btitle "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ address empty$
+ { organization publisher new.sentence.checkb
+ organization empty$
+ 'skip$
+ { insert.comma }
+ if$
+ organization output
+ publisher empty$
+ 'skip$
+ { insert.comma }
+ if$
+ publisher output
+ format.date parens output
+ }
+ { insert.comma
+ address output.nonnull
+ organization empty$
+ 'skip$
+ { insert.comma }
+ if$
+ organization output
+ publisher empty$
+ 'skip$
+ { insert.comma }
+ if$
+ publisher output
+ format.date parens output
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ }
+ if$
+ and.the.note
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ stupid.colon
+ format.title "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution empty$
+ 'skip$
+ { insert.comma }
+ if$
+ institution "institution" output.check
+ address empty$
+ 'skip$
+ { insert.comma }
+ if$
+ address output
+ format.date parens output
+ and.the.note
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ stupid.colon
+ format.title "title" output.check
+ new.block
+ note "note" output.check
+ format.date parens output
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+STRINGS { longest.label }
+
+INTEGERS { number.label longest.label.width }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #1 'number.label :=
+ #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{ number.label int.to.str$ 'label :=
+ number.label #1 + 'number.label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {longest.label.pass}
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" * write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+
+
+
File [added]: sprmindx.sty
Delta lines: +4 -0
===================================================================
--- papers/CPC/saga_engine_2006/sprmindx.sty 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/sprmindx.sty 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,4 @@
+delim_0 "\\idxquad "
+delim_1 "\\idxquad "
+delim_2 "\\idxquad "
+delim_n ",\\,"
File [added]: srcltx.sty
Delta lines: +162 -0
===================================================================
--- papers/CPC/saga_engine_2006/srcltx.sty 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/srcltx.sty 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,162 @@
+%%
+%% This is file `srcltx.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% srcltx.dtx (with options: `package,latex')
+%%
+%% This package is in the public domain. It comes with no guarantees
+%% and no reserved rights. You can use or modify this package at your
+%% own risk.
+%% Originally written by: Aleksander Simonic
+%% Current maintainer: Stefan Ulrich <stefanulrich at users.sourceforge.net>
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{srcltx}[2004/10/05 v1.5 Source specials for inverse search in DVI files]
+\newif\ifSRCOK \SRCOKtrue
+\newif\ifsrc at debug@
+\newif\ifsrc at dviwin@
+\newif\ifsrc at winedt@\src at winedt@true
+\newif\ifsrc at everypar@\src at everypar@true
+\newif\ifsrc at everymath@\src at everymath@true
+\RequirePackage{ifthen}
+\DeclareOption{active}{\SRCOKtrue}
+\DeclareOption{inactive}{\SRCOKfalse}
+\DeclareOption{nowinedt}{\src at winedt@false}
+\DeclareOption{debug}{\src at debug@true}
+\DeclareOption{nopar}{\global\src at everypar@false}
+\DeclareOption{nomath}{\global\src at everymath@false}
+\newcommand*\src at maybe@space{}
+\let\src at maybe@space\space
+\DeclareOption{dviwin}{\let\src at maybe@space\relax}
+\ExecuteOptions{active}
+\ProcessOptions
+\newcount\src at lastline
+\global\src at lastline=-1
+\newcommand*\src at debug{}
+\def\src at debug#1{\ifsrc at debug@\typeout{DBG: |#1|}\fi}
+\newcommand*\MainFile{}
+\def\MainFile{\jobname.tex}
+\newcommand*\CurrentInput{}
+\gdef\CurrentInput{\MainFile}
+\newcommand*\WinEdt{}
+\def\WinEdt#1{\ifsrc at winedt@\typeout{:#1}\fi}
+\newcommand\src at AfterFi{}
+\def\src at AfterFi#1\fi{\fi#1}
+\AtBeginDocument{%
+ \@ifpackageloaded{soul}{%
+ \let\src at SOUL@\SOUL@
+ \def\SOUL@#1{%
+ \ifSRCOK
+ \SRCOKfalse\src at SOUL@{#1}\SRCOKtrue
+ \else
+ \src at AfterFi\src at SOUL@{#1}%
+ \fi
+ }%
+ }{}%
+}
+\newcommand*\src at spec{}
+\def\src at spec{%
+ \ifSRCOK
+ \ifnum\inputlineno>\src at lastline
+ \global\src at lastline=\inputlineno
+ \src at debug{%
+ src:\the\inputlineno\src at maybe@space\CurrentInput}%
+ \special{src:\the\inputlineno\src at maybe@space\CurrentInput}%
+ \fi
+ \fi
+}
+\newcommand\src at before@file at hook{}
+\newcommand\src at after@file at hook{}
+\def\src at before@file at hook#1{%
+ \protected at xdef\CurrentInput{#1}%
+ \WinEdt{<+ \CurrentInput}%
+ \global\src at lastline=0
+ \ifSRCOK\special{src:1\CurrentInput}\fi
+}
+\def\src at after@file at hook#1{%
+ \WinEdt{<-}%
+ \global\src at lastline=\inputlineno
+ \global\advance\src at lastline by -1%
+ \gdef\CurrentInput{#1}%
+ \src at spec
+}
+\newcommand*\src at fname{}
+\newcommand*\src at getfilename@with at ext[2]{%
+ \src@@getfilename at with@ext#1.\end{#2}%
+ \PackageInfo{srcltx}{Expanded filename `#1' to `\src at fname'}%
+}
+\newcommand*\src@@getfilename at with@ext{}
+\def\src@@getfilename at with@ext#1.#2\end#3{%
+ \ifthenelse{\equal{#2}{}}{%
+ \def\src at fname{#1.#3}%
+ }{%
+ \ifthenelse{\equal{#2}{#3.}}{%
+ \def\src at fname{#1.#3}%
+ }{%
+ \def\src at fname{#1.#2#3}%
+ }%
+ }%
+}
+\newcommand*\src at include{}
+\newcommand*\src@@include{}
+\let\src at include\include
+\def\include#1{%
+ \src at spec
+ \clearpage
+ \expandafter\src@@include\expandafter{\CurrentInput}{#1}%
+}%
+\def\src@@include#1#2{%
+ \src at before@file at hook{#2.tex}%
+ \src at include{#2}%
+ \src at after@file at hook{#1}%
+}
+\newcommand*\src at input{}
+\newcommand*\src@@input{}
+\newcommand*\src@@@input{}
+\let\src at input\input
+\def\input{\src at spec\@ifnextchar\bgroup\src@@input\@@input}%
+\def\src@@input#1{%
+ \expandafter\src@@@input\expandafter{\CurrentInput}{#1}%
+}
+\def\src@@@input#1#2{%
+ \src at getfilename@with at ext{#2}{tex}% this sets \src at fname
+ \src at before@file at hook{\src at fname}%
+ \src at input{#2}%
+ \src at after@file at hook{#1}%
+}
+\newcommand\Input{}
+\let\Input\input
+\ifsrc at everypar@
+ \newcommand*\src at old@everypar{}
+ \let\src at old@everypar\everypar
+ \newtoks\src at new@everypar
+ \let\everypar\src at new@everypar
+ \everypar\expandafter{\the\src at old@everypar}
+ \src at old@everypar{\the\src at new@everypar\src at spec}
+\fi
+\ifsrc at everymath@
+ \def\@tempa#1\the\everymath#2\delimiter{{#1\src at spec\the\everymath#2}}
+ \frozen at everymath=\expandafter\@tempa\the\frozen at everymath\delimiter
+\fi
+\newcommand*\src at bibliography{}
+\newcommand*\src@@bibliography{}
+\let\src at bibliography\bibliography
+\def\bibliography#1{%
+ \expandafter\src@@bibliography\expandafter{\CurrentInput}{#1}%
+}
+\def\src@@bibliography#1#2{%
+ \src at before@file at hook{\jobname.bbl}%
+ \src at bibliography{#2}%
+ \src at after@file at hook{#1}%
+}
+\newcommand*\src at old@output{}
+\let\src at old@output\output
+\newtoks\src at new@output
+\let\output\src at new@output
+\output\expandafter{\the\src at old@output}
+\src at old@output{\SRCOKfalse\the\src at new@output}
+\endinput
+%%
+%% End of file `srcltx.sty'.
File [added]: wrapfig.sty
Delta lines: +598 -0
===================================================================
--- papers/CPC/saga_engine_2006/wrapfig.sty 2009-01-30 02:31:58 UTC (rev 912)
+++ papers/CPC/saga_engine_2006/wrapfig.sty 2009-01-30 02:36:20 UTC (rev 913)
@@ -0,0 +1,598 @@
+% W R A P F I G . S T Y ver 3.6 (Jan 31, 2003)
+%
+% Copyright (C) 1991-2003 by Donald Arseneau <asnd at triumf.ca>
+% This software is released under the terms of the LaTeX Project
+% public license.
+%
+% Environments "wrapfigure" and "wraptable" place a figure or table
+% at the side of the page and wrap text around it.
+%
+% \begin{wrapfigure}[12]{r}[34pt]{5cm} <figure> \end{wrapfigure}
+% -- - ---- ---
+% [number of narrow lines] {placement} [overhang] {width of figure}
+%
+% Placement is one of r, l, i, o, R, L, I, O, for right, left,
+% inside, outside, (here / FLOAT).
+% The figure sticks into the margin by `overhang', if given, or by the
+% length \wrapoverhang, which is normally zero.
+% The number of wrapped text lines is normally calculated from the height
+% of the figure, but may be specified manually ("12" above).
+%
+% Environments similar to "wrapfigure" and "wraptable" may be easily added,
+% or invoked by "\begin{wrapfloat}{float_name}"
+%
+% More detailed instructions are given below, following the definitions.
+% Please direct any problem reports to asnd at triumf.ca
+
+%%%%% ----- Begin definitions ----- %%%%%
+
+\@ifundefined{c at WF@wrappedlines}{}{\endinput}
+
+\newdimen\wrapoverhang \wrapoverhang\z@
+\newdimen\WF at size
+\newcount\c at WF@wrappedlines % used globally
+\newbox\WF at box
+\newtoks\WF at everypar
+\newif\ifWF at float
+\let\@@parshape\parshape
+\let\WF@@everypar\everypar
+
+\def\wrapfloat#1{\def\@captype{#1}\@ifnextchar[\WF at wr{\WF at wr[]}}
+
+\def\wrapfigure{\wrapfloat{figure}}
+\def\wraptable{\wrapfloat{table}}
+
+\def\WF at wr[#1]#2{% first two args: #1=num lines, #2=placement
+ \xdef\WF at wfname{wrap\@captype\space}%
+ \ifvoid\WF at box\else \WFclear \WF at collision \fi
+ \xdef\WF at place{\string`\@car#2r\@nil}%
+ \ifnum\lccode\WF at place=\WF at place \global\WF at floatfalse
+ \else \global\WF at floattrue \fi
+ \ifx\parshape\WF at fudgeparshape \ifWF at float\else\WF at collision\fi \else
+ \ifx\par\@@par \ifnum\@@parshape>\z@\WF at conflict\fi \else \WF at conflict\fi
+ \fi \gdef\WF at wli{#1}%
+ \@ifnextchar[\WF at rapt{\WF at rapt[\wrapoverhang]}}
+
+\def\WF at rapt[#1]#2{% final two args: #1 = overhang, #2 = width,
+ \gdef\WF at ovh{#1}% hold overhang for later, when \width is known
+ \global\setbox\WF at box\vtop\bgroup \setlength\hsize{#2}%
+ \ifdim\hsize>\z@ \@parboxrestore \else
+ \setbox\z@\hbox\bgroup \let\wf@@caption\caption \let\caption\wf at caption
+ \ignorespaces \fi}
+
+\def\wf at caption{\relax
+ \ifdim\hsize>\z@ \let\caption\wf@@caption \else
+ \unskip \egroup \hsize\wd\z@ \@parboxrestore \box\z@ \fi \caption}
+
+\def\endwrapfloat{%
+ \ifdim\hsize>\z@ \par\hrule\@width\hsize\@height\z@ % force width
+ \else \unskip \egroup \box\z@ \fi % or end hbox
+ \egroup % end the \vtop; width is known so now is "later"
+ \WF at floatstyhook % support float.sty
+ \def\width{\wd\WF at box}\setlength\wrapoverhang{\WF at ovh}%
+ \xdef\WF at ovh{\the\wrapoverhang}% save until wrapping
+ \ifdim\ht\WF at box>\topskip \ht\WF at box\z@ \fi % too much height, set flag.
+ \ifdim\ht\WF at box<.5\p@ % too tall (starts with \vbox) or too short
+ \global\setbox\WF at box\vtop{\vskip-1.4ex\unvbox\WF at box}\fi
+ \global\WF at size\dp\WF at box % box is guaranteed to have little height.
+ \global\advance\WF at size1.5\baselineskip \global\advance\WF at size\tw@\intextsep
+ \aftergroup\WF at startfloating % even when not really floating!
+ \ifWF at float\else \ifhmode
+ {\unskip \parfillskip\z at skip \par \vskip-\parskip}\aftergroup\noindent
+ \fi\fi \global\@ignoretrue}
+
+\let\endwrapfigure\endwrapfloat
+\let\endwraptable\endwrapfloat
+
+% Subvert \everypar to float fig and do wrapping. Also for non-float.
+\def\WF at startfloating{%
+ \WF at everypar\expandafter{\the\everypar}\let\everypar\WF at everypar
+ \WF@@everypar{\ifvoid\WF at box\else\WF at floathand\fi \the\everypar
+ \WF at wraphand
+}}
+
+\def\WF at floathand{%
+\ifx\parshape\WF at fudgeparshape \WF at fltmes\else
+ \ifx\par\@@par\ifnum\@@parshape=\z@\ifdim\hangindent=\z@
+ \setbox\z@\lastbox \begingroup
+ \@@par \WF@@everypar{}\WF at putfigmaybe
+ \endgroup % start wrapping
+ \ifvoid\z@\else\box\z@\fi % replace indentation
+ \else\WF at fltmes\fi\else\WF at fltmes\fi\else\WF at fltmes\fi\fi}
+
+% Put fig here if it fits or if it can't float
+\def\WF at putfigmaybe{%
+\ifinner
+ \vskip-\parskip \global\WF at floatfalse
+ \let\pagetotal\maxdimen % kludge flag for "not top of page"
+\else % outer page
+ \@tempdima\pagedepth % save page depth
+ {\advance\parskip\@tempdima\vskip-\parskip}% back up to baseline
+ \penalty\interlinepenalty % update pg. parameters
+ \@tempdimb\pagegoal \advance\@tempdimb-\pagetotal % room left on page
+ \ifdim\@tempdimb<\z@ % \WF at info{Page overfull already;}%
+ \global\WF at floatfalse
+ \ifdim-\@tempdimb>\pageshrink \else \pagebreak \fi
+ \else
+ \ifdim\WF at size>\@tempdimb
+% \WF at info{Size \the\WF at size\space does not fit in \the\@tempdimb}%
+ \ifWF at float \dimen at .5\baselineskip \else \dimen@ 2\baselineskip\fi
+ \ifdim\pagestretch>\dimen@ \dimen@\pagestretch \fi
+ \ifdim\pagefilstretch>\z@ \dimen@\@tempdimb \fi
+ \ifdim\pagefillstretch>\z@ \dimen@\@tempdimb \fi
+ \advance\dimen at .5\baselineskip
+ \ifdim\dimen@>\@tempdimb % \WF at info{Page nearly full; can stretch}%
+ \global\WF at floatfalse \pagebreak
+ \fi
+ \else % \WF at info{Fits in \the\@tempdimb;}%
+ \global\WF at floatfalse
+ \fi\fi
+ \vskip\@tempdima\relax % (return erased page depth)
+\fi
+\noindent
+\ifWF at float
+ \WF at fltmes
+\else % putting here;
+ \WF at info{Put \WF at wfname here:}%
+ {\ifodd\if at twoside\c at page\else\@ne\fi % assign l/r to i/o placement
+ \lccode`i`l\lccode`o`r\else \lccode`i`r\lccode`o`l\fi
+ \xdef\WF at place{\the\lccode\lccode\WF at place}}% twice to get only l or r
+ \hbox to\z@{% llap or rlap depending on {l} or {r}; calc effective width
+ \@tempdima\wd\WF at box \@tempdimb\WF at ovh
+ \advance\@tempdima-\@tempdimb \advance\@tempdima\columnsep
+ \@tempdimb\hsize \advance\@tempdimb-\@tempdima
+ \xdef\WF at adjlw{\the\@tempdima}%
+ \ifnum `l=\WF at place % fig on left
+ \hss % figure overlaps space to the left
+ \def\@tempa{\kern\columnsep}% position to left of the gap
+ \else % fig on right
+ \@tempdima\z@ % no left indentation
+ \kern\@tempdimb \kern\columnsep
+ \def\@tempa{\hss}% figure overlaps space to the right
+ \fi
+ \ifdim\@tempdimb<\hsize
+ \xdef\WF at wrapil{\the\@tempdima \the\@tempdimb}% indentation and length
+ \xdef\WF at adjtlm{\the\@tempdima}%
+ \else
+ \xdef\WF at wrapil{\z@ \the\hsize}%
+ \xdef\WF at adjlw{\z@}\xdef\WF at adjtlm{\z@}%
+ \fi
+ \ifdim\pagetotal=\z@ % \WF at info{Put \WF at wfname at top of p.\thepage}%
+ \global\advance\WF at size-\intextsep
+ \else % \WF at info{Putting \WF at wfname in middle of page}%
+ \setbox\WF at box\hbox{\lower\intextsep\box\WF at box}%
+ \fi \dp\WF at box\z@ \box\WF at box \@tempa
+ }% end \hbox to 0pt
+ \aftergroup\WF at startwrapping % after the \endgroup which immediately follows
+\fi}
+
+\def\WF at startwrapping{%
+ \ifx\WF at wli\@empty
+ {\advance\WF at size1.1\baselineskip
+ \divide\WF at size\baselineskip \global\c at WF@wrappedlines\WF at size}%
+ \else
+ \setcounter{WF at wrappedlines}{\WF at wli}\global\advance\c at WF@wrappedlines\@ne
+ \fi
+ \ifnum\c at WF@wrappedlines>\@ne
+ \let\parshape\WF at fudgeparshape \let\WF at pspars\@empty \let\WF@@par\par
+ \def\@setpar##1{\def\WF@@par{##1}}\def\par{\@par}\let\@par\WF at mypar
+ \xdef\WF at restoretol{\tolerance\the\tolerance}\tolerance9999
+ \advance\linewidth-\WF at adjlw \advance\@totalleftmargin\WF at adjtlm
+ \fi}
+
+\def\WF at wraphand{%
+\ifnum\c at WF@wrappedlines<\tw@ \WF at finale
+\else \begingroup % Create \parshape command:
+ \@tempcnta\@ne \let\WF at wrapil\relax \gdef\WF at ps{}%
+ \@whilenum \@tempcnta<\c at WF@wrappedlines\do{% repeated indentation, length
+ \xdef\WF at ps{\WF at ps\WF at wrapil}\advance\@tempcnta\@ne
+ }\endgroup
+ \ifx\WF at pspars\@empty
+ \@@parshape\c at WF@wrappedlines \WF at ps \WF at noil
+ \else % use external `parshape' values to modify my parshape
+ \WF at modps
+\fi\fi}
+
+\def\WF at mypar{\relax
+ \WF@@par % what the rest of LaTeX expects \par to be (usually \@@par)
+ \ifnum\@@parshape=\z@ \let\WF at pspars\@empty \fi % reset `parshape'
+ \global\advance\c at WF@wrappedlines-\prevgraf \prevgraf\z@
+ \ifnum\c at WF@wrappedlines<\tw@ \WF at finale \fi}
+
+\def\WF at modps{\begingroup
+ \afterassignment\@tempdimb \@tempdima\WF at pspars % a=ind, b=wid
+ \advance\@tempdima-\WF at adjtlm \advance\@tempdimb\WF at adjlw
+% \afterassignment\dimen@\advance\@tempdima\WF at wrapil
+% \advance\@tempdimb\dimen@ \advance\@tempdimb-\hsize
+ \let\WF at wrapil\WF at pspars%{\the\@tempdima \the\@tempdimb}%
+ \edef\@tempb{\@@parshape\c at WF@wrappedlines \WF at ps \the\@tempdima \the\@tempdimb}%
+ \expandafter\endgroup\@tempb}
+
+\let\@@setpar\@setpar
+\def\WF at noil{\z@ \hsize}
+\let\WF at pspars\@empty
+
+\def\WF at fudgeparshape{\relax \ifnum\c at WF@wrappedlines<\tw@ \WF at finale
+ \else \afterassignment\WF at fudgeparshapee \fam \fi}
+\def\WF at fudgeparshapee{\ifnum\fam=\@ne \expandafter \WF at parshapeee \else
+ \WF at conflict \@@parshape\fam \fi}
+\def\WF at parshapeee#1#2{\begingroup\delimitershortfall#1%
+ \nulldelimiterspace#2%\advance\nulldelimiterspace\WF at adjlw
+ \edef\@tempa{\def\noexpand\WF at pspars{%
+ \the\delimitershortfall \the\nulldelimiterspace}}%
+ \expandafter\endgroup\@tempa \WF at wraphand}
+
+\def\WF at finale{\ifx\parshape\WF at fudgeparshape
+ \WF at restoretol \let\@setpar\@@setpar \let\par\WF@@par
+ \advance\linewidth\WF at adjlw \advance\@totalleftmargin-\WF at adjtlm
+ \WF at info{Finish wrapping text}%
+ \ifx\par\@@par \def\@par{\let\par\@@par\par}\else \let\@par\WF@@par \fi
+ \let\parshape\@@parshape
+ \parshape\ifx\WF at pspars\@empty \z@ \else \@ne \WF at pspars\fi \fi
+ \ifvoid\WF at box \ifx\everypar\WF at everypar
+ \let\everypar\WF@@everypar \everypar\expandafter{\the\WF at everypar}%
+ \fi\fi}
+
+\newcommand{\WFclear}{\par
+ \ifvoid\WF at box\else \vskip\bigskipamount \box\WF at box
+ \let\everypar\WF@@everypar \everypar\expandafter{\the\WF at everypar}%
+ \fi \global\c at WF@wrappedlines\z@ \WF at finale}
+
+\begingroup
+ \toks0={\let\everypar\WF@@everypar \everypar\expandafter{\the\WF at everypar}%
+ \let\parshape\@@parshape \let\@setpar\@@setpar }
+ \toks1=\expandafter{\@arrayparboxrestore}
+ \toks2=\expandafter{\clearpage}
+ \edef\@tempa{\def\noexpand\@arrayparboxrestore{\the\toks0 \the\toks1}%
+ \def\noexpand\clearpage{\noexpand\protect\noexpand\WFclear \the\toks2}}
+ \expandafter
+\endgroup\@tempa
+
+\@ifundefined{@capwidth}{\let\@capwidth\hsize}{}% Pamper RevTeX's Stupidity
+
+\def\WF at conflict{\WF at warning
+ {\WF at wfname used inside a conflicting environment}}
+\def\WF at collision{\WF at warning{Collision between wrapping environments}}
+\def\WF at fltmes{\ifWF at float \WF at info{\WF at wfname floats}%
+ \else \WF at warning{Stationary \WF at wfname forced to float}\fi}
+
+\let\WF at warning\@warning
+\let\WF at info\@gobble
+
+% Support float.sty: float styles and \newfloat. Make \newfloat{foo}
+% define the `wrapfoo' environment. Support \newfloat from memoir.cls
+% and \newfloatlist from ccaption.sty.
+%
+\let\WF at floatstyhook\relax
+
+\@ifundefined{newfloat}{}{% There is a \newfloat command
+%
+ \@ifundefined{restylefloat}{
+ % \newfloat comes from somewhere besides float.sty
+ \@ifclassloaded{memoir}{
+ \toks@=\expandafter\expandafter\expandafter
+ {\csname\string\newfloat\endcsname [{#1}]{#2}{#3}{#4}%
+ \newenvironment{wrap#2}{\wrapfloat{#2}}{\endwrapfloat}%
+ }
+ \edef\@tempa{\def\expandafter\noexpand\csname\string\newfloat\endcsname
+ [##1]##2##3##4{\the\toks@}}
+ \@tempa
+ }% end memoir support
+ {}% Other origins of \newfloat here??
+ }{
+ % float.sty handler. Ooops: Two versions for different versions
+ % Changing \float at restyle (or \restylefloat) changes \newfloat too.
+ \@ifundefined{float at restyle}{% older float.sty
+ \toks@=\expandafter{\restylefloat{#1}% (env may or may not be defined)
+ \@namedef{wrap#1}{\def\@captype{#1}\@nameuse{fst@#1}%
+ \def\WF at floatstyhook{\let\@currbox\WF at box \columnwidth\wd\WF at box
+ \global\setbox\WF at box\float at makebox}%
+ \@ifnextchar[\WF at wr{\WF at wr[]}}%
+ \expandafter\let\csname endwrap#1\endcsname \endwrapfigure
+ }\edef\@tempa{\def\noexpand\restylefloat##1{\the\toks@}}
+ }{% newer float.sty: use \float at restyle, and \float at makebox takes width arg
+ \toks@=\expandafter{\float at restyle{#1}% (env may or may not be defined)
+ \@namedef{wrap#1}{\def\@captype{#1}\@nameuse{fst@#1}%
+ \def\WF at floatstyhook{\let\@currbox\WF at box
+ \global\setbox\WF at box\float at makebox{\wd\WF at box}}%
+ \@ifnextchar[\WF at wr{\WF at wr[]}}%
+ \expandafter\let\csname endwrap#1\endcsname \endwrapfigure
+ }\edef\@tempa{\def\noexpand\float at restyle##1{\the\toks@}}
+ }
+ \@tempa % perform redefinitions
+ %
+ }% End float.sty handler
+}% End redefinitions of \newfloat
+
+% Support ccaption.sty
+\@ifundefined{\string\newfloatlist}{}{
+ \toks@=\expandafter\expandafter\expandafter
+ {\csname\string\newfloatlist\endcsname [{#1}]{#2}{#3}{#4}{#5}%
+ \@namedef{wrap#2}{\wrapfloat{#2}}%
+ \expandafter\let\csname endwrap#2\endcsname \endwrapfloat
+ }
+ \edef\@tempa{\def\expandafter\noexpand\csname\string\newfloatlist\endcsname
+ [##1]##2##3##4##5{\the\toks@}}
+ \@tempa
+}
+
+% Process package options.
+
+\@ifundefined{DeclareOption}{\endinput}{}
+
+\def\WF at warning{\PackageWarning{wrapfig}}
+\ProvidesPackage{wrapfig}[2003/01/31 \space v 3.6]
+\DeclareOption{verbose}{\def\WF at info{\PackageInfo{wrapfig}}}
+\ProcessOptions
+\AtEndDocument{\WFclear}
+
+\endinput
+
+%%%%% ----- End definitions ----- %%%%%
+
+%%%%% ----- Begin Instructions ----- %%%%%
+
+
+W R A P F I G . S T Y \ \ ver 3.6 \ \ (Jan 31, 2003)
+
+Copyright (C) 1991-2003 by Donald Arseneau (asnd at triumf.ca)
+
+Wrapfig.sty provides the environments "wrapfigure" and "wraptable" for
+typesetting a narrow float at the edge of the text, and making the text
+wrap around it. The "wrapfigure" and "wraptable" environments interact
+properly with the "\caption" command to produce proper numbering, but
+they are not regular floats like "figure" and "table", so (beware!) they
+may be printed out of sequence with the regular floats. There are four
+parameters for "\begin{wrapfigure}", two optional and two required, plus
+the text of the figure, with a caption perhaps:
+
+ \begin{wrapfigure}[12]{r}[34pt]{5cm} <figure> \end{wrapfigure}
+ == = ==== ===
+ [number of narrow lines] {placement} [overhang] {width}
+
+Some idiosyncrasies:
+
+ - You must not specify a wrapfigure in any type of list environment or
+ or immediately before or immediately after one. It is OK to follow
+ a list if there is a blank line ("\par") in between.
+
+ - If you put a wrapfigure in a parbox or a minipage, or any other type
+ of grouping, the text wrapping should end before the group does.
+
+ - It does work in two-column format, but are your figures that small?
+
+ - It may be out of sequence with regular floats.
+
+ - The hlines that may be printed above and below floats are ignored;
+ you must insert them manually if desired.
+
+ - "\linewidth" is now adjusted within the wrapped text, but since it
+ can only be set for whole paragraphs at a time, it will persist with
+ the wrong value after the wrapping, until the paragraph is finished.
+
+New wrapping environments may be added when new float types are defined
+(using memoir.cls, float.sty, or ccaption.sty). Any wrapping environment,
+"wrapfigure", "wraptable", or something else may be invoked using the
+"wrapfloat" environment, as in "\begin{wrapfloat}{figure}{O}{5cm}".
+
+To use float.sty properly, load package "float" before "wrapfig",
+and declare any new float types after loading both. Likewise for
+ccaption.sty and "\newfloatlist" and memoir.cls and its "\newfloat".
+
+\section{Placement and Floating}
+
+Parameter "#2" (required) is the figure placement code, but the valid
+codes are different from regular figures. They come in pairs: an
+uppercase version which allows the figure to float, and a lowercase
+version that puts the figure ``exactly here''.
+
+ r R - the right side of the text
+ l L - the left side of the text
+ i I - the inside edge--near the binding (if "[twoside]" document)
+ o O - the outside edge--far from the binding
+
+You should specify one code only, not a list. The figure or table must
+be on one side or the other; it cannot be in the middle with text on
+both sides. The "i" and "o" options refer to the inside and outside of
+the whole page, not individual columns.
+
+The ability to float is somewhat restricted, and you will get best results
+by giving exact manual placement, but floating is more convenient while
+revising the document. Any changes to the formatting can ruin your manual
+positioning so you should adjust the placement just before printing a
+final copy. Here are some tips for good placement:
+
+ - The environment should be placed so as to not run over a page break.
+
+ - The environment must not be placed in special places like lists.
+
+ - For esthetic reasons, only plain text should wrap around the figure.
+ Section titles and big equations look bad; lists are bad if the figure
+ is on the left. (All these function properly, they just don't look
+ very good.) Small equations look fine.
+
+ - It is convenient to begin the environment between paragraphs, but if
+ you want placement in the middle of a paragraph, you must put the
+ environment between two words where there is a natural line break.
+
+When floating, \LaTeX\ tries to apply these rules. More specifically,
+a floated wrapping environment will only begin...
+
+ - at the beginning of a paragraph,
+
+ - when there is enough room on the page, or it is possible to go on
+ the next page,
+
+ - if the `paragraph' is not in a section title or a list,
+
+ - if the paragraph is not wrapping around another figure,
+
+ - in the main text (not in a minipage etc.)
+
+It is possible that a non-floating wrapfigure will be forced to float
+when an earlier one is still being processed. A warning will be written
+in that case. You can have more information about the floating process
+written to the log file by specifying "\usepackage[verbose]{wrapfig}".
+
+If there is a lot of flexibility on a page, a floating wrapfigure may
+be placed badly; you must turn to manual placement. A rare problem is
+that floats and footnotes specified within the wrapping text can also
+cause poor placement and bad formatting.
+
+
+\section {Sizing and optional overhang}
+
+Parameter "#4" (the second required parameter) is the width of the figure
+or table. Given the way that \LaTeX\ puts just about everything into boxes
+with the current line-width, the width parameter will take precedence over
+whatever natural width the figure has. In particular, the caption is always
+typeset with the specified width. If the figure is wider than the space
+allotted, you will get an ``overfull box'' warning.
+
+However, if you specify a width of *zero* ("0pt"), the actual width of
+the figure will determine the wrapping width. A following "\caption"
+should have the same width as the figure, but it might fail badly; it
+is safer to specify a width when you use a caption.
+
+\LaTeX\ will wrap surrounding text around the figure, leaving a gap of
+"\intextsep" at the top and bottom, and "\columsep" at the side, by
+producing a series of shortened text lines beside the figure. The
+indentation (shortening) of the text is the figure width plus "\columnsep"
+minus overhang (if any; see below).
+
+\LaTeX\ calculates the number of short lines needed based on the height
+of the figure and the length "\intextsep". You can override this guess
+by giving the first optional argument (parameter "#1") specifying the
+number of shortened lines (counting each displayed equation as 3 lines).
+This is particularly useful when the surrounding text contains extra
+vertical spacing that is not accounted for automatically.
+
+The second optional parameter ("#3") tells how much the figure should
+hang out into the margin. The default overhang is given by the length
+"\wrapoverhang", which is "0pt" normally but can be changed using
+"\setlength". For example, to have all wrapfigures use the space
+reserved for marginal notes,
+
+ \setlength{\wrapoverhang}{\marginparwidth}
+ \addtolength{\wrapoverhang}{\marginparsep}
+
+When you do specify the overhang explicitly for a particular figure, you
+can use a special unit called "\width" meaning the width of the figure.
+For example, "[0.5\width]" makes the center of the figure sit on the
+edge of the text, and "[\width]" puts the figure entirely in the margin
+(and the adjacent text is indented by just "\columnsep"). This "\width"
+is the actual width of the wrapfigure, which may be greater than the
+declared width.
+
+
+\section{Some Random Implementation Notes}
+
+Unfortunately, \LaTeX's system of setting "\everypar" and "\par" is
+unable to coexist peacefully with a wrapping environment, so I was
+forced to subvert the "\@setpar" mechanism and "\everypar". ("\everypar"
+is already subverted once by NFSS.)
+
+When checking the room left on the page, remember that if there is less
+than "\baselineskip" the new paragraph will begin on the next page, even
+if there is no page stretch. If non-floating, I force a bad page break
+rather than have the figure hang into the bottom margin.
+
+Here are notes on various variables and some macros; what info they
+store and how they are used.
+
+ \WF at wli - number-of-wrapped-lines parameter, saved for start of wrapping.
+ Set globally by "\WF at wr" (set empty if no optional parameter given).
+ The floating mechanism ignores this and uses the real size.
+
+ \WF at ovh - margin overhang set globally by "\WF at rapt", saved until placing
+ figure (but not reset). Actually, the setting is very tricky so that
+ the expected values are used when a figure floats. First, the expression
+ is saved without evaluation by "\WF at rapt" ("\begin{wrapfigure}") because
+ "\width" is still unknown. Soon after that, "\endwrapfigure" executes
+ "\WF at ovh" to evaluate the overhang and save the result (so that changes
+ to "\wrapoverhang" while this figure is floating won't affect this
+ figure). Finally, it is used by "\WF at putfigmaybe" when printing the fig.
+
+ \WF at place - a macro that is used as a number, giving the placement code.
+ It might start out as "`I" and later be converted to "114" (r).
+
+ \WF at box - tested for void at "\begin{wrapfigure}", to avoid collisions,
+ by "\everypar" to do floating, and by "\WF at finale" before resetting
+ "\everypar". Voided globally when used by "\WF at putfigmaybe" (or by
+ "\WF at wr" if an old figure must be dumped prematurely).
+
+ \par - test if it is "\@@par" by "\begin{wrapfigure}" and "\WF at floathand"
+ to float past special environments. It is set to "\@par" ("\WF at mypar")
+ by "\WF at startwrapping", and restored by an end-group (bad!) or by
+ "\WF at finale" (good). It is protected from change by redefining
+ "\@setpar".
+
+ \parshape - let to "\WF at fudgeparshape" by "\WF at startwrapping", so lists
+ will continue wrapping; "\@@parshape" preserves the real "\parshape"
+ command, and it is restored by "\WF at finale" or "\@parboxrestore".
+ "\WF at floathand" and "\WF at wr" test if old wrapping is still in progress
+ with "\ifx\parshape\WF at fudgeparshape". The value of "\@@parshape" is
+ also tested to float past lists and other wrapping environments.
+
+ \hangindent - tested to float past section titles etc.
+
+ \c at WF@wrappedlines - the number of shortened lines + 1; set globally by
+ "\WF at startwrapping" and decremented by "\par" ("\WF at mypar"). It is > 1
+ only when wrapping is incomplete. "\WF at wraphand", "\WF at fudgeparshape",
+ and "\WF at mypar" test the number for calling "\WF at finale". It may get
+ stuck at some high value if "\par" is restored by an end-group, (and
+ wrapping is terminated prematurely) so it is unwise to use this as a
+ test for wrapping-complete.
+
+ \pagetotal - one of many parameters used to compute floating. When
+ putting a wrapfigure in a parbox, I assign "\let\pagetotal\maxdimen"
+ (locally!) to signal not-top-of-page and no floating.
+
+ \WF at pspars - the "\parshape" parameters as LaTeX sets them for lists
+ ("\WF at fudgeparshape"); when wrapping I test it and use it to modify my
+ own real params for the paragraph. They are also used when "\parshape"
+ is restored after wrapping.
+
+ \WF at finale - is performed by "\par" when wrapping should end. However,
+ that might happen inside a group (a list especially), so the subverted
+ versions of "\par", "\parshape" etc. will be reinstated when the group
+ ends. Thus, they must themselves test "\c at WF@wrappedlines" < 2 to see
+ when wrapping is over, and if so, they should just do "\WF at finale" again.
+
+These are the tests to see if a floating wrapfigure will fit at a particular
+spot. These tests are performed at the beginning of every paragraph after
+the figure, except in lists etc. ("\pagegoal" - "\pagetotal" is the room
+left on the page.)
+
+ >
+ room_left := \pagegoal - \pagetotal
+ if room_left < 0 then page overfull already: put figure (on next page)
+ else
+ if figure_size > room_left then does not fit
+ if max(min_stretch, \pagestretch) + extra > room_left
+ then page can stretch until full: put figure (at top of next page)
+ fi
+ else figure fits: put figure
+ fi fi
+ <
+
+Even if a wrapfigure is not floating, it will go through the same logic
+to generate a "\pagebreak", and maybe an underfull page, when the current
+page can stretch until full. The "min_stretch" depends on whether it is
+floating or not: ".5\baselineskip" (floating) "2\baselineskip" (not). The
+"extra" is ".5\baselineskip" in either case. These values can be adjusted.
+
+There are some other `magic numbers' for floating that aren't really so
+special, but you must change them together if you change them at all.
+To make floating wrapfigures float less and fit on pages more frequently,
+but not change the number of wrapped lines, decrease the "1.5" in
+"\global\advance\WF at size1.5\baselineskip" and increase the "1.1" in
+"\advance\WF at size1.1\baselineskip" by the same amount (and vice versa).
+To make more (or fewer) wrapped lines for the same size figure, without
+changing the floating, change "1.1" in "\advance\WF at size1.1\baselineskip"
+unilaterally.
+
+%%%%% ----- End Instructions ----- %%%%%
+
+Test file integrity: ASCII 32-57, 58-126: !"#$%&'()*+,-./0123456789
+:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
More information about the saga-devel
mailing list