summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/tex/textoken.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/tex/textoken.h')
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/textoken.h179
1 files changed, 179 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/tex/textoken.h b/Build/source/texk/web2c/luatexdir/tex/textoken.h
new file mode 100644
index 00000000000..1cb4533a5d2
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/tex/textoken.h
@@ -0,0 +1,179 @@
+/* textoken.h
+
+ Copyright 2006-2008 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: textoken.h 3376 2010-01-25 16:50:23Z taco $ */
+
+#ifndef TEXTOKEN_H
+# define TEXTOKEN_H
+
+# define token_list 0
+# define null 0
+# define cs_token_flag 0x1FFFFFFF
+
+# define left_brace_token 0x200000 /* $2^{21}\cdot|left_brace|$ */
+# define right_brace_token 0x400000 /* $2^{21}\cdot|right_brace|$ */
+# define left_brace_token 0x200000 /* $2^{21}\cdot|left_brace|$ */
+# define left_brace_limit 0x400000 /* $2^{21}\cdot(|left_brace|+1)$ */
+# define right_brace_token 0x400000 /* $2^{21}\cdot|right_brace|$ */
+# define right_brace_limit 0x600000 /* $2^{21}\cdot(|right_brace|+1)$ */
+# define math_shift_token 0x600000 /* $2^{21}\cdot|math_shift|$ */
+# define tab_token 0x800000 /* $2^{21}\cdot|tab_mark|$ */
+# define out_param_token 0xA00000 /* $2^{21}\cdot|out_param|$ */
+# define space_token 0x1400020 /* $2^{21}\cdot|spacer|+|" "|$ */
+# define letter_token 0x1600000 /* $2^{21}\cdot|letter|$ */
+# define other_token 0x1800000 /* $2^{21}\cdot|other_char|$ */
+# define match_token 0x1A00000 /* $2^{21}\cdot|match|$ */
+# define end_match_token 0x1C00000 /* $2^{21}\cdot|end_match|$ */
+# define protected_token 0x1C00001 /* $2^{21}\cdot|end_match|+1$ */
+
+# include "tex/stringpool.h"
+
+typedef struct smemory_word_ {
+ halfword hhrh;
+ halfword hhlh;
+} smemory_word;
+
+# define fix_mem_init 10000
+
+extern smemory_word *fixmem;
+extern unsigned fix_mem_min;
+extern unsigned fix_mem_max;
+
+extern halfword garbage; /* head of a junk list, write only */
+extern halfword temp_token_head; /* head of a temporary list of some kind */
+extern halfword hold_token_head; /* head of a temporary list of another kind */
+extern halfword omit_template; /* a constant token list */
+extern halfword null_list; /* permanently empty list */
+extern halfword backup_head; /* head of token list built by |scan_keyword| */
+
+extern void initialize_tokens(void);
+
+extern int dyn_used;
+
+# define token_info(a) fixmem[(a)].hhlh
+# define token_link(a) fixmem[(a)].hhrh
+# define set_token_info(a,b) fixmem[(a)].hhlh=(b)
+# define set_token_link(a,b) fixmem[(a)].hhrh=(b)
+
+extern halfword avail; /* head of the list of available one-word nodes */
+extern unsigned fix_mem_end; /* the last one-word node used in |mem| */
+
+extern halfword get_avail(void);
+
+/* A one-word node is recycled by calling |free_avail|.
+This routine is part of \TeX's ``inner loop,'' so we want it to be fast.
+*/
+
+# define free_avail(A) do { /* single-word node liberation */ \
+ token_link(A)=avail; avail=(A); decr(dyn_used); \
+ } while (0)
+
+/*
+There's also a |fast_get_avail| routine, which saves the procedure-call
+overhead at the expense of extra programming. This routine is used in
+the places that would otherwise account for the most calls of |get_avail|.
+*/
+
+# define fast_get_avail(A) do { \
+ (A)=avail; /* avoid |get_avail| if possible, to save time */ \
+ if ((A)==null) { (A)=get_avail(); } \
+ else { avail=token_link((A)); token_link((A))=null; incr(dyn_used); } \
+ } while (0)
+
+extern void print_meaning(void);
+
+extern void flush_list(halfword p);
+extern void show_token_list(int p, int q, int l);
+extern void token_show(halfword p);
+
+# define token_ref_count(a) token_info((a)) /* reference count preceding a token list */
+# define set_token_ref_count(a,b) token_info((a))=b
+# define add_token_ref(a) token_ref_count(a)++ /* new reference to a token list */
+
+# define store_new_token(a) do { \
+ q=get_avail(); token_link(p)=q; token_info(q)=(a); p=q; \
+ } while (0)
+
+# define fast_store_new_token(a) do { \
+ fast_get_avail(q); token_link(p)=q; token_info(q)=(a); p=q; \
+ } while (0)
+
+extern void delete_token_ref(halfword p);
+
+extern void make_token_table(lua_State * L, int cmd, int chr, int cs);
+
+# define NO_CAT_TABLE -2
+# define DEFAULT_CAT_TABLE -1
+
+extern void get_next(void);
+extern void check_outer_validity(void);
+extern boolean scan_keyword(const char *);
+extern halfword active_to_cs(int, int);
+extern void get_token_lua(void);
+halfword string_to_toks(char *);
+extern int get_char_cat_code(int);
+
+/*
+|no_expand_flag| is a special character value that is inserted by
+|get_next| if it wants to suppress expansion.
+*/
+
+# define no_expand_flag special_char
+
+extern boolean end_line_char_inactive(void);
+
+extern halfword par_loc;
+extern halfword par_token;
+extern boolean force_eof;
+extern int luacstrings;
+
+extern void firm_up_the_line(void);
+extern void get_token(void);
+
+extern halfword str_toks(lstring b);
+extern void ins_the_toks(void);
+
+extern int scan_lua_state(void);
+extern void conv_toks(void);
+
+extern boolean in_lua_escape;
+extern boolean is_convert(halfword c);
+extern str_number the_convert_string(halfword c, int i);
+
+# define closed 2 /* not open, or at end of file */
+# define just_open 1 /* newly opened, first line not yet read */
+
+extern FILE *read_file[16]; /* used for \.{\\read} */
+extern int read_open[17]; /* state of |read_file[n]| */
+
+extern void initialize_read(void);
+
+extern void read_toks(int n, halfword r, halfword j);
+
+extern str_number tokens_to_string(halfword p); /* return a string from tokens list */
+
+extern char *tokenlist_to_cstring(int p, int inhibit_par, int *siz);
+extern lstring *tokenlist_to_lstring(int pp, int inhibit_par);
+extern void free_lstring(lstring * ls);
+
+# define token_cmd(A) ((A) >> STRING_OFFSET_BITS)
+# define token_chr(A) ((A) & (STRING_OFFSET - 1))
+# define token_val(A,B) (((A)<<STRING_OFFSET_BITS)+(B))
+
+#endif