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, 58 insertions, 25 deletions
diff --git a/Build/source/texk/web2c/luatexdir/tex/texnodes.h b/Build/source/texk/web2c/luatexdir/tex/texnodes.h
index 1f1a4e82964..0da84945184 100644
--- a/Build/source/texk/web2c/luatexdir/tex/texnodes.h
+++ b/Build/source/texk/web2c/luatexdir/tex/texnodes.h
@@ -68,8 +68,6 @@ 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
@@ -106,15 +104,6 @@ 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
@@ -138,11 +127,53 @@ 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
@@ -282,11 +313,17 @@ 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 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 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 ins_node_size 6
# define float_cost(a) varmem[(a)+2].cint
@@ -620,15 +657,13 @@ typedef enum {
# define special_node_size 3
-# define dir_node_size 6
+# define dir_node_size 5
# define dir_dir(a) vinfo((a)+2)
# define dir_level(a) vlink((a)+2)
-# 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 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 write_node_size 3
# define close_node_size 3
@@ -910,10 +945,8 @@ 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