% docxx.sty % % Copyright (c) 1996 Roland Wunderling, Malte Zoeckler % Copyright (c) 1999-2001 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\cxxInvariantsStr{} \def\cxxPreconditionsStr{} \def\cxxPostconditionsStr{} \def\cxxSeeStr{} \def\cxxAuthorStr{} \def\cxxVersionStr{} \def\cxxDeprecatedStr{} \def\cxxSinceStr{} \def\cxxFileStr{} \def\cxxExceptions#1{\def\cxxExceptionsStr{#1}} \def\cxxParameter#1{\def\cxxParameterStr{#1}} \def\cxxReturn#1{\def\cxxReturnStr{#1}} \def\cxxInvariants#1{\def\cxxInvariantsStr{#1}} \def\cxxPreconditions#1{\def\cxxPreconditionsStr{#1}} \def\cxxPostconditions#1{\def\cxxPostconditionsStr{#1}} \def\cxxSee#1{\def\cxxSeeStr{#1}} \def\cxxAuthor#1{\def\cxxAuthorStr{#1}} \def\cxxVersion#1{\def\cxxVersionStr{#1}} \def\cxxDeprecated#1{\def\cxxDeprecatedStr{#1}} \def\cxxSince#1{\def\cxxSinceStr{#1}} \def\cxxFile#1{\def\cxxFileStr{#1}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Define ... to do verbatim listing % \catcode`\=\active \catcode`\=\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{\let\par=\endgraf \ccverbatim \parskip=0pt \ccfinish} {\catcode`\=0 catcode`\=12 gdefccfinish#1{#1endgroup}} % % 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{\ccverbatim \ccfinish}#1% }}% \setbox2\hbox{{% \catcode`\&=4% \catcode`\_=8% \def{\ccverbatim \ccfinish}\textbf{#2} #3% }}% \setbox4\hbox{\parbox[t]{\cxxMemoWidth}{{% \raggedright\sloppy% \catcode`\&=4% \catcode`\_=8% \def{\ccverbatim \ccfinish}{\em #4} \cxxStrut% \def\page{#5}% \ifx\page\empty% \hss% \else% \ \dotfill% \hbox to 0pt{\hbox to \cxxPageWidth{\hss% \pageref{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{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{\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://docpp.sourceforge.net}} \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{\ccverbatim \ccfinish}#1% \strut\\ \def{\ccverbatim \ccfinish}#2% \strut\\ \def{\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{\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{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{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{cxx.\id} \begingroup \def\cxxExceptionsStr{} \def\cxxParameterStr{} \def\cxxReturnStr{} \def\cxxInvariantsStr{} \def\cxxPreconditionsStr{} \def\cxxPostconditionsStr{} \def\cxxSeeStr{} \def\cxxAuthorStr{} \def\cxxVersionStr{} \def\cxxDeprecatedStr{} \def\cxxSinceStr{} \def\cxxFileStr{} \def\cxxExceptions##1{\def\cxxExceptionsStr{##1}} \def\cxxParameter##1{\def\cxxParameterStr{##1}} \def\cxxReturn##1{\def\cxxReturnStr{##1}} \def\cxxInvariants##1{\def\cxxInvariantsStr{##1}} \def\cxxPreconditions##1{\def\cxxPreconditionsStr{##1}} \def\cxxPostconditions##1{\def\cxxPostconditionsStr{##1}} \def\cxxSee##1{\def\cxxSeeStr{##1}} \def\cxxAuthor##1{\def\cxxAuthorStr{##1}} \def\cxxVersion##1{\def\cxxVersionStr{##1}} \def\cxxDeprecated##1{\def\cxxDeprecatedStr{##1}} \def\cxxSince##1{\def\cxxSinceStr{##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\cxxInvariantsStr\empty\else \noindent\hbox to 0.3\textwidth{{\bf Invariants:}\hss}% \parbox[t]{0.7\textwidth}{\cxxInvariantsStr}\\ \fi \ifx\cxxPreconditionsStr\empty\else \noindent\hbox to 0.3\textwidth{{\bf Preconditions:}\hss}% \parbox[t]{0.7\textwidth}{\cxxPreconditionsStr}\\ \fi \ifx\cxxPostconditionsStr\empty\else \noindent\hbox to 0.3\textwidth{{\bf Postconditions:}\hss}% \parbox[t]{0.7\textwidth}{\cxxPostconditionsStr}\\ \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\cxxDeprecatedStr\empty\else \noindent\hbox to 0.3\textwidth{{\bf\it Deprecated:}\hss}% \parbox[t]{0.7\textwidth}{\cxxDeprecatedStr}\\ \fi \ifx\cxxSinceStr\empty\else \noindent\hbox to 0.3\textwidth{{\bf Since:}\hss}% \parbox[t]{0.7\textwidth}{\cxxSinceStr}\\ \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`\=0 catcode`\=12 gdefcxxCodeFinish#1{hbox{#1}endgroup}}