summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/tex/extensions.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/tex/extensions.h')
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/extensions.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/tex/extensions.h b/Build/source/texk/web2c/luatexdir/tex/extensions.h
new file mode 100644
index 00000000000..5e22ddf26c3
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/tex/extensions.h
@@ -0,0 +1,147 @@
+/* extensions.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/>. */
+
+
+#ifndef EXTENSIONS_H
+# define EXTENSIONS_H
+
+extern alpha_file write_file[last_file_selector+1];
+extern halfword write_file_mode[last_file_selector+1];
+extern halfword write_file_translation[last_file_selector+1];
+extern boolean write_open[last_file_selector+1];
+
+# define valid_write_file(n) ((n>=0) && (n<=last_file_selector))
+# define file_can_be_written(n) (valid_write_file(n) && write_open[n])
+
+extern void expand_macros_in_tokenlist(halfword p);
+extern void write_out(halfword p);
+extern void finalize_write_files(void);
+extern void initialize_write_files(void);
+extern void close_write_file(int id);
+extern boolean open_write_file(int id, char *fn);
+
+extern scaled neg_wd;
+extern scaled pos_wd;
+extern scaled neg_ht;
+
+extern halfword write_loc;
+
+extern void do_extension(int immediate);
+
+/*
+User defined whatsits can be inserted into node lists to pass data
+along from one lua call to another without interference from the
+typesetting engine itself. Each has an id, a type, and a value. The
+type of the value depends on the |user_node_type| field.
+*/
+
+extern void new_whatsit(int s);
+
+extern halfword concat_tokens(halfword q, halfword r);
+
+/*
+The \.{\\pagediscards} and \.{\\splitdiscards} commands share the
+command code |un_vbox| with \.{\\unvbox} and \.{\\unvcopy}, they are
+distinguished by their |chr_code| values |last_box_code| and
+|vsplit_code|. These |chr_code| values are larger than |box_code| and
+|copy_code|.
+*/
+
+extern boolean *eof_seen; /* has eof been seen? */
+extern void print_group(boolean e);
+extern void group_trace(boolean e);
+extern save_pointer *grp_stack; /* initial |cur_boundary| */
+extern halfword *if_stack; /* initial |cond_ptr| */
+extern void group_warning(void);
+extern void if_warning(void);
+extern void file_warning(void);
+
+extern halfword last_line_fill; /* the |par_fill_skip| glue node of the new paragraph */
+
+# define get_tex_dimen_register(j) dimen(j)
+# define get_tex_skip_register(j) skip(j)
+# define get_tex_mu_skip_register(j) mu_skip(j)
+# define get_tex_count_register(j) count(j)
+# define get_tex_attribute_register(j) attribute(j)
+# define get_tex_box_register(j) box(j)
+
+extern int get_tex_extension_count_register(int i);
+extern void set_tex_extension_count_register(int i, int d);
+extern int get_tex_extension_dimen_register(int i);
+extern void set_tex_extension_dimen_register(int i, int d);
+extern int get_tex_extension_toks_register (int i);
+
+extern int set_tex_dimen_register(int j, scaled v);
+extern int set_tex_skip_register(int j, halfword v);
+extern int set_tex_mu_skip_register(int j, halfword v);
+extern int set_tex_count_register(int j, scaled v);
+extern int set_tex_box_register(int j, scaled v);
+extern int set_tex_attribute_register(int j, scaled v);
+extern int get_tex_toks_register(int l);
+extern int set_tex_toks_register(int j, lstring s);
+extern int scan_tex_toks_register(int j, int c, lstring s);
+extern scaled get_tex_box_width(int j);
+extern int set_tex_box_width(int j, scaled v);
+extern scaled get_tex_box_height(int j);
+extern int set_tex_box_height(int j, scaled v);
+extern scaled get_tex_box_depth(int j);
+extern int set_tex_box_depth(int j, scaled v);
+
+/* Synctex variables */
+
+extern int synctexoption;
+extern int synctexoffset;
+
+/* Here are extra variables for Web2c. */
+
+extern pool_pointer edit_name_start;
+extern int edit_name_length, edit_line;
+extern boolean stop_at_space;
+extern int shellenabledp;
+extern int restrictedshell;
+extern char *output_comment;
+extern boolean debug_format_file;
+
+extern int last_saved_box_index ;
+extern int last_saved_image_index ;
+extern int last_saved_image_pages ;
+extern scaledpos last_position ;
+
+typedef enum {
+ /* traditional extensions */
+ open_code = 0,
+ write_code,
+ close_code,
+ reserved_extension_code, // 3: we moved special below immediate //
+ reserved_immediate_code, // 4: same number as main codes, expected value //
+ /* backend specific implementations */
+ special_code,
+ save_box_resource_code,
+ use_box_resource_code,
+ save_image_resource_code,
+ use_image_resource_code,
+ end_local_code,
+ /* backend */
+ dvi_extension_code,
+ pdf_extension_code,
+} extension_codes ;
+
+extern void wrapup_leader(halfword p);
+
+#endif