summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/ocp/ocp.w
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/ocp/ocp.w')
-rw-r--r--Build/source/texk/web2c/luatexdir/ocp/ocp.w201
1 files changed, 0 insertions, 201 deletions
diff --git a/Build/source/texk/web2c/luatexdir/ocp/ocp.w b/Build/source/texk/web2c/luatexdir/ocp/ocp.w
deleted file mode 100644
index d7aed8e1116..00000000000
--- a/Build/source/texk/web2c/luatexdir/ocp/ocp.w
+++ /dev/null
@@ -1,201 +0,0 @@
-% ocp.w
-%
-% Copyright 2009-2010 Taco Hoekwater <taco@@luatex.org>
-
-% This file is part of LuaTeX.
-
-% LuaTeX is free software; you can redistribute it and/or modify it under
-% the terms of the GNU General Public License as published by the Free
-% Software Foundation; either version 2 of the License, or (at your
-% option) any later version.
-
-% LuaTeX is distributed in the hope that it will be useful, but WITHOUT
-% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-% FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-% License for more details.
-
-% You should have received a copy of the GNU General Public License along
-% with LuaTeX; if not, see <http://www.gnu.org/licenses/>.
-
-@ @c
-#include "ptexlib.h"
-
-static const char _svn_version[] =
- "$Id: ocp.w 3584 2010-04-02 17:45:55Z hhenkel $ "
-"$URL: http://foundry.supelec.fr/svn/luatex/branches/0.60.x/source/texk/web2c/luatexdir/ocp/ocp.w $";
-
-@ @c
-int **ocp_tables;
-
-static int ocp_entries = 0;
-int ocp_maxint = 10000000;
-
-@ When the user defines \.{\\ocp\\f}, say, \TeX\ assigns an internal number
-to the user's ocp~\.{\\f}. Adding this number to |ocp_id_base| gives the
-|eqtb| location of a ``frozen'' control sequence that will always select
-the ocp.
-
-@c
-internal_ocp_number ocp_ptr; /* largest internal ocp number in use */
-
-void new_ocp(small_number a)
-{
- pointer u; /* user's ocp identifier */
- internal_ocp_number f; /* runs through existing ocps */
- str_number t; /* name for the frozen ocp identifier */
- boolean external_ocp = false; /* external binary file */
- if (job_name == 0)
- open_log_file();
- /* avoid confusing \.{texput} with the ocp name */
- if (cur_chr == 1)
- external_ocp = true;
- get_r_token();
- u = cur_cs;
- if (u >= hash_base)
- t = cs_text(u);
- else
- t = maketexstring("OCP");
- define(u, set_ocp_cmd, null_ocp);
- scan_optional_equals();
- scan_file_name();
- /* If this ocp has already been loaded, set |f| to the internal
- ocp number and |goto common_ending| */
- /* When the user gives a new identifier to a ocp that was previously loaded,
- the new name becomes the ocp identifier of record. OCP names `\.{xyz}' and
- `\.{XYZ}' are considered to be different.
- */
- for (f = ocp_base + 1; f <= ocp_ptr; f++) {
- if (str_eq_str(ocp_name(f), cur_name)
- && str_eq_str(ocp_area(f), cur_area)) {
- flush_str(cur_name);
- flush_str(cur_area);
- cur_name = ocp_name(f);
- cur_area = ocp_area(f);
- goto COMMON_ENDING;
- }
- }
- {
- char *nam = makecstring(cur_name);
- char *are = makecstring(cur_area);
- char *ext = makecstring(cur_ext);
- f = read_ocp_info(u, nam, are, ext, external_ocp);
- free(nam);
- free(are);
- free(ext);
- }
- COMMON_ENDING:
- equiv(u) = f;
- eqtb[ocp_id_base + f] = eqtb[u];
- cs_text(ocp_id_base + f) = t;
- if (ocp_trace_level == 1) {
- tprint_nl("");
- tprint_esc("ocp");
- print_esc(t);
- tprint("=");
- print(cur_name);
- }
-}
-
-@ Before we forget about the format of these tables, let's deal with
-$\Omega$'s basic scanning routine related to ocp information.
-
-@c
-void scan_ocp_ident(void)
-{
- internal_ocp_number f;
- do {
- get_x_token();
- } while (cur_cmd == spacer_cmd);
-
- if (cur_cmd == set_ocp_cmd) {
- f = cur_chr;
- } else {
- const char *hlp[] = { "I was looking for a control sequence whose",
- "current meaning has been defined by \\ocp.",
- NULL
- };
- back_input();
- tex_error("Missing ocp identifier", hlp);
- f = null_ocp;
- }
- cur_val = f;
-}
-
-void allocate_ocp_table(int ocp_number, int ocp_size)
-{
- int i;
- if (ocp_entries == 0) {
- ocp_tables = (int **) xmalloc(256 * sizeof(int **));
- ocp_entries = 256;
- } else if ((ocp_number == 256) && (ocp_entries == 256)) {
- ocp_tables = xrealloc(ocp_tables, 65536);
- ocp_entries = 65536;
- }
- ocp_tables[ocp_number] =
- (int *) xmalloc((unsigned) ((1 + (unsigned) ocp_size) * sizeof(int)));
- ocp_tables[ocp_number][0] = ocp_size;
- for (i = 1; i <= ocp_size; i++) {
- ocp_tables[ocp_number][i] = 0;
- }
-}
-
-@ @c
-static void dump_ocp_table(int ocp_number)
-{
- dump_things(ocp_tables[ocp_number][0], ocp_tables[ocp_number][0] + 1);
-}
-
-void dump_ocp_info(void)
-{
- int k;
- dump_int(123456);
- dump_int(ocp_ptr);
- for (k = null_ocp; k <= ocp_ptr; k++) {
- dump_ocp_table(k);
- if (ocp_ptr - ocp_base > 0) {
- tprint_nl("\\ocp");
- print_esc(cs_text(ocp_id_base + k));
- print_char('=');
- print_file_name(ocp_name(k), ocp_area(k), get_nullstr());
- }
- }
- dump_int(123456);
- if (ocp_ptr - ocp_base > 0) {
- print_ln();
- print_int(ocp_ptr - ocp_base);
- tprint(" preloaded ocp");
- if (ocp_ptr != ocp_base + 1)
- print_char('s');
- }
-}
-
-static void undump_ocp_table(int ocp_number)
-{
- int sizeword;
- if (ocp_entries == 0) {
- ocp_tables = (int **) xmalloc(256 * sizeof(int **));
- ocp_entries = 256;
- } else if ((ocp_number == 256) && (ocp_entries == 256)) {
- ocp_tables = xrealloc(ocp_tables, 65536);
- ocp_entries = 65536;
- }
- undump_things(sizeword, 1);
- ocp_tables[ocp_number] =
- (int *) xmalloc((unsigned) ((1 + (unsigned) sizeword) * sizeof(int)));
- ocp_tables[ocp_number][0] = sizeword;
- undump_things(ocp_tables[ocp_number][1], sizeword);
-}
-
-
-void undump_ocp_info(void)
-{
- int k;
- int x;
- undump_int(x);
- assert(x == 123456);
- undump_int(ocp_ptr);
- for (k = null_ocp; k <= ocp_ptr; k++)
- undump_ocp_table(k);
- undump_int(x);
- assert(x == 123456);
-}