
% Version as of July 30, 1993

%   ----------------------------------------------------------------------
%   mpi-macs.tex  --- man page macros,
%                discuss, missing, mpifunc macros
%
% ----------------------------------------------------------------------
% a couple of commands from Marc Snir, modified S. Otto

\newlength{\discussSpace}
\setlength{\discussSpace}{.7cm}

\newcommand{\discuss}[1]{\vspace{\discussSpace} {\small {\bf Discussion:} #1} \vspace{\discussSpace}
}

\newcommand{\missing}[1]{\vspace{\discussSpace} {\small {\bf Missing:} #1} \vspace{\discussSpace}
}

\newcommand{\implement}[1]{\vspace{\discussSpace}
{\small {\bf Implementation note:} #1} \vspace{\discussSpace} }

\newlength{\codeSpace}
\setlength{\codeSpace}{.4cm}

\newenvironment{funcdef}[1]{ 	
    \vspace{\codeSpace}
    \noindent
    \samepage
    {\func{#1}}\index{#1}
    \begin{list}{}{ 			% see pg 113 of Lamport's book
	\setlength{\leftmargin}{200pt} 
	\setlength{\labelwidth}{180pt} 
	\setlength{\labelsep}{10pt} 
	\setlength{\itemindent}{0pt}
	\setlength{\itemsep}{0pt}
	\setlength{\topsep}{5pt}
    }
}{\end{list} \vspace{\codeSpace}}

\newenvironment{cfuncdef}[1]{ 	
    \vspace{\codeSpace}
    \noindent
    C binding:

    \noindent
    \samepage
    {\cfunc{#1}}
    \begin{list}{}{ 			% see pg 113 of Lamport's book
	\setlength{\leftmargin}{200pt} 
	\setlength{\labelwidth}{180pt} 
	\setlength{\labelsep}{10pt} 
	\setlength{\itemindent}{0pt}
	\setlength{\itemsep}{0pt}
	\setlength{\topsep}{5pt}
    }
}{\end{list} \vspace{\codeSpace}}

\newenvironment{ffuncdef}[1]{ 	
    \vspace{\codeSpace}
    \noindent
    Fortran binding:

    \noindent
    \samepage
    {\ffunc{#1}}
    \begin{list}{}{ 			% see pg 113 of Lamport's book
	\setlength{\leftmargin}{200pt} 
	\setlength{\labelwidth}{180pt} 
	\setlength{\labelsep}{10pt} 
	\setlength{\itemindent}{0pt}
	\setlength{\itemsep}{0pt}
	\setlength{\topsep}{5pt}
    }
}{\end{list} \vspace{\codeSpace}}

					% see page 77, the TeX book.
\newcommand{\funcarg}[3]{\item[\hbox to 45pt{\type{#1} \hfill} \mpiarg{#2}\hfill]{\small #3}}
\newcommand{\cfuncarg}[3]{\item[\hbox to 70pt{\ctype{#1} \hfill} \carg{#2}\hfill]{\small #3}}
\newcommand{\ffuncarg}[3]{\item[\hbox to 50pt{\ftype{#1} \hfill} \farg{#2}\hfill]{\small #3}}



\newcommand{\funcold}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} }
\newcommand{\mpifuncold}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} }
\newcommand{\func}[1]{{\sf #1}}
\newcommand{\mpifunc}[1]{{\sf #1}}
\newcommand{\cfunc}[1]{{\sf #1}}
\newcommand{\ffunc}[1]{{\sf #1}}
\newcommand{\const}[1]{{\small\sf #1}}
\newcommand{\cconst}[1]{{\sf #1}}
\newcommand{\fconst}[1]{{\sf #1}}
\newcommand{\constitem}[2]{\item[\const{#1}\hfill]{#2}}
\newcommand{\mpiarg}[1]{{\sf #1}}
\newcommand{\carg}[1]{{\sf #1}}
\newcommand{\farg}[1]{{\sf #1}}
\newcommand{\type}[1]{{\sf #1}}
\newcommand{\ctype}[1]{{\tt #1}}
\newcommand{\ftype}[1]{{\tt #1}}

\newcommand{\IN}[0]{\small IN}
\newcommand{\OUT}[0]{\small OUT}
\newcommand{\INOUT}[0]{\small INOUT}

\newenvironment{constlist}[0]{ 	
    \vspace{\codeSpace}
    \noindent
    \begin{list}{}{ 			% see pg 113 of Lamport's book
	\setlength{\leftmargin}{200pt} 
	\setlength{\labelwidth}{190pt} 
	\setlength{\labelsep}{10pt} 
	\setlength{\itemindent}{10pt}
	\setlength{\itemsep}{-5pt}
	\setlength{\topsep}{-5pt}
    }
}{\end{list} \vspace{\codeSpace}}

% command to indicate changes
\newcommand{\change}{\marginpar{\tiny \bf \ CHANGE}}

% command to indicate topics that need be discussed
\newcommand{\todiscuss}{\marginpar{\tiny \bf \ TO DISCUSS}}

%	some commands from Bill Gropp

\def\code#1{{\tt #1}}
\def\setmargin#1{\begingroup\leftmargin #1 \advance\leftmargin\labelsep 
                 \leftmargini #1 \advance\leftmargini\labelsep}
\def\esetmargin{\endgroup}
\def\ibamount{3.0cm\relax}
\def\ibaamount{4.0cm}
\def\ibdamount{4.5cm}
\def\ibcamount{2.0cm}
\def\ib#1{\hbox to \ibamount{#1\hfil}}
\def\iba#1{\hbox to \ibaamount{#1\hfil}}
\def\ibd#1{\hbox to \ibdamount{#1\hfil}}
\def\ibc#1{\hbox to \ibcamount{#1\hfil}}

% Use \code{...} for code fragments
%\def\code#1{{\tt #1}}
% Use \df{name} for a definition of name in the text
\def\df#1{{\bf #1}}
% Use \note{text} for marginal notes
\def\note#1{\marginpar{\bf #1}}

%
% Get line numbers in the gutters.  Thanks to Guy Steele and HPFF!
%

\makeatletter
%
% This is used to put line numbers on plain pages.  Used in draft.tex
%
\def\withlinenumbers{\relax
  \def\@oddfoot{\hbox to 0pt{\hss\LineNumberRuler\hskip 1.5pc}\hfil}\relax
  \def\@evenfoot{\hfil\hbox to 0pt{\hskip 1.5pc\LineNumberRuler\hss}}}

\def\LineNumberRuler{\vbox to 0pt{\vss\normalsize \baselineskip13.6pt
    \lineskip 1pt \normallineskip 1pt \def\baselinestretch{1}\relax
    \LNR{1}\LNR{2}\LNR{3}\LNR{4}\LNR{5}\LNR{6}\LNR{7}\LNR{8}\LNR{9}
    \LNR{10}\LNR{11}\LNR{12}\LNR{13}\LNR{14}
	\LNR{15}\LNR{16}\LNR{17}\LNR{18}\LNR{19}
    \LNR{20}\LNR{21}\LNR{22}\LNR{23}\LNR{24}
	\LNR{25}\LNR{26}\LNR{27}\LNR{28}\LNR{29}
    \LNR{30}\LNR{31}\LNR{32}\LNR{33}\LNR{34}\LNR{35}
	\LNR{36}\LNR{37}\LNR{38}\LNR{39}
    \LNR{40}\LNR{41}\LNR{42}\LNR{43}\LNR{44}
	\LNR{45}\LNR{46}\LNR{47}\LNR{48}
    \vskip 31pt}}
\def\LNR#1{\hbox to 1pc{\hfil\tiny#1\hfil}}

\def\ps@plainwithlinenumbers{\ps@plain\withlinenumbers}

%
% 1st page of a chapter has its own page style, so we have to put line
% numbers in here also.
%
\def\chapter{\clearpage \thispagestyle{plainwithlinenumbers}
	\global\@topnum\z@ \@afterindentfalse \secdef\@chapter\@schapter} 

%
% Change "Chapter" to "Section", "Appendix" to "Annex"
%
\def\@chapapp{Section}
\def\appendix{\par
 \setcounter{chapter}{0}
 \setcounter{section}{0}
 \def\@chapapp{Annex}
 \def\thechapter{\Alph{chapter}}}

\makeatother


%
% Also from HPFF.  These look potentially useful.
%

\newenvironment{rationale}{\begin{list}{}{}\item[]{\it Rationale.}
}{{\rm ({\it End of rationale.})} \end{list}}

\newenvironment{implementors}{\begin{list}{}{}\item[]{\it Advice
	to implementors.}
}{{\rm ({\it End of advice to implementors.})} \end{list}}

\newenvironment{users}{\begin{list}{}{}\item[]{\it Advice to users.}
}{{\rm ({\it End of advice to users.})} \end{list}}



%
% Use Sans Serif font for sections, etc.  S. Otto
%
\makeatletter
\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus -1ex minus 
-.2ex}{2.3ex plus .2ex}{\Large\sf}}
\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus 
-.2ex}{1.5ex plus .2ex}{\large\sf}}
\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus 
-1ex minus -.2ex}{1.5ex plus .2ex}{\normalsize\sf}}
\def\paragraph{\@startsection {paragraph}{4}{\z@}{3.25ex plus 1ex 
minus .2ex}{-1em}{\normalsize\sf}}
\def\subparagraph{\@startsection {subparagraph}{4}{\parindent}{3.25ex 
plus 1ex minus .2ex}{-1em}{\normalsize\sf}}
\makeatother
%
% An Editor's Note macro
%
\def\ednote#1{{\sl Editor's note: #1}}

% a way to comment out large sections of text
\newcommand{\commentOut}[1]{{}}

%
%  A few commands to help in writing MPI man pages
%
\def\twoc#1#2{
\begin{list}
{\hbox to95pt{#1\hfil}}
{\setlength{\leftmargin}{120pt}
 \setlength{\labelwidth}{95pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#2}
\end{list}
}
\outer\long\def\onec#1{
\begin{list}
{}
{\setlength{\leftmargin}{25pt}
 \setlength{\labelwidth}{0pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#1}
\end{list}
}
\def\manhead#1{\noindent{\bf{#1}}}

\makeatletter
%
% make our own index environment that can have a different
% title than just "Index" -- S. Otto
%
\def\@index{Index}
\newif\if@restonecol
\def\myindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
\columnseprule \z@
%\columnsep 35pt\twocolumn[\@makeschapterhead{Index}]
 %\@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@
\columnsep 35pt\twocolumn[\@makeschapterhead{\@index}]
 \@mkboth{\@index}{\@index}\thispagestyle{plain}\parindent\z@
 \parskip\z@ plus .3pt\relax\let\item\@idxitem}
\def\@idxitem{\par\hangindent 40pt}
\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
\def\endmyindex{\if@restonecol\onecolumn\else\clearpage\fi}
\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
\makeatother

.
