% \iffalse meta-comment
%
% Template : look for NAME DATE DESC VERSION !!!
% and 'derived files' !!!
%
% Written in 2009, 2010 by Manuel Pégourié-Gonnard and Élie Roux.
%     <mpg@elzevir.fr>
%     <elie.roux@telecom-bretagne.eu>
%
% This work is under the CC0 license.
%
% This work consists of the main source file luatexbase-regs.dtx
% and the derived files
%   luatexbase-regs.pdf luatexbase-regs.sty luatexbase-regs-latex.tex
%
% Unpacking:
%    tex luatexbase-regs.dtx
% Documentation:
%    pdflatex luatexbase-regs.dtx
%
%    The class ltxdoc loads the configuration file ltxdoc.cfg
%    if available. Here you can specify further options, e.g.
%    use A4 as paper format:
%       \PassOptionsToClass{a4paper}{article}
%
%<*ignore>
\begingroup
  \def\x{LaTeX2e}%
\expandafter\endgroup
\ifcase 0\ifx\install y1\fi\expandafter
         \ifx\csname processbatchFile\endcsname\relax\else1\fi
         \ifx\fmtname\x\else 1\fi\relax
\else\csname fi\endcsname
%</ignore>
%<*install>
\input docstrip.tex

\keepsilent
\askforoverwritefalse

\preamble
This is a generated file.

Written in 2009, 2010 by Manuel Pégourié-Gonnard and Élie Roux.
    <mpg@elzevir.fr>
    <elie.roux@telecom-bretagne.eu>

This work is under the CC0 license.

This work consists of the main source file luatexbase-regs.dtx
and the derived files
   luatexbase-regs.pdf luatexbase-regs.sty luatexbase-regs-latex.tex

\endpreamble

\generate{%
  \usedir{tex/luatex/luatexbase}%
  \file{luatexbase-regs.sty}{\from{luatexbase-regs.dtx}{texpackage}}%
  \file{luatexbase-regs-latex.tex}{\from{luatexbase-regs.dtx}{latexfile}}%
}

\generate{%
  \usedir{doc/luatex/luatexbase}%
  \file{test-regs-plain.tex}{\from{luatexbase-regs.dtx}{testplain}}%
  \file{test-regs-latex.tex}{\from{luatexbase-regs.dtx}{testlatex}}%
}

\obeyspaces
\Msg{************************************************************************}
\Msg{*}
\Msg{* To finish the installation you have to move the following}
\Msg{* files into a directory searched by TeX:}
\Msg{*}
\Msg{*     luatexbase-regs.sty luatexbase-regs-latex.tex ...}
\Msg{*}
\Msg{* Happy TeXing!}
\Msg{*}
\Msg{************************************************************************}

\endbatchfile
%</install>
%<*ignore>
\fi
%</ignore>
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{luatexbase-regs.drv}
  [DATE DESC]
\documentclass{ltxdoc}
\makeatletter
\newcommand\eTeX{$\m@th\varepsilon$-\TeX}
\newcommand\LuaTeX{Lua\TeX}
\makeatother
\EnableCrossrefs
\CodelineIndex
\begin{document}
  \DocInput{luatexbase-regs.dtx}%
\end{document}
%</driver>
% \fi
%
% \CheckSum{0}
%
% \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         \~}
%
% \GetFileInfo{luatexbase-regs.drv}
%
% \title{The \textsf{luatexbase-regs} package}
% \date{DATE}
% \author{%
%  Manuel P\'egouri\'e-Gonnard \\ \texttt{mpg@elzevir.fr} \and
%   \'Elie Roux \\ \texttt{elie.roux@telecom-bretagne.eu}}
%
% \maketitle
%
% \begin{abstract}
% \end{abstract}
%
% \section{Documentation}
%
%    \section{Implementation}
%
%    \subsection{\TeX\ package}
%
%    \begin{macrocode}
%<*texpackage>
%    \end{macrocode}
%
%    \begin{macrocode}
\expandafter\ifx\csname ProvidesPackage\endcsname\relax \else
  \RequirePackage{etex}[1998/03/26]
%
%    The \texttt{\string\input} is a hack that modifies some values in the
%    register attribution scheme of $\varepsilon$-\TeX\ and remaps
%    \texttt{\string\newcount} to \textsf{etex}'s \texttt{\string\globcount}.
%    We have to do such a remapping in a separate file that Plain doesn't see,
%    otherwise it outputs an error if we try to change
%    \texttt{\string\newcount} (because it is an \texttt{\string\outer}
%    macro). See below for file contents.
%
%    \begin{macrocode}
  \input luatexbase-regs-latex.tex
\fi
%    \begin{macrocode}
%</texpackage>
%    \end{macrocode}
%
%    \subsection{Specific \LaTeX\ part}
%
%    \begin{macrocode}
%<*latexfile>
%    \end{macrocode}
%
%    This file is very small, it just changes the maximum values of allowed
%    registers from 32768 to 65536, and remaps \texttt{\string\newcount} (and
%    friends) to \textsf{etex}'s \texttt{\string\globcount}.
%
%    \begin{macrocode}
\def\ltxtra@temp#1{%
\ifnum\count27#1=32768 %
  \count27#1=65536 %
\fi
}%
\ltxtra@temp0%
\ltxtra@temp1%
\ltxtra@temp2%
\ltxtra@temp3%
\ltxtra@temp4%
\ltxtra@temp5%
\ltxtra@temp6%
\let\newcount\globcount
\let\newdimen\globdimen
\let\newskip\globskip
\let\newbox\globbox
%    \end{macrocode}
%
%    \begin{macrocode}
%</latexfile>
%    \end{macrocode}
%
%    \section{Test files}
%
%    Here we test only the two main formatis: Plain~\TeX\ (with etex.src
%    loaded) and \LaTeX, both with the \LuaTeX\ engine. Those correspond to
%    the \texttt{luatex} and \texttt{lualatex} commands in \TeX\,Live.
%
%    We want to make sure we can globally and locally allocate $30000$
%    registers of each kind, and still globally allocate $100$
%    \verb+\insert+s. (Those numbers are not optimal, but they should be
%    enough for testing purposes.)
%
%    \begin{macrocode}
%<testplain>\input luatexbase-regs.sty
%<testlatex>\RequirePackage{luatexbase-regs}
%<*testplain,testlatex>
\def\checkregister#1{%
  \edef\newregister{\expandafter\noexpand\csname new#1\endcsname}%
  \edef\locregister{\expandafter\noexpand\csname loc#1\endcsname}%
  \count0 1
  \loop
    \newregister\dummy
    \locregister\dummy
  \ifnum\count0<30000
    \advance\count0 1
  \repeat}
\checkregister{count}
\checkregister{dimen}
\checkregister{skip}
\checkregister{muskip}
%%\checkregister{box}
\checkregister{toks}
%%\checkregister{marks}

\count0 1
\loop \ifnum\count0<100
  \newinsert\dummy
  \advance\count0 1
\repeat
%</testplain,testlatex>
%<testplain>\bye
%<testlatex>\stop
%    \end{macrocode}
%
%
% \Finale
\endinput
