summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/ocp/ocplist.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/ocp/ocplist.h')
-rw-r--r--Build/source/texk/web2c/luatexdir/ocp/ocplist.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/ocp/ocplist.h b/Build/source/texk/web2c/luatexdir/ocp/ocplist.h
new file mode 100644
index 00000000000..f94f29adf03
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/ocp/ocplist.h
@@ -0,0 +1,91 @@
+/* ocplist.h
+
+ Copyright 2009 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/>. */
+
+/* $Id: ocplist.h 3302 2009-12-25 12:49:14Z oneiros $ */
+
+#ifndef OCPLIST_H
+
+# define OCPLIST_H 1
+
+# define ocp_list_base 0 /* smallest internal ocp list number; must not be less
+ than |min_quarterword| */
+# define number_ocp_lists 32768
+# define null_ocp_list ocp_list_base
+
+typedef int internal_ocp_list_number;
+typedef int ocp_list_index; /* index into |ocp_list_info| */
+typedef int ocp_lstack_index; /* index into |ocp_lstack_info| */
+
+extern memory_word *ocp_list_info;
+extern memory_word *ocp_lstack_info;
+extern internal_ocp_list_number ocp_list_ptr;
+extern ocp_list_index *ocp_list_list;
+
+# define ocp_list_lnext(A) ocp_list_info[(A)].hh.u.B0
+# define ocp_list_lstack(A) ocp_list_info[(A)].hh.u.B1
+# define ocp_list_lstack_no(A) ocp_list_info[(A)+1].cint
+# define ocp_lstack_lnext(A) ocp_lstack_info[(A)].hh.u.B0
+# define ocp_lstack_ocp(A) ocp_lstack_info[(A)].hh.u.B1
+# define make_null_ocp_list() make_ocp_list_node(0,ocp_maxint,0)
+# define is_null_ocp_list(A) (ocp_list_lstack_no(A)==ocp_maxint)
+
+# define make_null_ocp_lstack() 0
+# define is_null_ocp_lstack(A) ((A)==0)
+
+typedef enum {
+ add_before_op = 1,
+ add_after_op,
+ remove_before_op,
+ remove_after_op
+} ocplist_ops;
+
+
+extern void initialize_init_ocplists(void);
+extern void initialize_ocplist_arrays(int ocp_list_size);
+
+extern ocp_list_index make_ocp_list_node(ocp_lstack_index llstack,
+ scaled llstack_no,
+ ocp_list_index llnext);
+
+extern ocp_lstack_index make_ocp_lstack_node(internal_ocp_number locp,
+ ocp_lstack_index llnext);
+
+extern ocp_lstack_index copy_ocp_lstack(ocp_lstack_index llstack);
+
+extern ocp_list_index copy_ocp_list(ocp_list_index list);
+
+extern ocp_list_index ocp_ensure_lstack(ocp_list_index list, scaled llstack_no);
+
+extern void ocp_apply_add(ocp_list_index list_entry,
+ boolean lbefore, internal_ocp_number locp);
+
+extern void ocp_apply_remove(ocp_list_index list_entry, boolean lbefore);
+
+extern void print_ocp_lstack(ocp_lstack_index lstack_entry);
+extern void print_ocp_list(ocp_list_index list_entry);
+extern ocp_list_index scan_ocp_list(void);
+extern internal_ocp_list_number read_ocp_list(void);
+extern void scan_ocp_list_ident(void);
+
+extern void new_ocp_list(small_number a);
+
+extern void dump_ocplist_info(void);
+extern void undump_ocplist_info(void);
+
+#endif