%%
%% This is file `cweb.hyp',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% hyper.dtx  (with options: `cweb')
%% 
%% File: hyper.dtx Copyright (C) 1995--1999 Michael Mehlich
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN
%% archives in directory macros/latex/base/lppl.txt; either
%% version 1 of the License, or any later version.
\def\fileversion{V4.2d}
\def\filedate{1999/03/09}
\def\docdate{1999/03/09}
%%
%% \CharacterTable
%% {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%  Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%  Digits        \0\1\2\3\4\5\6\7\8\9
%%  Exclamation   \!     Double quote  \"     Hash (number) \#
%%  Dollar        \$     Percent       \%     Ampersand     \&
%%  Acute accent  \'     Left paren    \(     Right paren   \)
%%  Asterisk      \*     Plus          \+     Comma         \,
%%  Minus         \-     Point         \.     Solidus       \/
%%  Colon         \:     Semicolon     \;     Less than     \<
%%  Equals        \=     Greater than  \>     Question mark \?
%%  Commercial at \@     Left bracket  \[     Backslash     \\
%%  Right bracket \]     Circumflex    \^     Underscore    \_
%%  Grave accent  \`     Left brace    \{     Vertical bar  \|
%%  Right brace   \}     Tilde         \~}
%%
\InputIfFileExists{\CwebBaseClass.hyp}{}%
  {\PackageError{hyper}{\CwebBaseClass.hyp not found.\MessageBreak
               Please choose another base document class for cweb\MessageBreak
               or redefine \string\CwebBaseClass to point to a\MessageBreak
               modification document class for the base document class
              }{}%
  }%
\RequirePackage{defpattern}
\chardef\hyper@CatUsCode=\catcode`\_
\catcode`\_=\CatLetter
\let\hyper@cweb@refstepcounter=\hyper@refstepcounter
\def\refstepcounter#1{%
    \def\@tempa{#1}%
    \ifx \@tempa\cweb@string@chunk%
       \protected@edef\@currenthyper{cweb.\cweb@refchunk}%
       \hyper@settype{chunk}%
       \protected@edef\@currentlabel{\cweb@refchunk}%
    \else%
       \hyper@setcurrent%
       \hyper@settype{chunk}%
       \hyper@cweb@refstepcounter{#1}%
    \fi%
}
\let\hyper@CwebRefName\CwebRefName
\def\CwebRefName#1:#2\X{%
    \ifmmode  \gdef\cwbb@toggle_text{\null$\null}%
    \else  \let\cwbb@toggle_text\relax%
    \fi%
    \cwbb@toggle_text%
    \expandafter\ifx\csname hyper@cweb.#1\endcsname\relax%
       \expandafter\ifx\csname hyper@new@cweb.#1\endcsname\relax%
          \PackageWarning{hyper}%
                   {Hyper reference for `cweb.#1' on page \hyper@thepage\space undefined}%
          \hyper@change1\relax%
          \hyper@undef@color{%
             $\langle\,${\cwbb@tex \cwbb@check_dot{#2}\CwebRefNumber{#1}}$\,\rangle$%
          }%
       \else%
          \hyperreference{cweb.#1}{%
             $\langle\,${\cwbb@tex \cwbb@check_dot{#2}\CwebRefNumber{#1}}$\,\rangle$%
          }%
       \fi%
    \else%
       \hyperreference{cweb.#1}{%
          $\langle\,${\cwbb@tex \cwbb@check_dot{#2}\CwebRefNumber{#1}}$\,\rangle$%
       }%
    \fi%
    \cwbb@toggle_text%
}
\ifcase \cweb@structure
    %% hierarchic
    \let\hyper@cwbb@marginal_chunkno\cwbb@marginal_chunkno%
    \def\cwbb@marginal_chunkno{%
      \let\hyper@thechunk\thechunk%
      \def\thechunk{\hyperanchor{cweb.\arabic{chunk}}{\hyper@thechunk}}%
      \hyper@cwbb@marginal_chunkno%
      \let\thechunk\hyper@thechunk%
    }
  \or
    %% flat
    \let\hyper@M\M%
    \def\M#1{%
      \let\hyper@thechunk\thechunk%
      \def\thechunk{\hyperanchor{cweb.\arabic{chunk}}{\hyper@thechunk}}%
      \hyper@M{#1}%
      \let\thechunk\hyper@thechunk%
    }
\fi
\let\hyper@CwebCREt\CwebCREt
\let\hyper@CwebCRsEt\CwebCRsEt
\def\CwebCREt{!}
\def\CwebCRsEt{?}
\defpattern\hyper@split@CwebCrossRef[#2]{\hyperreference{cweb.#2}{#2}}
\defpattern\hyper@split@CwebCrossRef[ #2]{\hyper@split@CwebCrossRef[#2]}
\defpattern\hyper@split@CwebCrossRef[#2,#3]{%
  \hyper@split@CwebCrossRef[#2], %
  \hyper@split@CwebCrossRef[#3]%
}
\defpattern\hyper@split@CwebCrossRef[#2!#3]{%
  \hyper@split@CwebCrossRef[#2]\hyper@CwebCREt%
  \hyper@split@CwebCrossRef[#3]%
}
\defpattern\hyper@split@CwebCrossRef[#2?#3]{%
  \hyper@split@CwebCrossRef[#2]\hyper@CwebCRsEt%
  \hyper@split@CwebCrossRef[#3]%
}
\def\hypersplit@CwebCrossRef[#1]{%
  \edef\hyper@tmp{#1}%
  \expandafter\hyper@split@CwebCrossRef\expandafter[\hyper@tmp]%
}
\let\hyper@CwebCrossRef\CwebCrossRef
\def\CwebCrossRef#1#2.{%
  \hyper@CwebCrossRef{#1}{\hypersplit@CwebCrossRef[#2]}.%
}
\let\hyper@CwebRefList\CwebRefList
\def\hyper@CwebRefName@RefList#1:#2\X{%
  \hyper@CwebRefName\hypersplit@CwebCrossRef[#1]:#2\X%
}
\def\CwebRefList{%
  \let\hyper@CwebReadPPList\CwebReadPPList%
  \let\CwebReadPPList\relax%
  \hyper@CwebRefList%
  \let\X\hyper@CwebRefName@RefList
  \def\CwebCrossRef##1##2.{%
    \quad {\reset@font\footnotesize ##1~\hypersplit@CwebCrossRef[##2].}%
  }%
  \let\CwebReadPPList\hyper@CwebReadPPList%
  \CwebReadPPList%
}
\let\hyper@CwebIndexEntry\CwebIndexEntry
\let\hyper@CwebIndexDeclared\CwebIndexDeclared
\def\CwebIndexDeclared#1]{|#1|}
\defpattern\hyper@cwebindex[#2]{\hyperreference{cweb.#2}{#2}}
\defpattern\hyper@cwebindex[|#2|]{%
  \hyperreference{cweb.#2}{\hyper@CwebIndexDeclared#2]}%
}
\defpattern\hyper@cwebindex[#2, #3]{%
  \hyper@cwebindex[#2], \hyper@cwebindex[#3]%
}
\def\hyper@cweb@index#1{%
  \edef\hyper@tmp{#1}%
  \expandafter\hyper@cwebindex\expandafter[\hyper@tmp]%
}
\def\CwebIndexEntry#1, #2.{%
  \hyper@CwebIndexEntry#1, \hyper@cweb@index{#2}.%
}
\catcode`\_=\hyper@CatUsCode
\endinput
%%
%% End of file `cweb.hyp'.
