summaryrefslogtreecommitdiff
path: root/source/luametatex/source/tex/texnodes.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/luametatex/source/tex/texnodes.h')
-rw-r--r--source/luametatex/source/tex/texnodes.h171
1 files changed, 95 insertions, 76 deletions
diff --git a/source/luametatex/source/tex/texnodes.h b/source/luametatex/source/tex/texnodes.h
index 8a462ebac..c6cc61ff2 100644
--- a/source/luametatex/source/tex/texnodes.h
+++ b/source/luametatex/source/tex/texnodes.h
@@ -128,7 +128,7 @@ typedef enum node_types {
nesting_node,
span_node,
align_stack_node,
- noad_state_node,
+ // noad_state_node,
if_node,
/*tex These two are active nodes. */
unhyphenated_node,
@@ -1601,15 +1601,15 @@ typedef enum simple_choice_subtypes {
*/
-# define noad_state_node_size 6
-# define noad_state_topright(a) vlink(a,2)
-# define noad_state_bottomright(a) vinfo(a,2)
-# define noad_state_topleft(a) vlink(a,3)
-# define noad_state_bottomleft(a) vinfo(a,3)
-# define noad_state_height(a) vlink(a,4)
-# define noad_state_depth(a) vinfo(a,4)
-# define noad_state_toptotal(a) vlink(a,5)
-# define noad_state_bottomtotal(a) vinfo(a,5)
+//define noad_state_node_size 6
+//define noad_state_topright(a) vlink(a,2)
+//define noad_state_bottomright(a) vinfo(a,2)
+//define noad_state_topleft(a) vlink(a,3)
+//define noad_state_bottomleft(a) vinfo(a,3)
+//define noad_state_height(a) vlink(a,4)
+//define noad_state_depth(a) vinfo(a,4)
+//define noad_state_toptotal(a) vlink(a,5)
+//define noad_state_bottomtotal(a) vinfo(a,5)
# define noad_size 14
# define noad_new_hlist(a) vlink(a,2) /*tex the translation of an mlist; a bit confusing name */
@@ -1622,12 +1622,17 @@ typedef enum simple_choice_subtypes {
# define noad_width(a) vinfo(a,5)
# define noad_height(a) vlink(a,6)
# define noad_depth(a) vinfo(a,6)
-# define noad_options(a) vlink(a,7)
-# define noad_style(a) vinfo00(a,7)
-# define noad_family(a) vinfo01(a,7)
-# define noad_script_state(a) vinfo02(a,7)
-# define noad_analyzed(a) vinfo03(a,7) /*tex used for experiments */
-# define noad_state(a) vlink(a,8) /*tex this might replace */
+//define noad_options(a) vlink(a,7)
+//define noad_style(a) vinfo00(a,7)
+//define noad_family(a) vinfo01(a,7)
+//define noad_script_state(a) vinfo02(a,7)
+//define noad_analyzed(a) vinfo03(a,7) /*tex used for experiments */
+//define noad_state(a) vlink(a,8) /*tex this might replace */
+# define noad_options(a) lvalue(a,7) /*tex 64 bit fullword */
+# define noad_style(a) vlink00(a,8)
+# define noad_family(a) vlink01(a,8)
+# define noad_script_state(a) vlink02(a,8)
+# define noad_analyzed(a) vlink03(a,8) /*tex used for experiments */
# define noad_class_main(a) vinfo00(a,8)
# define noad_class_left(a) vinfo01(a,8)
# define noad_class_right(a) vinfo02(a,8)
@@ -1717,41 +1722,52 @@ typedef struct noad_classes {
If we run out of options we can combine some, like auto.
*/
+// # if (defined(_MSC_VER) && ! defined(__MINGW32__))
+// typedef enum noad_options : unsigned __int64 {
+// # else
typedef enum noad_options {
- noad_option_axis = 0x00000001,
- noad_option_no_axis = 0x00000002,
- noad_option_exact = 0x00000004,
- noad_option_left = 0x00000008, /* align option for overflown under/over */ /* used ? */
- noad_option_middle = 0x00000010, /* idem */
- noad_option_right = 0x00000020, /* idem */
- noad_option_adapt_to_left_size = 0x00000040, /* old trickery, might go away but kind of fun */
- noad_option_adapt_to_right_size = 0x00000080, /* idem */
- noad_option_no_sub_script = 0x00000100,
- noad_option_no_super_script = 0x00000200,
- noad_option_no_sub_pre_script = 0x00000400,
- noad_option_no_super_pre_script = 0x00000800,
- noad_option_no_script = 0x00001000,
- noad_option_no_overflow = 0x00002000, /* keep (middle) extensible widthin target size */
- noad_option_void = 0x00004000, /* wipe and set width to zero */
- noad_option_phantom = 0x00008000, /* wipe */
- noad_option_openup_height = 0x00010000,
- noad_option_openup_depth = 0x00020000,
- noad_option_limits = 0x00040000, /* traditional modifier */
- noad_option_no_limits = 0x00080000, /* idem */
- noad_option_prefer_font_thickness = 0x00100000,
- noad_option_no_ruling = 0x00200000,
- noad_option_shifted_sub_script = 0x00400000,
- noad_option_shifted_super_script = 0x00800000,
- noad_option_shifted_sub_pre_script = 0x01000000,
- noad_option_shifted_super_pre_script = 0x02000000,
- noad_option_unpack_list = 0x04000000,
- noad_option_no_check = 0x08000000, /* don't check for missing end fence */
- noad_option_auto = 0x10000000,
- noad_option_unroll_list = 0x20000000,
- noad_option_followed_by_space = 0x40000000,
- noad_option_proportional = 0x80000000,
+// # endif
+ noad_option_axis = 0x000000001,
+ noad_option_no_axis = 0x000000002,
+ noad_option_exact = 0x000000004,
+ noad_option_left = 0x000000008, /* align option for overflown under/over */ /* used ? */
+ noad_option_middle = 0x000000010, /* idem */
+ noad_option_right = 0x000000020, /* idem */
+ noad_option_adapt_to_left_size = 0x000000040, /* old trickery, might go away but kind of fun */
+ noad_option_adapt_to_right_size = 0x000000080, /* idem */
+ noad_option_no_sub_script = 0x000000100,
+ noad_option_no_super_script = 0x000000200,
+ noad_option_no_sub_pre_script = 0x000000400,
+ noad_option_no_super_pre_script = 0x000000800,
+ noad_option_no_script = 0x000001000,
+ noad_option_no_overflow = 0x000002000, /* keep (middle) extensible widthin target size */
+ noad_option_void = 0x000004000, /* wipe and set width to zero */
+ noad_option_phantom = 0x000008000, /* wipe */
+ noad_option_openup_height = 0x000010000,
+ noad_option_openup_depth = 0x000020000,
+ noad_option_limits = 0x000040000, /* traditional modifier */
+ noad_option_no_limits = 0x000080000, /* idem */
+ noad_option_prefer_font_thickness = 0x000100000,
+ noad_option_no_ruling = 0x000200000,
+ noad_option_shifted_sub_script = 0x000400000,
+ noad_option_shifted_super_script = 0x000800000,
+ noad_option_shifted_sub_pre_script = 0x001000000,
+ noad_option_shifted_super_pre_script = 0x002000000,
+ noad_option_unpack_list = 0x004000000,
+ noad_option_no_check = 0x008000000, /* don't check for missing end fence */
+ noad_option_auto = 0x010000000,
+ noad_option_unroll_list = 0x020000000,
+ noad_option_followed_by_space = 0x040000000,
+ noad_option_proportional = 0x080000000,
+ /*tex Watch out: the following options exceed halfword: |noad_options| are |long long|. */
} noad_options;
+/*tex The Microsoft compiler truncates to int, so: */
+
+# define noad_option_source_on_nucleus 0x100000000
+# define noad_option_fixed_super_or_sub_script 0x200000000
+# define noad_option_fixed_super_and_sub_script 0x400000000
+
# define has_option(a,b) (((a) & (b)) == (b))
# define unset_option(a,b) ((a) & ~(b))
@@ -1777,34 +1793,37 @@ inline static int has_noad_no_script_option(halfword n, halfword option)
# define has_noad_option_nosubprescript(a) has_noad_no_script_option(a, noad_option_no_sub_pre_script)
# define has_noad_option_nosupprescript(a) has_noad_no_script_option(a, noad_option_no_super_pre_script)
-# define has_noad_option_shiftedsubscript(a) (has_option(noad_options(a), noad_option_shifted_sub_script))
-# define has_noad_option_shiftedsupscript(a) (has_option(noad_options(a), noad_option_shifted_super_script))
-# define has_noad_option_shiftedsubprescript(a) (has_option(noad_options(a), noad_option_shifted_sub_pre_script))
-# define has_noad_option_shiftedsupprescript(a) (has_option(noad_options(a), noad_option_shifted_super_pre_script))
-# define has_noad_option_axis(a) (has_option(noad_options(a), noad_option_axis))
-# define has_noad_option_exact(a) (has_option(noad_options(a), noad_option_exact))
-# define has_noad_option_noaxis(a) (has_option(noad_options(a), noad_option_no_axis))
-# define has_noad_option_openupheight(a) (has_option(noad_options(a), noad_option_openup_height))
-# define has_noad_option_openupdepth(a) (has_option(noad_options(a), noad_option_openup_depth))
-# define has_noad_option_adapttoleft(a) (has_option(noad_options(a), noad_option_adapt_to_left_size))
-# define has_noad_option_adapttoright(a) (has_option(noad_options(a), noad_option_adapt_to_right_size))
-# define has_noad_option_limits(a) (has_option(noad_options(a), noad_option_limits))
-# define has_noad_option_nolimits(a) (has_option(noad_options(a), noad_option_no_limits))
-# define has_noad_option_nooverflow(a) (has_option(noad_options(a), noad_option_no_overflow))
-# define has_noad_option_preferfontthickness(a) (has_option(noad_options(a), noad_option_prefer_font_thickness))
-# define has_noad_option_noruling(a) (has_option(noad_options(a), noad_option_no_ruling))
-# define has_noad_option_unpacklist(a) (has_option(noad_options(a), noad_option_unpack_list))
-# define has_noad_option_nocheck(a) (has_option(noad_options(a), noad_option_no_check))
-# define has_noad_option_exact(a) (has_option(noad_options(a), noad_option_exact))
-# define has_noad_option_left(a) (has_option(noad_options(a), noad_option_left))
-# define has_noad_option_middle(a) (has_option(noad_options(a), noad_option_middle))
-# define has_noad_option_right(a) (has_option(noad_options(a), noad_option_right))
-# define has_noad_option_auto(a) (has_option(noad_options(a), noad_option_auto))
-# define has_noad_option_phantom(a) (has_option(noad_options(a), noad_option_phantom))
-# define has_noad_option_void(a) (has_option(noad_options(a), noad_option_void))
-# define has_noad_option_unrolllist(a) (has_option(noad_options(a), noad_option_unroll_list))
-# define has_noad_option_followedbyspace(a) (has_option(noad_options(a), noad_option_followed_by_space))
-# define has_noad_option_proportional(a) (has_option(noad_options(a), noad_option_proportional))
+# define has_noad_option_shiftedsubscript(a) (has_option(noad_options(a), noad_option_shifted_sub_script))
+# define has_noad_option_shiftedsupscript(a) (has_option(noad_options(a), noad_option_shifted_super_script))
+# define has_noad_option_shiftedsubprescript(a) (has_option(noad_options(a), noad_option_shifted_sub_pre_script))
+# define has_noad_option_shiftedsupprescript(a) (has_option(noad_options(a), noad_option_shifted_super_pre_script))
+# define has_noad_option_axis(a) (has_option(noad_options(a), noad_option_axis))
+# define has_noad_option_exact(a) (has_option(noad_options(a), noad_option_exact))
+# define has_noad_option_noaxis(a) (has_option(noad_options(a), noad_option_no_axis))
+# define has_noad_option_openupheight(a) (has_option(noad_options(a), noad_option_openup_height))
+# define has_noad_option_openupdepth(a) (has_option(noad_options(a), noad_option_openup_depth))
+# define has_noad_option_adapttoleft(a) (has_option(noad_options(a), noad_option_adapt_to_left_size))
+# define has_noad_option_adapttoright(a) (has_option(noad_options(a), noad_option_adapt_to_right_size))
+# define has_noad_option_limits(a) (has_option(noad_options(a), noad_option_limits))
+# define has_noad_option_nolimits(a) (has_option(noad_options(a), noad_option_no_limits))
+# define has_noad_option_nooverflow(a) (has_option(noad_options(a), noad_option_no_overflow))
+# define has_noad_option_preferfontthickness(a) (has_option(noad_options(a), noad_option_prefer_font_thickness))
+# define has_noad_option_noruling(a) (has_option(noad_options(a), noad_option_no_ruling))
+# define has_noad_option_unpacklist(a) (has_option(noad_options(a), noad_option_unpack_list))
+# define has_noad_option_nocheck(a) (has_option(noad_options(a), noad_option_no_check))
+# define has_noad_option_exact(a) (has_option(noad_options(a), noad_option_exact))
+# define has_noad_option_left(a) (has_option(noad_options(a), noad_option_left))
+# define has_noad_option_middle(a) (has_option(noad_options(a), noad_option_middle))
+# define has_noad_option_right(a) (has_option(noad_options(a), noad_option_right))
+# define has_noad_option_auto(a) (has_option(noad_options(a), noad_option_auto))
+# define has_noad_option_phantom(a) (has_option(noad_options(a), noad_option_phantom))
+# define has_noad_option_void(a) (has_option(noad_options(a), noad_option_void))
+# define has_noad_option_unrolllist(a) (has_option(noad_options(a), noad_option_unroll_list))
+# define has_noad_option_followedbyspace(a) (has_option(noad_options(a), noad_option_followed_by_space))
+# define has_noad_option_proportional(a) (has_option(noad_options(a), noad_option_proportional))
+# define has_noad_option_source_on_nucleus(a) (has_option(noad_options(a), noad_option_source_on_nucleus))
+# define has_noad_option_fixed_super_or_sub_script(a) (has_option(noad_options(a), noad_option_fixed_super_or_sub_script))
+# define has_noad_option_fixed_super_and_sub_script(a) (has_option(noad_options(a), noad_option_fixed_super_and_sub_script))
/*tex
In the meantime the codes and subtypes are in sync. The variable component does not really