libupnp/upnp/doc/docxx.sty
Marcelo Roberto Jimenez 89e7a40fcc Removing unnecessary additional directory level.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@29 119443c7-1b9e-41f8-b6fc-b9c35fce742c
2006-07-04 02:44:17 +00:00

1083 lines
28 KiB
TeX
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

% 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}}