%%
%% This is file `luatexbase-cctb.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% luatexbase-cctb.dtx  (with options: `texpackage')
%% 
%% See the aforementioned source file(s) for copyright and licensing information.
%% 
\begingroup\catcode61\catcode48\catcode32=10\relax% = and space
  \catcode123 1 % {
  \catcode125 2 % }
  \catcode 35 6 % #
  \toks0\expandafter{\expandafter\endlinechar\the\endlinechar}%
  \edef\x{\endlinechar13}%
  \def\y#1 #2 {%
    \toks0\expandafter{\the\toks0 \catcode#1 \the\catcode#1}%
    \edef\x{\x \catcode#1 #2}}%
  \y  13  5 % carriage return
  \y  61 12 % =
  \y  32 10 % space
  \y 123  1 % {
  \y 125  2 % }
  \y  35  6 % #
  \y  64 11 % @ (letter)
  \y  10 12 % new line ^^J
  \y  39 12 % '
  \y  40 12 % (
  \y  41 12 % )
  \y  44 12 % ,
  \y  45 12 % -
  \y  46 12 % .
  \y  47 12 % /
  \y  58 12 % :
  \y  60 12 % <
  \y  62 12 % >
  \y  91 12 % [
  \y  93 12 % ]
  \y  94  7 % ^
  \y  95  8 % _
  \y  96 12 % `
  \toks0\expandafter{\the\toks0 \relax\noexpand\endinput}%
  \edef\y#1{\noexpand\expandafter\endgroup%
    \noexpand\ifx#1\relax \edef#1{\the\toks0}\x\relax%
    \noexpand\else \noexpand\expandafter\noexpand\endinput%
    \noexpand\fi}%
\expandafter\y\csname luatexbase@cctb@sty@endinput\endcsname%
\begingroup
  \expandafter\ifx\csname ProvidesPackage\endcsname\relax
    \def\x#1[#2]{\immediate\write16{Package: #1 #2}}
  \else
    \let\x\ProvidesPackage
  \fi
\expandafter\endgroup
\x{luatexbase-cctb}[2013/05/11 v0.6 Catcodetable allocation for LuaTeX]
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname RequirePackage\endcsname\relax
  \input ifluatex.sty
\else
  \RequirePackage{ifluatex}
\fi
\ifluatex\else
  \begingroup
    \expandafter\ifx\csname PackageError\endcsname\relax
      \def\x#1#2#3{\begingroup \newlinechar10
        \errhelp{#3}\errmessage{Package #1 error: #2}\endgroup}
    \else
      \let\x\PackageError
    \fi
  \expandafter\endgroup
  \x{luatexbase-cctb}{LuaTeX is required for this package. Aborting.}{%
    This package can only be used with the LuaTeX engine^^J%
    (command `lualatex' or `luatex').^^J%
    Package loading has been stopped to prevent additional errors.}
  \expandafter\luatexbase@cctb@sty@endinput%
\fi
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname RequirePackage\endcsname\relax
  \input luatexbase-modutils.sty
\else
  \RequirePackage{luatexbase-modutils}
\fi
\luatexbase@directlua{require('luatexbase.cctb')}
\luatexbase@ensure@primitive{luaescapestring}
\luatexbase@ensure@primitive{catcodetable}
\luatexbase@ensure@primitive{initcatcodetable}
\luatexbase@ensure@primitive{savecatcodetable}
\newcount\lltxb@catcodetable@alloc
\lltxb@catcodetable@alloc\m@ne
\newcount\CatcodeTableStack
\CatcodeTableStack\z@
\def\newluatexcatcodetable#1{%
  \ifnum\lltxb@catcodetable@alloc<65535\relax
    \global\advance\lltxb@catcodetable@alloc\tw@
    \allocationnumber\lltxb@catcodetable@alloc
    \global\chardef#1\allocationnumber
    \luatexinitcatcodetable\allocationnumber
    \begingroup\escapechar\m@ne
    \luatexbase@directlua{luatexbase.catcodetabledef_from_tex(
      '\luatexluaescapestring{\string#1}', '\number\allocationnumber')}%
    \endgroup
    \wlog{\string#1=\string\luatexcatcodetable\the\allocationnumber}%
  \else
    \errmessage{No room for a new \string\luatexcatcodetable}%
  \fi}
\def\IncCatcodeTableStack{%
  \ifnum\CatcodeTableStack<65534\relax
    \global\advance\CatcodeTableStack\tw@
  \else
    \errmessage{CatcodeTableStack overflow}%
  \fi}
\def\DecCatcodeTableStack{%
  \ifnum\CatcodeTableStack>\z@
    \global\advance\CatcodeTableStack-2\relax
  \else
    \errmessage{CatcodeTableStack underflow}%
  \fi}
\expandafter\ifx\csname @tempcnta\endcsname\relax
  \csname newcount\endcsname\@tempcnta
\fi
\expandafter\ifx\csname @tempcntb\endcsname\relax
  \csname newcount\endcsname\@tempcntb
\fi
\def\SetCatcodeRange#1#2#3{%
  \edef\luaSCR@temp{%
    \noexpand\@tempcnta=\the\@tempcnta
    \noexpand\@tempcntb=\the\@tempcntb
    \noexpand\count@=\the\count@
    \relax}%
  \@tempcnta=#1\relax
  \@tempcntb=#2\relax
  \count@=#3\relax
  \loop\unless\ifnum\@tempcnta>\@tempcntb
    \catcode\@tempcnta=\count@
    \advance\@tempcnta\@ne
  \repeat
  \luaSCR@temp}
\def\lltxb@synonym#1#2{%
  \def#1{%
    \begingroup
    \ifdefined\PackageWarning
      \let\x\PackageWarning
    \else
      \def\x####1####2{%
        \begingroup \endlinechar10
        \message{Package ####1 warning: ####2}%
        \endgroup}
    \fi
    \expandafter\endgroup
    \x{luatex}{\string#1 is deprecated^^J%
      and will be removed in the next version of the package.^^J%
      Please use \string#2 instead.}
    \let#1#2%
    #1}}
\lltxb@synonym \setcatcoderange \SetCatcodeRange
\def\setluatexcatcodetable#1#2{%
  \begingroup
  #2%
  \luatexsavecatcodetable#1%
  \endgroup}
\newluatexcatcodetable\CatcodeTableIniTeX
\newluatexcatcodetable\CatcodeTableString
\setluatexcatcodetable\CatcodeTableString{%
  \luatexcatcodetable\CatcodeTableIniTeX
  \catcode0   12 % nul
  \catcode13  12 % carriage return
  \catcode37  12 % percent
  \SetCatcodeRange{65}{90}{12}% A-Z
  \SetCatcodeRange{97}{122}{12}% a-z
  \catcode92  12 % backslash
  \catcode127 12 }
\newluatexcatcodetable\CatcodeTableOther
\setluatexcatcodetable\CatcodeTableOther{%
  \luatexcatcodetable\CatcodeTableString
  \catcode32 12 }
\newluatexcatcodetable\CatcodeTableLaTeX
\setluatexcatcodetable\CatcodeTableLaTeX{%
  \luatexcatcodetable\CatcodeTableIniTeX
  \SetCatcodeRange{0}{31}{15}%
  \catcode9   10 % tab
  \catcode10  12 % newline
  \catcode12  13 % form feed
  \catcode13  5  % carriage return
  \catcode35  6  % hash
  \catcode36  3  % dollar
  \catcode38  4  % ampersand
  \catcode94  7  % circumflex
  \catcode95  8  % underscore
  \catcode123 1  % brace left
  \catcode125 2  % brace right
  \catcode126 13 % tilde
  \catcode127 15 }
\newluatexcatcodetable\CatcodeTableLaTeXAtLetter
\setluatexcatcodetable\CatcodeTableLaTeXAtLetter{%
  \luatexcatcodetable\CatcodeTableLaTeX
  \catcode64=11 }
\newluatexcatcodetable\CatcodeTableExpl
\setluatexcatcodetable\CatcodeTableExpl{%
  \luatexcatcodetable\CatcodeTableLaTeX
  \catcode126 10 % tilde is a space char
  \catcode32  9  % space is ignored
  \catcode9   9  % tab also ignored
  \catcode95  11 % underscore letter
  \catcode58  11 % colon letter
  }
\luatexbase@directlua{luatexbase.catcodetable_do_shortcuts()}
\def\lltxb@cctb@numstack{0}
\def\PushCatcodeTableNumStack{%
  \xdef\lltxb@cctb@numstack{{\the\luatexcatcodetable}\lltxb@cctb@numstack}}
\def\PopCatcodeTableNumStack{%
  \expandafter\lltxb@cctb@numstack@pop\lltxb@cctb@numstack\@nil}
\def\lltxb@cctb@numstack@pop#1#2\@nil{%
  \ifx\empty#2\empty
    \begingroup
    \ifdefined\PackageWarning
      \let\x\PackageWarning
    \else
      \def\x####1####2{%
        \begingroup \endlinechar10
        \message{Package ####1 warning: ####2}%
        \endgroup}%
    \fi
    \expandafter\endgroup
    \x{luatexbase-cctb}{Popping from an empty CatcodeTableNumStack}%
    \luatexcatcodetable\z@
  \else
    \gdef\lltxb@cctb@numstack{#2}%
    \luatexcatcodetable#1\relax
  \fi}
\def\BeginCatcodeRegime#1{%
  \PushCatcodeTableNumStack
  \IncCatcodeTableStack
  \setluatexcatcodetable\CatcodeTableStack{\luatexcatcodetable#1}%
  \luatexcatcodetable\CatcodeTableStack}
\def\EndCatcodeRegime{%
  \DecCatcodeTableStack
  \PopCatcodeTableNumStack}
\luatexbase@cctb@sty@endinput%
\endinput
%%
%% End of file `luatexbase-cctb.sty'.
