summaryrefslogtreecommitdiff
path: root/macros/luatex/optex/base/alloc.opm
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/optex/base/alloc.opm')
-rw-r--r--macros/luatex/optex/base/alloc.opm173
1 files changed, 0 insertions, 173 deletions
diff --git a/macros/luatex/optex/base/alloc.opm b/macros/luatex/optex/base/alloc.opm
deleted file mode 100644
index 5d874134d4..0000000000
--- a/macros/luatex/optex/base/alloc.opm
+++ /dev/null
@@ -1,173 +0,0 @@
-%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-
-\_codedecl \newdimen {Allocators for registers <2021-02-15>} % loaded in format
-
- \_doc -----------------------------
- The limits are set first.
- \_cod -----------------------------
-
-\_chardef\_maicount = 65535 % Max Allocation Index for counts registers in LuaTeX
-\_let\_maidimen = \_maicount
-\_let\_maiskip = \_maicount
-\_let\_maimuskip = \_maicount
-\_let\_maibox = \_maicount
-\_let\_maitoks = \_maicount
-\_chardef\_mairead = 15
-\_chardef\_maiwrite = 15
-\_chardef\_maifam = 255
-
- \_doc -----------------------------
- Each allocation macro needs its own counter.
- \_cod -----------------------------
-
-\_countdef\_countalloc=10 \_countalloc=255
-\_countdef\_dimenalloc=11 \_dimenalloc=255
-\_countdef\_skipalloc=12 \_skipalloc=255
-\_countdef\_muskipalloc=13 \_muskipalloc=255
-\_countdef\_boxalloc=14 \_boxalloc=255
-\_countdef\_toksalloc=15 \_toksalloc=255
-\_countdef\_readalloc=16 \_readalloc=-1
-\_countdef\_writealloc=17 \_writealloc=-1
-\_countdef\_famalloc=18 \_famalloc=3
-
- \_doc -----------------------------
- The common allocation macro
- \`\_allocator` `\<sequence> {<type>} \<primitive declarator>`
- is defined. This idea was used in classical plain \TeX/ by
- Donald Knuth too but the macro from plain \TeX/ seems to be
- more complicated:).
- \_cod -----------------------------
-
-\_def\_allocator #1#2#3{%
- \_incr{\_cs{_#2alloc}}%
- \_ifnum\_cs{_#2alloc}>\_cs{_mai#2}%
- \_errmessage{No room for a new \_ea\_string\_csname #2\_endcsname}%
- \_else
- \_global#3#1=\_cs{_#2alloc}%
- \_wlog{\_string#1=\_ea\_string\_csname #2\_endcsname\_the\_cs{_#2alloc}}%
- \_fi
-}
-
- \_doc -----------------------------
- The allocation macros
- \`\newcount`, \`\newdimen`, \`\newskip`, \`\newmuskip`, \`\newbox`,
- \`\newtoks`, \`\newread`, \`\newwrite` and \`\newfam`
- are defined here.
- \_cod -----------------------------
-
-\_def\_newcount #1{\_allocator #1{count}\_countdef}
-\_def\_newdimen #1{\_allocator #1{dimen}\_dimendef}
-\_def\_newskip #1{\_allocator #1{skip}\_skipdef}
-\_def\_newmuskip #1{\_allocator #1{muskip}\_muskipdef}
-\_def\_newbox #1{\_allocator #1{box}\_chardef}
-\_def\_newtoks #1{\_allocator #1{toks}\_toksdef}
-\_def\_newread #1{\_allocator #1{read}\_chardef}
-\_def\_newwrite #1{\_allocator #1{write}\_chardef}
-\_def\_newfam #1{\_allocator #1{fam}\_chardef}
-
-\_public \newcount \newdimen \newskip \newmuskip \newbox \newtoks \newread \newwrite \newfam ;
-
- \_doc -----------------------------
- The \`\newinsert` macro is defined differently than others.
- \_cod -----------------------------
-
-\_newcount\_insertalloc \_insertalloc=255
-\_chardef\_insertmin = 201
-
-\_def\_newinsert #1{%
- \_decr\_insertalloc
- \_ifnum\_insertalloc <\_insertmin
- \_errmessage {No room for a new \_string\insert}%
- \_else
- \_global\_chardef#1=\_insertalloc
- \_wlog {\_string#1=\_string\_insert\_the\_insertalloc}%
- \_fi
-}
-\_public \newinsert ;
-
- \_doc -----------------------------
- Other allocation macros \`\newattribute` and \`\newcatcodetable`
- have their counter allocated by the `\newcount` macro.
- \_cod -----------------------------
-
-\_newcount \_attributealloc \_attributealloc=0
-\_chardef\_maiattribute=\_maicount
-\_def\_newattribute #1{\_allocator #1{attribute}\_attributedef}
-
-\_newcount \_catcodetablealloc \_catcodetablealloc=10
-\_chardef\_maicatcodetable=32767
-\_def\_newcatcodetable #1{\_allocator #1{catcodetable}\_chardef}
-
-\_public \newattribute \newcatcodetable ;
-
- \_doc -----------------------------
- We declare public and private versions of `\tmpnum` and `\tmpdim`
- registers separately. They are independent registers.
- \_cod -----------------------------
-
-\_newcount \tmpnum \_newcount \_tmpnum
-\_newdimen \tmpdim \_newdimen \_tmpdim
-
- \_doc -----------------------------
- A few registers are initialized like in plain\TeX/. We absolutely
- don't support the `@`category dance, so `\z@skip`
- `\z@`, `\p@` etc. are not defined in \OpTeX/. If you need such
- control sequences then you can initialize them by `\load[plain-at]`.
-
- Only the \`\_zo` and \`\_zoskip` (equivalents to `\z@` and `\z@skip`)
- are declared here and used in some internal macros of \OpTeX/
- for improving speed.
- \_cod -----------------------------
-
-\_newdimen\_maxdimen \_maxdimen=16383.99999pt % the largest legal <dimen>
-\_newdimen\_zo \_zo=0pt
-\_newskip\_hideskip \_hideskip=-1000pt plus 1fill % negative but can grow
-\_newskip\_centering \_centering=0pt plus 1000pt minus 1000pt
-\_newskip\_zoskip \_zoskip=0pt plus0pt minus0pt
-\_newbox\_voidbox % permanently void box register
-
-\_public \maxdimen \hideskip \centering \voidbox ;
-
-\_endcode %---------------------------------------------------
-
-Like plain\TeX, the allocators `\newcount`, `\newwrite`, etc. are defined.
-The registers are allocated from 256 to the `\_mai<type>` which is 65535 in
-\LuaTeX/.
-
-Unlike in Plain\TeX/, the mentioned allocators are not `\outer`.
-
-User can use `\dimen0` to `\dimen200` and similarly for `\skip`,
-`\muskip`, `\box`, and `\toks` directly. User can use
-`\count20` to `\count200` directly too. This is the same
-philosophy as in old plain\TeX/, but the range of directly used registers
-is wider.
-
-Inserts are allocated from 254 to 201 using `\newinsert`.
-
-You can define your own allocation concept (for example for allocation of
-arrays) from the top of the registers array. The example shows a definition of
-the array-like declarator of counters.
-
-\nobreak
-\begtt
-\newcount \_maicount % redefine maximal allocation index as variable
-\_maicount = \maicount % first value is top of the array
-
-\def\newcountarray #1[#2]{% \newcountarray \foo[100]
- \global\advance\_maicount by -#2\relax
- \ifnum \_countalloc > \_maicount
- \errmessage{No room for a new array of \string\count}%
- \else
- \global\chardef#1=\_maicount
- \fi
-}
-\def\usecount #1[#2]{% \usecount \foo[2]
- \count\numexpr#1+#2\relax
-}
-\endtt
-
-\_endinput
-
-2021-02-15 \_advance -> \_incr, \_decr
-2020-05-12 \newmath -> \newfam bug fixing
-2020-01-23 released