%%
%% This is file `swebbind.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% webfiles.dtx  (with options: `spider')
%%   Package for inclusion of CWEB and Spidery WEB programs in
%%   LaTeX Documents.
\catcode`\@=11
\chardef\xwebCatUsCode=\catcode`\_       % top level macro file!
\catcode`\_=11 % Catcode letter
\chardef\xwebCatEscape=0
\chardef\xwebCatOpen=1
\chardef\xwebCatClose=2
\chardef\xwebCatIgnore=9
\chardef\xwebCatLetter=11
\chardef\xwebCatOther=12
\chardef\xwebCatActive=13
\catcode`\_=\xwebCatLetter
\catcode`\@=\xwebCatLetter
\let\amp\&    % ampersand
\let\SS\S     % section sign
\let\PP\P     % paragraph sign
\def\N#1.#2.{%
   \ifon\end{xwebModule}\fi   % webfiles
   \global\xwebGroupLevel 0% default value for group level
   \xweb_headcheck#2\xweb_headcheck     % spider: get group level and title
   {\let\*=\empty%
      \xdef\xweb_secno{#1}% webfiles: get the section number
    }%
    \message \expandafter{*\xweb_secno}%
    \xweb_PrepareSection{#1}%
    \ifon\begin{xwebModule}{\bf\xweb_ModTitle.}%
               % \xweb_ModTitle is generated by \xweb_headcheck.
       %\hskip 1em plus.1em minus.1em%
       \xweb_SpiderLopEntry{\xwebGroupLevel}%
}
\def\xweb_SpiderLopEntry#1{%
    \ifnum\c@xwebLopDepth > \xwebGroupLevel
       \addcontentsline{lop}{starred}{%
       \protect\global\xwebGroupLevel #1 \thexwebModule.~\xweb_ModTitle}%
       {   \let\protect\@unexpandable@protect
           \edef\next{\write\xweb_cont{%
             \ZZ{\xweb_ModTitle}{\the\xwebGroupLevel}%
                {\xweb_secno}{\noexpand\thepage}}}%
           \next
       }% write "\ZZ{title}{depth}{sec}{page}" to .con file
    \fi
    \ifnum\c@xwebOutlineDepth > \xwebGroupLevel
       \xwebPDFOutline{\xweb_secno}{\xweb_ModTitle}% args: nr, title
    \fi}
\newif\ifxweb_cancel\xweb_canceltrue
\def\xweb_ifnextchar#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}%
   \xweb_ifnch}
\def\xweb_ifnch{%
    \ifx \@tempc \@tempe\let\@tempd\@tempa
    \else\let\@tempd\@tempb\fi
    \@tempd}
\def\xweb_makethechar#1{\let\@tempc=#1}

\def\xweb_headcheck#1#2\xweb_headcheck{%
    \xweb_makethechar{#1}%
    \def\theskipper{\vskip 3pt}%
                % extra skip before new starred module
    \def\xweb_ModTitle{{#2}}%
    \xweb_ifnextchar={%                                % @*= title.
        \global\xwebGroupLevel 0% webfiles
        \ifnum \xwebGroupLevel<\c@xwebSecNoEject
           \def\theskipper{\xwebMainSecSkip}%
        \fi
        \xweb_canceltrue
    }{\xweb_ifnextchar1{%                              % @*1 title.
        \global\xwebGroupLevel 1% webfiles
        \xweb_cancelfalse
        \ifnum \xwebGroupLevel<\c@xwebSecNoEject
           \def\theskipper{\xwebMainSecSkip}%
        \fi
    }{\xweb_ifnextchar2{%                              % @*2 title.
        \global\xwebGroupLevel 2% webfiles
        \xweb_cancelfalse
    }{\xweb_ifnextchar3{%                              % @*3 title.
        \global\xwebGroupLevel 3% webfiles
        \xweb_cancelfalse
        \ifnum \xwebGroupLevel<\c@xwebSecNoEject
           \def\theskipper{\xwebMainSecSkip}%
        \fi
    }{\xweb_ifnextchar4{%                              % @*4 title.
        \global\xwebGroupLevel 4% webfiles
        \xweb_cancelfalse
    }{% else                                           % @* title.
        \global\xwebGroupLevel 0% webfiles
        \ifxweb_cancel\else
           \ifnum \xwebGroupLevel<\c@xwebSecNoEject
              \def\theskipper{\xwebMainSecSkip}%
           \fi
        \fi
        \xweb_cancelfalse
        \def\xweb_ModTitle{#1{#2}}%
    }}}}}%
    \theskipper
}
\def\CD#1\DC{#1}
\def\P{\B}
\def\xweb_CweaveBindings{%
    \ifx \xweb_UserBindings\relax
    \xweb_rebind
        % indentation and paragraph layout
        \xweb_break            \0%           % SPIDER
        \xweb_IncrIndent       \1%
        \xweb_DecrIndent       \2%
        \xweb_ExprBreak        \3%
        \xweb_backup           \4%
        \xweb_OptBreak         \5%
        \xweb_break            \6%
        \xweb_BigBreak         \7%
        \xweb_noindent         \8%
        % C/C++ tokens
        \xwebRel               \?%
        \xwebAddress           \AND
        \xwebComplement        \CM
        \xwebScope             \DC
        \xwebEquiv             \S             % SPIDER
        \xwebGe                \G
        \xwebRightShift        \GG
        \xwebNe                \I
        \xwebAssign            \K
        \xwebLeftShift         \LL
        \xwebMod               \MOD
        \xwebNull              \NULL
        \xwebNot               \R
        \xwebBinOr             \OR
        \xwebMemberRef         \PA
        \xwebThis              \this
        \xwebOr                \V
        \xwebAnd               \W
        \xwebXor               \XOR
        \xwebLE                \L             % SPIDER
        \xwebPointer           \MG
        \xwebPointerMemberRef  \MGA
        \xwebDecr              \MM
        \xwebIncr              \PP
        % more tokens
        \xwebId                \\%
        \xwebIdLetter          \|%
        \xwebRes               \&%
        \xwebString            \.%        %% ( ...Emacs...
        \xwebStringBreak       \)%
        \xwebNumber            \O              % SPIDER
        \xwebCombinedOp        \MRL
        % goes to TeX state
        \xwebComment           \C
        \xwebCxxComment        \SHC
        \xwebRefName           \X
     \xwebSpiderOutputFileName \XF
        % CWEB tokens
        \xwebMacrosHere        \ATH
        \xwebDefine            \D
        \xwebFormat            \F
        \xwebIdCat             \J
        \xwebVerbString        \=           % SPIDER
        % cross reference tags
        \xwebChangeFlag        \*%
        \xwebCRAlso            \A
        \xwebCRsAlso           \As
        \xwebCRCite            \Q
        \xwebCRsCite           \Qs
        \xwebCRUse             \U
        \xwebCRsUse            \Us
        \xwebCREt              \ET
        \xwebCRsEt             \ETs
        % finish the list
        \stop\stop
    \def\xweb_UserBindings{%
        \xweb_RestoreBindings
        \let\xweb_UserBindings\relax
        }%
    \fi
    }
\def\M#1.{%
    \ifon\end{xwebModule}\fi
    \xweb_PrepareSection{#1}%
    \ifon\begin{xwebModule}
       \ifnum\c@xwebLopDepth>9
       \addcontentsline{lop}{xwebsection}{%
          \protect\global\xwebGroupLevel 4 \thexwebModule.}%
          \edef\next{\write\xweb_cont{\ZZ{}{4}{\xweb_secno}%
         {\thepage}}}\next % \ZZ{title}{depth}{sec}{page}%
          {   \let\protect\@unexpandable@protect
      \edef\next{\write\xweb_cont{%
        \ZZ{}{4}{\xweb_secno}{\thepage}}}%
      \next
          }% write "\ZZ{title}{depth}{sec}{page}" to .con file
       \fi
    }
\def\inx{
   \ifxwebIndex
      \xweb_SetupIndex
      \def\:{\I}
   \else
      \def\:##1.{}  % gobble \:\\{foo} 1, 2, 3.
   \fi
}
\def\fin{
   \ifxwebIndex
      \xweb_FinishIndex
   \fi
   \ifxwebRef
      \xweb_SetupReflist
      \def\:{\I}
   \else
      \def\:{}
      \def\XF##1\XF{}
      \def\X##1\X{}
      \def\U##1.{}
      \def\Us##1.{}
      \def\ET##1.{}
      \def\ETs##1.{}
   \fi
}
\def\con{
   \ifxwebRef
      \endgroup
   \fi
}
\def\xwebComment#1{%
    \5%                % 0.5em will be discarded on line break
    \hskip 1.5em
    \commentbegin%
    {\xweb_tex
    \xwebCommentHook
    #1%
    }%
    \commentend%
    }
\let\xwebCommentHook\relax
\let\xwebCxxComment\xwebComment
\def\xwebDefine{\xweb_macro{define}}
\def\xwebFormat\\#1\\#2\par{\ifxwebHideFormats\else
  \4\xweb_macro{format}\\{#1} \\{#2}\par\fi}
\def\xwebSpiderOutputFileName#1:#2\XF{\xwebRefName{#1}:\.{#2}\X}
\catcode`\_=\xwebCatUsCode
\catcode`\@=\xwebCatOther
\endinput
%%
%% End of file `swebbind.sty'.