summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/tex/texnodes.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/tex/texnodes.h')
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/texnodes.h83
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