+++ /dev/null
-# Makefile,v 1.8 1999/04/15 17:36:14 wolf Exp
-
-
-# Let ./configure insert whether MG shall be documented
-DOCXX = @docxx@
-
-
-# specify which are the include files that a specific documentation libary
-# depends upon
-kdoc.base = $(shell echo ../../base/include/base/*.h)
-kdoc.lac = $(shell echo ../../lac/include/lac/*.h)
-kdoc.grid = $(shell echo ../../deal.II/include/grid/*.h)
-kdoc.dof = $(shell echo ../../deal.II/include/dofs/*.h) \
- $(shell echo ../../deal.II/include/fe/*.h)
-kdoc.numerics = $(shell echo ../../deal.II/include/numerics/*.h)
-kdoc.multigrid= $(shell echo ../../deal.II/include/multigrid/*.h)
-
-# for latex-output, we join the different libraries of the
-# deal.II library into just one file
-kdoc.dealII = $(kdoc.grid) $(kdoc.dof) $(kdoc.numerics)
-
-# include global paths and variables
-include ../../common/Make.global_options
-
-
-
-# by default: make library doc and generate an index of all names
-default: kdoc kdoc/names.html
-
-# alternatively: do the above and also generate a backlog of CVS
-# changes in the last 100 days
-all: default cvslog
-
-
-#################################################################################
-## targets for cvslog generated HTML output
-#################################################################################
-
-cvslog:
- cd ../.. ; $(PERL) doc/auto/scripts/cvs2html -o doc/auto/cvs-backlog/newdeal -a -k -D 100
-
-
-
-#################################################################################
-## targets for kdoc generated HTML output
-#################################################################################
-
-# Make in kdoc subdirectory
-
-kdoc:
- @cd kdoc ; $(MAKE)
-
-# Will not work for kdoc2
-
-kdoc/names.html: kdoc
- @cd kdoc ; $(PERL) ../scripts/index.pl *.kdoc > names.html
-
-
-
-
-#################################################################################
-## targets for DOC++ generated latex output
-#################################################################################
-
-# generate the input file for doc++
-%.doc++: Makefile
- @echo $(kdoc.$(subst .doc++,,$(subst latex/,,$@))) | \
- $(PERL) -pi -e 's# #\n#g; s#\.\./\.\./#//\@Include: ../../../#g;' > \
- $@
-
-
-# generate one of the latex-output files; this needs the respective
-# include file for DOC++
-#
-# delete the .doc++ files immediately again, since they are no more
-# used and since this forces make to re-make the .tex-file each time
-# we ask for it; the right way to do so would be to use dependencies,
-# but it is hard to compute them from the '%'-sign used in the rule
-ifeq ($(DOCXX),)
-%.tex:
- @echo ---------------------------------------------
- @echo "Doc++ was not found at ./configure time!"
- @echo "Can't generate printable documentation."
- @echo ---------------------------------------------
- false
-else
-%.tex: %.doc++
- $(DOCXX) -p -t -u -o $@ -ep a4wide $<
- rm $^
-endif
-
-
-# generate temporary files from the doc++-latex-output which have
-# headers and footers stripped and label names replaced by something
-# file dependent
-%.tex1: %.tex
- cat $< | \
- $(PERL) scripts/process-tex | \
- $(PERL) -pi -e 's/cxx\./$(basename $(notdir $@)).cxx./g;' > $@
-
-latex/deal_II_technical_reference.tex: latex/base.tex1 latex/lac.tex1 latex/dealII.tex1
- @cat latex/header.tex > $@
- @echo "\\\\chapter{Base library}" >> $@
- @echo "\\\\def\\\\presentlib{base}" >> $@
- @cat latex/base.tex1 >> $@
- @echo "\\\\chapter{Linear algebra library}" >> $@
- @echo "\\\\def\\\\presentlib{lac}" >> $@
- @cat latex/lac.tex1 >> $@
- @echo "\\\\chapter{deal.II library}" >> $@
- @echo "\\\\def\\\\presentlib{dealII}" >> $@
- @cat latex/dealII.tex1 >> $@
- @cat latex/footer.tex >> $@
- rm $^
-
-
-
-# generate the latex-processed files from these
-%.dvi: %.tex
- cd latex ; latex $(notdir $<)
- cd latex ; latex $(notdir $<)
- -rm $(subst .tex,.log,$<)
- -rm $(subst .tex,.aux,$<)
- -rm $(subst .tex,.toc,$<)
-
-
-# generate postscript files from a latex output file
-%.ps: %.dvi
- cd latex ; dvips $(notdir $<) -o $(notdir $@)
-
-
-
-
-#################################################################################
-## administrativa
-#################################################################################
-clean:
- -rm -f kdoc/names.html kdoc/*.kdoc kdoc/*/*.html cvs-backlog/*.html \
- latex/base.* latex/lac.* latex/dealII.* \
- latex/deal_II_technical_reference.* \
- *.doc++
-
-
-.PHONY: default all kdoc $(kdoc.library-files) $(kdoc.library-files.rerun) doc++ clean
+++ /dev/null
-*.kdoc names.html multigrid Makefile
+++ /dev/null
-############################################################
-# $Id$
-############################################################
-
-D = @DEAL2_DIR@
-multigrid = @enablemultigrid@
-kdocdir = @kdocdir@
-kdocversion = @kdocversion@
-
-
-include $D/common/Make.global_options
-
-ifeq ($(kdocversion),1)
-KDOCFLAGS=-I$(kdocdir) $(kdocdir)/kdoc -a -p -L $D/doc/auto/kdoc
-else
-KDOCFLAGS=-I$(kdocdir) $(kdocdir)/kdoc -a -q --private \
- --html-logo ../../../pictures/deal.II_3.0_1.150.jpg \
- --libdir $D/doc/auto/kdoc --name
-endif
-
-kdoc.base = $(shell echo $D/base/include/base/*.h)
-kdoc.lac = $(shell echo $D/lac/include/lac/*.h)
-kdoc.grid = $(shell echo $D/deal.II/include/grid/*.h)
-kdoc.dof = $(shell echo $D/deal.II/include/dofs/*.h) \
- $(shell echo $D/deal.II/include/fe/*.h)
-kdoc.numerics = $(shell echo $D/deal.II/include/numerics/*.h)
-kdoc.multigrid= $(shell echo $D/deal.II/include/multigrid/*.h)
-
-
-# specify the names of the resulting doc libraries
-kdoc.library-files = base.kdoc \
- lac.kdoc \
- grid.kdoc \
- dof.kdoc \
- numerics.kdoc \
- multigrid.kdoc
-
-kdoc: kdoc-installed $(kdoc.library-files)
-
-
-# check whether kdoc is already installed. if not, then try to do
-# so. also install afresh if not up-to-date with the sources
-kdoc-installed:
- cd $(kdocdir:kdoc/bin=kdoc) ; $(MAKE)
-
-
-
-# now for the generation of the documentation of the sublibraries.
-# first let kdoc generate the whole thing, then loop over all output
-# files and cut some paths in the output to a reasonable
-# length. before everything else, make sure that kdoc is installed
-
-base.kdoc: kdoc-installed base-html-files base-fix-files
-lac.kdoc: kdoc-installed lac-html-files lac-fix-files
-grid.kdoc: kdoc-installed grid-html-files grid-fix-files
-dof.kdoc: kdoc-installed dof-html-files dof-fix-files
-numerics.kdoc: kdoc-installed numerics-html-files numerics-fix-files
-multigrid.kdoc: kdoc-installed multigrid-html-files multigrid-fix-files
-
-
-# description of how to make the output of kdoc: first list which
-# files each output dir depends upon, then state the general rule of
-# how to make the output. let everything depend on kdoc being already
-# installed (we need to re-state this dependency here as we could
-# otherwise get problems when using parallel builds)
-#
-# note that when running kdoc, we discard the forward-declarations
-# file as this brings kdoc into trouble
-base-html-files: kdoc-installed $(kdoc.base)
-lac-html-files: kdoc-installed $(kdoc.lac)
-grid-html-files: kdoc-installed $(kdoc.grid)
-dof-html-files: kdoc-installed $(kdoc.dof)
-numerics-html-files: kdoc-installed $(kdoc.numerics)
-multigrid-html-files: kdoc-installed $(kdoc.multigrid)
-%-html-files:
- @$(PERL) $(KDOCFLAGS) $(subst -html-files,,$@) \
- --outputdir $(subst -html-files,,$@) \
- $(filter-out %forward_declarations.h, $(^:kdoc-installed=))
-
-
-# now how to fix the files:
-# fix the #include<...> directives to only contain the
-# paths that are needed inside the programs instead of the global
-# paths
-#
-# also fix include paths in the files header-list.htmlbase-fix-files: base-html-files
-%-fix-files:
- @echo Fixing include paths
- @for htmlfile in $(subst -fix-files,,$@)/*html ; do \
- $(PERL) -pi -e 's,(#include <<A HREF=\"[^\"]+\">)$D/?[^/]+/include/,$$1,g; \
- s,<h1>Source: $D/?(.*)</h1>,<h1>Source: $$1</h1>,g;' "$$htmlfile" ;\
- done
- @for htmlfile in $(subst -fix-files,,$@)/header-list.html $(subst -fix-files,,$@)/all-globals.html ; do \
- case "$$htmlfile" in \
- *header-list*) \
- $(PERL) -pi -e 's,<TH>$D/?[^/]+/include/(.*?) - $D/?[^/]+/include/(.*?)</TH>,<TH>$$1 - $$2</TH>,g; \
- s,(<A HREF=\"[^\"]+\">)$D/?[^/]+/include/,$$1,g;' \
- "$$htmlfile" ;\
- ;; \
- *all-globals*) \
- $(PERL) -pi -e 's,(<A HREF=\"[^\"]+\">)$D/?[^/]+/include/,$$1,g;' \
- "$$htmlfile" ;\
- ;; \
- *) \
- echo "*******Unknown file $$htmlfile? Something must have gone wrong!*********" ; \
- ;; \
- esac ; \
- done
-
+++ /dev/null
-deal_II_technical_reference.*
\ No newline at end of file
+++ /dev/null
-% docxx.sty
-%
-% Copyright (c) 1996, 2000 Roland Wunderling, Malte Zoeckler
-% Copyright (c) 1999 Dragos Acostachioaie
-%
-% This file is part of DOC++.
-%
-% DOC++ is free software; you can redistribute it and/or
-% modify it under the terms of the GNU General Public
-% License as published by the Free Software Foundation; either
-% version 2 of the license, or (at your option) any later version.
-%
-% This program is distributed in the hope that it will be useful,
-% but WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-% General Public License for more details.
-%
-% You should have received a copy of the GNU General Public
-% License along with this program; if not, write to the Free
-% Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-%
-%
-% Switch off special characters except {}\ for the rest of the text.
-%
-\def\cxxtilde{{\tt\~\relax}}
-\addtolength{\parskip}{6pt}
-
-\catcode`\,=\active%
-\def,{\char`\,\penalty-8\ }
-%\def,{++ }
-\catcode`\,=12
-
-\def\<{{\tt <}}
-\def\>{{\tt >}}
-\def\TEX{}
-\def\cxxExceptionsStr{}
-\def\cxxParameterStr{}
-\def\cxxReturnStr{}
-\def\cxxSeeStr{}
-\def\cxxAuthorStr{}
-\def\cxxVersionStr{}
-\def\cxxFileStr{}
-\def\cxxExceptions#1{\def\cxxExceptionsStr{#1}}
-\def\cxxParameter#1{\def\cxxParameterStr{#1}}
-\def\cxxReturn#1{\def\cxxReturnStr{#1}}
-\def\cxxSee#1{\def\cxxSeeStr{#1}}
-\def\cxxAuthor#1{\def\cxxAuthorStr{#1}}
-\def\cxxVersion#1{\def\cxxVersionStr{#1}}
-\def\cxxFile#1{\def\cxxFileStr{#1}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Define \ 3...\ 3 to do verbatim listing
-%
-\catcode`\\ 4=\active
-\catcode`\\ 3=\active
-{\obeyspaces\gdef {\ }}
-
-\def\ccverbatim{\strut\begingroup
- \catcode`\\=12 \catcode`\{=12
- \catcode`\}=12 \catcode`\$=12
- \catcode`\&=12 \catcode`\#=12
- \catcode`\%=12 \catcode`\~=12
- \catcode`\_=12 \catcode`\^=12
- \catcode`\|=12 \catcode`\/=12
- \obeyspaces\tt}
-\def\ 3{\let\par=\endgraf \ccverbatim \parskip=0pt \ccfinish}
-{\catcode`\\ 4=0 \ 4catcode`\ 4\=12
-\ 4gdef\ 4ccfinish#1\ 3{#1\ 4endgroup}}
-
-%
-% Definition of structuring comands.
-%
-\newcommand{\Section}[1]{\section{#1}}
-\newcommand{\SubSection}[1]{\subsection{#1}}
-\newcommand{\SubSubSection}[1]{\subsubsection{#1}}
-\newcommand{\Paragraph}[1]{\paragraph{#1}}
-
-\newcommand{\Ref}[1]{{\bf #1} ($\rightarrow$ \ref{#1})}
-\newcommand{\URL}[2][]{%
- \def\name{#1}%
- \def\empty{}%
- \ifx\name\empty%
- {\tt #2}%
- \else%
- #1 ({\tt #2})%
- \fi%
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% printing line #1 of code #2
-%
-\newdimen\cxxcodewidth
-\cxxcodewidth=\textwidth
-\advance\cxxcodewidth by -21pt
-
-\def\cxxCodeLine#1#2{%
-{\hbox to 20pt{\tiny\hss#1}\parbox[t]{\cxxcodewidth}{\small#2}}%
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for listing manual entries
-%
-\newdimen\cxxIdWidth
-\newdimen\cxxTypeWidth
-\newdimen\cxxProtoWidth
-\newdimen\cxxMemoWidth
-\newdimen\cxxPageWidth
-
-\cxxIdWidth=0.1\textwidth
-\cxxTypeWidth=0.15\textwidth
-\cxxProtoWidth=0.25\textwidth
-\cxxMemoWidth=0.43\textwidth
-
-\cxxPageWidth=\textwidth
-\advance\cxxPageWidth by-\cxxIdWidth
-\advance\cxxPageWidth by-\cxxTypeWidth
-\advance\cxxPageWidth by-\cxxProtoWidth
-\advance\cxxPageWidth by-\cxxMemoWidth
-
-\newdimen\cxxProtoMemoWidth
-\cxxProtoMemoWidth=\cxxProtoWidth
-\advance\cxxProtoMemoWidth by\cxxMemoWidth
-
-\def\cxxStrut{\vrule width0pt height0pt depth9pt}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% 1: type
-% 2: name
-% 3: args
-% 4: memo
-% 5: id
-\def\cxxitem#1#2#3#4#5{\noindent{%
- \setbox5\hbox{#5 }%
- \ifdim\wd5>\cxxIdWidth%
- \setbox5\hbox{\hbox to \cxxIdWidth{\hss#5}}%
- \else
- \setbox5\hbox{\hbox to \cxxIdWidth{#5\hss}}%
- \fi%
- \setbox1\hbox{{%
- \catcode`\&=4%
- \catcode`\_=8%
- \def\ 3{\ccverbatim \ccfinish}#1%
- }}%
- \setbox2\hbox{{%
- \catcode`\&=4%
- \catcode`\_=8%
- \def\ 3{\ccverbatim \ccfinish}\textbf{#2} #3%
- }}%
- \setbox4\hbox{\parbox[t]{\cxxMemoWidth}{{%
- \raggedright\sloppy%
- \catcode`\&=4%
- \catcode`\_=8%
- \def\ 3{\ccverbatim \ccfinish}{\em #4}
- \cxxStrut%
- \def\page{#5}%
- \ifx\page\empty%
- \hss%
- \else%
- \ \dotfill%
- \hbox to 0pt{\hbox to \cxxPageWidth{\hss%
- \pageref{\presentlib.cxx.#5}%
- }\hss}%
- \fi%
- }}}%
- %
- \ifdim\wd1>\cxxTypeWidth%
- \hbox to \hsize{\unhbox5\hbox to \cxxTypeWidth{\unhbox1\hss}\hss}\\\nopagebreak%
- \setbox5\hbox{\hskip\cxxIdWidth}%
- \setbox1\hbox{\hskip\cxxTypeWidth}%
- \else%
- \setbox1\hbox{\hbox to \cxxTypeWidth{\unhbox1\hss}}%
- \fi%
- \ifdim\wd2>\cxxProtoWidth%
- \ifdim\wd2<\cxxProtoMemoWidth%
- \def\tmp{#4}%
- \ifx\tmp\empty%
- \def\tmp{#5}%
- \ifx\tmp\empty%
- \hbox to \hsize{\unhbox5\unhbox1\unhbox2\hss\cxxStrut}\\%
- \else%
- \hbox to \hsize{\unhbox5\unhbox1\unhbox2
- \dotfill\hbox to \cxxPageWidth{\hss\pageref{\presentlib.cxx.#5}}%
- \cxxStrut}\\%
- \fi%
- \else%
- \hbox to \hsize{\unhbox5\unhbox1\unhbox2\hss}\\\nopagebreak%
- \hbox to \hsize{%
- \hskip\cxxIdWidth%
- \hskip\cxxTypeWidth%
- \hskip\cxxProtoWidth%
- \unhbox4\hss%
- }\\%
- \fi%
- \else%
- \hbox to \hsize{%
- \unhbox5%
- \unhbox1%
- \parbox[t]{\cxxProtoMemoWidth}{%
- \setbox255\hbox{\textbf{#2} (}%
- \hangindent=\wd255\hangafter=1%
- \raggedright\sloppy%
- {\catcode`\&=4\catcode`\_=8%
- \def\ 3{\ccverbatim \ccfinish}\textbf{#2} #3\strut}%
- }\hss%
- }\\\nopagebreak%
- \hbox to \hsize{%
- \hskip\cxxIdWidth%
- \hskip\cxxTypeWidth%
- \hskip\cxxProtoWidth%
- \unhbox4\hss%
- }\\%
- \fi%
- \else%
- \hbox to \hsize{%
- \unhbox5%
- \unhbox1%
- \hbox to \cxxProtoWidth{\unhbox2\hss}%
- \unhbox4\hss%
- }\\%
- \fi%
-}}
-
-
-\newdimen\cxxtypestart
-\cxxtypestart=0.05\textwidth
-%\advance\cxxtypestart by \labelsep
-
-\newdimen\cxxnamestart
-\cxxnamestart=\cxxtypestart
-\advance\cxxnamestart by 0.25\textwidth
-
-\newdimen\cxxargsstart
-\cxxargsstart=\cxxnamestart
-\advance\cxxargsstart by 0.2\textwidth
-\newdimen\cxxargswidth
-\cxxargswidth=\textwidth
-\advance\cxxargswidth by -\cxxargsstart
-\advance\cxxargswidth by -\spaceskip
-
-\newdimen\cxxmemostart
-\cxxmemostart=\cxxargsstart
-\advance\cxxmemostart by 0.12\textwidth
-
-\newenvironment{cxxlist}[1]{
-\begingroup
-\catcode`\,=\active%
-\paragraph{#1}\strut\smallskip\\
-}{
-\endgroup
-}
-
-\newenvironment{cxxnames}{\begin{cxxlist}{Names}}{\end{cxxlist}}
-\newenvironment{cxxpublic}{\begin{cxxlist}{Public Members}}{\end{cxxlist}}
-\newenvironment{cxxprivate}{\begin{cxxlist}{Private Members}}{\end{cxxlist}}
-\newenvironment{cxxprotected}{\begin{cxxlist}{Protected Members}}{\end{cxxlist}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Numbered Frame box
-%
-\newlength{\cxxBoxLen}%
-\newlength{\cxxBoxHt}%
-\newlength{\cxxBoxDp}%
-\newlength{\cxxSideHt}%
-\newlength{\cxxSideLen}%
-\newlength{\cxxTitleLen}%
-\def\empty{}
-\def\idPos{1cm}
-
-%
-% box with id and name [optional width]
-%
-\newcommand{\aBox}[3][1pt]{{%
-\small%
-\def\width{#1}%
-\def\num{#2}%
-\def\name{#3}%
-\setbox0\hbox{\hskip\width{ \strut\name\strut} \hskip\width}%
-%
-\setlength{\cxxBoxLen}{\wd0}%
-\addtolength{\cxxBoxLen}{\width}%
-\addtolength{\cxxBoxLen}{\width}%
-\setbox2\hbox{\normalsize\strut\rule{\cxxBoxLen}{\width}}%
-%
-\ifx\num\empty%
- \setbox1\hbox{\strut}%
-\else%
- \setbox1\hbox{\rule{\idPos}{\width} { \sf\bf\strut #2 } }%
-\fi%
-\addtolength{\cxxBoxLen}{-\wd1}%
-\setbox1\hbox{\unhbox1\rule{\cxxBoxLen}{\width}}%
-%
-\setlength{\cxxSideHt}{\dp0}%
-\addtolength{\cxxSideHt}{\width}%
-\setlength{\cxxSideLen}{\dp0}%
-\addtolength{\cxxSideLen}{\ht0}%
-\addtolength{\cxxSideLen}{\dp1}%
-\addtolength{\cxxSideLen}{\width}%
-\addtolength{\cxxSideLen}{\width}%
-\setbox3\hbox{\hbox to 0pt{\hss\rule[-\cxxSideHt]{\width}{\cxxSideLen}}}%
-\setbox4\hbox{\hbox to 0pt{\rule[-\cxxSideHt]{\width}{\cxxSideLen}\hss}}%
-%
-\setlength{\cxxBoxHt}{\dp1}%
-\addtolength{\cxxBoxHt}{1pt}%
-\setlength{\cxxBoxDp}{\ht2}%
-\addtolength{\cxxBoxDp}{-\width}%
-\addtolength{\cxxBoxDp}{1pt}%
-%
-\setlength{\cxxBoxLen}{\ht3}%
-\addtolength{\cxxBoxLen}{\ht1}%
-%
-\vbox to \cxxBoxLen{%
-\hbox{\unhbox1}%
-\vskip-\cxxBoxHt%
-\hbox{\hskip\width\unhbox3\unhbox0\unhbox4}%
-%\vskip-\ht2%
-\vskip-\cxxBoxDp%
-\hbox{\unhbox2}%
-\vss%
-}%
-}}
-
-%
-% box with id and name [optional width] of size #4
-%
-\newcommand{\sizeBox}[4][3pt]{{%
- \setbox0\hbox{ }%
- \setlength{\cxxSideLen}{#4}%
- \addtolength{\cxxSideLen}{-\wd0}%
- \addtolength{\cxxSideLen}{-\wd0}%
- \addtolength{\cxxSideLen}{-#1}%
- \addtolength{\cxxSideLen}{-#1}%
- \addtolength{\cxxSideLen}{-#1}%
- \addtolength{\cxxSideLen}{-#1}%
- \aBox[#1]{#2}{\hbox to \cxxSideLen{#3}}%
-}}
-
-%
-% centered box with id and name [optional width] of size #4
-%
-\newcommand{\cBox}[4][3pt]{{%
-\setbox0\hbox{\aBox[#1]{#2}{#3}}%
-\ifdim\wd0<#4%
- \sizeBox[#1]{#2}{\hss#3\hss}{#4}%
-\else%
- \setlength{\cxxSideLen}{\wd0}%
- \advance\cxxSideLen by -#4%
- \hskip -0.5\cxxSideLen%
- \unhbox0%
-\fi%
-}}
-
-%
-% right expanding box with id and name [optional width] of size at least #4
-%
-\newcommand{\rBox}[4][3pt]{{%
-\setbox0\hbox{\aBox[#1]{#2}{#3}\hss}%
-\ifdim\wd0>#4%
- \unhbox0%
-\else%
- \sizeBox[#1]{#2}{\hss#3\hss}{#4}%
-\fi%
-}}
-
-%
-% left expanding box with id and name [optional width] of size at least #4
-%
-\newcommand{\lBox}[4][3pt]{{%
-\setbox0\hbox{\aBox[#1]{#2}{#3}\hss}%
-\ifdim\wd0>#4%
- \setlength{\cxxSideLen}{\wd0}%
- \advance\cxxSideLen by -#4%
- \hskip -\cxxSideLen%
- \unhbox0%
-\else%
- \sizeBox[#1]{#2}{\hss#3\hss}{#4}%
-\fi%
-}}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Pagestyle for documentation.
-%
-\newsavebox{\cxxHeadName}
-\newcommand{\ps@docxx}{%
- \renewcommand{\@oddhead}{\headlinetext}%
- \renewcommand{\@evenhead}{\headlinetext}%
- \renewcommand{\@oddfoot}{\footlinetext}%
- \renewcommand{\@evenfoot}{\footlinetext}%
-}
-\newcommand{\makeHeadLine}[2]{
- \global\sbox{\cxxHeadName}{\vbox to 0pt{\vss%
- \hbox to \textwidth{%
- \hbox to 0pt{\strut\hbox to 1cm{\hss}\quad#1\hss}%
- \hfil#2\hfil%
- }%
- \vskip 1pt%
- \hbox to \textwidth{\hrulefill}%
- }}%
-}
-\newcommand{\headlinetext}{\usebox{\cxxHeadName}}
-\providecommand{\cxxCopyright}{%
- \vtop{%
- \hbox to \textwidth{{
- \tiny\sf This page was generated with the help of DOC++
- \hss}}%
- \vskip -20pt
- \hbox to \textwidth{
- \hbox{{\tiny\sf http://www.linuxsupportline.com/~doc++ }}
- \hss}%
- }%
-}
-\def\footlinetext{\hbox to \textwidth{
- \vtop{%
- \hbox to \textwidth{\hrulefill}%
- \vskip -20pt%
- \cxxCopyright%
- }%
- \hss\vtop{\vskip 10pt\hbox{\today\hspace*{3cm}\textrm{\thepage} }}
-}}
-\pagestyle{docxx}
-
-\def\cxxTitle#1#2#3#4#5{\noindent{%
- \thispagestyle{empty}
- \vfill
- \begin{center}
- \Huge\bf
- \catcode`\&=4%
- \catcode`\_=8%
- \def\ 3{\ccverbatim \ccfinish}#1%
- \strut\\
- \def\ 3{\ccverbatim \ccfinish}#2%
- \strut\\
- \def\ 3{\ccverbatim \ccfinish}#3%
- \strut\\
- \end{center}
- \if\cxxVersionStr\empty%
- \else%
- \begin{center}
- \small\sf
- --- Version \cxxVersionStr\ ---
- \end{center}
- \global\def\cxxVersionStr{}
- \fi
- \vfill
- \large
- \begin{center}
- \Large\em
- \def\ 3{\ccverbatim \ccfinish}#4%
- \end{center}
- \vfill
- \if\cxxAuthorStr\empty%
- \else%
- \begin{center}
- \sf\cxxAuthorStr
- \end{center}
- \global\def\cxxAuthorStr{}
- \vfill
- \fi
- \pagebreak
- \makeHeadLine{}{#2}
-}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for contents
-%
-\newcounter{cxxContentsDepth}
-\setcounter{cxxContentsDepth}{0}
-\newdimen\cxxContentsLengthIncr
-\cxxContentsLengthIncr=18pt
-\newdimen\cxxContentsLength
-\cxxContentsLength=\textwidth
-\advance\cxxContentsLength by -\cxxContentsLengthIncr
-
-\makeHeadLine{}{Contents}
-
-\newenvironment{cxxContents}{
- \ifcase \value{cxxContentsDepth}
- \vskip 40pt
- \hbox to \hsize{\hskip 8pt\hskip\cxxContentsLengthIncr\Huge\bf Contents\hss}
- \vskip 40pt
- \bf
- \else % >1
- \rm
- \fi
- \begingroup
- \addtocounter{cxxContentsDepth}{1}
- \advance\cxxContentsLengthIncr by 8pt
- \advance\cxxContentsLength by -\cxxContentsLengthIncr
-}{
- \addtocounter{cxxContentsDepth}{-1}
- \advance\cxxContentsLength by \cxxContentsLengthIncr
- \advance\cxxContentsLengthIncr by -8pt
- \ifcase \value{cxxContentsDepth}
- \vskip 12pt
- \or
- \vskip 9pt
- \else
- \vskip 3pt
- \fi
- \endgroup
-}
-
-\newcommand{\cxxContentsEntry}[3]{{
- \def\emtpty{}
- \def\memo{#3}
- \ifx\memo\empty
- \setbox0\hbox{\parbox[t]{\cxxContentsLength}{\strut#2 \dotfill }}
- \else
- \setbox0\hbox{\parbox[t]{\cxxContentsLength}{\strut#2 --- {\em #3} \dotfill }}
- \fi
- \setbox1\hbox{\vtop{\vskip\dp0\vskip-\ht0\vskip-1.5pt\hbox to 20pt{\hss\rm \pageref{\presentlib.cxx.#1}}}}
- \hbox to \textwidth{%
- \hss\hbox to \cxxContentsLengthIncr{#1\hss}%
- \unhbox0\unhbox1%
- }
-}}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for class graph
-%
-\newdimen\cxxClassGraphShift
-\newdimen\cxxClassGraphLength
-\newdimen\cxxClassGraphHeight
-\newdimen\cxxClassGraphDepth
-\newdimen\cxxClassGraphTotV
-\setlength{\cxxClassGraphLength}{0.23\hsize}
-\setlength{\cxxClassGraphShift}{30pt}
-\setbox0\vbox{\aBox[5pt]{\strut}{\strut}}
-\setlength{\cxxClassGraphHeight}{\ht0}
-\setlength{\cxxClassGraphDepth}{\dp0}
-\addtolength{\cxxClassGraphDepth}{10pt}
-\setlength{\cxxClassGraphTotV}{\dp0}
-\addtolength{\cxxClassGraphTotV}{\ht0}
-
-\newenvironment{cxxInheritance}{
- \par\medskip
- \begingroup
- \newcommand{\cxxCGSpace}[1]{%
- \vtop to \cxxClassGraphTotV{\hbox to \cxxClassGraphShift{%
- \vrule width0pt height \cxxClassGraphHeight depth \cxxClassGraphDepth%
- ##1}}%
- }
- \newcommand{\cxxSlashHline}{%
- \vrule width 0.1\cxxClassGraphShift height 3.5pt depth -3pt%
- \vrule width 0.1\cxxClassGraphShift height 0pt depth 0pt%
- \vrule width 0.1\cxxClassGraphShift height 3.5pt depth -3pt%
- \vrule width 0.1\cxxClassGraphShift height 0pt depth 0pt%
- \vrule width 0.1\cxxClassGraphShift height 3.5pt depth -3pt%
- }
- \newcommand{\cxxDotHline}{%
- \vrule width 0.06\cxxClassGraphShift height 3.5pt depth -3pt%
- \vrule width 0.05\cxxClassGraphShift height 0pt depth 0pt%
- \vrule width 0.06\cxxClassGraphShift height 3.5pt depth -3pt%
- \vrule width 0.05\cxxClassGraphShift height 0pt depth 0pt%
- \vrule width 0.06\cxxClassGraphShift height 3.5pt depth -3pt%
- \vrule width 0.05\cxxClassGraphShift height 0pt depth 0pt%
- \vrule width 0.06\cxxClassGraphShift height 3.5pt depth -3pt%
- \vrule width 0.05\cxxClassGraphShift height 0pt depth 0pt%
- \vrule width 0.06\cxxClassGraphShift height 3.5pt depth -3pt%
- }
- \newcommand{\cxxHline}{%
- \vrule width 0.5\cxxClassGraphShift height 3.5pt depth -3pt%
- }
- \newcommand{\cxxVup}{\hbox to 0pt{\hss%
- \vrule width 0.5pt height \cxxClassGraphHeight depth -3pt%
- \hss}}
- \newcommand{\cxxVlow}{\hbox to 0pt{\hss%
- \vtop to 0pt{\vskip-3pt%
- \hbox{\vrule width 0.5pt height 13pt depth \cxxClassGraphDepth}%
- \vss}%
- \hss}}
- \newcommand{\cxxLinkUp}{\hbox to 0pt{\hss\hskip 0.5\cxxClassGraphShift%
- \raise0.7\cxxClassGraphHeight\hbox to 0pt{\hss\textbf{\symbol{94}}\hss}}}%
- \newcommand{\cxxLinkDown}{\hbox to 0pt{\hss\hskip 0.5\cxxClassGraphShift%
- \raise-0.6\cxxClassGraphHeight\vbox to 0pt{%
- \hbox to 0pt{\hss\textbf{$\lor$}\hss}\vss}}}%
- \newcommand{\cxxLinkLeft}{\hbox to 0pt{\hss\hskip 0.0\cxxClassGraphShift%
- \raise0.0\cxxClassGraphHeight\hbox to 0pt{\textbf{\tt\<}\hss}}}%
- \newcommand{\cxxLinkRight}{\hbox to 0pt{\hss\hskip 1.0\cxxClassGraphShift%
- \raise0.0\cxxClassGraphHeight\hbox to 0pt{\hss\textbf{\tt\>}}}}%
- \newcommand{\cxxInheritanceEntry}[5][]{
- \hbox to \hsize{\hss%
- \vrule width0pt height \cxxClassGraphHeight depth \cxxClassGraphDepth%
- ##2%
- \def\tmp{##1}%
- \ifx\tmp\empty%
- \def\tmp{##5}%
- \ifx\tmp\empty%
- \rBox[1pt]{##3}{##4}{0.24\hsize}%
- \else%
- \lBox[1pt]{##3}{##4}{0.24\hsize}%
- \fi%
- \else%
- \cBox[2pt]{##3}{##4}{0.24\hsize}%
- \fi%
- ##5\hfill%
- }\vskip-1pt
- }
- \newcommand{\cxxNone}{\cxxCGSpace{\hss}}
- \newcommand{\cxxLong}{\cxxCGSpace{\hss\cxxVup\cxxVlow\hss}}
-%
- \newcommand{\cxxPubLeft}{\cxxCGSpace{\cxxHline\cxxVup\cxxVlow\hss}}
- \newcommand{\cxxProLeft}{\cxxCGSpace{\cxxSlashHline\cxxVup\cxxVlow\hss}}
- \newcommand{\cxxPriLeft}{\cxxCGSpace{\cxxDotHline\cxxVup\cxxVlow\hss}}
- \newcommand{\cxxPubleft}{\cxxCGSpace{\cxxHline\cxxVlow\hss}}
- \newcommand{\cxxProleft}{\cxxCGSpace{\cxxSlashHline\cxxVlow\hss}}
- \newcommand{\cxxPrileft}{\cxxCGSpace{\cxxDotHline\cxxVlow\hss}}
- \newcommand{\cxxLastPubLeft}{\cxxCGSpace{\cxxHline%
- \cxxVup\cxxLinkDown\cxxVlow\hss}}
- \newcommand{\cxxLastProLeft}{\cxxCGSpace{\cxxSlashHline%
- \cxxVup\cxxLinkDown\cxxVlow\hss}}
- \newcommand{\cxxLastPriLeft}{\cxxCGSpace{\cxxDotHline%
- \cxxVup\cxxLinkDown\cxxVlow\hss}}
- \newcommand{\cxxLastPubleft}{\cxxCGSpace{\cxxHline%
- \cxxVlow\cxxLinkDown\hss}}
- \newcommand{\cxxLastProleft}{\cxxCGSpace{\cxxSlashHline%
- \cxxVlow\cxxLinkDown\hss}}
- \newcommand{\cxxLastPrileft}{\cxxCGSpace{\cxxDotHline%
- \cxxVlow\cxxLinkDown\hss}}
- \newcommand{\cxxLinkPubLeft}{\cxxCGSpace{\cxxLinkLeft\cxxHline\cxxVup\cxxVlow\hss}}
- \newcommand{\cxxLinkProLeft}{\cxxCGSpace{\cxxLinkLeft\cxxSlashHline%
- \cxxVup\cxxVlow\hss}}
- \newcommand{\cxxLinkPriLeft}{\cxxCGSpace{\cxxLinkLeft\cxxDotHline%
- \cxxVup\cxxVlow\hss}}
- \newcommand{\cxxLinkPubleft}{\cxxCGSpace{\cxxLinkLeft\cxxHline\cxxVlow\hss}}
- \newcommand{\cxxLinkProleft}{\cxxCGSpace{\cxxLinkLeft\cxxSlashHline\cxxVlow\hss}}
- \newcommand{\cxxLinkPrileft}{\cxxCGSpace{\cxxLinkLeft\cxxDotHline\cxxVlow\hss}}
-%
- \newcommand{\cxxPubRight}{\cxxCGSpace{\hss\cxxVup\cxxVlow\cxxHline}}
- \newcommand{\cxxProRight}{\cxxCGSpace{\hss\cxxVup\cxxVlow\cxxSlashHline}}
- \newcommand{\cxxPriRight}{\cxxCGSpace{\hss\cxxVup\cxxVlow\cxxDotHline}}
- \newcommand{\cxxPubright}{\cxxCGSpace{\hss\cxxVup\cxxHline}}
- \newcommand{\cxxProright}{\cxxCGSpace{\hss\cxxVup\cxxSlashHline}}
- \newcommand{\cxxPriright}{\cxxCGSpace{\hss\cxxVup\cxxDotHline}}
-
- \newcommand{\cxxLinkPubRight}{\cxxCGSpace{\hss\cxxVup\cxxVlow\cxxHline\cxxLinkRight}}
- \newcommand{\cxxLinkProRight}{\cxxCGSpace{\hss\cxxVup\cxxVlow%
- \cxxSlashHline\cxxLinkRight}}
- \newcommand{\cxxLinkPriRight}{\cxxCGSpace{\hss\cxxVup\cxxVlow%
- \cxxDotHline\cxxLinkRight}}
- \newcommand{\cxxLinkPubright}{\cxxCGSpace{\hss\cxxVup\cxxHline\cxxLinkRight}}
- \newcommand{\cxxLinkProright}{\cxxCGSpace{\hss\cxxVup\cxxSlashHline\cxxLinkRight}}
- \newcommand{\cxxLinkPriright}{\cxxCGSpace{\hss\cxxVup\cxxDotHline\cxxLinkRight}}
-
- \newcommand{\cxxFirstPubRight}{\cxxCGSpace{\hss\cxxVup\cxxLinkUp\cxxVlow\cxxHline}}
- \newcommand{\cxxFirstProRight}{\cxxCGSpace{\hss\cxxVup\cxxLinkUp\cxxVlow%
- \cxxSlashHline}}
- \newcommand{\cxxFirstPriRight}{\cxxCGSpace{\hss\cxxVup\cxxLinkUp\cxxVlow\cxxDotHline}}
- \newcommand{\cxxFirstPubright}{\cxxCGSpace{\hss\cxxVup\cxxLinkUp\cxxHline}}
- \newcommand{\cxxFirstProright}{\cxxCGSpace{\hss\cxxVup\cxxLinkUp\cxxSlashHline}}
- \newcommand{\cxxFirstPriright}{\cxxCGSpace{\hss\cxxVup\cxxLinkUp\cxxDotHline}}
-}{
- \endgroup
-}
-
-\newenvironment{cxxClassGraph}{
- \begin{cxxInheritance}
- \newcommand{\cxxClassGraphEntry}[4]{
- \hbox to \hsize{\hss%
- \vrule width0pt height \cxxClassGraphHeight depth \cxxClassGraphDepth%
- ##1%
- \def\tmp{##4}%
- \rBox[1pt]{##2}{##3}{0.24\hsize}%
- ##4%
- \hskip\cxxClassGraphShift\dotfill%
- \hbox to \cxxClassGraphShift{\hss\pageref{\presentlib.cxx.##2}}%
- }\vskip-1pt
- }
- \newcommand{\cxxClassGraphEntryUnknownPackage}[3]{
- \hbox to \hsize{\hss%
- \vrule width0pt height \cxxClassGraphHeight depth \cxxClassGraphDepth%
- ##1%
- \def\tmp{##3}%
- \rBox[1pt]{}{##2}{0.24\hsize}%
- ##3%
- \hskip\cxxClassGraphShift\hfill%
- }\vskip-1pt
- }
- \clearpage
- \pagebreak\strut
- \makeHeadLine{}{Class Graph}
- \vskip 20pt
- \hbox to \hsize{\Huge\bf \quad Class Graph\hss}
- \vskip 40pt
-}
-{
- \end{cxxInheritance}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for generic manual entries
-% arguments are:
-% #1 type
-% #2 name
-% #3 args
-% #4 memo
-% #5 number
-%
-\newdimen\cxxgenericstart
-\cxxgenericstart=\labelwidth
-\advance\cxxgenericstart by \labelsep
-\newdimen\cxxgenericwidth
-\cxxgenericwidth=\textwidth
-\advance\cxxgenericwidth by -\cxxgenericstart
-
-\newcounter{cxxDepth}
-\setcounter{cxxDepth}{0}
-
-\newlength{\cxxSize}
-\newenvironment{cxxgeneric}[5]{
-%
-% some local definitions
-%
- \def\empty{}
- \def\type{#1}
- \def\args{#3}
- \def\memo{#4}
- \def\id {#5}
-%
-% pagebreak ?
-%
-\ifcase \value{cxxDepth}
- \clearpage % 0
- \pagebreak
- \makeHeadLine{#5}{#2}
- \setlength{\cxxSize}{2pt}
-\or % 1
- \strut\bigskip\bigskip\goodbreak%
- \setlength{\cxxSize}{1pt}
-\else % >2
- \strut\bigskip\bigskip\goodbreak%
- \setlength{\cxxSize}{0.5pt}
-\fi
-\addtocounter{cxxDepth}{1}
-%
-% write synopsis
-%
-\setbox0\hbox{ }%
-\setbox1\hbox{\strut\large #1 {\bf#2} }%
-\setbox3\hbox{\strut\large #1 {\bf#2} #3}%
-%
-% box with id and name [optional width] over entire page width
-%
-\setlength{\cxxSideLen}{\hsize}%
-\addtolength{\cxxSideLen}{-4\cxxSize}%
-\addtolength{\cxxSideLen}{-2\wd0}%
-\setlength{\cxxTitleLen}{\cxxSideLen}%
-\addtolength{\cxxTitleLen}{-8\wd0}%
-\hbox{\aBox[\cxxSize]{\id}{\vbox{\vskip 1.5\parskip%
- \hbox to \cxxSideLen{\strut%
- \hbox to 4\wd0{}%
- \ifdim\wd3<\cxxTitleLen%
- \parbox[b]{\cxxTitleLen}{%
- \begin{raggedright}
- \noindent\large #1 {\bf#2} #3
- \end{raggedright}
- }
- \else%
- \ifdim\wd1>0.7\cxxTitleLen%
- \parbox[b]{\cxxTitleLen}{%
- \begin{raggedright}
- \noindent\large #1 {\bf#2} #3
- \end{raggedright}
- }
- \else%
- \addtolength{\cxxTitleLen}{-\wd1}%
- \unhbox1%
- \parbox[t]{\cxxTitleLen}{%
- \advance\lineskip 7pt%
- \begin{raggedright}
- \noindent\large\strut #3
- \end{raggedright}
- }
- \fi%
- \fi%
- \hss\strut%
- }\vskip\parskip}%
-}}
-% \parbox[b]{\cxxSideLen}{\begingroup
-% \catcode`\&=12%
-% \catcode`\_=12%
-% \begin{flushleft}
-% \quad\large%
-% \ifx\type\empty
-% \ifx\args\empty
-% \strut{\bf #2}\\
-% \else
-% \strut{\bf #2}\ \args
-% \fi
-% \else
-% \strut\type\ {\bf #2}\ \args
-% \fi
-% \end{flushleft}
-% \endgroup}}}%
-\ifx\memo\empty\else
- \vskip 10pt
- \begin{flushright}
- \it\memo
- \end{flushright}
-\fi
-\label{\presentlib.cxx.\id}
-\begingroup
-\def\cxxExceptionsStr{}
-\def\cxxParameterStr{}
-\def\cxxReturnStr{}
-\def\cxxSeeStr{}
-\def\cxxAuthorStr{}
-\def\cxxVersionStr{}
-\def\cxxFileStr{}
-\def\cxxExceptions##1{\def\cxxExceptionsStr{##1}}
-\def\cxxParameter##1{\def\cxxParameterStr{##1}}
-\def\cxxReturn##1{\def\cxxReturnStr{##1}}
-\def\cxxSee##1{\def\cxxSeeStr{##1}}
-\def\cxxAuthor##1{\def\cxxAuthorStr{##1}}
-\def\cxxVersion##1{\def\cxxVersionStr{##1}}
-\def\cxxFile##1{\def\cxxFileStr{##1}}
-}{
-\endgroup
-\addtocounter{cxxDepth}{-1}
-}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for function manual entries
-% arguments are:
-% #1 type
-% #2 name
-% #3 args
-% #4 memo
-% #5 number
-%
-\newenvironment{cxxfunction}[5]{
-\begin{cxxgeneric}{#1}{#2}{#3}{#4}{#5}
-\renewenvironment{cxxnames}{\begin{cxxlist}{Arguments}}{\end{cxxlist}}
-}{
-\end{cxxgeneric}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for manual entries
-% arguments are:
-% #1 type
-% #2 name
-% #3 args
-% #4 memo
-% #5 number
-%
-\newenvironment{cxxentry}[5]{
-\begin{cxxgeneric}{#1}{#2}{#3}{#4}{#5}}{\end{cxxgeneric}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for union manual entries
-% arguments are:
-% #1 type
-% #2 name
-% #3 args
-% #4 memo
-% #5 number
-%
-\newenvironment{cxxunion}[5]{
-\begin{cxxgeneric}{#1}{#2}{#3}{#4}{#5}
-\renewenvironment{cxxnames}{\begin{cxxlist}{Members}}{\end{cxxlist}}
-}{
-\end{cxxgeneric}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for typedef manual entries
-% arguments are:
-% #1 type
-% #2 name
-% #3 args
-% #4 memo
-% #5 number
-%
-\newenvironment{cxxtypedef}[5]{
-\begin{cxxgeneric}{#1}{#2}{}{#4}{#5}
-\renewenvironment{cxxnames}{\begin{cxxlist}{Members}}{\end{cxxlist}}
-}{
-\end{cxxgeneric}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for macro manual entries
-% arguments are:
-% #1 type
-% #2 name
-% #3 args
-% #4 memo
-% #5 number
-%
-\newenvironment{cxxmacro}[5]{
-\begin{cxxgeneric}{\#define}{#2}{#3}{#4}{#5}}{\end{cxxgeneric}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for class manual entries
-% arguments are:
-% #1 type
-% #2 name
-% #3 args
-% #4 memo
-% #5 number
-%
-\newenvironment{cxxclass}[5]{
-\begin{cxxgeneric}{#1}{#2}{#3}{#4}{#5}}{\end{cxxgeneric}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for namespace manual entries
-% arguments are:
-% #1 type
-% #2 name
-% #3 args
-% #4 memo
-% #5 number
-%
-\newenvironment{cxxnamespace}[5]{
-\begin{cxxgeneric}{#1}{#2}{#3}{#4}{#5}}{\end{cxxgeneric}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for interface manual entries
-% arguments are:
-% #1 type
-% #2 name
-% #3 args
-% #4 memo
-% #5 number
-%
-\newenvironment{cxxinterface}[5]{
-\begin{cxxgeneric}{#1}{#2}{#3}{#4}{#5}}{\end{cxxgeneric}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for variable manual entries
-% arguments are:
-% #1 type
-% #2 name
-% #3 args
-% #4 memo
-% #5 number
-%
-\newenvironment{cxxvariable}[5]{
-\begin{cxxgeneric}{#1}{#2}{#3}{#4}{#5}
-\renewenvironment{cxxnames}{\begin{cxxlist}{Names}}{\end{cxxlist}}
-}{
-\end{cxxgeneric}
-}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for documentation
-%
-\newenvironment{cxxdocumentation}{
-%
-% switch on special characters for documentation section
-%
-\begingroup
-\catcode`\&=4
-\catcode`\_=8
-}{
-\endgroup
-}
-
-\newenvironment{cxxdoc}{
-%
-% switch on special characters for documentation section
-%
-\begin{cxxdocumentation}
-\strut\\\noindent%
-}{
-\smallskip
-\def\empty{}%
-\ifx\cxxReturnStr\empty\else
- \noindent\hbox to 0.3\textwidth{{\bf Return Value:}\hss}%
- \parbox[t]{0.7\textwidth}{\cxxReturnStr}\\
-\fi
-\ifx\cxxParameterStr\empty\else
- \noindent\hbox to 0.3\textwidth{{\bf Parameters:}\hss}%
- \parbox[t]{0.7\textwidth}{\cxxParameterStr}\\
-\fi
-\ifx\cxxExceptionsStr\empty\else
- \noindent\hbox to 0.3\textwidth{{\bf Exceptions:}\hss}%
- \parbox[t]{0.7\textwidth}{\cxxExceptionsStr}\\
-\fi
-\ifx\cxxSeeStr\empty\else
- \noindent\hbox to 0.3\textwidth{{\bf See Also:}\hss}%
- \parbox[t]{0.7\textwidth}{\cxxSeeStr}\\
-\fi
-\ifx\cxxAuthorStr\empty\else
- \noindent\hbox to 0.3\textwidth{{\bf Author:}\hss}%
- \parbox[t]{0.7\textwidth}{\cxxAuthorStr}\\
-\fi
-\ifx\cxxVersionStr\empty\else
- \noindent\hbox to 0.3\textwidth{{\bf Version:}\hss}%
- \parbox[t]{0.7\textwidth}{\cxxVersionStr}\\
-\fi
-\ifx\cxxFileStr\empty\else
- \noindent\hbox to 0.3\textwidth{{\bf File:}\hss}%
- \parbox[t]{0.7\textwidth}{\cxxFileStr}\\
-\fi
-\end{cxxdocumentation}
-}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% environment for commented listing
-% arguments are:
-% #1 Section title
-%
-\newenvironment{cxximplementation}[1]{
-\goodbreak
-\begin{cxxdocumentation}
-}{
-\end{cxxdocumentation}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\cxxCodeLine#1{
-\strut\hbox to 20pt{\tiny\hss #1}\small
-%\advance\leftmargin by 20pt
-%\advance\textwidth by -20pt
-\ccverbatim \parskip=0pt \cxxCodeFinish}
-{\catcode`\\ 4=0 \ 4catcode`\ 4\=12
-\ 4gdef\ 4cxxCodeFinish#1\ 3{\ 4hbox{#1}\ 4endgroup}}
+++ /dev/null
-\end{document}
-
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: t
-%%% End:
+++ /dev/null
-\documentclass{report}
-\usepackage{a4wide}
-\usepackage{graphicx}
-\usepackage{times}
-%\def\presentlib{}
-\usepackage{docxx}
-\setcounter{tocdepth}{0}
-\begin{document}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%titlepage
-
-% this is what docxx.sty uses for headlines. disable
-% it for the titlepage
-\sbox{\cxxHeadName}{}
-
-\vspace*{3cm}
-
-\begin{center}
- \textbf{\texttt{\Huge deal.II}}
-
-
-\vspace*{1cm}
-
-\textbf{\huge Differential Equations Analysis Library}
-
-\vspace*{1cm}
-
-\textbf{\LARGE Technical Reference}
-
-\vspace*{1cm}
-
- {\Large \textsf{base}, \textsf{lac} and \texttt{deal.II} libraries}
-
-\vspace*{1.5cm}
-
-\includegraphics[width=.8\textwidth]{../../pictures/deal.eps}
-\end{center}
-
-
-\tableofcontents
+++ /dev/null
-#!/usr/local/bin/perl
-
-# Update Postgres database entries from kdoc sources
-
-use DBI;
-
-$db = DBI->connect("DBI:Pg:dbname=deal",undef,undef);
-
-die $DBI::errstr if (!$db);
-
-print "Connected\n";
-
-$db->do("UPDATE classes SET persistent=FALSE;")
- || die $db->errstr;
-
-while(<>)
-{
- next unless(/=/);
- next if (/\#/);
- s/=.*//g;
- chop;
- print $_, " ";
-
- # Try to find class name
-
- $sth = $db->prepare("UPDATE classes set persistent=TRUE where name = '$_';")
- || die $db->errstr;
- $sth->execute || die $sth->errstr;
-
- $rows = $sth->rows;
- $sth->finish;
-
- # Insert name if it did not exist.
-
- if ($rows == 0)
- {
- print "insert";
-
- $db->do("INSERT INTO classes ( name, display, persistent, manually ) values ( '$_', TRUE, TRUE, FALSE);")|| die $db->errstr;;
- }
- print "\n";
-}
+++ /dev/null
-#!/usr/bin/perl
-#
-# Perl program to transform the 'cvs log' output to HTML
-#
-# Perl program to transform the 'cvs log' output to HTML.
-# The HTML output will show the revision log history,
-# differences between versions and enable a flexible
-# configuration of the amount of information the user
-# like to see from the CVS repository.
-# cvs2html can be used for any type of cvs archive.
-
-#
-# ** Note that the first line might be wrong depending **
-# ** on the location of your perl program. **
-# ** The program requires: **
-# ** perl version 5.003 or newer **
-#
-# cvs2html should run on any Unix compatible machine
-# with the above programs.
-# Test machine: Linux RedHat 7.2 with Perl 5.6.0
-#
-# Usage :
-#
-# type cvs2html with no arguments to display basic help
-# or type cvs2html -h to get more help
-
-# Changelog
-# Ver Date Who did it What happened
-# -------------------------------------------------------------------------
-# 1.94 2002-06-25 Magnus Ahlman Added a option argument -R CVS Reposity
-# specified in the cvsweb.conf
-# so you can integrate with cvsweb
-#
-# 1.93 2002-05-25 John Hardin Patch against freezing problem
-# with cvs log would report "nothing
-# known about"
-#
-# 1.92 2002-03-25 Anna Jonna Typos removed
-# Armannsdottir
-#
-# 1.91 2002-01-13 Jacob Sparre Andersen Major overhaul of the code
-# and Peter Toft in order to generate HTML 4.0
-# compliant code. Many bugs corrected.
-#
-# 1.90 2001-09-07 Stefan Kost A few "cosmetical" corrections.
-#
-# 1.89 2001-09-06 Stefan Kost * "back to main" links in chronofile
-# only if frames==1
-# * subs html_header/html_footer
-# * $cvs2html_diff is now called $diffdirname
-# (in preparation for more subdirs)
-# and defaults to just "diff"
-# * sub cvsrootinfo (with extended infos)
-# * the ususal cosmetical fixes here and there
-# * both halfs of diff output are now
-# delimited by a small gap
-# * entries in __rf-files are now sorted
-#
-# 1.88 2001-09-04 Peter Toft Kim Schulz means that that
-# text in line 748 (previously 744)
-# was adequite. Updated.
-#
-# 1.87 2001-08-30 Laurent Besson Bagged two bugs!!
-# Stefan Kost * fixed empty output
-# * copyright footer looks the same
-# for all pages
-# * chrono-file back-links go to
-# "top" frame
-#
-# 1.86 2001-08-26 Stefan Kost Handling of verbosity level update
-#
-# 1.85 2001-08-24 Stefan Kost * handles "cvs connection refused"
-# * find_alldirs, find_subdirs do not
-# follow symlinks
-# * new option -V <verbosity level>
-# * cleaned up code indentation
-# * more comments
-#
-# 1.84 2001-07-14 Peter Toft Added links in the cronological file
-# to the main page and removed a
-# debug-printout statement.
-#
-# 1.83 2001-06-28 Grzegorz Pawelczak Patch to handle branches (fix)
-#
-# 1.82 2001-06-22 Grzegorz Pawelczak Patch to handle branches
-#
-# 1.81 2001-06-18 David Carson Minor update - added support
-# for underscore in author-field
-#
-# 1.80 2001-05-31 Peter V. Pretsch Fixed the problem with missing
-# right frames
-#
-# 1.79 2000-12-27 Peter Toft Peter made error in the Changelog :-)
-#
-# 1.78 2000-12-27 Peter Toft Error in making diff-directories
-# corrected. Example included in help-
-# description.
-# Changed mkdir to perl-command.
-#
-# 1.77 2000-12-15 Peter Toft Hack to avoid generating the
-# same diff-files over and over again.
-# Renaming of the diff-files.
-# Dumping the diff-files in a
-# separate subdir.
-#
-# 1.76 2000-11-30 Jody Lewis Typo; The parent links in the
-# lower left frame were incorrect
-#
-# 1.75 2000-11-04 Kirby Vandivort URL of cvs2html changed
-#
-# 1.73 2000-11-02 Peter Toft Clean up - deleted an old status line
-#
-# 1.72 2000-10-28 Peter Toft If basename() or dirname() adds
-# a \n code, then cvs2html malfunctions
-# This should solve the problem.
-#
-# 1.71 2000-10-26 Peter Toft Minor clean-up
-#
-# 1.70 2000-10-26 Jon Berndt Documentation problem -L option
-# Peter Toft -L/-E option was not working
-# Redefined -L and dumped the -E option
-#
-# 1.69 2000-09-29 Robert Merkle Support for users with 0-9
-# in name
-#
-# 1.68 2000-09-20 Wolfgang Bangerth Patch to avoid HTML syntax
-# problems and link error.
-#
-# 1.67 2000-08-21 Kirby Vandivort Update to cvs2html to fix html
-# markup display in cvs comments
-#
-# 1.66 2000-08-11 Kirby Vandivort Added support for an
-# parameter -P controlled location
-# of cvs
-#
-# 1.65 2000-06-24 Peter Toft Added support for filenames
-# containing whitespaces -
-# requested by John Stone
-#
-# 1.64 2000-06-11 Peter Toft Better documentation in the start
-# of the program
-#
-# ---- ---------- -------------------- -------------------------------
-#
-# This program is protected by the GPL, and all modifications of
-# general interest can be emailed to Peter Toft <pto@sslug.dk>
-#
-# The GPL can be found at http://www.gnu.org/copyleft/gpl.html
-#
-# Other people that have contributed directly or indirectly to cvs2html
-# Henner Zeller <zeller@think.de>
-# Henning Niss <hniss@diku.dk>
-# Henrik Carlquist <Henrik.Carlqvist@dynamics.saab.se>
-# Tim Bradshaw <tfb@cley.com>
-# David Miller
-# David Carson <DCarson@extremenetworks.com>
-# Finn Aarup Nielsen <fn@imm.dtu.dk>
-# Michael Krause <mkrause@teuto.net>
-# Jim Phillips <jim@ks.uiuc.edu>
-# Jon S. Berndt <jsb@hal-pc.org>
-# Edward S. Marshall <emarshal@logic.net>
-# Curtis L. Olson <curt@me.umn.edu>
-# Aubrey Jaffer <jaffer@colorage.com>
-# Mark Cooke <mpc@star.sr.bham.ac.uk>
-# Carlo Wood <carlo@runaway.xs4all.nl>
-# Kirby Vandivort <kvandivo@ks.uiuc.edu>
-# Dag Brück <dag@Dynasim.se>
-# Wolfgang Bangerth <wolfgang.bangerth@iwr.uni-heidelberg.de>
-# Robert Merkle <r.merkle@siep.shell.com>
-# Jody Lewis <jody.lewis@philips.com>
-# Peter V. Pretsch <pvp@pe.dk>
-# Grzegorz Pawelczak <gpawel@adlex.com>
-# Stefan Kost <st_kost@gmx.de>
-# Anna Jonna Armannsdottir <a@sleepy.dk>
-# John Hardin <johnh@aproposretail.com>
-# Magnus Ahlman <magnus.ahlman@eds.com>
-
-#
-# Copyright under GPL 1997 - 2002 by
-# Peter Toft (pto@sslug.dk) + the persons above
-#
-# Join the cvs2html mailing list <sslug-cvs2html@sslug.dk>
-# by sending an email to <sslug-cvs2html-subscribe@sslug.dk>,
-# the contents of this mails is of no matter.
-# You will receive an email than you need to reply to.
-#
-# If you want to unsubscribe from the list - write a mail to
-# <sslug-cvs2html-unsubscribe@sslug.dk>, and reply to the mail you get.
-# In case of problems contact <pto@sslug.dk>
-#
-# The URL of cvs2html is:
-
-$URL = "http://cvs.sslug.dk/cvs2html";
-
-$cvs2html_version='$Id$';
-
-require 'getopts.pl';
-require 'ctime.pl';
-
-use File::Basename;
-use File::Find;
-
-if($cvs2html_version =~ /^\$Id\: (\w+?),v (\d+?\.\d+?) /i) {
- $version=$2;
-}
-else {
- $version="?.?";
-}
-
-# get options from cfgfile
-
-# now get the options. The ones with a colon means the an extra argument follows.
-# all options given will override the ones specified in cfgfile
-&Getopts('R:r:abc:C:d:efhkl:n:N:s:vo:D:E:L:O:w:i:pP:V:');
-
-###############################################################
-# graphic related default variables that you can change
-###############################################################
-
-# Default width of the left frame in pixels. Also changed by -w option
-$leftframewidth = 150;
-
-# Default splitratio of the left frame in percent. Also changed by -s option
-$leftsplitratio = "70%";
-
-# Default cell color
-$cellcolor = "#c7c7c7";
-
-# Default filename cell color
-$filenamecellcolor = "#7777FF";
-
-# Default background color gray
-$backcolor = "#AAAAAA";
-
-# Default background for the difference cells
-$differencebackground = "#BBBBBB";
-
-# Colors and font to show the diff type of code changes when using -a
-$diffcolorHeading ='#999999'; # color of 'Line'-heading of each diffed file
-$diffcolorEmpty ='#999999'; # color of 'empty' lines
-$diffcolorNormal ='#BBBBBB'; # color of 'unchanged' ('equal') lines
-$diffcolorRemove ='#FF9999'; # Removed line(s) (left) (empty)
-$diffcolorChange ='#99FF99'; # Added line(s) (empty) (right)
-$diffcolorDarkChange ='#77AA77'; # lines, which are empty on the left/right
-$diffcolorAdd ='#AAAAFF'; # Changed line(s) ( both )
-# just uncomment if you don't want any font-changes
-#$difffontface ="Arial,Helvetica";
-$difffontface ="Courier,Courier New";
-$difffontsize ="-1";
-
-###############################################################
-# other default variables that you can change
-###############################################################
-
-# Set $kkon ="-kk" if you permanently want to hide keyword substitutions
-# when making diff-files.
-$kkon = "";
-
-# Set $whitespace = "-w" if you want to ignore white space changes
-# in diff
-$whitespace="-w";
-
-# The timedifference in seconds which we consider as the same
-# commit time
-$commit_smalltimedifference = 10;
-
-# default CVS location (default assumes in path)
-$cvsLocation="cvs";
-
-# warnings if omitting generating of diff-files
-$diffwarning = 0;
-
-# sub dir name for diff-files
-$diffdirname = "diff";
-
-###############################################################
-# Subfunctions
-###############################################################
-
-#html helper
-sub html_footer {
- my ($stradd)=@_;
-
- if(!defined($stradd)){ $stradd=""; }
- (undef,$min,$hour,$mday,$mon,$year,undef,undef,undef) = localtime(time);
- $struser=getlogin;
- $strdate=sprintf "%4d-%02d-%02d %2d:%02d",$year+1900, $mon+1, $mday,$hour,$min;
-
- $ret="<hr>\n";
- $ret.="<center><font size=\"-1\">\n";
- $ret.="File made using version $version of ";
- $ret.="<a href=\"$URL\" target=\"_new\">cvs2html</a> by ";
- $ret.="$struser at $strdate $revisionlimitertext $stradd";
- $ret.="</font></center>\n";
- return($ret);
-}
-
-sub html_header {
- my ($title)=@_;
-
- $ret="<\!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n
-<html>\n<head>\n<title>";
- if(defined($title) && length($title)>0) {
- $ret.="$title";
- }
- else {
- $ret.="cvs2html";
- }
- $ret.="</title>\n</head>\n";
- if ($opt_i) {
- $ret.="<body background=\"$opt_i\">\n";
- } else {
- $ret.="<body bgcolor=\"$backcolor\">\n";
- }
- if(defined($title) && length($title)>0) {
- $ret.="<h2 align=\"center\">$title</h2>\n<hr>\n";
- }
- return($ret);
-}
-
-sub cvsrootinfo {
- # the two tables are needed for proper layout
- $ret="<table border=\"0\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\" bgcolor=\"$cellcolor\" width=\"100%\">\n";
- $ret.="<tr>\n";
- $ret.="<td width=\"15%\" align=\"right\"><b>Protocol:</b></td><td width=\"35%\">$protocol</td>\n";
- $ret.="<td width=\"15%\" align=\"right\"><b> User:</b></td><td width=\"35%\">$cvsuser</td>\n";
- $ret.="</tr>\n<tr>\n";
- $ret.="<td width=\"15%\" align=\"right\"><b> Machine:</b></td><td width=\"35%\">$machine</td>\n";
- $ret.="<td width=\"15%\" align=\"right\"><b> CVSROOT:</b></td><td width=\"35%\">$cvsroot</td>\n";
- $ret.="</tr>\n";
- $ret.="</table><hr>\n";
- return($ret);
-}
-
-#function to help sort
-sub sorter{
- $chronotimesince0[$a] <=> $chronotimesince0[$b];
-}
-
-#Function to close the main file
-sub closemainfile {
- # Print date & copyright info in the last part of the HTML document
- $stradd="";
- if ($cutdate>"00000000") {
- $stradd.=" leaving out any log message prior to $cutyearformat2";
- }
- if (($opt_n>0) && ($opt_a)) {
- $stradd.=" and only showing the $opt_n latest version differences";
- }
- print OUTFILE html_footer($stradd);
-
- # Lets wrap up OUTFILE
- print OUTFILE "</body>\n";
- print OUTFILE "</html>\n";
-
- close(OUTFILE);
-}
-
-# Function to show how the function is used. Called if no options are given.
-sub shorthelp {
- print "*** CVS2HTML ***\nA Perl program to transform the 'cvs log' output to HTML.\n";
-
- print "Usage of cvs2html\n\n";
- print "cvs2html [-a [-b][-k]] [-n NUMDIF] [-l/-L FTPHOME]\n";
- print " [-e] [-f] [-d \"MMM DD [YYYY]\"] [-D DD] [-i IMAGE] [-h]\n";
- print " [-v] [-w FRAMEWIDTH] [-s PERCENTAGE] [-N MAXCHRONO]\n";
- print " [-rREV1:REV2] [-c/-C CFILENAME] -O/o HTMLNAME\n";
- print " [-P CVSPATH] [-V VERBOSITY]\n [-R CVSWEB ROOT ";
-
- print "\n\nTry: cvs2html -help\n";
-}
-
-sub showhelp {
- print "\n";
-
- print " cvs2html -O foo\n";
- print " outputs html files foo.html and alike for each subdirectory\n";
- print " Note that if foo is a directory the files are stored there\n";
- print " using the name of the repository as the base filename.\n";
- print "\n";
-
- print " cvs2html -O foo -v\n";
- print " which outputs a html file to the file foo.html including\n";
- print " information about the CVSROOT setting.\n";
- print "\n";
-
- print " Using -o instead of -O, frames will be made for easy control.\n";
- print "\n";
-
- print " If -e is specified the log messages are printed\n";
- print " in courier (non-proportional) font.\n";
- print "\n";
-
- print " If -c CFILENAME is specified a chronological sorted list of all log\n";
- print " entries will be saved in CFILENAME (CFILENAME is a full html filename)\n";
- print " Use -C CFILENAME instead of -c to do reverse sort of the log file.\n";
- print " Add -p to include cvs log information into the CFILENAME.\n\n";
-
- print " If -a is specified additional fields and files are generated\n";
- print " containing differences betweeen versions\n";
- print " in a xdiff-like side by side manner.\n";
- print " The -n NUMDIF will only output the lastest NUMDIF diff files.\n";
- print " The -N MAXCHRONO will only show the last MAXCHRONO file changes\n";
- print " in the chronological list of changes.\n";
- print "\n";
-
- print " if -b is specified in addition to diff-mode\n";
- print " spcaces are used as breakpoint to wrap the text\n";
- print " so the two columns don't exceed the total width\n";
- print " If -k is specified in addition to diff-mode\n";
- print " changes in lines caused by CVS-keyword substition\n";
- print " are ignored.\n";
-
- print " If an option -l ftphome is given links to the files relative\n";
- print " to the URL ftphome is made. Use -L ftphtmlhome to do the same as\n";
- print " -l, but substitutes file extension with .html\n";
- print "\n";
-
- print " If an option -d \"month day year\" is given (year optional) any\n";
- print " log message prior to that date is omitted. The three first \n";
- print " letters of the name of the month is used, e.g., Jun 5.\n";
- print " A -D DD option will drop any log DD days ago or earlier\n";
- print "\n";
-
- print " If an option -rREVISIONTAG1:REVISIONTAG2 is given, then\n";
- print " the log messages are only shown between those revision\n";
- print " REVISIONTAG1 and REVISIONTAG2. If a file was not tagged\n";
- print " then the whole revision story of the file will be shown.\n";
- print "\n";
-
- print " If -o and -w FRAMEWIDTH is used the left frame will have\n";
- print " FRAMEWIDTH pixels. Add -f when using the -o option to \n";
- print " generate individual log files for each file.\n";
- print " Use -s PERCENTAGE to set width of the fraction of the left\n";
- print " bar in percentage.\n";
- print "\n";
-
- print " Use -i IMAGE to replace the background with file specified as IMAGE\n";
- print "\n";
-
- print " Use -P CVSPATH to specify an explicit location cvs. The\n";
- print " default value is simply 'cvs', which means that cvs is in your\n";
- print " path.\n";
- print "\n";
-
- print " Use -V VERBOSITY to make cvs2html report what it is doing. A\n";
- print " value of 0 means be quiet and bigger numbers means more output.\n";
- print " This is especially useful, when something went wrong.\n";
- print "\n";
-
- print " Use -R CVSWEBROOT to make reports intergrated with cvsweb.\n";
- print " The argument should be the symbolic_name in cvsweb.conf.\n";
-
- print " The html file also contains anchors, if a file foo.html\n";
- print " containing a file e.g., foofoo.m is generated then it is\n";
- print " possible to search http://CORRECT_URL/foo.html#foofoo.m\n";
- print "\n";
-
- print " Example :\n";
- print " cvs2html -l http://cvs.sslug.dk/linuxbog -f -p \\\\ \n";
- print " -o cvs2html/index.html -v -a -b -n 6 -C crono.html\n";
- print " makes cvs2html/ with individual log data for each file \n";
- print " with links relative to \"http://cvs.sslug.dk/linuxbog\"\n";
- print " and creates a chronological log file \"crono.html\".\n";
- print "\n";
-
- print " cvs2html with no arguments displays this help\n";
- print " Peter Toft et al, Technical University of Denmark, 1997\n";
- exit(0);
-}
-
-# This function will set the date after which the log info is shown.
-# Any log info before the date is NOT shown.
-sub date_control {
- %months= (
- 'Jan','01',
- 'Feb','02',
- 'Mar','03',
- 'Apr','04',
- 'May','05',
- 'Jun','06',
- 'Jul','07',
- 'Aug','08',
- 'Sep','09',
- 'Oct','10',
- 'Nov','11',
- 'Dec','12',
- );
-
-
- &ctime(time) =~/^(\w+) (\w+) (\d+) (\d+):(\d+):(\d+) (\d+)$/;
-
- $currentyear=$7;
-
- if (($opt_d)||($opt_D)) {
- if ($opt_d) {
- ($cutmonthtxt,$cutdatetxt,$cutyeartxt)= $opt_d =~ /^(\w+) (\d+) (\d+)$/;
- }
- if ($opt_D) {
- $cd = localtime(time-3600*24*$opt_D);
- $cd =~ /^(\w+) (\w+)[ ]*(\d+)[ ]*(\d+):(\d+):(\d+) (\d+)$/;
- $cutyeartxt = $7;
- $cutmonthtxt = $2;
- $cutdatetxt = $3;
- }
-
- if (length($cutyeartxt)==0) {
- ($cutmonthtxt,$cutdatetxt)= $opt_d =~ /^(\w+) (\d+)$/;
- $cutyeartxt=$currentyear;
- }
- $cutyearformat2="$cutmonthtxt $cutdatetxt $cutyeartxt";
-
- if (length($cutdatetxt)==1) {
- $cutdatetxt="0".$cutdatetxt;
- }
- $m=$months{$cutmonthtxt};
- if (length($m)==0) {
- print "The option -d \"month day [year]\" was used with a wrong month ($cutmonthtxt).\n";
- print "First three letters is used\n";
- exit(0);
- }
- $cutdate = $cutyeartxt.$m.$cutdatetxt;
- }
- else {
- $cutdate = "00000000";
- }
- # Anything before year 0000 - I dont think so...........
-}
-
-# Function to read the next line from cvslogarray
-sub getnextline {
- $lineno++;
- if($lineno<=scalar(@cvslogarray)) {
- # DEBUG
- #print STDOUT " cvslogarray[$lineno]=$cvslogarray[$lineno]";
- # DEBUG
- return($cvslogarray[$lineno]);
- }
- else {
- return(undef);
- }
-}
-
-sub flush_diff_rows ($$$$) {
- local $j;
- my ($leftColRef,$rightColRef,$leftRow,$rightRow) = @_;
- if ($state eq "PreChangeRemove") { # we just got remove-lines before
- for ($j = 0 ; $j < $leftRow; $j++) {
- print DIFFFILE "<tr><td bgcolor=\"$diffcolorRemove\">@$leftColRef[$j]</td>";
- print DIFFFILE "<td bgcolor=\"$backcolor\"> </td>";
- print DIFFFILE "<td bgcolor=\"$diffcolorEmpty\"> </td></tr>\n";
- }
- }
- elsif ($state eq "PreChange") { # state eq "PreChange"
- # we got removes with subsequent adds
- for ($j = 0; $j < $leftRow || $j < $rightRow ; $j++) { # dump out both cols
- print DIFFFILE "<tr>";
- if ($j < $leftRow) { print DIFFFILE "<td bgcolor=\"$diffcolorChange\">@$leftColRef[$j]</td>"; }
- else { print DIFFFILE "<td bgcolor=\"$diffcolorDarkChange\"> </td>"; }
- print DIFFFILE "<td bgcolor=\"$backcolor\"> </td>";
- if ($j < $rightRow) { print DIFFFILE "<td bgcolor=\"$diffcolorChange\">@$rightColRef[$j]</td>"; }
- else { print DIFFFILE "<td bgcolor=\"$diffcolorDarkChange\"> </td>"; }
- print DIFFFILE "</tr>\n";
- }
- }
-}
-# Function to generate diff-files
-sub generate_diff_file {
- local ( $ii,$difftxt,@diffar );
- $diffname = $outdirname.'/'.$diffdirname.'/'."diff$convdir\_$filename\_$oldrevnumber\_$revnumber.html";
-
- stat($diffname);
- if (-e _) {
- if ($diffwarning == 1) {
- print "WARNING; cvs2html does not generate $diffname\n";
- }
- }
- else {
- @listhtmlnames = (@listhtmlnames,$diffname);
- open(DIFFFILE,">$diffname") or die "Error: Could not open ; $diffname";
- print DIFFFILE html_header("Difference for $currentdir/$filename from version $revnumber to $oldrevnumber");
- if ($opt_k) {
- $kkon = "-kk";
- }
- @diffar = `$cvsLocation diff $kkon $whitespace -u -r $revnumber -r $oldrevnumber $currentdir/$filename\n`;
-
- print DIFFFILE "<table border=0 cellspacing=0 cellpadding=0 width=\"100%\">\n";
- print DIFFFILE "<tr bgcolor=\"#ffffff\"><th width=\"50%\">version $revnumber</th><th bgcolor=\"$backcolor\"> </th><th width=\"50%\">version $oldrevnumber</th></tr>";
-
- $fs="<font";
- if(defined($difffontface) && length($difffontface)>0) {
- $fs.=" face=\"$difffontface\"";
- }
- if(defined($difffontsize) && length($difffontsize)>0) {
- $fs.=" size=\"$difffontsize\"";
- }
- $fs.=">";
- $fe="</font>";
-
- $leftRow = 0;
- $rightRow = 0;
-
- # the first 8 lines are garbage for us
- for ($ii=8;$ii<=$#diffar;$ii++) {
- chop($difftxt = $diffar[$ii]);
- if ($difftxt =~ /^@@/) {
- ($oldline,$newline) = $difftxt =~ /@@ \-([0-9]+).*\+([0-9]+).*@@/;
- print DIFFFILE "<tr bgcolor=\"$diffcolorHeading\"><td width=\"50%\">";
- print DIFFFILE "<table width=\"100%\" border=0 cellpadding=5><tr><td><b>Line $oldline</b></td></tr></table>";
- print DIFFFILE "</td><td bgcolor=\"$backcolor\"> </td><td width=\"50%\">";
- print DIFFFILE "<table width=\"100%\" border=0 cellpadding=5><tr><td><b>Line $newline</b></td></tr></table>";
- print DIFFFILE "</td></tr>\n";
- $state = "dump";
- $leftRow = 0;
- $rightRow = 0;
- }
- else {
- ($diffcode,$rest) = $difftxt =~ /^([-+ ])(.*)/;
- $_= $rest;
-########
-# quote special characters
-# according to RFC 1866,Hypertext Markup Language 2.0,
-# 9.7.1. Numeric and Special Graphic Entity Set
-# (Hen)
-#######
- s/&/&/g;
- s/\"/"/g;
- s/</</g;
- s/>/>/g;
-
- # replace <tab> and <space>
- if ($opt_b) {
- # make every other space 'breakable'
- s/ / /g; # <tab>
- s/ / /g; # 3 * <space>
- s/ / /g; # 2 * <space>
- # leave single space as it is
- }
- else {
- s/ / /g;
- s/ / /g;
- }
-
- # Add fontface, size
- $_ = "$fs $_$fe";
-
- #########
- # little state machine to parse unified-diff output (Hen, zeller@think.de)
- # in order to get some nice 'ediff'-mode output
- # states:
- # "dump" - just dump the value
- # "PreChangeRemove" - we began with '-' .. so this could be the start of a 'change' area or just remove
- # "PreChange" - okey, we got several '-' lines and moved to '+' lines -> this is a change block
- ##########
-
- if ($diffcode eq '+') {
- if ($state eq "dump") { # 'change' never begins with '+': just dump out value
- print DIFFFILE "<tr><td bgcolor=\"$diffcolorEmpty\"> </td><td bgcolor=\"$backcolor\"> </td><td bgcolor=\"$diffcolorAdd\">$_</td></tr>\n";
- }
- else { # we got minus before
- $state = "PreChange";
- $rightCol[$rightRow++] = $_;
- }
- }
- elsif ($diffcode eq '-') {
- $state = "PreChangeRemove";
- $leftCol[$leftRow++] = $_;
- }
- else { # empty diffcode
- flush_diff_rows \@leftCol, \@rightCol, $leftRow, $rightRow;
- print DIFFFILE "<tr><td bgcolor=\"$diffcolorNormal\">$_</td><td bgcolor=\"$backcolor\"> </td><td bgcolor=\"$diffcolorNormal\">$_</td></tr>\n";
- $state = "dump";
- $leftRow = 0;
- $rightRow = 0;
- }
- }
- }
- flush_diff_rows \@leftCol, \@rightCol, $leftRow, $rightRow;
- print DIFFFILE "</table>";
-
- # print legend
- print DIFFFILE "<br><hr><table border=0><tr><td>";
- print DIFFFILE "Legend:<br><table border=0 cellspacing=0 cellpadding=1>\n";
- print DIFFFILE "<tr><td align=center bgcolor=\"$diffcolorRemove\">$fs"."line(s) removed in v.$revnumber"."$fe</td><td bgcolor=\"$diffcolorEmpty\">$fs"." "."$fe</td></tr>";
- print DIFFFILE "<tr bgcolor=\"$diffcolorChange\"><td align=center colspan=2>$fs"."line(s) changed"."$fe</td></tr>";
- print DIFFFILE "<tr><td bgcolor=\"$diffcolorEmpty\">$fs"." "."$fe</td><td align=center bgcolor=\"$diffcolorAdd\">$fs"."line(s) added in v.$oldrevnumber"."$fe</td></tr>";
- print DIFFFILE "</table></td></tr></table>\n";
-
- print DIFFFILE html_footer("");
- print DIFFFILE "</body>\n</html>\n";
- close(DIFFFILE);
- }
-}
-
-sub find_alldirs {
- my @dirs = ();
- find(
- sub {
- if (-d && ! -l && ! /CVS$/) {
- if ($File::Find::dir eq "." && $_ eq ".") {
- push @dirs, "./";
- }
- else {
- push @dirs, "$File::Find::dir/$_";
- }
- }
- }, '.'
- );
-
- @dirs = map { $_ . "\n" } @dirs;
-
- return @dirs;
-}
-
-sub find_subdirs {
- my $currentdir = shift;
-
- my @dirs = ();
- finddepth(
- sub {
- if (-d && ! -l && ! /CVS$/ && $File::Find::dir eq $currentdir) {
- if ( ! ($File::Find::dir eq $currentdir && $_ eq ".") ) {
- push @dirs, "$File::Find::dir/$_";
- }
- }
- }, $currentdir
- );
-
- @dirs = map { $_ . "\n" } @dirs;
-
- return @dirs;
-}
-
-sub kill_log_header {
- @llcvslog = ();
- $headerstill = -1;
- foreach $ii (0 .. ($#lcvslog-1)) {
- if ($headerstill == 0) {
- @llcvslog = (@llcvslog,$lcvslog[$ii]);
- }
- else {
- $headerstill = $headerstill - 1;
- if ($lcvslog[$ii] =~ '----------------------------') {
- $headerstill = 2;
- }
- }
- }
-}
-
-#############################################################
-# Lets set up the basics
-#############################################################
-
-# Always enforce restrictions on dates. If no date is given
-# a very early one is used.
-date_control;
-
-# Set the width of the left frame.
-# Default value has been set above.
-if ($opt_w) {
- $leftframewidth = $opt_w;
-}
-
-# Set the splitratio of the left frame.
-# Default value has been set above.
-if ($opt_s) {
- $leftsplitratio = $opt_s;
-}
-
-# I want help!
-if ($opt_h) {
- shorthelp;
- showhelp;
- exit(0);
-}
-
-# The user must give a filename for the HTML-file(s)
-if ((!(($opt_O) || ($opt_o))) || (($opt_O) && ($opt_o))) {
- shorthelp;
- print "\nMade by Peter Toft (pto\@sslug.dk).\ncvs2html is protected by the GPL.\n";
- exit(0);
-}
-
-$dochrono="";
-if($opt_c) {
- $dochrono=$opt_c;
-}
-if($opt_C) {
- $dochrono=$opt_C;
-}
-
-
-# Is -c followed by a "valid" filename ?
-if (length($dochrono)>5) {
- $chronooutname = $dochrono;
-}
-else {
- $chronooutname = "cvs2html_chrono_log.html";
-}
-
-# Want to write to a file with frames?
-if ($opt_o) {
- $frames = 1;
- $outname = $opt_o;
-}
-
-# Do you want to limit to certain revisions
-$revisionlimiter="";
-$revisionlimitertext="";
-$starttag="";
-if ($opt_r) {
- $revisionlimiter = "-r".$opt_r;
- $revisionlimitertext=" and only showing data between revisions $opt_r";
- if ($opt_r =~ /^(\S*):(\S*)/) {
- $starttag=$1;
- $endtag=$2;
- }
- $revisionlimiter_end = "-r:".$endtag;
- $revisionlimiter_startonly = "-r".$starttag;
-}
-
-# Want to write to a file without frames?
-if ($opt_O) {
- $frames = 0;
- $outname = $opt_O;
-}
-
-$linkrel = "";
-# Want to link to external file
-if ($opt_l) {
- $linkrel = $opt_l;
-}
-
-# Explicit path to cvs
-if ($opt_P) {
- $cvsLocation = $opt_P;
-}
-
-# Get the environment variable CVSROOT for this CVS repository
-open(INFILE,"<./CVS/Root") or die "Error: The file ./CVS/Root is missing - this directory does not seem to be under CVS-control.";
-($fullcvsroot) = <INFILE> =~/^(.*)$/;
-close INFILE;
-
-# Split CVSROOT in machine and dir if possible.
-@spl = split(':',$fullcvsroot);
-if ($#spl == 3) {
-# @spl[0] is empty because client/server root starts with ':' -> ":pserver" or ":ext"
- $protocol =$spl[1]; # client/server
- ($cvsuser,$machine) = split('@',$spl[2]);
- $cvsroot = $spl[3];
-}
-elsif ($#spl == 1) {
- $protocol = "rsh/ssh";
- ($cvsuser,$machine) = split('@',$spl[0]);
- $cvsroot = $spl[1];
-}
-else {
- $protocol = "local";
- $cvsuser = "";
- $machine = "localhost";
- $cvsroot = $spl[0];
-}
-
-# Get the name of the repository
-open(INFILE,"<./CVS/Repository") or die "Error: The file ./CVS/Repository is missing.";
-
-#($rootdir) = <INFILE> =~/^\Q$fullcvsroot\E(.*)$/;
-($rootdir) = <INFILE>;
-$rootdir = basename($rootdir);
-($rootdir) = $rootdir =~ /^(.*)$/;
-
-close INFILE;
-
-# Strip a .html from the outname if any (pasted on later)
-($outnamem) = $outname =~ /^(.*)\.html$/;
-if (length($outnamem)>0) {
- $outname = $outnamem;
-}
-
-# If an outputname is a directory a file named after the repository
-# is generated (and others if using frames).
-if (-d $outname) {
- $outname = $outname."/".$rootdir;
-}
-
-# Split the outname from a possible directory full path
-$outfilename = basename($outname);
-$outdirname = dirname($outname);
-
-($outfilename) = $outfilename =~ /^(.*)$/;
-($outdirname) = $outdirname =~ /^(.*)$/;
-$fulldiffdirname = $outdirname."/".$diffdirname;
-
-mkdir($outdirname,0775);
-mkdir($fulldiffdirname,0775);
-
-if(defined($opt_V) && $opt_V>0) { print STDOUT "Processing \#1 $currentdir\n"; }
-
-# Get all dirs to search
-@entirealldirs = find_alldirs();
-
-# Only pass along subdirectories that are under version control
-@alldirs = ();
-foreach $dir (@entirealldirs) {
- chop($dir);
- if ( -d "$dir/CVS" ) {
- if(defined($opt_V) && $opt_V>1) { print STDOUT " $dir\n"; }
- push(@alldirs, "$dir\n");
- }
-}
-
-if ($frames == 1) {
- # Write the start of the left lower frame if more than one dir
- if (($#alldirs > 0) || ($dochrono)) {
- $llname = $outdirname.'/'.$outfilename."__lfl.html";
- open(OUTFILE3,">$llname") or die "Error: The file $llname could not be opened.";
- @listhtmlnames = (@listhtmlnames,$llname);
- print OUTFILE3 html_header("");
-
- if ($dochrono) {
- print OUTFILE3 "<table border=0 cellspacing=1 cellpadding=3 bgcolor=\"$cellcolor\" width=\"100%\">\n";
- $coutref = $outdirname."/".$chronooutname;
- print OUTFILE3 '<tr><td><a href="'.$chronooutname.'" target="rf"><FONT SIZE="-1">Chronological Log'."</font></a></td></tr>\n";
- print OUTFILE3 "</table><br>\n";
- }
-
- print OUTFILE3 "<h3 align=center>Dirs</h3>\n";
- print OUTFILE3 "<table border=0 cellspacing=1 cellpadding=3 bgcolor=\"$cellcolor\" width=\"100%\">";
-
- for ($ii=0;$ii<=$#alldirs;$ii++) {
- $alldirs[$ii] =~ /^\.(.*)$/;
- $dir = $1;
- $showdir = "[$rootdir]$dir";
- $refname = $dir;
-
- $refname =~ tr/\//_/;
-
- if (length($refname) == 1) {
- $refname = $outfilename;
- }
- else {
- $refname = $outfilename.$refname;
- }
- print OUTFILE3 '<tr><td><a href="'.$refname.'.html" target="_top"><FONT SIZE="-1">'.$showdir."</font></a></td></tr>\n";
- }
- print OUTFILE3 "</table>\n";
- print OUTFILE3 "</body>\n";
- print OUTFILE3 "</html>\n";
-
- close(OUTFILE3);
- }
-}
-
-if ($dochrono) {
- $chronocounter = -1;
- @chronoindex=();
- @chronoauthor=();
- @chrononame=();
- @chronotimesince0=();
- @chronoversion=();
- @chronoshowtime=();
- @chronolinknames=();
-}
-
-#############################################################
-# Lets go for each of the directories
-#############################################################
-for ($dd=0;$dd<=$#alldirs;$dd++) {
- # Initialization
- @otherdnames = ();
- $lineno = -1;
- $foundbadone = 0;
- $fnumber = 1;
-
- # Where are we ?
- # $convdir is the current dir where all / are converted to _
- ($currentdir) = $alldirs[$dd] =~ /^\.\/(.*)$/;
- $convdir = $currentdir;
- $convdir =~ tr/\//_/;
- if (length($currentdir)==0) {
- $currentdirformat2 ="";
- $currentdir='.';
- $convdir = "";
- }
- else {
- $currentdirformat2 = $currentdir."/";
- $convdir = '_'.$convdir;
- }
- if(defined($opt_V) && $opt_V>0) { print STDOUT "Processing \#2 $currentdir\n"; }
-
- @entiresubdirs = find_subdirs($currentdir);
- @subdirs = ();
- foreach $dir (@entiresubdirs) {
- chop($dir);
- if ( -d "$dir/CVS" ) {
- if(defined($opt_V) && $opt_V>1) { print STDOUT " $dir\n"; }
- push(@subdirs, "$dir\n");
- }
- }
-
- if ($frames == 1) {
- $llname = $outdirname.'/'.$outfilename.$convdir."__lfl.html";
- open(OUTFILE3,">$llname") or die "Error: The file $llname could not be opened.";
- @listhtmlnames = (@listhtmlnames,$llname);
- print OUTFILE3 html_header("");
-
- if ($dochrono) {
- print OUTFILE3 "<table border=0 cellspacing=1 cellpadding=3 bgcolor=\"$cellcolor\" width=\"100%\">";
- $coutref = $outdirname."/".$chronooutname;
- print OUTFILE3 '<tr><td><a href="'.$chronooutname.'" target="rf"><font size="-1">Chronological Log'."</font></a></td></tr>\n";
- print OUTFILE3 "</table><br>\n";
- }
-
- if ($#subdirs>=0 || $currentdir ne '.') {
- print OUTFILE3 "<h3 align=center>Sub Dirs</h3>\n";
- print OUTFILE3 "<table border=0 cellspacing=1 cellpadding=3 bgcolor=\"$cellcolor\" width=\"100%\">";
-
- if($currentdir eq '.') {
- # No parent directory to top
- }
- else {
- $showdir = ".. Parent Dir";
- $up = dirname ($currentdir);
- ($up) = $up =~ /^(.*)$/;
-
- if ($up eq ".") {
- $refname = "/";
- }
- else {
- $refname = "/$up";
- }
- $refname =~ tr/\//_/;
- if (length($refname) == 1) {
- $refname = $outfilename;
- }
- else {
- $refname = $outfilename.$refname;
- }
- print OUTFILE3 '<tr><td><a href="'.$refname.'.html" target="_top"><FONT SIZE="-1">'.$showdir."</font></a></td></tr>\n";
- }
- for ($ii=0;$ii<=$#subdirs;$ii++) {
- $subdirs[$ii] =~ /^\.(.*)$/;
- $dir = $1;
- $up = dirname ($subdirs[$ii]);
- ($up) = $up =~ /^(.*)$/;
- $up = basename ($up);
- ($up) = $up =~ /^(.*)$/;
- $down = basename ($subdirs[$ii]);
- ($down) = $down =~ /^(.*)$/;
- $dir = "/$down";
- if ($up eq ".\n") {
- $showdir = "[$rootdir]$dir";
- }
- else {
- $showdir = "[$up]$dir";
- }
-
- if($currentdir eq '.') {
- $refname = $dir;
- }
- else {
- $refname = "/$currentdir$dir";
- }
- $refname =~ tr/\//_/;
- if (length($refname) == 1) {
- $refname = $outfilename;
- }
- else {
- $refname = $outfilename.$refname;
- }
-
- print OUTFILE3 '<tr><td><a href="'.$refname.'.html" target="_top"><FONT SIZE="-1">'.$showdir."</font></a></td></tr>\n";
- }
- print OUTFILE3 "</TABLE><br>\n";
- }
- print OUTFILE3 "</body>\n";
- print OUTFILE3 "</html>\n";
-
- close(OUTFILE3);
- }
-
- # Should the output have frames then make left lower frame.
- if ($frames == 1) {
- # Write the start of the left upper frame
- $luname = $outdirname.'/'.$outfilename.$convdir."__lfu.html";
- open(OUTFILE2,">$luname") or die "Error: The file $luname could not be opened.";
- @listhtmlnames = (@listhtmlnames,$luname);
- print OUTFILE2 html_header("");
- print OUTFILE2 "<h3 align=\"center\">Log History</h3>\n";
- print OUTFILE2 "<table border=0 cellspacing=1 cellpadding=3 bgcolor=\"$cellcolor\" width=\"100%\">";
- %outfile2lines=();
- }
-
- # Should the output have frames ?
- if ($frames == 1) {
- $mainname = $outdirname.'/'.$outfilename.$convdir.".html";
-
- # Write the start of the main html file
- open(OUTFILE4,">$mainname") or die "Error: The file $mainname could not be opened.";
- @listhtmlnames = (@listhtmlnames,$mainname);
- print OUTFILE4 "<\!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">\n<html>\n";
- print OUTFILE4 "<head><title>CVS2HTML</title></head>\n";
- print OUTFILE4 "<frameset cols=\"$leftframewidth,*\">\n";
- # only do the left lower frame if subdirs found
-
- if (($#alldirs > 0) || ($dochrono)) {
- print OUTFILE4 "<frameset rows=\"".$leftsplitratio.",*\">\n";
- print OUTFILE4 "<frame scrolling=auto src=\"".$outfilename.$convdir."__lfu.html\" name=\"lfu\">\n";
- print OUTFILE4 "<frame scrolling=auto src=\"".$outfilename.$convdir."__lfl.html\" name=\"lfl\">\n";
-# print OUTFILE4 "<frame scrolling=auto src=\"$outfilename"."__lfl.html\" name=\"lfl\">\n";
- print OUTFILE4 "</frameset>\n";
- }
- else {
- print OUTFILE4 "<frame scrolling=auto src=\"$outfilename".$convdir."__lfu.html\" name=\"lfu\">\n";
- }
- # Do right frame link
- print OUTFILE4 "<frame scrolling=auto src=\"$outfilename".$convdir."__rf.html\" name=\"rf\">\n";
- print OUTFILE4 "<noframes>\n";
- print OUTFILE4 "<h2 align=center>CVS Directories</h2>\n<hr>\n<br>\n";
- }
-
- if(defined($opt_V) && $opt_V>0) { print STDOUT "Getting cvs-entries\n"; }
-
- $cvsnames = "";
- @cvsnameslist = ();
- $Entryfilename = $currentdir."/CVS/Entries";
-
- open(NAMEFILE,"<$Entryfilename");
- $contin = 1;
- $nooffiles = 0;
- while ($contin ==1) {
- $namlin = <NAMEFILE>;
- ($readnameline) = $namlin =~ /^\/([ a-zA-Z0-9-+_\.(...)]*)\/.*$/;
- $_ = $readnameline;
- s/ /~/g;
- $readnameline = $_;
- if (length($namlin)>0) {
- if (length($readnameline)>0) {
- $nooffiles++;
- $cvsnames = $cvsnames." ".$currentdir.'/'.$readnameline;
- push @cvsnameslist, $currentdir.'/'.$readnameline;
- }
- }
- else {
- $contin=0;
- }
- }
- close(NAMEFILE);
-
- # Check for an empty Log (if, e.g., the directory does not contain files
- # registered with CVS).
- if (length ($cvsnames) <= 0) {
- print STDERR "Error 4 : Doing $currentdir: Log is empty.\n";
- # We really should make a file here I think
- if ($frames == 1) {
- $rfoutname = $outdirname.'/'.$outfilename.$convdir."__rf.html";
- open(OUTFILE,">$rfoutname") or die "Error: Could not open $rfoutname\n.";
- @listhtmlnames = (@listhtmlnames,$rfoutname);
- }
- $fnumber=2;
- if (length($currentdir)==1) {
- print OUTFILE html_header("--- $rootdir ---");
- }
- else {
- print OUTFILE html_header("--- $rootdir/$currentdir ---");
- }
-
- if ($opt_v) { print OUTFILE cvsrootinfo(); }
- print OUTFILE html_footer("");
- print OUTFILE "</body></html>\n";
-
- # Lets open the main file and process
- if ($frames == 1) {
- $rfoutname = $outdirname.'/'.$outfilename.$convdir.$fname."__rf.html";
- open(OUTFILE,">$rfoutname") or die "Error: Could not open $rfoutname\n.";
- @listhtmlnames = (@listhtmlnames,$rfoutname);
- }
- else {
- $mainoutname = $outdirname.'/'.$outfilename.$convdir.$fname.".html";
- open(OUTFILE,">$mainoutname") or die "Error: Could not open $mainoutname\n.";
- @listhtmlnames = (@listhtmlnames,$mainoutname);
- }
- $fnumber=2;
- if (length($currentdir)==1) {
- print OUTFILE html_header("--- $rootdir ---");
- }
- else {
- print OUTFILE html_header("--- $rootdir/$currentdir ---");
- }
- print OUTFILE "<center>This directory is empty</center>\n";
- closemainfile;
- }
- next if (length ($cvsnames) <= 0); # Log is empty so proceed to next directory
-
- if(defined($opt_V) && $opt_V>0) { print STDOUT "Retrieving logdata\n"; }
-
- $_ = join ('" "', sort (split ' ', $cvsnames));
- s/~/ /g;
- $cvsnames = '"'.$_.'"';
- @cvslogarray = ();
-
-# it would be nice to have just one cvs log <file_1> <file_2> ... <file_n>
-# the filter out invalid branch blocs and re-request them
-# for this I would need to know how this message looks like
-
- foreach $cvsnamesentry (@cvsnameslist) {
- if(defined($opt_V) && $opt_V>1) { print STDOUT " $cvsnamesentry\n"; }
- @cvslogarray_sub = `$cvsLocation log $revisionlimiter $cvsnamesentry 2>&1 `;
- if ($cvslogarray_sub[0] =~ /connection refused/i) {
- print STDERR "Error 3 : connection to cvs refused for \"$cvsnamesentry\"\n";
- @cvslogarray_sub = ();
- last;
- }
- if ($cvslogarray_sub[0] =~ /invalid branch or revision pair/i) {
- # the end tag was probably the first rev in a branch and "cvs log"
- # does not tolerate such combination, it needs special handling
- # retry with '-r:endtag'
- print "retrying with $revisionlimiter_end\n";
- @cvslogarray_sub_branch = `$cvsLocation log $revisionlimiter_end $cvsnamesentry`;
- @cvslogarray_sub_trunk = `$cvsLocation log $revisionlimiter_startonly $cvsnamesentry`;
- # find index of log entry separator line in @cvslogarray_sub_trunk
- $trunk_log_line = 0;
- while ( $trunk_log_line <= $#cvslogarray_sub_trunk and
- ! ($cvslogarray_sub_trunk[$trunk_log_line] =~ /^--------*$/) ){
- $trunk_log_line++;
- }
- # combine both logs
- @cvslogarray_sub = (@cvslogarray_sub_branch[0 .. $#cvslogarray_sub_branch-1],
- @cvslogarray_sub_trunk[$trunk_log_line .. $#cvslogarray_sub_trunk]);
- }
- push @cvslogarray, @cvslogarray_sub;
- }
-
- if(defined($opt_V) && $opt_V>0) { print STDOUT "Processing logdata\n"; }
-
- $line = getnextline;
-
- # skip lines starting with "?"
- while ($line =~ /^\? (.*)$/) {
- $foundbadone = 1 ;
- $line = getnextline;
- }
-
- while ($line) {
- if ($opt_n>0) {
- $nodiff = $opt_n;
- }
- else {
- $nodiff = -1;
- }
- $oldrevnumber=0;
- if ($line =~ /^\? (.*)/) {
- print STDERR "The file \"$1\" is not part of cvs\n";
- $line = getnextline;
- }
- $line = getnextline;
-
- # skip lines starting with "?"
- while ($line =~ /^\? (.*)$/) {
- $foundbadone = 1 ;
- $line = getnextline;
- }
-
- # found a filename (ends on ",v")
- if ($line =~ /^.*: (.*),v$/) {
- $line = getnextline;
- ($lfilename) = $line =~ /^.*: (.*)$/;
-
- ($filename) = $lfilename =~ (/^.*\/([ a-zA-Z0-9-+_\.(...)]*)$/);
- if (length($filename) == 0) {
- $filename = $lfilename;
- }
-
- if (length($filename) == 0) {
- print STDERR "Error 2 in processing the output of cvs log in $currentdir\n";
- print STDERR $line;
- }
- else {
- if(defined($opt_V) && $opt_V>1) { print STDOUT " $filename\n"; }
- }
- $printfilename = 0;
- $onlist = 0;
- }
- else {
- print STDERR "Error 1 in processing the output of cvs log in $currentdir\n";
- print STDERR $line;
- print STDERR "\n";
- if ($line =~ /nothing known about/) {
- print STDERR "No log info for file.\n";
- last;
- }
- }
-
- # Find the next separator...
- while ($line and !($line =~ /^symbolic names:/) and !($line =~ /^--------*$/) and !($line =~ /^========*$/)) {
- $line = getnextline;
- }
-
- # Find the revision of the startrevision if any:
- $startrevision="";
- if ($line =~ /^symbolic names:/) {
- $line = getnextline;
- while (!($line =~ /^[a-z]/)) {
- if ($line =~ /[ ]*(\S*): (\S*)$/) {
- if ($1 eq $starttag) {
- $startrevision=$2;
- }
- }
- $line = getnextline;
- }
- # Find the next separator...
- while (!($line =~ /^--------*$/) and !($line =~ /^========*$/)) {
- $line = getnextline;
- }
- }
-
- $newfile=0;
-
- # If the separator is a new file separator, flag it.
- if ($line =~ /^========*$/) {
- $newfile = 1;
- # FIXME: We still need to create a index~<filename>__rf.html
- if ($frames == 1) {
- $rfoutname = $outdirname.'/'.$outfilename.$convdir."__rf.html";
- open(OUTFILE,">$rfoutname") or die "Error: Could not open $rfoutname\n.";
- @listhtmlnames = (@listhtmlnames,$rfoutname);
- }
- $fnumber=2;
- if (length($currentdir)==1) {
- print OUTFILE html_header("--- $rootdir ---");
- }
- else {
- print OUTFILE html_header("--- $rootdir/$currentdir ---");
- }
- if ($opt_v) { print OUTFILE cvsrootinfo(); }
- print OUTFILE html_footer("");
- print OUTFILE "</body></html>\n";
-
- # This just skips over this file.
- }
-
- if(defined($opt_V) && $opt_V>2) { print STDOUT " Getting metadata\n"; }
-
- $leftfill = 0;
- $line = getnextline;
-
- while ($newfile==0) {
- if ($line =~ /revision (\S*)/) {
- $revnumber=$1;
- }
- else {
- $revnumber = "[Error_in_revnumber]";
- }
-
- $line = getnextline;
-
- if ($line =~ /date: (...................)/) {
- $revdate = $1;
- }
- else {
- $revdate = "[Error_in_revdate]";
- }
-
- if ($line =~ /author: ([a-zA-Z0-9_]*);/) {
- $author = $1;
- }
- else {
- $author = "[Error_in_author]";
- }
-
- if ($line =~ /lines: ([+\-0-9 ]*)$/) {
- $changelines = $1;
- }
- else {
- $changelines = "None";
- }
-
- $line = getnextline;
-
- if ($line =~ /branches: (.*)/) {
- $line = getnextline;
- }
-
- ($rd1,$rd2,$rd3,$rdrest) = $revdate =~ /^(\d+)\/(\d+)\/(\d+) (.*)$/;
- $revdateformat2 = $rd1.$rd2.$rd3;
- ($rt1,$rt2,$rt3) = $rdrest =~/(\d+)\:(\d+)\:(\d+)/;
-
- $revdateformat3 = 3600*$rt1+60*$rt2+$rt3+86400*$revdateformat2;
- $printfilename = $printfilename + 1;
-
- $fname="";
- if ($opt_f) {
- $fname = '~'.$filename;
- }
- if ((($fnumber == 1) || ($opt_f)) && ($printfilename==1)) {
- if (($opt_f) && ($fnumber==1)){
- $rfoutname = $outdirname.'/'.$outfilename.$convdir."__rf.html";
- open(OUTFILE,">$rfoutname") or die "Error: Could not open $rfoutname\n.";
- @listhtmlnames = (@listhtmlnames,$rfoutname);
- if (length($currentdir)==1) {
- print OUTFILE html_header("--- $rootdir ---");
- }
- else {
- print OUTFILE html_header("--- $rootdir/$currentdir ---");
- }
- print OUTFILE "<h3>Select entries from the left panel to get to the cvs log information for the files</h3>\n";
- print OUTFILE html_footer("");
- print OUTFILE "</body>\n</html>\n";
- close(OUTFILE);
- }
-
- # Lets open the main file and process
- if ($frames == 1) {
- $rfoutname = $outdirname.'/'.$outfilename.$convdir.$fname."__rf.html";
- open(OUTFILE,">$rfoutname") or die "Error: Could not open $rfoutname\n.";
- @listhtmlnames = (@listhtmlnames,$rfoutname);
- }
- else {
- $mainoutname = $outdirname.'/'.$outfilename.$convdir.$fname.".html";
- open(OUTFILE,">$mainoutname") or die "Error: Could not open $mainoutname\n.";
- @listhtmlnames = (@listhtmlnames,$mainoutname);
- }
- $fnumber=2;
- if (length($currentdir)==1) {
- print OUTFILE html_header("--- $rootdir ---");
- }
- else {
- print OUTFILE html_header("--- $rootdir/$currentdir ---");
- }
- if ($opt_v) { print OUTFILE cvsrootinfo(); }
- }
-
- $needthisrevision = 0;
- if (($revdateformat2 >= $cutdate) and ($revnumber ne $startrevision)) {
- $needthisrevision = 1;
- }
-
- if ( $needthisrevision or $needthisdiffonly ) {
- if (($onlist == 0) && ($printfilename == 1)) {
- print OUTFILE "<a name=\"$filename\">\n</a>\n";
- print OUTFILE "<table border=0 cellspacing=1 cellpadding=3 bgcolor=\"$cellcolor\" width=\"100%\">\n";
- print OUTFILE "<tr>\n";
- print OUTFILE "<td colspan=4 bgcolor=\"$filenamecellcolor\"><b><font size=\"+1\">\n";
-
- $cdir = "";
- if (length($currentdir)>1) {
- $cdir = '/'.$currentdir;
- }
-
- $Ls = "";
- $Le = "";
- if ($opt_L) {
- ($flname,$ext) = $filename =~ /^([a-zA-Z0-9+-_]*)\.([a-zA-Z0-9]*)$/;
- if (length($ext)==0) {
- $flname = $filename;
- }
- $Ls = "<a href=\"$opt_L$cdir/$flname".".html\" target=\"_top\">";
- $Le = "</a>\n";
- }
- print OUTFILE $Ls."Filename".$Le.": ";
-
- $Ls = "";
- $Le = "";
- if (($opt_l) && ($opt_R)) {
- $Ls = "<a href=\"$opt_l$cdir/$filename/\?cvsroot\=$opt_R\">";
- $Le = "</a>\n";
- } elsif (($opt_l) && (! opt_R)) {
- $Ls = "<a href=\"$opt_l$cdir/$filename\">";
- $Le = "</a>\n";
- }
-
- print OUTFILE $Ls.$filename.$Le;
- print OUTFILE "</font></B><br></td></tr>\n";
- }
- $onlist = 1;
- if (($opt_o) && ($leftfill == 0)) {
- if ($opt_f) {
- $chronolinker = $outfilename.$convdir.'~'.$filename.'__rf.html';
- }
- else {
- $chronolinker = $outfilename.$convdir.'__rf.html#'.$filename;
- }
- # justcollect, we'll output them sorted on filename
- $outfile2lines{$filename}="<tr><td><a href=\"$chronolinker\" target=\"rf\"><font size=\"-1\">$filename</font></a></td></tr>\n";
- $leftfill=2;
- }
- if (($opt_a) && ($oldrevnumber!=0) && ($nodiff!=0)) {
- print OUTFILE "<tr><td colspan=4 bgcolor=\"$differencebackground\"><i>Show difference between <a href=\"$diffdirname/diff$convdir\_$filename\_$oldrevnumber\_$revnumber.html\">Revision $revnumber and $oldrevnumber </a></i>\n";
- generate_diff_file;
- $nodiff--;
- }
- $oldrevnumber=$revnumber;
- if ( $needthisrevision==0 ) {
- $needthisdiffonly = 0;
- }
- if ( $needthisrevision!=0 ) {
- if (($opt_a) && ($nodiff!=0)) {
- $needthisdiffonly = 1;
- }
- print OUTFILE "<tr><td><b>Revision $revnumber</b><td>$author\n";
- print OUTFILE "<td>$revdate";
- if (length($changelines)<2) {
- print OUTFILE "<td>None\n";
- }
- else {
- print OUTFILE "<td>$changelines\n";
- }
- print OUTFILE "<tr><td colspan=4>\n";
- if ($dochrono) {
- $chronocounter++;
- $nams = $currentdirformat2.$filename;
- @chronoindex = (@chronoindex,$chronocounter);
- @chrononame = (@chrononame,$nams);
- @chronoauthor = (@chronoauthor,$author);
- @chronoversion = (@chronoversion,$revnumber);
- @chronoshowtime = (@chronoshowtime,$revdate);
- @chronotimesince0 = (@chronotimesince0,$revdateformat3);
- @chronolinknames = (@chronolinknames,$chronolinker);
- }
- }
- }
-
- # While more log read and process
- $morelog=1;
- while ($morelog==1) {
- if ($line =~ /^----------*$/) {
- $morelog=0;
- }
- else {
- if ($line =~ /^========*$/) {
- $newfile=1;
- $morelog=0;
- }
- else {
- $_=$line;
- s/&/&/g;
- s/\"/"/g;
- s/</</g;
- s/>/>/g;
- $line=$_;
- if ($line =~ /^(.*)$/) {
- if (($revdateformat2 >= $cutdate) and ($revnumber ne $startrevision)) {
- if ($opt_e) {
- print OUTFILE "<code>$1</code><br>\n";
- }
- else {
- print OUTFILE "$1<br>\n";
- }
- }
- }
- }
- }
- $line = getnextline;
- }
- print OUTFILE "\n";
- }
-
- if ($onlist==1) {
- print OUTFILE "</table><br>\n";
- }
- if ($onlist==0) {
- @otherdnames = (@otherdnames,$filename);
- }
- if ($opt_f) {
- closemainfile;
- }
- }
-
- if (!$opt_f) {
- closemainfile;
- }
-
- if ($opt_o) {
- # output all filenames sorted
- foreach $key (sort { lc($a) cmp lc($b) } keys %outfile2lines) {
- print OUTFILE2 $outfile2lines{$key}
- }
- print OUTFILE2 "</table><br>\n";
- }
- if (($opt_o) && ($nooffiles == $#otherdnames+1)) {
- print OUTFILE2 "No file revisions.<br>\n";
- }
- if (($#otherdnames>=0) && ($opt_o)) {
- print OUTFILE2 "<br><hr><h3 align=center>Unchanged</h3>\n";
- if ($#otherdnames>=0) {
- print OUTFILE2 "<table border=0 cellspacing=1 cellpadding=3 bgcolor=\"$cellcolor\" width=\"100%\">\n";
- for ($ii=0;$ii<=$#otherdnames;$ii++) {
- print OUTFILE2 "<tr><td><font size=\"-1\">$otherdnames[$ii]</font></td></tr>\n";
- }
- print OUTFILE2 "</table><br>\n";
- }
- else {
- print OUTFILE2 "All files have revisions.<br>\n";
- }
- }
-
- # Lets wrap up OUTFILE2
- if ($opt_o) {
- print OUTFILE2 "</body>\n";
- print OUTFILE2 "</html>\n";
- close(OUTFILE2);
- }
-
- # Found a bad one....... This should NOT happen
- if ($foundbadone == 1) {
- print STDERR "\ncvs2html found some files that was no part of CVS\n\n";
- }
-
- if ($frames == 1) {
- print OUTFILE4 "<table border=0 cellspacing=1 cellpadding=3 bgcolor=\"$cellcolor\" width=\"100%\">\n";
-
- for ($ddd=0;$ddd<=$#alldirs;$ddd++) {
- ($currentdir) = $alldirs[$ddd] =~ /^\.\/(.*)$/;
- $convdir = $currentdir;
- $convdir =~ tr/\//_/;
- if (length($currentdir)==0) {
- $currentdir='.';
- $convdir = "";
- }
- else {
- $convdir = '_'.$convdir;
- }
-
- chop($ldir = $alldirs[$ddd]);
- if (length($ldir) == 2) {
- $ldir ="";
- }
- print OUTFILE4 "<tr><td><a href=\"".$outfilename.$convdir."__lfu.html\">[$rootdir]$ldir</a></td></tr>\n";
- }
- print OUTFILE4 "</table><br>\n";
- }
-
- print OUTFILE4 html_footer("");
- print OUTFILE4 "</noframes>\n";
- print OUTFILE4 "</frameset>\n";
- print OUTFILE4 "</html>\n";
- close(OUTFILE4);
-}
-
-if ($dochrono) {
- $coutref = $outdirname."/".$chronooutname;
- open(CHRONOFILE,">$coutref");
-
- if(defined($opt_V) && $opt_V>0) { print STDOUT "Generate chrono file\n"; }
-
- print CHRONOFILE html_header("CVS time sorted logs");
- if ($frames == 0) {
- print CHRONOFILE '<a href="'.$outfilename.'.html" target="_top">Back to main page</a><p>';
- }
-
-
- #print "Sorting the logfiles\r";
- @cindex = sort sorter @chronoindex;
- #print "Done sorting the logfiles\n";
-
- if ($frames == 1) {
- print CHRONOFILE "<table border=\"0\" width=\"100%\" bgcolor=\"$cellcolor\" cellspacing=\"1\" cellpadding=\"3\">";
- printf(CHRONOFILE "<tr><td><b>%s</b></td> <td><b>%s</b></td> <td><b>%s</b></td> <td><b>%s</b></td></tr>\n","Time ","Revision","Author","Filename");
- }
- else {
- printf(CHRONOFILE "<br><tr><br>\n%20s %8s %10s %s<br><hr>\n","Time ","Revision","Author","Filename");
- }
-
- $cclim = $chronocounter;
- $cindexlow=0;
- if ($opt_N>0) {
- if ($opt_N-1<$chronocounter) {
- $cclim = $opt_N-1;
- $cindexlow = $chronocounter+1-$opt_N;
- $cctxt = " and only the last $opt_N changes are shown.";
- }
- }
-
- if ($cindexlow<0) {
- $cindexlow=0;
- }
-
- if ($opt_p) {
- for ($ii=$cindexlow;$ii<=$chronocounter;$ii++) {
- if ($opt_c) {
- $cind = $ii;
- }
- else {
- $cind = $chronocounter-$ii+$cindexlow;
- }
- $index = $cindex[$cind];
-
- if(defined($opt_V) && $opt_V>1) { print STDOUT " $chrononame[$index]\n"; }
-
- @lcvslog = `$cvsLocation log -N -r$chronoversion[$index] "$chrononame[$index]"`;
- @llcvslog = ();
- $headerstill = -1;
- foreach $jj (0 .. ($#lcvslog-1)) {
- if ($headerstill == 0) {
- $_=$lcvslog[$jj];
- s/&/&/g;
- s/\"/"/g;
- s/</</g;
- s/>/>/g;
- @llcvslog = (@llcvslog,$_);
- }
- else {
- $headerstill = $headerstill - 1;
- if ($lcvslog[$jj] =~ '----------------------------') {
- $headerstill = 2;
- }
- }
- }
- $lcvslogar[$index] = join('<br>',@llcvslog);
- if (length($lcvslogar[$index])<2) {
- $lcvslogar[$index] = "<i>(Empty log)</i>";
- }
- }
- }
- for ($ii=$cindexlow;$ii<=$chronocounter;$ii++) {
- if ($opt_c) {
- $cind = $ii;
- $cind2 = $ii+1;
- }
- else {
- $cind = $chronocounter-$ii+$cindexlow;
- $cind2 = $cind-1;
- }
- $index = $cindex[$cind];
- $index2 = $cindex[$cind2];
- $ccc = '<A HREF="'.$chronolinknames[$index].'">'.$chrononame[$index]."</a>";
- if ($frames==0) {
- printf(CHRONOFILE "%20s %8s %10s %s<br>\n",$chronoshowtime[$index],$chronoversion[$index],$chronoauthor[$index],$ccc);
- }
- else {
- printf(CHRONOFILE "<tr><td><b>%s</b></td> <td>%s</td> <td>%s</td> <td>%s</td></tr>\n",$chronoshowtime[$index],$chronoversion[$index],$chronoauthor[$index],$ccc);
- if ($opt_p) {
- if ($ii == $chronocounter){
- printf(CHRONOFILE "<tr><td COLSPAN=4>\n");
- print CHRONOFILE $lcvslogar[$index];
- printf(CHRONOFILE "</td></tr>\n");
- }
- elsif (($lcvslogar[$index] ne $lcvslogar[$index2]) || (abs($chronotimesince0[$index]-$chronotimesince0[$index2]))>$commit_smalltimedifference) {
- printf(CHRONOFILE "<tr><td COLSPAN=4>\n");
- print CHRONOFILE $lcvslogar[$index];
- printf(CHRONOFILE "</td></tr>\n");
- }
- }
- }
- }
-
- if ($frames == 1) {
- print CHRONOFILE "</table>\n";
- }
- else {
- print CHRONOFILE "<hr>\n";
- }
-
- if ($frames == 0) {
- print CHRONOFILE '<p><a href="'.$outfilename.'.html" target="_top">Back to main page</a><p>';
- }
-
-
- $stradd="";
- if ($cutdate>"00000000") {
- $stradd.=" leaving out any log message prior to $cutyearformat2 $revisionlimitertext";
- }
- print CHRONOFILE html_footer($stradd.$cctxt);
- #Wrap up the file
- print CHRONOFILE "\n</body>\n</html>\n";
-
- close(CHRONOFILE);
-# We must report that a new file has been made
- @listhtmlnames = (@listhtmlnames,$coutref);
-}
-
-# Print status about which files have been generated
-# all diffs are under *_diff/ directory
-# files ending on "__rf" are those displayed in the right frame (the ones showing the revision history)
-# files ending on "__lfu" are those displayed in the upper part of the left frame
-# files ending on "__lfl" are those displayed in the lower part of the left frame
-#
-if(defined($opt_V) && $opt_V>0) {
- print STDOUT "cvs2html has generated the following files :\n";
- @ll=sort(@listhtmlnames);
- for ($ff=0;$ff<=$#listhtmlnames;$ff++) {
- print " $ll[$ff]\n";
- }
- print "\n";
-}
+++ /dev/null
-@entries = ();
-
-while(<>)
-{
- next if (m/DeclException/);
- chop;
- s/\</\<\;/g;
- s/\>/\>\;/g;
- if (m/(.+)=([^=]+)=?$/)
- {
- @n = split "::", $1;
-
- $entry = pop @n;
- while ($#n>=0)
- {
- $entry .= "+" . pop @n;
- }
- $entry .= ',' . $2 . ',' . $library;
- push @entries, $entry;
- }
- else
- {
- $library = $_;
- }
-}
-
-print << 'EOT'
-<HTML><HEAD><TITLE>DEAL Name Index</TITLE></HEAD>
-<BODY><H1>Name Index of DEAL</H1><hr>
-Remark: Lowercase is sorted behind uppercase and destructors are isolated at
-the end.
-<hr>
-<TABLE CELLPADDING=5 CELLSPACING=0 RULES=ROWS BORDER=2>
-<TR><TH WIDTH=300><B>function/class</B><TH ALIGN=CENTER WIDTH=300><B>in class</B></TR>
-</TABLE>
-EOT
- ;
-foreach $entry (sort @entries)
-{
- @l = split ",", $entry;
- @c = split '\+', @l[0];
- @f = split "#", @l[1];
-
- print '<TABLE CELLPADDING=5 CELLSPACING=0 RULES=ROWS BORDER=2>';
- print "\n<TR><TH ALIGN=left WIDTH=300><A HREF = \"$l[2]/@f[0]\">@c[0]</A><TD WIDTH=300>@c[1]</TR></TABLE>\n";
-}
-print << 'EOT'
-</BODY>
-</HTML>
-EOT
- ;
+++ /dev/null
-package Ast;
-
-#-----------------------------------------------------------------------------
-# This package is used to create a simple Abstract Syntax tree. Each node
-# in the AST is an associative array and supports two kinds of properties -
-# scalars and lists of scalars.
-# See SchemParser.pm for an example of usage.
-# ... Sriram
-#-----------------------------------------------------------------------------
-
-sub BEGIN {
- $currLevel = 0;
- $indent = " " x 2;
-}
-
-# Constructor
-# e.g AST::New ("personnel")
-# Stores the argument in a property called astNodeName whose sole purpose
-# is to support Print()
-
-sub New {
- my ($this) = {"astNodeName" => $_[0]};
- bless ($this);
- return $this;
-}
-
-# Add a property to this object
-# $astNode->AddProp("className", "Employee");
-
-sub AddProp {
- my ($this) = $_[0];
- $this->{$_[1]} = $_[2];
-}
-
-# Equivalent to AddProp, except the property name is associated
-# with a list of values
-# $classAstNode->AddProp("attrList", $attrAstNode);
-
-sub AddPropList {
- my ($this) = $_[0];
- if (! exists $this->{$_[1]}) {
- $this->{$_[1]} = [];
- }
- push (@{$this->{$_[1]}}, $_[2]);
-}
-
-# Returns a list of all the property names of this object
-sub GetProps {
- my ($this) = $_[0];
- return keys %{$this};
-}
-
-sub Visit {
- # Converts each of this AstNode's properties into global variables.
- # The global variables are introduced into package "main"
- # At the same time, a piece of code is formed to undo this work above -
- # $endCode essentially contains the values of these global variables
- # before they are mangled. endCode gets pushed into a stack (endCodes),
- # which is unwound by UnVisit().
-
- local ($this, $pack) = @_;
-
-
- $code = ""; $endCode = "";
-
-
-
- foreach $k (keys %{$this}) {
-
- $glob = $pack."::".$k;
-
- if ( defined $$glob ) {
-
- if ( ${$glob} ne "" ) {
- $$glob =~ s/\'/\\\'/g;
- }
-
- $endCode .= '$'.$pack.'::'.$k. " = '".$$glob."';";
- } else {
- $endCode .= '$'.$pack . "::". $k . ' = "";';
- }
- $code .= '$'.$pack . "::" . $k . "= \$this->{\"$k\"};";
- }
- push (@endCodes, $endCode);
- eval($code) if $code;
-}
-
-sub UnVisit {
- $code = pop(@endCodes);
- eval($code) if ($code);
-}
-
-1;
+++ /dev/null
-#!/usr/local/bin/perl
-
-# Documentation generator.
-# Torben Weis (weis@kde.org) and Sirtaj Kang (taj@kde.org)
-# $Id$
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-###########################################################
-#
-# Global Variables
-#
-###########################################################
-
-# system options
-require 5.000;
-
-$PREFIX="/usr/local";
-push( @INC, $PREFIX."/share/kdoc");
-
-require Ast;
-
-# User options
-
-$dontDoPrivate = 1;
-$strictParser = 0;
-$documentAll = 1;
-$docDeprecated = 1;
-$docInternal = 1;
-$debug = 0;
-$docPath = ".";
-$urlBase = "";
-$libPath = ".";
-$lib = "";
-$genHTML = 0;
-$genTeX = 0;
-$genMan = 0;
-$quiet = 0;
-
-# running environment
-($version = '$Version$') =~ s/:\s*//g;
-
-$version =~ s/Version//g;
-
-$thisHost = `uname -n`; chop $thisHost;
-$user = `whoami`; chop $user;
-
-$generatedByText= 'Documentation generated by '.$user. '@'.
- $thisHost.' on '.`date`;
-
-$libPath = $ENV{'KDOCLIBS'} if $ENV{'KDOCLIBS'} ne "";
-
-# globals - for method
-
-$exceptions = "";
-%paramDesc = ();
-$paramName = "";
-$paramText = "";
-$retText = "";
-$see = "";
-$text = "";
-$methInternal = 0;
-$methDeprecated = 0;
-
-# for class
-$class = "";
-$classAuthor = "";
-$classDeprecated = 0;
-$classInternal = 0;
-$classSee = "";
-$classShortText = "";
-$classShortTextSet = 0;
-$classText = "";
-$classVersion = "";
-$classInherits = "";
-$classAbstract = 0;
-$classTmplArgs = "";
-
-%classRef = (); # KDOC reference file
-%classSource = (); # tracks headers given a class name
-%classNode = (); # tracks nodes given a class name
-@headerList = (); # list of processed header files
-
-$filename = ""; # Current file being processed
-
-# index of stuff that shouldn't flag referencing errors
-# (not currently used)
-
-%noErr = ();
-$noErr{ "void" } = 1;
-$noErr{ "int" } = 1;
-$noErr{ "uint" } = 1;
-$noErr{ "uchar" } = 1;
-$noErr{ "short" } = 1;
-$noErr{ "ushort" } = 1;
-$noErr{ "unsignedint" } = 1;
-$noErr{ "unsignedchar" } = 1;
-$noErr{ "unsignedshort" } = 1;
-$noErr{ "float" } = 1;
-$noErr{ "double" } = 1;
-$noErr{ "short" } = 1;
-$noErr{ "char" } = 1;
-$noErr{ "unsigned" } = 1;
-$noErr{ "bool" } = 1;
-$noErr{ "long" } = 1;
-$noErr{ "string" } = 1;
-
-# for main
-
-$i = 0;
-@myargs = @ARGV;
-
-%children = ();
-%parents = ();
-
-# "<>" is the root of all classes.
-$children{"<>"} = "";
-$parents{"<>"} = "<>";
-
-$rootNode = Ast::New("ROOT");
-
-####
-#
-# Function addClass
-# Inserts a class into the hierarchy
-####
-
-sub addClass
-{
- my($parent, $child) = @_;
-
- $parents{ $child } = $parent;
-
- $children{ $parent } = $child.";".$children{ $parent };
-
- $children{ $child } = "" if !defined $children{ $child };
-}
-
-###########################################################
-#
-# Function
-# readLibrary
-#
-###########################################################
-
-sub readLibrary
-{
- my( $libname ) = @_;
- my( $prefix );
- my( $libFull );
-
- $libFull = $libPath."/".$libname.".kdoc";
-
- open( IMP, "$libFull" )
- || die "Could not open ".$libFull." for reading\n";
-
- # the first line of a library contains the base url under
- # which is was stored (using the -u flag at invokation of
- # kdoc)
- $prefix = <IMP>;
- chop $prefix;
-
- # However, there is one problem: kdoc references other symbols
- # relative to the files of the library it is working on and that
- # will not be in the present directory but somewhere else.
- # Therefore $prefix is relative to the present directory, while
- # the files of the present library will go to $docPath; we
- # therefore need to modify $prefix for the number of subdirectories
- # in $docPath. That scheme will fail, however, if $docPath is an
- # absolute path, if $prefix is an absolute path or if $docPath
- # contains "../". I (WB) am not proficient enough to invent a
- # workaround
-
- foreach ( split "/", $prefix)
- {
- $prefix = "../" . $prefix;
- }
- if ( ! ( $prefix =~ /\/$/) )
- {
- $prefix .= "/";
- }
-
- while ( <IMP> )
- {
- chop;
- if ( /^(.*)=(.*)$/ )
- {
- $classRef{ $1 } = $prefix . "$2";
- }
- if( /^(\w+)=/ ) {
- # add classes to external list
- $classSource{ $1 } = $libname;
- }
- }
-
- close( IMP );
-}
-
-###########################################################
-#
-# Function
-# processClass
-#
-###########################################################
-
-sub processClass
-{
- my( $end );
-
-# New Ast Node for class
-
- $classNode = Ast::New( $class );
-
-# use first line of text as short text if we have none yet.
- if( $classShortText eq "" && $classText ne "" ) {
- $_ = $classText;
- /((\s|\w|[^.\n])*)\.*/;
- $classShortText = $1." ";
- $classShortTextSet = 1;
- }
-
-
-
-# work out ancestors
- $_ = $classInherits;
- tr/\:\{//d;
- s/protected//g;
- s/private//g;
- s/public//g;
- s/virtual//g;
-
- if ( !( /^\s*$/ ) )
- {
- foreach $c ( split /,/, $_ )
- {
- $c =~ s/\s//g;
- addClass( $c, $class );
-
- $inheritNode = Ast::New($c);
- $classNode->AddPropList( "Ancestors", $inheritNode );
- }
-
- }
- else {
- addClass( "<>", $class );
- }
-
-# process the rest of the class declaration
-
- while ( <IN> )
- {
- next if /^\s*$/g;
-
-# parse out // comments, except where in a string or
- s#//.*$##g unless m#"[^"]+".*//# || m#^\s*///#;
-
-
- # if we find a "template <whatever>" on a single line,
- # concatenate it with the next line
- if ( /^\s*(template\s*<(([-\w,_\s]|<([-\w,+\s])+>)+)>\s*)\n/ ) {
- $_ = $1 . " " . <IN>;
- }
-
- $line = $_;
-
- if ( /^\s*\}\s*;\s*(\/\/.*)?$/ )
- {
-# end of class declaration
-# dump all stored stuff to file
-
- print "CLASS END: $class\n" if $debug;
-
- if( ($classInternal == 0 || $docInternal )
- && ( $classDeprecated == 0 || $docDeprecated ) ) {
-
- # add class to list only if it is expected to be
- # documented
-
- addReference( $classNode->{"astNodeName"},
- $classNode->{"astNodeName"}.".html" );
-
- print "Added $class to tree\n" if $debug;
-
- $rootNode->AddPropList( "classes", $classNode );
-
- $filename =~ s/^\s+$//g;
- $classAuthor =~ s/^\s+$//g;
- $classVersion =~ s/^\s+$//g;
- $classText =~ s/^\s+$//g;
- $classSee =~ s/^\s+$//g;
-
- $classNode->AddProp( "Author", $classAuthor );
- $classNode->AddProp( "ClassSee", $classSee );
- $classNode->AddProp( "ClassShort", $classShortText );
- $classNode->AddProp( "Deprecated", $classDeprecated );
- $classNode->AddProp( "Description", $classText );
- $classNode->AddProp( "Header", $filename );
- $classNode->AddProp( "Internal", $classInternal );
- $classNode->AddProp( "TmplArgs", $classTmplArgs );
- $classNode->AddProp( "Version", $classVersion );
-
- }
-
- resetClassDoc();
-
- return;
- }
- elsif ( /^\s*public\s*:\s*$/ && $access ne "public" )
- {
- $access = "public";
- }
- elsif ( /^\s*protected\s*:\s*$/ && $access ne "protected" )
- {
- $access = "protected";
- }
- elsif ( /^\s*private\s*:\s*$/ && $access ne "private" )
- {
- $access = "private";
- }
- elsif ( /^\s*signals\s*:\s*$/ && $access ne "signals" )
- {
- $access = "signals";
- }
- elsif ( /^\s*protected\s+slots\s*:\s*$/ && $access ne "protected_slots" )
- {
- $access = "protected_slots";
- }
- elsif ( /^\s*public\s+slots\s*:\s*$/ && $access ne "public_slots" )
- {
- $access = "public_slots";
- }
- elsif ( /^\s*private\s+slots\s*:\s*$/ && $access ne "private_slots" )
- {
- $access = "private_slots";
- }
-
- #### Preprocessor directive
-
- elsif( /^\s*#[\w\.-_]+/ ) {
-
- print "CPP: $_\n" if $debug;
-
- # skip lines carried on with \
- while( /\\\s*$/ ) {
- if( !($_ = <IN>) ) {
- die "Bad Finish";
- }
- print "CPP: Skipped: $_" if $debug;
- }
- }
-
- #### Typedef
-
- elsif( /^\s*typedef\s+(.*[&\*\s])\s*([\w-:_]+)\s*(\[[^\]]*\])*;\s*$/ ) {
- # 1 2 3 4
- # 1: type name, possibly more than one
- # 2: name of new type
- # 3: possible array declaration(s)
- # 4: anything else
- print "TYPED: $2: $1\n" if $debug;
-
- if( ( $methInternal == 0 || $docInternal)
- && ($methDeprecated == 0 || $docDeprecated) ) {
-
- addReference( $class."::".$2, $class.".html#".$2 );
-
- $newNode = Ast::New( $2 );
-
- $classNode->AddPropList( $access, $newNode );
-
- $newNode->AddProp( "Keyword", "typedef" );
- $newNode->AddProp( "Description", $text );
- $newNode->AddProp( "See", $see );
- $newNode->AddProp( "MethInternal", $methInternal );
- $newNode->AddProp( "MethDeprecated", $methDeprecated );
-
- $newNode->AddProp( "Type", $1 );
- $newNode->AddProp( "Array", $3 );
- }
-
- resetMemberDoc();
- }
-
- #### Enum
-
- elsif ( /^\s*enum\s+([\w_]*)\s*\{(.*)(\/\/.*)?/ )
- {
- $enum = $1;
- $tmp = $2;
- $args = "";
-
- # collect constants till } is found
-
- while ( !($tmp =~ /\}/) )
- {
- $args = $args . $tmp;
- $tmp = <IN>;
- }
-
- $_ = $tmp;
- /^(.*)\}/;
- $args = $args . $1;
-
-
- # update Ast node
-
- if( ( !$methInternal || $docInternal)
- && (!$methDeprecated || $docDeprecated) ) {
-
- addReference( $class."::".$enum, $class.".html#".$enum );
-
- $see =~ s/^\s*$//g;
- $text =~ s/^\s*$//g;
- $args =~ s/^\s*$//g;
-
- $newNode = Ast::New( $enum );
- $classNode->AddPropList( $access, $newNode );
- $newNode->AddProp( "Keyword", "enum" );
- $newNode->AddProp( "Description", $text );
- $newNode->AddProp( "See", $see );
- $newNode->AddProp( "Constants", $args );
- $newNode->AddProp( "MethInternal", $methInternal );
- $newNode->AddProp( "MethDeprecated", $methDeprecated );
- }
-
- resetMemberDoc();
- }
-
- #### parse out Q_OBJECT macro
- elsif ( /^\s*Q_OBJECT[^\w]+(\/\/.*)?/ ) {
- # dont do anything
- }
-
-
- #### Variables
- elsif ( /^[^\(]*$/ && /^(?:[\w_\:\s]+(?:<(?:(?:[-\w,_\s]|<(?:[-\w,+\s])+>)+)>)?(?:::)?)[\&\s*]+[\w_]+\s*(\[[^\]]*\])*\s*;\s*(\/\/.*)?$/ )
- # 1 2 3 4 5 6
- # 1: variable declarations have no ()
- # 2: data type, possibly several words as in 'unsigned int' and
- # maybe containing templates <...> and ::
- # 3: reference pointer or at least a space before variable name
- # 4: variable name
- # 5: array declaration
- # 6: spaces and or comments
- {
- $str = $_;
-
- # split variable declaration:
- # $1 = data type
- # $2 = reference or pointer (why are there two \s's?)
- # $3 = variable name
- # $4 = array declaration
- $str =~ /^(.+)([\s&\s\*])([\w_]+)\s*((\[[^\]]*\])*)\s*;\s*$/;
- $var = $3;
- $rest = $1.$2;
- $array_declaration = $4;
-
-
- if( ( !$methInternal || $docInternal)
- && (!$methDeprecated || $docDeprecated) ) {
-
- addReference( $class."::".$var, $class.".html#".$var );
-
- $rest =~ s/^\s*$//g;
- $see =~ s/^\s*$//g;
- $text =~ s/^\s*$//g;
-
- $newNode = Ast::New( $var );
- $classNode->AddPropList( $access, $newNode );
- $newNode->AddProp( "Keyword", "property" );
- $newNode->AddProp( "Type", $rest );
- $newNode->AddProp( "Array", $array_declaration);
- $newNode->AddProp( "Description", $text );
- $newNode->AddProp( "See", $see );
- $newNode->AddProp( "MethInternal", $methInternal );
- $newNode->AddProp( "MethDeprecated", $methDeprecated );
- }
-
- resetMemberDoc();
- }
-
-
- #### Nested class
-
- elsif ( /^\s*(class|struct)/ ) {
- # TODO: Implement nested classes
- # Till then, find end of declaration
- print "NESTED $_\n" if $debug;
-
- if( !/;/ )
- {
-# probably unterminated as yet
- print "\nNESTED begin (for $methodName): $_\n"
- if $debug == 1;
- $foundMemberEnd = 0;
- $lookingFor = ";";
- $depth = 0;
-
- while( $foundMemberEnd == 0 ) {
-
- if( /\{/ ) {
- $depth += countReg( $_, "\{" );
- $lookingFor = "\}";
- }
-
- print "NESTED '$lookingFor': $_\n" if $debug == 1;
-
- if ( /$lookingFor/ )
- {
- $depth -= countReg( $_, $lookingFor );
-
- $foundMemberEnd = 1 if $depth <= 0;
- }
-
- if ($foundMemberEnd == 0 ) {
- $_ = <IN>;
- s#//.*$##g;
- }
- }
- }
- }
- elsif ( m#^\s*///\s*(.*)# && $strictParser == 0 ) {
- # DOC++ style "///" single-line member doccer
- # will be used only if no other documentation exists.
-
- resetMemberDoc();
-
- $text = $1;
-
- print "DOCXX-STYLE: $text\n" if $debug != 0;
- }
-
- elsif ( /^\s*\/\// )
- {
- # parse out comment
- print "C++ comment: $_" if $debug != 0;
- }
-
- elsif ( /^\s*\/\*\*+\s*(.*)\*+\/\s*/ && $strictParser == 0 ) {
- # single-line "/**..*/" type doc line
- # not allowed by the spec but we'll let it pass
- # if we're being lenient.
-
- resetMemberDoc();
-
- $text = $1;
- print "ONELINE: $text\n" if $debug == 1;
- }
-
- elsif( /^\s*\/\*[^*]/ ) {
- # (multiline) comment
- while( !/\*\// ) {
- # skip lines till we find its end
- $_ = <IN>;
- }
- }
-
- elsif ( /^\s*\/\*\*+\s*(.*)/ ) {
- # member documentation begins
- processMemberDoc();
- }
-
- #### Member Function
-
- elsif ( /^\s*([^\(]*)\s+([^\s\(]+)\s*\((.*)(\/\/.*)?$/ )
- {
- # note that the return type may contain
- # template <whatever>!
- processMethod( $1, $2, $3 );
- }
-
- }
-
-} # processClass
-
-sub processMethod {
-
- my( $returnType, $methodName, $rest ) = @_;
-
-
-
-
-# ensure that everything after the operator keyword goes into the
-# member name and not the return type
-
- if( $returnType =~ /operator/ ) {
- $returnType =~ s/(operator.*)//g;
- $methodName = $1." ".$methodName;
- }
-
-# special case: if we have operator(), then the operator keyword got
-# matched into methodName, the first "(" was thrown away and $rest
-# contains ") (argumentlist)..."
- if( ($methodName =~ /^operator$/) && ($rest =~ /^\)/) ) {
- $methodName .= " ()";
- $rest =~ s/^\)\s*\(//;
- }
-
-# ensure that "*" is part of return type
-
- if( $methodName =~ /^\s*([\*|\&]+)(.*)$/ ) {
- $returnType = $returnType.$1;
- $methodName = $2;
- }
-
-## Read the parameters ($3 onward)
-
- $params = "";
-
- # Find end of params
- while ( !($rest =~ /^[^)]*\)(.*)(\/\/.*)?$/) )
- {
- print "SEARCHING: $rest\n" if $debug == 1;
- $params = $params . $rest;
- ($rest = <IN>) =~ s#//.*$##g;
- }
-
- $rest =~ s#//.*$##g;
- $_ = $rest;
- /^([^\)]*)\)(.*)/;
-
- # include all parameters before )
- $params .= $1;
- my($restOfLine) = $2;
-
- my($constness) = "";
-
- if( $restOfLine =~ /^\s*const/ ) {
- $constness = "const";
- }
-
-# need to skip inline function if it is there, or if the
-# end of declaration is staggered for some other reason.
-
- if( ! /\)[\s\w=]*;/ )
- {
-# probably unterminated as yet
- print "\nINLINE begin (for $methodName): $_\n" if $debug == 1;
-
- $_ = $rest;
- $foundMemberEnd = 0;
- $lookingFor = ";";
- $depth = 0;
-
- while( $foundMemberEnd == 0 ) {
-
- if( /\{/ ) {
- $depth += countReg( $_, "\{" );
- $lookingFor = "\}";
- }
-
- print "INLINE '$lookingFor': $_\n" if $debug == 1;
-
- if ( /$lookingFor/ )
- {
- $depth -= countReg( $_, $lookingFor );
-
- $foundMemberEnd = 1 if $depth <= 0;
- }
-
- if ($foundMemberEnd == 0 ) {
- $_ = <IN>;
- s#//.*$##g;
- }
- }
- }
-
- # Register if not internal or deprecated
-
- if( ( !$methInternal || $docInternal)
- && (!$methDeprecated || $docDeprecated) ) {
-
- $returnType =~ s/^\s*$//g;
- $see =~ s/^\s*$//g;
- $text =~ s/^\s*$//g;
- $retText =~ s/^\s*$//g;
- $params =~ s/^\s*$//g;
- $constness =~ s/^\s*$//g;
-
- addReference( $class."::".$methodName, $class.".html#".$methodName );
-
- $newNode = Ast::New( $methodName );
- $classNode->AddPropList( $access, $newNode );
-
- $newNode->AddProp( "ReturnType", $returnType );
- $newNode->AddProp( "Const", $constness );
- $newNode->AddProp( "Parameters", $params );
- $newNode->AddProp( "Keyword", "method" );
- $newNode->AddProp( "Description", $text );
- $newNode->AddProp( "Returns", $retText );
- $newNode->AddProp( "See", $see );
- $newNode->AddProp( "Exceptions", $exceptions );
- $newNode->AddProp( "MethInternal", $methInternal );
- $newNode->AddProp( "MethDeprecated", $methDeprecated );
-
- foreach $param ( keys %paramDesc ) {
- $paramNode = Ast::New( $param );
- ($desc = $paramDesc{$param}) =~ s/^\s*$//g;
- $paramNode->AddProp("Description", $desc );
-
- $newNode->AddPropList( "ParamDoc", $paramNode );
- }
- }
-
- resetMemberDoc();
-} # processMethod
-
-#
-# Processes a doc comment
-#
-
-sub processMemberDoc
-{
- my( $endDocBlock ) = 0;
- my( $paramFlag ) = 0;
- my( $retFlag ) = 0;
-
- resetMemberDoc();
-
- $lastLineBlank = 0;
-
-# allow documentation on first line only if
-# we're being lenient.
-
- if( $strictParser == 0 ) {
- $text = $1;
- }
- else {
- $text = "";
- }
-
- $endDocBlock = 0;
-
- while ( $endDocBlock == 0 ) {
- $_ = <IN>;
- $line = $_;
-
- if ( $paramFlag == 1 ) {
-
- if ( /^\s*\**\s*\@/ || /^\s*\**\s*\*\// ) {
-#parameter ends.
- $paramDesc{ $paramName } = $paramText;
- $paramFlag = 0;
- }
- else {
- /^\s*\**(.*)$/;
- $paramText .= $1."\n";
- $_ = "";
- }
- }
- elsif ( $retFlag == 1 ) {
- if ( /^\s*\**\s*\@/ || /^\s*\**\s*\*\// ) {
- $retFlag = 0;
- }
- else {
- /^\s*\*+(.*)$/;
- $retText .= "\n$1";
- $_ = "";
- }
- }
-
- if ( /^\s*(.*)\*+\// ) {
-# end of member documentation
- $endDocBlock = 1;
- }
- elsif ( /^(.*)\*+\/\s*$/ && ($strictParser == 0) ) {
-# end of member documentation, with extraneous
-# space before end tag
-# only used if we're being lenient.
-
- $text = $text . $_ . '\n';
-
- $endDocBlock = 1;
-
- print "BAD MEMBER END: $_\n" if $debug == 1;
- }
- elsif ( /^\s*\**\s*\@param\s+([^\s]+)\s(.*)$/ ) {
-# "@param"
- $paramName = $1;
- $paramText = $2;
-
- $paramFlag = 1;
- }
- elsif ( /^\s*\**\s*\@return\s+(.*)/ ) {
-# "@return"
-
- $retText = $1;
- $retFlag = 1;
- }
- elsif( /^\s*\**\s*\@internal/ ) {
-# "@internal"
- $methInternal = 1;
- }
- elsif( /^\s*\**\s*\@deprecated/ ) {
-# "@deprecated"
- $methDeprecated = 1;
- }
- elsif ( /^\s*\**\s*\@exception\s+([:#\w_~]+)/ ) {
-# "@exception"
- $exceptions .= $1;
- }
- elsif ( /^\s*\**\s*\@see\s+([:#\w_~]+)/ ) {
-# "@see"
- $see .= ", " if $see ne "";
-
- $c = $1;
- $see .= $c;
- }
- elsif( /^\s*\**\s*\@(short|author|version)/ ) {
-# ignore tags that cannot exist in
-# member doc
- }
- elsif ( /^\s*\**\s*(.*)$/ ) {
-# normal member documentation text,
-# " * blah blah"
- $text = $text. $1 . "\n";
- } # if
- } # while still in doc block
-} # processMemberDoc
-
-###########################################################
-#
-# Function
-# processFile #
-###########################################################
-
-sub processFile
-{
- while ( <IN> )
- {
- $line = $_;
-
- next if /^\s*$/;
-
- if( m#^\s*/\*[^*]# ) {
-# skip multiline comment started with /* (but only one asterisk!)
- while( !/\*\// ) {
- $_ = <IN>;
- }
- }
- elsif ( m#^\s*/\*\*+\s*(.*)\*/\s*# && ($strictParser == 0) ) {
- # single-line "/**..*/" type doc line
- # not allowed by the spec but we'll let it pass
- # if we're being lenient.
- resetMemberDoc();
- $classText = $1;
- $classShortText = $1;
- print "ONELINE classdoc: $text\n" if $debug == 1;
- }
- elsif( /^\s*#[\w\.-_]+/ ) {
- #### Preprocessor directive
- print "CPP: $_\n" if $debug;
-
- # skip lines carried on with \
- while( /\\\s*$/ ) {
- if( !($_ = <IN>) ) {
- die "Bad Finish";
- }
- print "CPP: Skipped: $_" if $debug;
- }
- }
- elsif ( /^\s*\/\*\*+\s*(.*)$/ )
- {
- # start of class doc comment
- $classSee = "";
- $classText = "";
- $classShortText = "";
- $lastLineBlank = 0;
-
- $classText = $1 if( $strictParser == 0 );
-
- $end = 0;
- while ( $end == 0 )
- {
- $_ = <IN>;
- $line = $_;
-
- if ( /^\s*\*\// )
- {
- # end of documentation, assume class
- # declaration is next.
- $end = 1;
- }
- elsif ( /^(.*)\*+\/\s*$/ && ($strictParser == 0) )
- {
- # end of class documentation, with extraneous
- # space before end tag
- # only used if we are being lenient.
-
- $text = $text . $1 . '\n';
-
- $end = 1;
-
- print "BAD CLASSDOC END: $_\n" if $debug == 1;
- }
- elsif ( /^\s*\**\s*\@see\s+([#\w_~]+)/ )
- {
- # @see
- if ( $classSee ne "" )
- {
- $classSee .= ", ";
- }
- $c = $1;
- $classSee .= $c;
- }
- elsif ( /^\s*\*?\s*\@author\s+(.*)/ )
- {
- # @author
- $classAuthor .= $1 . " ";
- }
- elsif ( /^\s*\**\s*\@version\s+(.*)/ )
- {
- # @version
- $classVersion .= $1 . " ";
- }
- elsif ( /^\s*\**\s*\@short\s+(.*)/ )
- {
- # @short
- $classShortText .= $1 . " ";
- }
- elsif ( /^\s*\**\s*\@deprecated/ )
- {
- # @deprecated
- $classDeprecated = 1;
- }
- elsif ( /^\s*\**\s*\@internal/ )
- {
- # @internal
- $classInternal = 1;
- }
- elsif ( /^\s*\**(.*)$/ )
- {
- # normal documentation text
- $lead = $1;
-
- # check for asterisk
- if ( /^\s*\*+/ ) {
- $classText .= $lead. "\n";
- }
- else {
- # preserve leading space.
- $classText .= $_. "\n";
- }
- }
- }
- $_ = <IN>;
- $line = $_;
-
- } # documentation if
-
- if ( /^(\s*template\s*<(([-\w,_\s]|<([-\w,+\s])+>)+)>)/ ) {
- $classTmplArgs = $2;
-
- ($resetme = $1);
- $resetme =~ s/([\W])/\\$1/g;
-
- s/$resetme//g;
- }
-
- if ( !(/;/) && /^\s*(class|struct)\s+([-\w_]+)(.*)$/ )
- {
-
-# class declaration begins.
-
- #TODO: skip class if it doesn't have documentation
- #and we aren't documenting NULL classes.
-
- $class = $2;
- ($classInherits = $3) =~ s#//.*##g;
-
- # handle template-instantiation class
- if($classInherits =~
- /^\s*(<([-\w,_\s]|<([-\w,+\s])+>)+>)/) {
- $class .= $1;
- $class =~ s/\s+//g;
- }
-
- $classInherits =~ s/<([-\w,_\s]|<([-\w,+\s])+>)+>//g;
-
- print "\n $class " unless $quiet;
-
-# set default visibility
- if( $1 eq "class" ) {
- $access = "private";
- } else {
- $access = "public";
- }
-
-# process everything in the class
- processClass();
- }
-
- } # outer file while
-
- close( IN );
-}
-
-#
-#
-#
-
-sub addReference
-{
- my( $target, $pointer) = @_;
-
- print KDOC $target."=".$pointer."\n";
- $classRef{ $target } = $pointer;
-}
-
-# Reset the documentation variables for a class member.
-
-sub resetMemberDoc
-{
- $exceptions = "";
- %paramDesc = ();
- $paramName = "";
- $paramText = "";
- $retText = "";
- $see = "";
- $text = "";
- $methInternal = 0;
- $methDeprecated=0;
-}
-
-#
-# Reset the documentation variables for a class.
-#
-sub resetClassDoc
-{
- $classAuthor = "";
- $classDeprecated= 0;
- $classInternal = 0;
- $classSee = "";
- $classShortText = "";
- $classShortTextSet = 0;
- $classTmplArgs = "";
- $classAbstract = 0;
- $classText = "";
- $classVersion = "";
-}
-
-# Counts the number of times a regular expression occurs in a string
-
-sub countReg
-{
- my( $str, $regexp ) = @_;
- my( $count ) = 0;
-
- while( $str =~ /$regexp/ ) {
- $count++;
-
- $str =~ s/$regexp//;
- }
-
- return $count;
-}
-
-#
-# Display usage and quit with an error code.
-#
-
-sub usage
-{
-die<<EOF;
-
-KDOC: The KDE Class Documentation Tool for C++, $version
- Torben Weis <weis\@kde.org>, Sirtaj Kang <taj\@kde.org>
-
-Usage:
- kdoc [-a] [-M][-H][-T] [-a][-e][-i][-p][-q] [-L<lib-path>]
- [-d<outdir>] [-u <base URL>] <library> <header>...
- [-l<lib> ... ]
-
- -T Generate LaTeX documentation.
- -M Generate man pages.
-
- -H Generate HTML documentation (default).
- -d<dir> Directory for HTML and LaTeX output.
- -u<url> Base path/url by which this library will be accessed.
-
- -a Document methods/classes without explicit doc comment.
- -e Skip deprecated methods and classes (\@deprecated tag)
- -i Skip classes marked internal (\@internal tag)
- -p Document private members.
- -q Proceed quietly (display errors only)
-
- -L<dir> Path to kdoc libraries. Default is current dir, or
- \$KDOCLIBS if it is set.
-
- <library> The name of the kdoc library to create.
- <headers> C++ headers to process.
-
- -l<lib> Cross reference these libraries.
-EOF
-}
-
-sub bumpArg
-{
- return $1 if $1 ne "";
- my($real);
-
- $i = $i + 1;
-
- $real = $myargs[ $i ];
- $myargs[ $i ] = "-".$myargs[ $i ];
-
-
- return $real;
-}
-
-
-#
-# Calls dumpDoc for each format for which output was requested.
-#
-
-sub generateDocs
-{
-
- if( $genHTML == 0 && $genTeX == 0 && $genMan == 0)
- {
- $genHTML = 1;
- require kdocHTML;
- }
-
- if( $genHTML != 0 ) {
- kdocHTML::dumpDoc( $name, $rootNode, $docPath );
- }
-
- if( $genTeX != 0 ) {
- kdocTeX::dumpDoc( $name, $rootNode, $docPath );
- }
-
- if( $genMan != 0 ) {
- kdocMan::dumpDoc( $name, $rootNode, $docPath );
- }
-
- print "Done.\n" unless $quiet;
-}
-
-###########################################################
-#
-# Main
-#
-###########################################################
-
-if ( $#ARGV == -1 )
-{
- die "kdoc: No arguments. Type 'kdoc -h' for help.\n";
-}
-
-#
-# process switches and args #
-#
-
-$libFoundAt = -1;
-
-$i = 0;
-
-while( $i <=$#myargs )
-{
- $filename = $myargs[ $i ];
- if ( $filename =~ /^-d(.*)$/ ) {
-
- $docPath = bumpArg();
- }
- elsif ( $filename =~ /^-u(.*)$/ ) {
- $urlBase= bumpArg();
- }
- elsif ( $filename =~ /^-L(.*)$/ ) {
- $libPath = bumpArg();
- }
- elsif ( $filename =~ /^-l(.*)$/ ) {
- readLibrary( bumpArg() );
- }
- elsif ( $filename =~ /^-a/ ) {
- $documentAll = 1;
- }
- elsif ( $filename =~ /^-M/ ) {
- $genMan = 1;
- require kdocMan;
- }
- elsif ( $filename =~ /^-T/ ) {
- $genTeX = 1;
- require kdocTeX;
- }
- elsif ( $filename =~ /^-H/ ) {
- $genHTML = 1;
- require kdocHTML;
- }
- elsif ( $filename =~ /^-e/ ) {
- $docDeprecated = 0;
- }
- elsif ( $filename =~ /^-D/ ) {
- $debug = 1;
- }
- elsif ( $filename =~ /^-i/ ) {
- $docInternal = 0;
- }
- elsif ( $filename =~ /^-p/ ) {
- $dontDoPrivate = 0;
- }
- elsif ( $filename =~ /^-q/ ) {
- $quiet = 1;
- }
- elsif( $filename =~ /^-v(.*)/ ) {
- die "kdoc: $version (c) Torben Weis, Sirtaj S. Kang\n";
- }
- elsif( $filename =~ /^-h/ || $filename =~ /^--help/ )
- {
- usage();
- }
- elsif( $filename =~ /^-(.*)/ ) {
- die "kdoc: -$1 is an unsupported option. Type kdoc -h for help.\n";
- }
- elsif( $lib eq "" ) {
- $lib = $filename;
- $libFoundAt = $i;
- }
-
- $i = $i + 1;
-}
-
-$urlBase = $docPath if $urlBase eq "";
-
-usage() if $lib eq "";
-
-#parse out path name for printed libName
-( $name = $lib ) =~ s#.*/##g;
-
-$lib = $libPath."/".$lib.".kdoc";
-
-open( KDOC, ">$lib" ) || die "Could not open $lib for writing\n";
-print KDOC "$urlBase\n";
-
-
-# check document output path
-
-if( !(-d $docPath))
-{
- if( system("mkdir $docPath") ) {
- close ( KDOC );
- unlink( $lib );
- die "Document path '$docPath' doesn't exist and it couldn't\n".
- "be created.\n";
- }
-}
-
-#
-# process each file
-#
-
-foreach $i (0..$#myargs)
-{
- $filename = $myargs[ $i ];
- if ( $filename =~ /^-(.*)$/ )
- {
-#option... don't process
- }
- elsif( $i != $libFoundAt )
- {
- print "Processing $filename:" unless $quiet;
- push( @headerList, $filename );
- open( IN, $filename ) || die "Could not open $filename for input\n";
-
- processFile();
-
- print "\n" unless $quiet;
-
- close( IN );
- }
-}
-
-
-close( KDOC );
-
-# reparent all parentless classes to root.
-
-$rootNode->Visit("main");
-
-if( defined $classes ) {
-
- foreach $class ( @{$classes} )
- {
- $className = $class->{"astNodeName"};
-
- if ( !defined $parents{ $parents{$className} }) {
- addClass( "<>", $parents{$className} );
- }
- }
-}
-
-Ast::UnVisit();
-
-generateDocs();
-
-# file ends
+++ /dev/null
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-package kdocHTML;
-
-## KDOC HTML output
-#
-# From main:
-# children classRef classSource dontDoPrivate
-# generatedByText headerList quiet
-
-require Ast;
-
-BEGIN
-{
- $lib = "";
- $outputdir = ".";
- $linkRef = 0;
- $modname = "kdocHTML";
- %classList = ();
-}
-
-
-sub dumpDoc
-{
- $genText = $main::generatedByText;
-
- ($lib, $root, $outputdir) = @_;
-
- print "Generating HTML documentation.\n" unless $main::quiet;
- writeList();
- writeHier();
- writeHeaderList();
-
- print "Generating HTMLized headers.\n" unless $main::quiet;
- foreach $header ( @main::headerList ) {
- markupCxxHeader( $header );
- }
-}
-
-sub writeHeaderList
-{
-
- open(HDRIDX, ">$outputdir/header-list.html")
- || die "Couldn't create $outputdir/header-list.html\n";
-
- print HDRIDX<<EOF;
-<HTML><HEAD><TITLE>$lib Header Index</TITLE></HEAD><BODY bgcolor="#ffffff">
- <H1>$lib Header Index</H1>
-<p>
-[<A HREF="index.html">Index</A>] [<A HREF="hier.html">Hierarchy</A>] [Headers]
-</p>
-<HR>
-<UL>
-EOF
-
- foreach $header ( sort @main::headerList ) {
- $_ = $header;
-# convert dashes to double dash, convert path to dash
- s/-/--g/g;
- s/\/|\./-/g;
-
- # never let a file name start with a '-' sign, since this makes
- # some programs think the file name really was a parameter to the
- # program. Filenames starting with '-' usually happen if you let
- # kdoc work on files like '../../include/foo/bar.h', given the
- # above substitution rules. Therefore: if a filename starts with
- # '-', prepend a '_'
- s/^-/_-/;
-
- print HDRIDX "\t<LI><A HREF=\"$_.html\">$header</A></LI>\n";
- }
-print HDRIDX "</UL>\n<HR>\n<address>$genText",
- "</address>\n</BODY>\n</HTML>\n";
-}
-
-sub escape
-{
- my( $str ) = @_;
-
- $str =~ s/&/\&/g;
- $str =~ s/</\</g;
- $str =~ s/>/\>/g;
- $str =~ s/"/\"/g;
-
- return $str;
-}
-
-# In file names, we don't want to have the special characters be
-# replaced by the rules '>' -> '>' etc., so we revert the
-# replacement. The reason is that when giving Netscape the tag
-# <a href="abc<2>.html"> xyz </a>, it looks for the file
-# "abc<2>.html". Strange, eh? We'd like to replace filenames
-# back to the original names, which is not a good idea also, since
-# filenames containing <>&" are no good. Therefore, we stay with
-# the HTML tags, but replace the '&' and ';' by ',' which should
-# not be a character which appears in class and file names, but
-# which has no special meaning for the shell either.
-sub filenameUnescape
-{
- my( $str ) = @_;
-
- $str =~ s/\&/,amp,/g;
- $str =~ s/\</,lt,/g;
- $str =~ s/\>/,gt,/g;
- $str =~ s/\"/,quot,/g;
-
- return $str;
-}
-
-sub writeList()
-{
-
- $root->Visit( $modname );
-
- foreach $class ( @{$classes} )
- {
- $classList{ $class->{'astNodeName'} } = $class;
- }
-
- open ( LIBIDX, ">".$outputdir."/index.html" )
- || die "Couldn't write to ".$outputdir."/index.html" ;
-
- print LIBIDX<<EOF;
-<HTML><HEAD><TITLE>$lib Class Index</TITLE></HEAD><BODY bgcolor="#ffffff">
- <H1>$lib Class Index</H1>
-<p>
-[Index] [<A HREF="hier.html">Hierarchy</A>] [<A HREF="header-list.html">Headers</A>]
-</p>
-<HR>
-<TABLE BORDER="0" WIDTH="100%">
-EOF
-
- foreach $className ( sort keys %classList ) {
- $class = $classList { $className };
-
- $class->Visit( $modname );
-
- $className = $astNodeName;
-
- # escape special characters in class names (e.g. <>&)
- # however, we need to unescape them when using the
- # class name as a file name
- $astNodeName = escape( $astNodeName );
-
- print LIBIDX "<TR><TD ALIGN=\"LEFT\" VALIGN=\"TOP\">",
- "<a href=\"", filenameUnescape($astNodeName), ".html\">",
- $astNodeName, "</a></TD>\n", "\t<TD>",
- makeReferencedText( $ClassShort ), "</TD></TR>\n";
-
- writeClass();
-
- Ast::UnVisit();
-
- }
-
- Ast::UnVisit();
-
-print LIBIDX<<EOF;
-</TABLE>
-<HR>
-<TABLE WIDTH="100%" BORDER="0">
-<TR>
-<TD ALIGN="LEFT" VALIGN="TOP"><address>$genText</address></TD>
-<TD ALIGN="RIGHT" VALIGN="TOP">
-<b>K</b><i>doc</i>
-</TD>
-</TR>
-</TABLE>
-</BODY></HTML>
-EOF
-
-}
-
-###########################################################
-#
-# Function
-# makeReferencedText( text )
-#
-###########################################################
-
-sub makeReferencedText
-{
- local( $t ) = @_;
-
- while ( $t =~ /(\@ref\s+)([\w_\#~\d\:]+\W)/ )
- {##
- $pat = $1.$2;
- $ref = $2;
- chop $ref;
- $repl = findClassReference( $ref ) . " ";
- $pat =~ s/\(/\\(/g;
- $pat =~ s/\)/\\)/g;
- $t =~ s/$pat/$repl/;
- }
-
- $t =~ s/</</g;
- $t =~ s/>/>/g;
- $t =~ s/<\/p><p>/<\/p><p>/g;
- $t =~ s/\#([^\#]*)\#/<CODE>$1<\/CODE>/g;
- $t =~ s/\\begin\{verbatim\}/<pre>/g;
- $t =~ s/\\end\{verbatim\}/<\/pre>/g;
- $t =~ s/\\begin\{itemize\}/<UL>/g;
- $t =~ s/\\end\{itemize\}/<\/UL>/g;
- $t =~ s/\\item/<LI>/g;
- $t =~ s/\{\\bf([^}]*)}/<b>$1<\/b>/g;
- $t =~ s/\\section\{([^}]*)\}/<H3>$1<\/H3>/g;
- $t =~ s/\\subsection\{([^}]*)\}/<H4>$1<\/H4>/g;
- $t =~ s/\\subsubsection\{([^}]*)\}/<H5>$1<\/H5>/g;
-
-#while($t =~ m/(\#([^\#]*)\#)/)
-#{
-# $full = $1;
-# $text = $2;
-# $text =~ s/</</g;
-# $text =~ s/>/>/g;
-# $text =~ s/\&/&/g;
-# $t =~ s/$full/<CODE>$text<\/CODE>/;
-#}
- return $t;
-}
-
-###########################################################
-#
-# Function
-# findClassReference( class )
-#
-###########################################################
-
-sub findClassReference
-{
- my( $c ) = @_;
- my( $old );
-
-
- if ( $c eq "" ) { return ""; }
- if ( $c eq "#" ) { return "#"; }
-
- $c =~ s/\#/::/g;
-
- $old = $c;
-
- if ( $c =~ /^\s*(\#|::)(.*)$/ )
- {
- $c = "$className\:\:$2";
- $pref = $1;
- $old =~ s/$pref//;
- }
-
- if ( !defined $main::classRef{ $c } )
- {
- if ( !defined $main::noErr{ $c } )
- {
-# print main::ERROUT "$filename: '$c' undefined Reference\n\n";
- }
- return $c;
- }
- else
- {
- if ( $c =~ /\:\:/ )
- {
- return "<a href=\"".escape($main::classRef{ $c })."\">".
- escape($old)."</a>";
- }
- else
- {
- return "<a href=\"".escape($main::classRef{ $c })."\">".
- escape($c)."</a>";
- }
- }
-}
-
-#############
-#
-# writeHier -- Write HTML Class Hierarchy
-#
-#############
-
-sub writeHier
-{
-
-open( HIER, ">".$outputdir."/hier.html" )
- ||die "Cannot write to $outputdir/hier.html";
-
-print HIER <<EOF;
-<HTML><HEAD><TITLE>$lib Class Hierarchy</TITLE></HEAD>
-<BODY BGCOLOR="#ffffff">
-<H1>$lib Class Hierarchy</H1>
-<p>
-[<A HREF="index.html">Index</A>] [Hierarchy] [<A HREF="header-list.html">Headers</A>]
-</p>
-<HR>
-EOF
-
-printHierarchy( "<>" );
-
-print HIER<<EOF;
-<HR>
-<TABLE WIDTH="100%" BORDER="0">
-<TR>
-<TD ALIGN="LEFT" VALIGN="TOP"><address>$genText</address></TD>
-<TD ALIGN="RIGHT" VALIGN="TOP">
-<b>K</b><i>doc</i>
-</TD>
-</TR>
-</TABLE>
-</BODY></HTML>
-EOF
-
-### here we are!!
- # build a list of parents and children for each class
- # use it to generate a tree of classes suitable for
- # a tree view of the inheritance lattice
-
- # we may not use the %classList for the children information
- # since some classes are parents but not in %classList (those
- # classes that are found as base classes but are not documented
- # within this module
-# my (%kids);
-# my (%parents);
-# my (%classLevel);
-# my ($classNames);
-#
-# foreach $className (keys %main::children)
-# {
-# $kids{$className} = $main::children{$className};
-# }
-#
-# foreach $className (keys %kids)
-# {
-# foreach $c (split /;/, $main::children{$className})
-# {
-# $parents{$c} = $parents{$c} . $className . ";"
-# if !($className eq "<>");
-# }
-# }
-#
-# # build a list of all class names, irrespective of whether
-# # they are documented or not.
-# foreach $class (keys %kids, keys %parents, keys %classList)
-# {
-# $classNames = $classNames . $class . ";"
-# if (! ($classNames =~ /$class;/) &&
-# ! ($class eq "<>"));
-# }
-#
-#
-# # now evaluate the list to get the proper hierarchy level
-# # for each class. Loop until all classes are processed,
-# # which may take some iterations since a class can only
-# # be processed if all of its parents have been processed
-# my ($unprocessedClasses);
-# my ($classLevel);
-# my ($maxParentLevel);
-# $unprocessedClasses = 1;
-# while ($unprocessedClasses == 1)
-# {
-# $unprocessedClasses = 0;
-# foreach $class (split /;/, $classNames)
-# {
-# if (! defined $classLevel{$class})
-# {
-# # if class has no children or no parents: assign
-# # level zero. for classes with no parents, this
-# # decision may later be revised
-# if ((! $parents{$class}) ||
-# (! defined $parents{$class}))
-# {
-# $classLevel{$class} = 0;
-# }
-# else
-# {
-# foreach $parent (split /;/, $parents{$class})
-# {
-# # find the maximum level any of the
-# # children has
-# $maxParentLevel = 0;
-#
-# # if the parent has not been processed,
-# # then don't do so for this class also
-# if (! defined $classLevel{$parent})
-# {
-# $unprocessedClasses = 1;
-# last;
-# }
-# else
-# {
-# if ($classLevel{$parent} > $maxParentLevel)
-# {
-# $maxParentLevel = $classLevel{$parent};
-# }
-# }
-# $classLevel{$class} = $maxParentLevel+1;
-# }
-# }
-# }
-# }
-# }
-#
-#
-# foreach $class (sort split /;/, $classNames )
-# {
-# print "--> ", $class, ": $classLevel{$class} <c=", $kids{$class}, "><p=",
-# $parents{$class}, ">\n";
-#
-# }
-}
-
-
-######
-#
-# Dump the hierarchy for a particular class
-#
-######
-
-sub printHierarchy
-{
- my( $className ) = @_;
-
- print HIER "\t<LI>", findClassReference($className),"\n"
- if $className ne "<>";
-
- if( defined $main::classSource{ $className } ) {
- print HIER "<small> (",$main::classSource{$className},")</small>\n";
- }
-
- if ( defined $main::children{$className} ) {
-
- print HIER "\t<UL>\n";
-
- foreach $kid ( sort split /;/, $main::children{$className} )
- {
- printHierarchy( $kid );
- }
- print HIER "\t</UL>\n";
- }
-
- print HIER "\t</LI>" if $className ne "<>";
-}
-
-# #############
-#
-# Write out the documentation for a single class.
-#
-# #############
-
-sub writeClass()
-{
- open( CLASS, ">" .
- $outputdir."/".filenameUnescape($astNodeName) .
- ".html"
- ) || die "Couldn't write to file " .
- $outputdir."/".filenameUnescape($astNodeName).".html";
-
- print CLASS<<EOF;
-<HTML><HEAD><TITLE>$astNodeName Class</TITLE></HEAD>
-<BODY bgcolor="#ffffff\">\n
-<H1>$astNodeName Class Reference</H1>
-<p>
-[<A HREF="index.html">$lib Index</A>] [<A HREF="hier.html">$lib Hierarchy</A>]
-[<A HREF="header-list.html">Headers</A>]
-</p>
-<HR>
-EOF
-
- print CLASS "<h3>This class is Deprecated.</h3>\n" if $Deprecated;
- print CLASS "<h3>Internal class - general use not recommended.</h3>\n"
- if $Internal;
-
- print CLASS "<P>", makeReferencedText( $ClassShort ),
- " <a href=\"#short\">More...</a></P>\n"
- if $ClassShort ne "";
-
- $_ = $Header;
- s/-/--/g;
- s/\/|\./-/g;
-
- # never let a file name start with a '-' sign, since this makes
- # some programs think the file name really was a parameter to the
- # program. Filenames starting with '-' usually happen if you let
- # kdoc work on files like '../../include/foo/bar.h', given the
- # above substitution rules. Therefore: if a filename starts with
- # '-', prepend a '_'
- s/^-/_-/;
-
- $escapedpath = $_;
-
-# include file
-
- print CLASS<<EOF;
-<P>
-<code>
- #include <<a href=\"$escapedpath.html\">$Header</a>>
-</code>\n
-</P>
-EOF
-
-
-# Template
-
- if( $class->{ "TmplArgs" } ne "" ) {
-
- print CLASS "\n<p>Template Form: <code>",
- "template < ", escape( $class->{ "TmplArgs" }),
- " > $astNodeName</code> </p>\n";
- }
-
-# Inheritance
- my ( $pcount ) = 0;
-
- if( defined $class->{ "Ancestors" } ) {
- print CLASS "\n<P>\nInherits: ";
-
- foreach $foreparent ( @{$Ancestors} ) {
- print CLASS ", " if $pcount != 0;
- $pcount = 1;
-
- print CLASS findClassReference(
- $foreparent->{"astNodeName"} );
-
- if( defined $main::classSource{$foreparent->{
- "astNodeName"}} ) {
- print CLASS " (",$main::classSource{
- $foreparent->{"astNodeName"}},")";
- }
- }
-
- print CLASS "\n<\P>";
- }
-
-# Now list members.
-
- $linkRef = 0;
-
- listMethods( "Public Members", $public );
- listMethods( "Public Slots", $public_slots );
- listMethods( "Protected Members", $protected );
- listMethods( "Protected Slots", $protected_slots );
- listMethods( "Signals", $signals );
-
- if( $main::dontDoPrivate == 0 ) {
- listMethods( "Private Members", $private );
- listMethods( "Private Slots", $private_slots );
- }
-print CLASS<<EOF;
-<HR>
-EOF
-
-# Dump Description.
- Ast::UnVisit();
- $class->Visit($modname);
- writeClassDescription();
-
-# Document members.
-
- $linkRef = 0;
-
- writeMemberDoc( "public", $public );
- writeMemberDoc( "public slot", $public_slots );
- writeMemberDoc( "protected", $protected );
- writeMemberDoc( "protected slot", $protected_slots );
- writeMemberDoc( "signal", $signals );
-
- if( $main::dontDoPrivate == 0 ) {
- writeMemberDoc( "private", $private );
- writeMemberDoc( "private slot", $private_slots );
- }
-
-# File Generation info
- print CLASS "<HR>\n<TABLE WIDTH=\"100%\">",
- "<TR><TD ALIGN=\"left\" VALIGN=\"top\">\n";
-
- if( $Author ne "" || $Version ne "" ) {
- print CLASS "\n<UL>";
-
- print CLASS "<LI><I>Author</I>: ", escape($Author), "</LI>\n"
- if $Author ne "";
-
- print CLASS "<LI><I>Version</I>: ", escape($Version), "</LI>\n"
- if $Version ne "";
- print CLASS "<LI>$genText</LI>\n";
-
- print CLASS "</UL>";
- } else {
- print CLASS "<address>$genText<address>\n";
- }
-
- print CLASS<<EOF;
-</TD><TD ALIGN="RIGHT" VALIGN="TOP">
-<b>K</b><i>doc</i>
-</TD>
-</TR></TABLE></BODY></HTML>\n
-EOF
-
-}
-
-######
-# Lists all methods of a particular visibility.
-#####
-
-sub listMethods()
-{
- my( $desc, $members ) = @_;
-
- return if !defined $members || $#{$members} == -1;
-
-print CLASS<<EOF;
-
-<H2>$desc</H2>
-<UL>
-EOF
-
- foreach $member ( @{$members} ) {
- $member->Visit($modname);
-
- print CLASS "<LI>";
-
- if( $Description eq "" && $See eq "" ) {
- $link = "name=\"";
- } else {
- $link = "href=\"\#";
- }
-
- if( $Keyword eq "property" ) {
- print CLASS escape($Type),
- "<b><a ",$link,"ref$linkRef\">",
- escape($astNodeName), "</a></b>",
- escape($Array),
- "\n";
- }
- elsif( $Keyword eq "method" ) {
- print CLASS escape($ReturnType),
- " <b><a ", $link, "ref$linkRef\">",
- escape($astNodeName), "</a></b> (",
- escape($Parameters),
- ") ",$Const,"\n";
- }
- elsif( $Keyword eq "enum" ) {
- print CLASS "enum <b><a ", $link, "ref$linkRef\">",
- escape($astNodeName),"</a></b> {",
- escape($Constants),"}\n";
- }
- elsif( $Keyword eq "typedef" ) {
- print CLASS "typedef ", escape($Type), " <b><a ", $link,
- "ref$linkRef\">", escape($astNodeName),
- "</a>", escape($Array), "</b>";
- }
-
- print CLASS "</LI>\n";
-
- $linkRef += 1;
-
- Ast::UnVisit();
- }
-
-print CLASS<<EOF;
-</UL>
-EOF
-
-}
-
-sub writeClassDescription
-{
- my( $term ) = "";
- my( $once ) = 0;
-
- if( $Description ne "" ) {
- print CLASS "<H2><a name=\"short\">Detailed Description</a>",
- "</H2>\n<P>\n";
-
- $term = "<HR>\n";
-
- $Description =~ s/\n(\s*\n)+/\n<\/p><p>\n/g;
-
- print CLASS "\n", makeReferencedText($Description) ,"\n</P>";
- }
-
- if( $ClassSee ne "" ) {
- print CLASS "<p><b>See Also</b>: ";
-
- $once = 0;
- $term = "<HR>" if $term eq "";
-
- foreach $item ( split /[\s,]+/, $ClassSee ) {
-
- if( $once ) { print CLASS ", "; }
- else { $once = 1; }
-
- print CLASS findClassReference( $item );
- }
-
- print CLASS "</p>\n";
- }
-
- print CLASS $term if $term ne "";
-}
-
-sub writeMemberDoc
-{
- my( $visibility, $node ) = @_;
- my( $once ) = 0;
- my( $myvis ) = "";
-
- return if !defined $node || $#{$node} == -1 ;
-
- foreach $member ( @{$node} ) {
- $member->Visit($modname);
-
- if( $Description eq "" && $See eq "" ) {
- $linkRef++;
- Ast::UnVisit();
- next;
- }
-
- if( $Keyword eq "property" ) {
- print CLASS "<H4><b>",refString(escape($Type)),
- "<a name=\"ref",$linkRef,"\"></a>",
- "<a name=\"",$astNodeName,"\">",
- escape($astNodeName), "</a>",
- refString(escape($Array)),
- " </b><font color=gray><code>[", $visibility, "]</code>",
- "</font></H4>\n";
- }
- elsif( $Keyword eq "method" ) {
- $myvis = $visibility;
-
- if ( $ReturnType =~ /virtual/ ) {
- $myvis .= " virtual";
- $ReturnType =~ s/\s*virtual\s*//g;
- }
-
- if ( $ReturnType =~ /static/ ) {
- $myvis .= " static";
- $ReturnType =~ s/\s*static\s*//g;
- }
-
- print CLASS "<H4><b>",
- refString(escape($ReturnType)),
- " <a name=\"ref",$linkRef,"\"></a>",
- "<a name=\"",$astNodeName,"\">",
- escape($astNodeName), "</a>(",
- refString(escape($Parameters)),
- ") $Const </b><font color=gray>",
- "<code>[", $myvis, "]</code></font></H4>\n";
- }
- elsif( $Keyword eq "enum" ) {
- print CLASS "<H4><b>enum <a name=\"ref",
- $linkRef,"\"></a>",
- "<a name=\"",$astNodeName, "\"></a>",
- escape($astNodeName), " (",
- $Constants,") </b><font color=gray>",
- "<code>[", $visibility, "]</code></font></H4>\n";
- }
- elsif( $Keyword eq "typedef" ) {
- print CLASS "<H4><b>typedef ",refString(escape($Type)),
- " <a name=\"ref", $linkRef,"\"></a>",
- escape($astNodeName),
- refString(escape($Array)),
- " </b><font color=gray>",
- "<code>[", $visibility, "]</code></font></H4>";
- }
-
- print CLASS "<p><strong>Deprecated member.</strong></p>\n"
- if $MethDeprecated;
- print CLASS "<p><strong>For internal use only.</strong></p>\n"
- if $MethInternal;
-
- $Description =~ s/\n(\s*\n)+/\n<\/p><p>\n/g;
-
- print CLASS "<p>",makeReferencedText($Description),"</p>\n";
-
-
- if( $Keyword eq "method" ) {
-
- if( $#{$ParamDoc} != -1 ) {
- print CLASS "<dl><dt><b>Parameters</b>:<dd>\n",
- "<table width=\"100%\" border=\"0\">\n";
-
- foreach $parameter ( @{$ParamDoc} ) {
- print CLASS
- "<tr><td align=\"left\" valign=\"top\">\n",
- $parameter->{"astNodeName"};
-
- print CLASS
- "</td><td align=\"left\" valign=\"top\">\n",
- makeReferencedText(
- $parameter->{"Description"}),
- "</td></tr>\n";
- }
-
- print CLASS "</table>\n</dl>\n";
-
- }
-
- print CLASS "<dl><dt><b>Returns</b>:<dd>\n",
- makeReferencedText( $Returns ),
- "</dl>\n" if $Returns ne "";
-
- print CLASS "<dl><dt><b>Throws</b>:<dd>\n",
- makeReferencedText( $Exceptions ),
- "</dl>\n" if $Exceptions ne "";
- }
-
- if( $See ne "" ) {
- print CLASS "<dl><dt><b>See Also</b>:<dd>";
-
- $once = 0;
-
- foreach $item ( split /[\s,]+/, $See ) {
-
- if( $once ) { print CLASS ", "; }
- else { $once = 1; }
-
- print CLASS findClassReference( $item );
- }
-
- print CLASS "</dl>\n";
- }
-
- print CLASS $term if $term ne "";
-
- Ast::UnVisit();
-
- $linkRef++;
- }
-}
-
-#
-# Check and markup words that are in the symbol table.
-# Use sparingly, since EVERY WORD is looked up in the table.
-#
-
-sub refString
-{
- my( $source ) = @_;
-
- foreach $werd ( split /[^\w><]+/, $source ) {
-
- $ref = findClassReference( $werd );
- if( $ref ne $werd ) {
- $source =~ s/$werd/$ref/g;
- }
- }
-
- return $source;
-}
-
-######################################################################
-# markupCxxHeader -- Converts the header into a semi-fancy HTML doc
-######################################################################
-
-$outputFilename = "";
-
-# tokens
-#$nonIdentifier="[^\w]+";
-#$keywords="if|union|class|struct|operator|for|while|do|goto|new|delete|friend|typedef|return|switch|const|inline|asm|sizeof|virtual|static";
-#$types="void|int|long|float|double|unsigned|char|bool|short";
-
-# styles
-#$keywordStyle="strong";
-#$typeStyle="u";
-#$stringStyle="i";
-
-# Takes the path to a C++ source file,
-# spits out a marked-up and cross-referenced HTML file.
-
-sub markupCxxHeader
-{
- my( $filename ) = @_;
- $className = "";
- my( $reference );
- my( @inheritance );
- my( $word );
-
- open( HFILE, $filename ) || die "Couldn't open $filename to read.\n";
-
- $_ = $filename;
- # convert dashes to double dash, convert path to dash
- s/-/--g/g;
- s/\/|\./-/g;
-
- # never let a file name start with a '-' sign, since this makes
- # some programs think the file name really was a parameter to the
- # program. Filenames starting with '-' usually happen if you let
- # kdoc work on files like '../../include/foo/bar.h', given the
- # above substitution rules. Therefore: if a filename starts with
- # '-', prepend a '_'
- s/^-/_-/;
-
- $outputFilename = $_;
- $outputFilename = $outputdir."/".$outputFilename;
-
- open( HTMLFILE, ">$outputFilename.html" )
- || die "Couldn't open $outputFilename to read.\n";
-
- print HTMLFILE "<HTML>\n<HEAD><TITLE>$outputFilename</TITLE></HEAD>\n".
- "<BODY BGCOLOR=\"#ffffff\">\n<PRE>";
-
- while( <HFILE> )
- {
-
- s/</\</g;
- s/>/\>/g;
- s/"/\"/g;
-
- if( /^\s*(template.*\s+)?(class|struct)/ ) {
- $_ = refString($_);
- }
-
- print HTMLFILE;
- }
-
- print HTMLFILE "</PRE>\n<HR>\n<address>$genText",
- "</address>\n</BODY>\n</HTML>\n";
-}
-
-#sub Linkize
-#{
-# my( $str ) = @_;
-#
-# $str =~ s/ /%20/g;
-# $str =~ s/</%3C/g;
-# $str =~ s/>/%3E/g;
-#
-# return $str;
-#}
-
-1;
-
+++ /dev/null
-# kdocMan -- man page output for kdoc.
-# Copyright(c) 1998, Sirtaj Singh Kang (taj@kde.org).
-
-# $Id$
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-package kdocMan;
-
-require Ast;
-
-BEGIN {
- $modname = "kdocMan";
- $outputdir = ".";
- $genText = "";
- $className = "";
-}
-
-sub dumpDoc
-{
- ( $lib, $root, $outputdir ) = @_;
-
- print "Generating man pages.\n" unless $main::quiet;
- $genText = $main::generatedByText;
- $datestamp = `date +%D`;
- chop $datestamp;
-
- writeIndex();
- writeClasses();
-}
-
-sub writeIndex()
-{
- @classNames = ();
- %classNodes = ();
-
- foreach $class ( @{$root->{'classes'}} ) {
- push( @classNames, $class->{'astNodeName'} );
- $classNodes{ $class->{'astNodeName'} } = $class;
- }
-
- @classNames = sort @classNames;
-
- open( MANPAGE, ">$outputdir/$lib.1$lib" )
- || die "Couldn't write to $outputdir/$lib.1$lib\n";
-
-print MANPAGE<<EOF;
-.TH $lib 1 "$datestamp" "KDOC"
-.SH NAME
-$lib - C++ Class Library
-.SH SYNOPSIS
-The $lib library consists of the following classes:
-.PP
-EOF
- writeHierarchy("<>");
-
-print MANPAGE<<EOF;
-.SH DESCRIPTION
-EOF
-
- foreach $class ( @classNames ) {
- $short = $classNodes{$class}->{ "ClassShort" };
-
- print MANPAGE "\n.TP 4\n.BI \"$class\"\n$short\n.PP\n";
- }
-
-
-print MANPAGE<<EOF;
-.SH AUTHOR
-$genText
-.PP
-EOF
- close MANPAGE;
-
-}
-
-sub writeClasses
-{
- foreach $classNode ( @{$root->{'classes'}} ) {
- $classNode->Visit( $modname );
- $className=$astNodeName;
- writeClass();
- Ast::UnVisit();
- }
-}
-
-sub writeClass
-{
- ($fname = $astNodeName) =~ tr/[A-Z]/[a-z]/;
- $fname .= ".3$lib";
-
- $className = $astNodeName;
- $Description = makeReferencedText( $Description );
- $Description =~ s/\n\s+/\n/g;
-
- open ( CLASSMAN, ">$outputdir/$fname" )
- || die "couldn't open $outputdir/$fname for writing.\n";
-
- open( REDIR, ">$outputdir/$astNodeName.3$lib" )
- ||die "couldn't open $outputdir/$astNodeName.3$lib ".
- " for writing.\n";
-
- print REDIR ".so $fname\n";
- close REDIR;
-
-
-print CLASSMAN<<EOF;
-.TH $className 3 "$datestamp\" "KDOC" "$lib Class Library"
-.SH NAME
-$className - $ClassShort
-
-.SH SYNOPSIS
-#include <$Header>
-
-EOF
-
-# Internal or Deprecated
-
-print ".ti +1c\n.b \"Deprecated Class\"\n" if $Deprecated;
-print ".ti +1c\n.b \"Internal use only\"\n" if $Internal;
-
-
-print CLASSMAN<<EOF;
-Inherits:
-EOF
-
-# Inheritance list
- my($pcount) = 0;
- if (defined @{$Ancestors} ) {
- foreach $foreparent ( @{$Ancestors} ) {
- print CLASSMAN ", " if $pcount != 0;
- $pcount = 1;
-
- print CLASSMAN $foreparent->{"astNodeName"};
-
- if( defined $main::classSource{
- $foreparent->{"astNodeName"}} ) {
- print CLASSMAN " (",
- $main::classSource{$foreparent->{"astNodeName"}},")";
- }
- }
- }
- else {
- print CLASSMAN "nothing";
- }
-
-print CLASSMAN<<EOF;
-
-.PP
-EOF
- listMembers( "Public Members", $public );
- listMembers( "Public Slots", $public_slots );
- listMembers( "Protected Members", $protected );
- listMembers( "Protected Slots", $protected_slots );
- listMembers( "Signals", $signals );
-
- if( $main::dontDoPrivate == 0 ) {
- listMembers( "Private Members", $private );
- listMembers( "Private Slots", $private_slots );
- }
-
-
-print CLASSMAN<<EOF;
-
-.SH DESCRIPTION
-$Description
-.SH MEMBER DOCUMENTATION
-EOF
-
- documentMembers( $public );
- documentMembers( $public_slots );
- documentMembers( $protected );
- documentMembers( $protected_slots );
- documentMembers( $signals );
-
- if( $main::dontDoPrivate == 0 ) {
- documentMembers( $private );
- documentMembers( $private_slots );
- }
-
- if( $ClassSee ne "" ) {
- $ClassSee = ", ".$ClassSee
- }
-
-print CLASSMAN<<EOF;
-.SH "SEE ALSO"
-$lib(1)$ClassSee
-EOF
-
-print CLASSMAN<<EOF;
-.SH AUTHOR
-EOF
-
- if( ! ($Author =~ /^\s*$/) ) {
- print CLASSMAN "$Author\n.PP\n";
- }
-
-print CLASSMAN<<EOF;
-$genText
-.SH VERSION
-$Version
-EOF
-
- close CLASSMAN;
-}
-
-sub writeHierarchy
-{
- local( $node ) = @_;
- local( @kids );
-
-# Display class
- if( $node ne "<>" ) {
- print MANPAGE "$node";
- if( defined $main::classSource{ $node } ) {
- print MANPAGE " (from ",$main::classSource{$node},")";
- }
- print MANPAGE "\n";
- }
-
-# Recurse for each child class
- if ( defined $main::children{$node} ) {
- print MANPAGE ".in +1c\n";
- foreach $kid ( sort split /;/, $main::children{$node} )
- {
- print MANPAGE ".br\n";
- writeHierarchy( $kid );
- }
-
- print MANPAGE ".in -1c\n";
- }
-}
-
-sub makeReferencedText
-{
- my( $str ) = @_;
-
- $str =~ s/\@ref(\s+[-:#\w\._]+)/\n.BI "$1"\n/g;
-
- return $str;
-}
-
-sub listMembers
-{
- my( $access, $nodelist ) = @_;
- my( $node );
-
- return if !defined $nodelist || $#{$nodelist} == -1;
-
-print CLASSMAN<<EOF;
-.PP
-.BI "$access"
-.in +2c
-EOF
-
- foreach $node ( @{$nodelist} ) {
- $node->Visit( $modname );
-
- print CLASSMAN ".ti -1c\n";
-
- if( $Keyword eq "property" ) {
- $Type =~ s/^\s+//g;
- $Type =~ s/\s+$//g;
- print CLASSMAN ".BI \"$Type $astNodeName\"\n.br\n";
- }
- elsif( $Keyword eq "method" ) {
- $ReturnType =~ s/^\s+//g;
- $ReturnType =~ s/\s+$//g;
- $ReturnType .= " " if $ReturnType ne "";
-
- print CLASSMAN ".BI \"$ReturnType$astNodeName ",
- "($Parameters) $Const\"\n.br\n";
- }
- elsif( $Keyword eq "enum" ) {
- print CLASSMAN ".BI \"",
- "enum $astNodeName {$Constants}\"\n.br\n";
- }
- elsif( $Keyword eq "typedef" ) {
- print CLASSMAN ".BI \"",
- "typedef $astNodeName\"\n.br\n";
- }
- Ast::UnVisit();
- }
-
-print CLASSMAN<<EOF;
-.in -2c
-EOF
-}
-
-sub documentMembers
-{
- my( $nodelist ) = @_;
-
- return if !defined $nodelist || $#{$nodelist} == -1;
-
- foreach $member ( @{$nodelist} ) {
- $member->Visit( $modname );
-
- if( $Description eq "" && $See eq "" ) {
- Ast::UnVisit();
- next;
- }
-
- if( $Keyword eq "property" ) {
- $Type =~ s/^\s+//g;
- print CLASSMAN ".SH \"$Type $className","::",
- "$astNodeName\"\n";
- }
- elsif( $Keyword eq "method" ) {
- $ReturnType =~ s/^\s+//g;
- $ReturnType =~ s/\s+$//g;
- $ReturnType .= " " if $ReturnType ne "";
-
- print CLASSMAN ".SH \"$ReturnType$className",
- "::","$astNodeName ","($Parameters) $Const\"\n";
- }
- elsif( $Keyword eq "enum" ) {
- print CLASSMAN ".SH \"",
- "enum $className","::",
- "$astNodeName {$Constants}\"\n";
- }
- elsif( $Keyword eq "typedef" ) {
- print CLASSMAN ".SH \"", "typedef $className",
- "::","$astNodeName\"\n";
- }
-
-# Internal or Deprecated
-
- print ".ti +1c\n.b \"Deprecated member\"\n" if $MethDeprecated;
- print ".ti +1c\n.b \"Internal use only\"\n" if $MethInternal;
-
-# Description
- print CLASSMAN makeReferencedText($Description),
- "\n.br\n" if $Description ne "";
-
-# Parameters
- if( $Keyword eq "method" ) {
- if( $#{$ParamDoc} != -1 ) {
- print CLASSMAN "\n.br\n.in +1c\n",
- "Parameters\n.in +1c\n.";
-
- foreach $parameter ( @{$ParamDoc} ) {
-print CLASSMAN ".br\n.BI \"", $parameter->{"astNodeName"},
- "\"\n.in +1c\n",
- $parameter->{"Description"}, "\n.in -1c\n";
- }
-print CLASSMAN<<EOF;
-.in -1c
-.in -1c
-EOF
- }
-
- print CLASSMAN ".in +1c\nReturns\n.in +1c\n",
- "$Returns\n.in -1c\n.in -1c\n" if $Returns ne "";
- print CLASSMAN ".in +1c\nThrows\n.in +1c\n",
- "$Exceptions\n.in -1c\n.in -1c\n"
- if $Exceptions ne "";
- }
-
- print CLASSMAN ".in +1c\nSee Also\n.in +1c\n$See\n",
- ".in -1c\n.in -1c\n" if $See ne "";
-
- Ast::UnVisit();
- }
-}
-
-1;
+++ /dev/null
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-package kdocTeX;
-
-require Ast;
-
-## LaTeX Output.
-# Peeks in main: quiet, version, classSource
-
-BEGIN {
- $modname = "kdocTeX";
-}
-
-sub dumpDoc {
- my( $name, $nodem $outputdir ) = @_;
-
- print "Generating LaTeX documentation.\n" unless $main::quiet;
-
- open(TEX,"> $outputdir/$name.tex")
- || die "Couldn't create $outputdir/".$name.".tex.\n";
-
- print TEX<<EOF;
-\\documentclass[12pt]\{article\}
-\\usepackage\{a4\}
-\\usepackage\{makeidx\}
-\\title\{$name Library Index\}
-\\date\{\\today\}
-\\def\\mtl{{\\tt\\~\\relax}}
-\\author{Generated with KDOC $main::version}
-\\makeindex
-\\begin\{document\}
-\\maketitle
-\\pagestyle\{headings\}
-\\tableofcontents
-\\newpage
-\\sloppy
-EOF
-
- $node->Visit($modname);
-
- foreach $class ( @{$classes} ) {
-
- $class->Visit($modname);
-
- $inPre = 0;
- $doc = "";
-
- foreach $line ( split /\n/, $Description ) {
- if( $line =~ /<(pre|PRE)>/ ) {
- $inPre = 1;
- $doc .= "\\begin{verbatim}\n";
- next;
- }
- if( $line =~ m#</(pre|PRE)># ) {
- $inPre = 0;
- $doc .= "\\end{verbatim}\n";
- next;
- }
- if( !$inPre ) {
- $line =~ s/\@ref(\s*(#|::))?//g;
- $line =~ s/([~#\$\\\&%#_\{\}])/\\$1/g;
- $line =~ s/<(code|pre)>/\\texttt\{/g;
- $line =~ s/<\/(code|pre)>/}/g;
- $line =~ s/([<>])/\\texttt\{$1\} /g;
- $line =~ s/~/\\texttt{~}\\relax /g;
- }
-
- $doc .= $line."\n";
- }
-
- $ClassName = escape( $astNodeName );
- $Header = escape( $Header );
- $ClassSee = escape( $ClassSee );
-
- print TEX<<EOF;
-\\section[$ClassName]\{\\emph\{$ClassName\} class reference \\small\\sf ($Header)\}
-\\vspace{-0.6cm}
-\\hrulefill
-\\index\{$ClassName\}
-EOF
-
- if( $class->{ "TmplArgs" } ne "" ) {
- print TEX "\\begin{description}\n",
- "\\item{template form:}",
- "\\texttt{template <", escape( $class->{ "TmplArgs" } ),
- "> ",
- $ClassName, "}\n";
-
- print TEX "\\end{description}\n";
- }
-
- if( defined $class->{ "Ancestors" } ){
- print TEX "\\begin{description}\n",
- "\\item{inherits:}";
-
- foreach $ancestor ( @{$Ancestors} ) {
- $ancName = $ancestor->{"astNodeName"};
-
- $str = " ".$ancName;
-
- if( defined $main::classSource{ $ancName } ) {
- $str .="(".$main::classSource{$ancName}.
- ")";
- }
-
- print TEX escape( $str ),"\n";
- }
-
- print TEX "\\end{description}\n";
- }
-
-
- if( $Author ne "" || $Version ne "" || $ClassShort ne ""
- || $ClassSee ne "" ) {
- print TEX "\\begin{description}\n";
-
- print TEX "\\item[Description:] ", escape( $ClassShort ),"\n"
- if $ClassShort ne "";
- print TEX "\\item[Version:] ", escape( $Version ),"\n"
- if $Version ne "";
-
- print TEX "\\item[Author:] ", escape( $Author ),"\n"
- if $Author ne "";
-
- print TEX "\\item[See Also:] ", escape( $ClassSee ),"\n"
- if $ClassSee ne "";
-
- print TEX "\\end{description}\n";
- }
-
- print TEX "$doc\n\n" if $Description ne "";
-
- dumpMembers( "public members", $public )
- if defined $class->{"public"};
- dumpMembers( "public slots", $public_slots )
- if defined $class->{"public_slots"};
- dumpMembers( "protected members", $protected )
- if defined $class->{"protected"};
- dumpMembers( "protected slots", $protected_slots )
- if defined $class->{"protected_slots"};
- dumpMembers( "signals", $signals )
- if defined $class->{"signals"};
-
- if( $main::dontDoPrivate == 0 ) {
- dumpMembers( "private members", $private )
- if defined $class->{"private"};
- dumpMembers( "private slots", $private_slots )
- if defined $class->{"private_slots"};
- }
-
- Ast::UnVisit();
- }
-
- Ast::UnVisit();
-
- print TEX "\\printindex\n\\end{document}\n";
-
-}
-
-sub dumpMembers
-{
- my( $access, $nodes ) = @_;
-
- print TEX "\\subsection{$access}\n";
-
- foreach $member ( @{$nodes} ) {
-
- $member->Visit($modname);
-
- $inPre = 0;
- $doc = "";
-
- foreach $line ( split /\n/, $Description ) {
- if( $line =~ /<(pre|PRE)>/ ) {
- $inPre = 1;
- $doc .= "\\begin{verbatim}\n";
- next;
- }
- if( $line =~ /<\/(pre|PRE)>/ ) {
- $inPre = 0;
- $doc .= "\\end{verbatim}\n";
- next;
- }
- if( !$inPre ) {
- $line =~ s/\@ref(\s*(#|::))?//g;
- $line =~ s/([~#\$\\\&%#_\{\}])/\\$1/g;
- $line =~ s/<(code|pre)>/\\texttt\{/g;
- $line =~ s/<\/(code|pre)>/}/g;
- $line =~ s/([<>])/\\texttt\{$1\} /g;
- $line =~ s/~/\\texttt{~}\\relax /g;
- }
-
- $doc .= $line."\n";
- }
-
- $astNodeName = escape( $astNodeName );
-
-
- print TEX<<EOF;
-\\subsubsection*{$ClassName\:\:$astNodeName}
-\\vspace{-0.65cm}
-\\hrulefill
-\\index{$ClassName!$astNodeName}
-\\index{$astNodeName!$ClassName}
-\\begin{flushleft}
-EOF
-
- if( $Keyword eq "method" ) {
- $ReturnType = escape( $ReturnType );
- $Parameters = escape( $Parameters );
- $Parameters =~ s/\n+/ /g;
-
- print TEX "\\texttt{$ReturnType$astNodeName(",
- "$Parameters)$Const;}\n";
- }
- elsif ( $Keyword eq "property" ) {
- $Type = escape( $Type );
- print TEX "\\texttt{$Type$astNodeName;}\n";
- }
- elsif ( $Keyword eq "typedef" ) {
- $Type = escape( $Type );
- print TEX "\\texttt{$Type$astNodeName;}\n";
- }
- elsif ( $Keyword eq "enum" ) {
- $Constants = escape( $Constants );
- $Constants =~ s/\n+/ /g;
-
- print TEX<<EOF
-\\texttt{enum $astNodeName\\{
-$Constants
-\\};}
-
-EOF
- }
-
- print TEX<<EOF;
-\\end{flushleft}
-
-$doc
-
-EOF
- if ( $Keyword eq "method" &&
- ($Returns ne "" || $Exceptions ne "") ) {
-
- if ( $Returns ne "" ) {
- $Returns = escape ( $Returns );
- print TEX<<EOF;
-\\begin{description}
-\\item[Returns:] $Returns
-\\end{description}
-EOF
- }
-
- if ( $Exceptions ne "" ) {
- $Exceptions = escape ( $Exceptions );
- print TEX<<EOF;
-\\begin{description}
-\\item[Throws:] $Exceptions
-\\end{description}
-EOF
- }
-
- }
- Ast::UnVisit();
- }
-}
-
-sub escape
-{
- my( $str ) = @_;
-
- $str =~ s/\@ref\s+//g;
- $str =~ s/([#\$\\\&%#_\{\}])/\\$1/g;
- $str =~ s/([<>]+)/\\texttt\{$1\}/g;
- $str =~ s/~/\\mtl /g;
-
- return $str;
-}
-
-1;
+++ /dev/null
-while (<>) {
- goto END_HEADER if /begin.document./;
-}
-
-
-END_HEADER:
-
-while (<>) {
- print unless (/end\{document\}/);
-}
+++ /dev/null
-# $Id$
-# Check whether references in HTML files are valid or
-# point to non-existing files/links/etc
-#
-# Author: Wolfgang Bangerth, 2000
-
-
-# set this to 1 if you want verbose output
-$debug = 0;
-
-foreach $filename (@ARGV) {
- open IN, $filename
- or die "---Can't open file `$filename'\n";
-
- print "File: $filename\n" if $debug;
- while (<IN>) {
- # first find all hrefs
- while ( /<\s*a\s+href=\"?(.*?)[\s\"]/gi ) {
- # then decide whether they are relevant for
- # our purpose
- $link = $1;
-
- if ( $link =~ /^mailto|http:\/\//i ) {
- # link is external. don't check it
- print "external link: $link\n" if $debug;
- next;
- }
- elsif ( $link =~ /^#(.*)/ )
- {
- # this is a reference within this file. try to
- # find its anchor
- $internal_ref = $1;
- print "internal reference: $link\n" if $debug;
-
- open IN2, $filename;
- $found = 0;
- while ( <IN2> ) {
- while ( /<a name=\"?(.*?)[\s\"]/gi ) {
- if ( $1 eq $internal_ref) {
- print " found.\n" if $debug;
- $found = 1;
- last;
- }
- }
- }
-
- die "---Internal reference `$internal_ref' not found in file $filename\n"
- unless $found;
- next;
- }
- elsif ( $link =~ /^(.*?)#(.*)/ )
- {
- # this is a reference within another file. try to
- # find its anchor
- $external_file = $1;
- $external_ref = $2;
-
- # if the file name was prepended with http: (but is a local file,
- # so no double-slash), then split off http:
- $external_file =~ s/^http://g;
-
- print "external reference: $link\n" if $debug;
-
- open IN2, $external_file;
- $found = 0;
- while ( <IN2> ) {
- while ( /<a name=\"?(.*?)[\s\"]/gi ) {
- if ( $1 eq $external_ref) {
- print " found.\n" if $debug;
- $found = 1;
- last;
- }
- }
- }
-
- die "---External reference `$external_file#$external_ref' not found in file $filename\n"
- unless $found;
- next;
- }
- else {
- # this must now be a regular file which is
- # referenced. the file must be local
-
- # if the file name was prepended with http: (but is a local file,
- # so no double-slash), then split off http:
- $link =~ s/^http://g;
-
- die "---Local file `$link' not found in file `$filename'\n"
- unless ((-r $link) && (-f $link));
- }
- }
-
- # check whether references to images are valid
- while ( /img\s+src=\"?(.*?)[\s\"]/gi ) {
- # check whether the file for the image is present
- $link = $1;
-
- die "---Local image `$link' not found in file `$filename'\n"
- unless ((-r $link) && (-f $link));
- }
- }
-}
-
-print "---- All local links found to be ok.\n";