blob: e2a978671a0d99fbbe95f0e038316c68e0268fcf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
%D \module
%D [ file=syst-mtx,
%D version=2006.08.11,
%D title=\CONTEXT\ System Macros,
%D subtitle=\METATEX\ specifics,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
\ifx\directlua\undefined \endinput \fi
\unprotect
\ifnum\contextmarkmode=2
\input enco-utf.tex
% patch needed for turkish
\setcclcuc 201C 201C 201C
\setcclcuc 201D 201D 201D
\fi
%D Since the number of chars exceed 256 now, we can use \type
%D {\chardef} instead of the more limited \type {\mathchardef}.
\def\newcount {\myalloc@0\count \countdef \@@maxallocation}
\def\newdimen {\myalloc@1\dimen \dimendef \@@maxallocation}
\def\newskip {\myalloc@2\skip \skipdef \@@maxallocation}
\def\newmuskip {\myalloc@3\muskip \muskipdef \@@maxallocation}
\def\newbox {\myalloc@4\box \chardef \@@maxallocation}
\def\newtoks {\myalloc@5\toks \toksdef \@@maxallocation}
\def\newread {\myalloc@6\read \chardef \@@minallocation}
\def\newwrite {\myalloc@7\write \chardef \@@minallocation}
\def\newmarks {\myalloc@8\marks \chardef \@@maxallocation}
\def\newlanguage{\myalloc@9\language\chardef \@@minallocation}
\def\newfam#1{\chardef#1=15 }
\def\topofboxstack{\number\count24 }
\count18=1
\mathchardef\@@minallocation = 16
\mathchardef\@@medallocation = 256
\mathchardef\@@maxallocation = 32767
\chardef \@@insallocation = 128 % was 32, but if we want continuous ranges (mplib) we need to pass 256 soon 32
\def\myalloc@#1#2#3#4#5%
{\global\advance\count1#1by\@ne
\ifnum\count1#1>\@@medallocation \else
\ifnum\count1#1<\numexpr\@@medallocation-\@@insallocation\relax\else
\global\count1#1=\numexpr\@@medallocation+\@ne\relax % \wait
\fi
\fi
\ifnum\count1#1>#4%
\global\count1#1=#4%
\errmessage{No room for (\string#2) \string#5}%
\fi
\allocationnumber=\count1#1%
\global#3#5=\allocationnumber
\wlog{\string#5=\string#2\the\allocationnumber}}
\def\newinsert#1%
{\ifnum\insc@unt>\numexpr\@@medallocation-\@@insallocation\relax
\global\advance\insc@unt by\m@ne
\allocationnumber=\insc@unt
\global\chardef#1=\allocationnumber
\wlog{\string#1=\string\insert\the\allocationnumber}%
\else
\errmessage{No room for a new insert \string#1 (\number\insc@unt)}%
\fi}
\protect \endinput
|