%%%----- Licensing notice ---------------------------------------------------
%%%
-%%% This file is part of the Sensble Object Design, an object system for C.
+%%% This file is part of the Sensible Object Design, an object system for C.
%%%
%%% SOD is free software; you can redistribute it and/or modify
%%% it under the terms of the GNU General Public License as published by
%% Literal code is in sans face.
\let\codeface\sffamily
-\def\code#1{\ifmmode\hbox\fi{\normalfont\codeface\/#1\/}}
+\DeclareRobustCommand\code[1]{%
+ \ifmmode\hbox\else\leavevmode\fi%
+ {\normalfont\codeface\/#1\/}%
+}
\def\ulitleft{\normalfont\codeface}
\let\ulitright\empty
\atdef !{\m@maybe|\@scripts}
\def\returns{\m@maybe\longrightarrow\m@maybe@end\hspace{0.5em}\ignorespaces}
\atdef >{\leavevmode\unskip\hspace{0.5em}\returns}
-\atdef -#1{\if>#1{\ensuremath\rightarrow}\fi}
+\atdef -#1{\if>#1\hbox{--\raisebox{.4pt}{>}}\penalty200\relax\fi}
%% Comment setting.
\atdef ;#1\\{\normalfont\itshape;#1\\}
\definedescribecategory{sym}{symbol}
\definedescribecategory{fun}{function}
\definedescribecategory{gf}{generic function}
+\definedescribecategory{msg}{message}
\definedescribecategory{var}{variable}
+\definedescribecategory{modvar}{module variable}
\definedescribecategory{const}{constant}
\definedescribecategory{meth}{primary method}
\definedescribecategory{ar-meth}{around method}
\definedescribecategory{af-meth}{after method}
\definedescribecategory{cls}{class}
\definedescribecategory{ty}{type}
+\definedescribecategory{type}{type}
\definedescribecategory{mac}{macro}
\definedescribecategory{lmac}{local macro}
\definedescribecategory{parse}{parser spec}
\definedescribecategory{parseform}{parser form}
\definedescribecategory{opt}{option handler}
\definedescribecategory{optmac}{option macro}
+\definedescribecategory{plug}{pluggable parser}
\def\nlret{\\\hspace{4em}\returns}
\def\q@{\q@}
\if@dheadfirst\global\@dheadfirstfalse\else\relax\\[\smallskipamount]\fi%
{\let\protect\@empty\def\@uscore{_\@gobble}\message{#2:#1}%
\def\@uscore{-\@gobble}\edef\@tempa{\noexpand\label{#2:#1}}\@tempa}%
+ {\begingroup\lccode`\~=`\_\lowercase{\endgroup\def~{_}}%
+ \protected@edef\@tempa##1{%
+ \noexpand\index{%
+ #1@{\noexpand\code{#1}}!%
+ \csname cat!#2\endcsname%
+ ##1%
+ }%
+ }%
+ \@tempa{|(}%
+ \toks@\expandafter{\after@desc}%
+ \toks\tw@\expandafter{\@tempa{|)}}%
+ \xdef\after@desc{\the\toks@\the\toks\tw@}}%
\rlap{\hb@xt@\linewidth{\hfil\normalfont\bfseries
[\describecategoryname{#2}]}}%
#3%
}
\def\desc@begin#1{%
+ \let\saved@after@desc\after@desc%
+ \gdef\after@desc{}%
\normalfont%
\if@nobreak\else\par\goodbreak\fi%
\global\@dheadfirsttrue%
\penalty\@M\@afterheading%
\list{}{\rightmargin\z@\topsep\z@}\item%
}
-\let\desc@end\endlist
+\def\desc@end{\endlist\after@desc\global\let\after@desc\saved@after@desc}
\@namedef{describe*}#1{\desc@begin{#1}}
\expandafter\let\csname enddescribe*\endcsname\desc@end
\def\desc@#1#2#3{\desc@begin{\dhead@{#1}{#2}{#3}}}
\let\enddescribe\desc@end
+\def\descref#1{\@ifnextchar[{\descref@i{#1}}{\descref@ii{#1}{}}}
+\def\descref@i#1[#2]{\descref@ii{#1}{ #2}}
+\def\descref@ii#1#2#3{%
+ \code{#1}#2 (page~%
+ {\let\protect\@empty%
+ \def\@uscore{-\@gobble}\edef\@tempa{\noexpand\pageref{#3:#1}}\@tempa}%
+ )%
+}
+
%%%----- That's all, folks --------------------------------------------------
\endinput