diff options
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/tex/texnodes.h')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/tex/texnodes.h | 83 |
1 files changed, 25 insertions, 58 deletions
diff --git a/Build/source/texk/web2c/luatexdir/tex/texnodes.h b/Build/source/texk/web2c/luatexdir/tex/texnodes.h index 0da84945184..1f1a4e82964 100644 --- a/Build/source/texk/web2c/luatexdir/tex/texnodes.h +++ b/Build/source/texk/web2c/luatexdir/tex/texnodes.h @@ -68,6 +68,8 @@ extern void undump_node_mem(void); # define rlink(a) vlink((a)+1) /* aka alink() */ # define tlink(a) vinfo((a)+1) /* overlaps with node_attr() */ +# define add_glue_ref(a) glue_ref_count(a)++ /* new reference to a glue spec */ + /* really special head node pointers that only need links */ # define temp_node_size 2 @@ -104,6 +106,15 @@ extern void update_attribute_cache(void); extern halfword copy_attribute_list(halfword n); extern halfword do_set_attribute(halfword p, int i, int val); +/* a glue spec */ +# define glue_spec_size 4 +# define stretch(a) vlink((a)+1) +/* width == a+2 */ +# define shrink(a) vinfo((a)+1) +# define stretch_order(a) type((a)+3) +# define shrink_order(a) subtype((a)+3) +# define glue_ref_count(a) vlink((a)+3) + # define width_offset 2 # define depth_offset 3 # define height_offset 4 @@ -127,53 +138,11 @@ typedef enum { # define penalty_node_size 3 # define penalty(a) vlink((a)+2) -/* # define glue_node_size 4 # define glue_ptr(a) vinfo((a)+2) # define leader_ptr(a) vlink((a)+2) # define synctex_tag_glue(a) vinfo((a)+3) # define synctex_line_glue(a) vlink((a)+3) -*/ - -# define glue_node_size 7 -# define glue_spec_size 5 -/* define width(a) vinfo((a)+2) */ -/* define leader_ptr(a) vlink((a)+2) */ -# define shrink(a) vinfo((a)+3) -# define stretch(a) vlink((a)+3) -# define stretch_order(a) vinfo((a)+4) -# define shrink_order(a) vlink((a)+4) -# define leader_ptr(a) vlink((a)+5) /* should be in vlink((a)+2) but fails */ -# define synctex_tag_glue(a) vinfo((a)+6) -# define synctex_line_glue(a) vlink((a)+6) - -#define glue_is_zero(p) \ - ((p == null) || (width(p) == 0 && stretch(p) == 0 && shrink(p) == 0)) - -#define reset_glue_to_zero(p) \ - if (p != null) { \ - width(p) = 0; \ - stretch(p) = 0; \ - shrink(p) = 0; \ - stretch_order(p) = 0; \ - shrink_order(p) = 0; \ - } - -#define copy_glue_values(p,q) \ - if (q == null) { \ - width(p) = 0; \ - stretch(p) = 0; \ - shrink(p) = 0; \ - stretch_order(p) = 0; \ - shrink_order(p) = 0; \ - } else { \ - width(p) = width(q); \ - stretch(p) = stretch(q); \ - shrink(p) = shrink(q); \ - stretch_order(p) = stretch_order(q); \ - shrink_order(p) = shrink_order(q); \ - } - /* disc nodes could eventually be smaller, because the indirect @@ -313,17 +282,11 @@ typedef enum { # define before 0 /* |subtype| for math node that introduces a formula */ # define after 1 /* |subtype| for math node that winds up a formula */ -# define math_node_size 7 -/* define width(a) vinfo((a)+2) */ -/* overlaps width */ -/* define shrink(a) vinfo((a)+3) */ -/* define stretch(a) vlink((a)+3) */ -/* define stretch_order(a) vinfo((a)+4) */ -/* define shrink_order(a) vlink((a)+4) */ -/* leader_ptr slot */ -# define surround(a) vinfo((a)+5) -# define synctex_tag_math(a) vinfo((a)+6) -# define synctex_line_math(a) vlink((a)+6) +# define math_node_size 4 +# define surround(a) vlink((a)+2) +/* also: glue_ptr(a) vinfo((a)+2) */ +# define synctex_tag_math(a) vinfo((a)+3) +# define synctex_line_math(a) vlink((a)+3) # define ins_node_size 6 # define float_cost(a) varmem[(a)+2].cint @@ -657,13 +620,15 @@ typedef enum { # define special_node_size 3 -# define dir_node_size 5 +# define dir_node_size 6 # define dir_dir(a) vinfo((a)+2) # define dir_level(a) vlink((a)+2) -# define dir_refpos_h(a) vinfo((a)+3) -# define dir_refpos_v(a) vlink((a)+3) -# define dir_cur_h(a) vinfo((a)+4) -# define dir_cur_v(a) vlink((a)+4) +# define dir_dvi_ptr(a) vinfo((a)+3) +# define dir_dvi_h(a) vlink((a)+3) /* obsolete */ +# define dir_refpos_h(a) vinfo((a)+4) +# define dir_refpos_v(a) vlink((a)+4) +# define dir_cur_h(a) vinfo((a)+5) +# define dir_cur_v(a) vlink((a)+5) # define write_node_size 3 # define close_node_size 3 @@ -945,8 +910,10 @@ typedef enum { # define is_running(A) ((A)==null_flag) /* tests for a running dimension */ extern halfword tail_of_list(halfword p); +extern void delete_glue_ref(halfword p); extern int var_used; +extern halfword temp_ptr; # define cache_disabled max_halfword |