diff options
author | Luigi Scarso <luigi.scarso@gmail.com> | 2018-09-05 21:30:41 +0000 |
---|---|---|
committer | Luigi Scarso <luigi.scarso@gmail.com> | 2018-09-05 21:30:41 +0000 |
commit | 1b8b254a766350291f8e7e19feaf6326ebabe633 (patch) | |
tree | 8a20823763635906b94a68b72541a10dc6f91377 /Build/source/texk/web2c/luatexdir/tex | |
parent | ef7aedbc1cabb3eebb59082e349f9792c9c4d3c1 (diff) |
sync with luatex revision 6924.
git-svn-id: svn://tug.org/texlive/trunk@48591 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/tex')
17 files changed, 285 insertions, 155 deletions
diff --git a/Build/source/texk/web2c/luatexdir/tex/commands.h b/Build/source/texk/web2c/luatexdir/tex/commands.h index 8eabaa4e7cc..c3a3ca30452 100644 --- a/Build/source/texk/web2c/luatexdir/tex/commands.h +++ b/Build/source/texk/web2c/luatexdir/tex/commands.h @@ -89,6 +89,7 @@ typedef enum { char_num_cmd, /* character specified numerically ( \.{\\char} ) */ math_char_num_cmd, /* explicit math code ( \.{\\mathchar} ) */ mark_cmd, /* mark definition ( \.{\\mark} ) */ + node_cmd, xray_cmd, /* peek inside of \TeX\ ( \.{\\show}, \.{\\showbox}, etc.~) */ make_box_cmd, /* make a box ( \.{\\box}, \.{\\copy}, \.{\\hbox}, etc.~) */ hmove_cmd, /* horizontal motion ( \.{\\moveleft}, \.{\\moveright} ) */ @@ -134,6 +135,9 @@ typedef enum { normal_cmd, /* general extensions to \TeX\ that don't fit into a category */ extension_cmd, /* extensions to \TeX\ ( \.{\\write}, \.{\\special}, etc.~) */ option_cmd, + lua_function_call_cmd, + lua_bytecode_call_cmd, + lua_call_cmd, in_stream_cmd, /* files for reading ( \.{\\openin}, \.{\\closein} ) */ begin_group_cmd, /* begin local grouping ( \.{\\begingroup} ) */ end_group_cmd, /* end local grouping ( \.{\\endgroup} ) */ @@ -179,7 +183,9 @@ typedef enum { set_font_cmd, /* set current font ( font identifiers ) */ def_font_cmd, /* define a font file ( \.{\\font} ) */ register_cmd, /* internal register ( \.{\\count}, \.{\\dimen}, etc.~) */ + assign_box_direction_cmd, /* (\.{\\boxdirection}) */ assign_box_dir_cmd, /* (\.{\\boxdir}) */ + assign_direction_cmd, /* (\.{\\pagedirection}, \.{\\textdirection}) */ assign_dir_cmd, /* (\.{\\pagedir}, \.{\\textdir}) */ # define max_internal_cmd assign_dir_cmd /* the largest code that can follow \.{\\the} */ advance_cmd, /* advance a register or parameter ( \.{\\advance} ) */ @@ -188,6 +194,7 @@ typedef enum { prefix_cmd, /* qualify a definition ( \.{\\global}, \.{\\long}, \.{\\outer} ) */ let_cmd, /* assign a command code ( \.{\\let}, \.{\\futurelet} ) */ shorthand_def_cmd, /* code definition ( \.{\\chardef}, \.{\\countdef}, etc.~) */ + def_lua_call_cmd, read_to_cs_cmd, /* read into a control sequence ( \.{\\read} ) */ def_cmd, /* macro definition ( \.{\\def}, \.{\\gdef}, \.{\\xdef}, \.{\\edef} ) */ set_box_cmd, /* set a box ( \.{\\setbox} ) */ @@ -201,6 +208,8 @@ typedef enum { expand_after_cmd, /* special expansion ( \.{\\expandafter} ) */ no_expand_cmd, /* special nonexpansion ( \.{\\noexpand} ) */ input_cmd, /* input a source file ( \.{\\input}, \.{\\endinput} or \.{\\scantokens} or \.{\\scantextokens} ) */ + lua_expandable_call_cmd, + lua_local_call_cmd, if_test_cmd, /* conditional text ( \.{\\if}, \.{\\ifcase}, etc.~) */ fi_or_else_cmd, /* delimiters for conditionals ( \.{\\else}, etc.~) */ cs_name_cmd, /* make a control sequence from tokens ( \.{\\csname} ) */ @@ -236,9 +245,12 @@ typedef enum { typedef enum { number_code = 0, /* command code for \.{\\number} */ - lua_function_code, /* command code for \.{\\luafunction} */ lua_code, /* command code for \.{\\directlua} */ + lua_function_code, /* command code for \.{\\luafunction} */ + lua_bytecode_code, /* command code for \.{\\luabytecode} */ expanded_code, /* command code for \.{\\expanded} */ + immediate_assignment_code, /* command code for \.{\\immediateassignment} */ + immediate_assigned_code, /* command code for \.{\\assigned} */ math_style_code, /* command code for \.{\\mathstyle} */ string_code, /* command code for \.{\\string} */ cs_string_code, /* command code for \.{\\csstring} */ @@ -324,6 +336,7 @@ typedef enum { set_random_seed_code, save_pos_code, late_lua_code, + late_lua_call_code, expand_font_code, } normal_codes; diff --git a/Build/source/texk/web2c/luatexdir/tex/conditional.h b/Build/source/texk/web2c/luatexdir/tex/conditional.h index b6abe7578d3..483496eece2 100644 --- a/Build/source/texk/web2c/luatexdir/tex/conditional.h +++ b/Build/source/texk/web2c/luatexdir/tex/conditional.h @@ -24,30 +24,31 @@ # define unless_code 32 /* amount added for `\.{\\unless}' prefix */ typedef enum { - if_char_code = 0, /* \.{\\if} */ - if_cat_code = 1, /* \.{\\ifcat} */ - if_int_code = 2, /* \.{\\ifnum} */ - if_dim_code = 3, /* \.{\\ifdim} */ - if_odd_code = 4, /* \.{\\ifodd} */ - if_vmode_code = 5, /* \.{\\ifvmode} */ - if_hmode_code = 6, /* \.{\\ifhmode} */ - if_mmode_code = 7, /* \.{\\ifmmode} */ - if_inner_code = 8, /* \.{\\ifinner} */ - if_void_code = 9, /* \.{\\ifvoid} */ - if_hbox_code = 10, /* \.{\\ifhbox} */ - if_vbox_code = 11, /* \.{\\ifvbox} */ - ifx_code = 12, /* \.{\\ifx} */ - if_eof_code = 13, /* \.{\\ifeof} */ - if_true_code = 14, /* \.{\\iftrue} */ - if_false_code = 15, /* \.{\\iffalse} */ - if_case_code = 16, /* \.{\\ifcase} */ - if_def_code = 17, /* \.{\\ifdefined} */ - if_cs_code = 18, /* \.{\\ifcsname} */ - if_font_char_code = 19, /* \.{\\iffontchar} */ - if_in_csname_code = 20, /* \.{\\ifincsname} */ - if_primitive_code = 21, /* \.{\\ifprimitive} */ - if_abs_num_code = 22, /* \.{\\ifabsnum} */ - if_abs_dim_code = 23, /* \.{\\ifabsdim} */ + if_char_code = 0, /* \.{\\if} */ + if_cat_code = 1, /* \.{\\ifcat} */ + if_int_code = 2, /* \.{\\ifnum} */ + if_dim_code = 3, /* \.{\\ifdim} */ + if_odd_code = 4, /* \.{\\ifodd} */ + if_vmode_code = 5, /* \.{\\ifvmode} */ + if_hmode_code = 6, /* \.{\\ifhmode} */ + if_mmode_code = 7, /* \.{\\ifmmode} */ + if_inner_code = 8, /* \.{\\ifinner} */ + if_void_code = 9, /* \.{\\ifvoid} */ + if_hbox_code = 10, /* \.{\\ifhbox} */ + if_vbox_code = 11, /* \.{\\ifvbox} */ + if_x_code = 12, /* \.{\\ifx} */ + if_eof_code = 13, /* \.{\\ifeof} */ + if_true_code = 14, /* \.{\\iftrue} */ + if_false_code = 15, /* \.{\\iffalse} */ + if_case_code = 16, /* \.{\\ifcase} */ + if_def_code = 17, /* \.{\\ifdefined} */ + if_cs_code = 18, /* \.{\\ifcsname} */ + if_font_char_code = 19, /* \.{\\iffontchar} */ + if_in_csname_code = 20, /* \.{\\ifincsname} */ + if_primitive_code = 21, /* \.{\\ifprimitive} */ + if_abs_num_code = 22, /* \.{\\ifabsnum} */ + if_abs_dim_code = 23, /* \.{\\ifabsdim} */ + if_condition_code = 24, /* \.{\\ifcondition} */ } if_type_codes; # define if_limit_subtype(A) subtype((A)+1) diff --git a/Build/source/texk/web2c/luatexdir/tex/directions.h b/Build/source/texk/web2c/luatexdir/tex/directions.h index 7ab524a1e79..92d6cc18f12 100644 --- a/Build/source/texk/web2c/luatexdir/tex/directions.h +++ b/Build/source/texk/web2c/luatexdir/tex/directions.h @@ -22,43 +22,19 @@ # define DIRECTIONS_H /* - # define dir_TLT 0 - # define dir_TRT 4 - # define dir_LTL 9 - # define dir_RTT 24 - - extern const char *dir_strings[128]; +#define dir_swap 4 */ -extern const char *dir_strings[8]; - -extern int dir_swap; - -/* -# define RETURN_DIR_VALUES(a) \ - if (s==luaS_##a##_ptr) { \ - return (dir_##a); \ - } else if (!absolute_only) { \ - if (s==luaS_p##a##_ptr) \ - return (dir_##a); \ - else if (s==luaS_m##a##_ptr) \ - return ((dir_##a)-4); \ - } -*/ +#define dir_min_value 0 +#define dir_max_value 3 -# define RETURN_DIR_VALUES(a) \ - if (s==lua_key(a)) { \ - return (dir_##a); \ - } else if (!absolute_only) { \ - if (s==lua_key_plus(a)) \ - return (dir_##a); \ - else if (s==lua_key_minus(a)) \ - return ((dir_##a)-4); \ - } +#define check_dir_value(d) \ + if ((d < dir_min_value) || (d > dir_max_value)) \ + d = dir_min_value; -# define is_mirrored(a) 0 +#define is_mirrored(a) 0 -# define is_rotated(a) (a == dir_RTT) +#define is_rotated(a) (a == dir_RTT) /* @@ -90,10 +66,12 @@ extern int dir_swap; (a == dir_RTT && b == dir_TRT) \ ) + # define dir_TLT_or_TRT(a) (a == dir_TLT || a == dir_TRT) + # define dir_LTL_or_RTT(a) (a == dir_LTL || a == dir_RTT) + */ -/* # define dir_TLT_or_TRT(a) (a == dir_TLT || a == dir_TRT) */ -/* # define dir_LTL_or_RTT(a) (a == dir_LTL || a == dir_RTT) */ +/* TLT TRT LTL RTT */ # define dir_TLT_or_TRT(a) (a < 2) # define dir_LTL_or_RTT(a) (a > 1) @@ -174,7 +152,8 @@ extern void initialize_directions(void); extern halfword new_dir(int s); extern const char *string_dir(int d); -extern void print_dir(int d); +extern void print_dir_par(int d); +extern void print_dir_text(halfword d); extern void scan_direction(void); diff --git a/Build/source/texk/web2c/luatexdir/tex/equivalents.h b/Build/source/texk/web2c/luatexdir/tex/equivalents.h index f478b4a41b2..3ff9ac16dbe 100644 --- a/Build/source/texk/web2c/luatexdir/tex/equivalents.h +++ b/Build/source/texk/web2c/luatexdir/tex/equivalents.h @@ -38,10 +38,10 @@ distinction. # define biggest_reg 65535 /* the largest allowed register number; must be |< max_quarterword| */ # define number_regs 65536 /* |biggest_reg+1| */ # define number_attrs 65536 /* total numbeer of attributes */ -# define biggest_char 1114111 /* the largest allowed character number; must be |< max_halfword| */ -# define too_big_char 1114112 /* |biggest_char+1| */ -# define special_char 1114113 /* |biggest_char+2| */ -# define number_chars 1114112 /* |biggest_char+1| */ +# define biggest_char 1114111 /* 0x10FFFF, the largest allowed character number; must be |< max_halfword| */ +# define too_big_char (biggest_char+1) /* 1114112, |biggest_char+1| */ +# define special_char (biggest_char+2) /* 1114113, |biggest_char+2| */ +# define number_chars (biggest_char+3) /* 1114112, |biggest_char+1| */ # define number_fonts (5535-font_base+1) # define biggest_lang 32767 # define too_big_lang 32768 @@ -292,15 +292,22 @@ the |number_regs| \.{\\dimen} registers. # define automatic_hyphen_penalty_code 101 # define explicit_hyphen_penalty_code 102 # define automatic_hyphen_mode_code 103 -# define break_after_dir_mode_code 104 - -# define pre_bin_op_penalty_code 105 -# define pre_rel_penalty_code 106 -# define math_penalties_mode_code 107 -# define math_delimiters_mode_code 108 -# define math_script_box_mode_code 109 - -# define suppress_primitive_error_code 110 +# define compound_hyphen_mode_code 104 +# define break_after_dir_mode_code 105 +# define exception_penalty_code 106 + +# define pre_bin_op_penalty_code 107 +# define pre_rel_penalty_code 108 +# define math_penalties_mode_code 109 +# define math_delimiters_mode_code 110 +# define math_script_box_mode_code 111 +# define math_script_char_mode_code 112 +# define math_rule_thickness_mode_code 113 +# define math_flatten_mode_code 114 + +# define copy_lua_input_nodes_code 115 +# define suppress_primitive_error_code 116 +# define fixup_boxes_code 117 # define math_option_code (suppress_primitive_error_code+1) @@ -441,7 +448,8 @@ We use the notation |saved(k)| to stand for an item that appears in location # define saved_boxspec 14 # define saved_boxdir 15 # define saved_boxattr 16 -# define saved_boxpack 18 +# define saved_boxpack 17 +# define saved_attrlist 18 # define saved_eqtb 19 extern void print_save_stack(void); @@ -453,10 +461,9 @@ extern void print_save_stack(void); typedef enum { c_mathoption_old_code = 0, /* this one is stable */ - c_mathoption_no_italic_compensation_code, /* just for tracing, can change */ - c_mathoption_no_char_italic_code, /* just for tracing, can change */ - c_mathoption_use_old_fraction_scaling_code, /* just for tracing, can change */ - c_mathoption_umathcode_meaning_code, /* this one is stable */ + /* + c_mathoption_umathcode_meaning_code, + */ } math_option_codes ; # define mathoption_int_par(A) eqtb[mathoption_int_base+(A)].cint @@ -525,7 +532,7 @@ typedef enum { cramped_script_script_style, /* |subtype| for \.{\\crampedscriptscriptstyle} */ } math_style_subtypes; -typedef enum { +typedef enum { /* this could move to directions.h */ dir_TLT = 0, dir_TRT, dir_LTL, @@ -663,6 +670,9 @@ extern halfword last_cs_name; #define math_penalties_mode_par int_par(math_penalties_mode_code) #define math_delimiters_mode_par int_par(math_delimiters_mode_code) #define math_script_box_mode_par int_par(math_script_box_mode_code) +#define math_script_char_mode_par int_par(math_script_char_mode_code) +#define math_rule_thickness_mode_par int_par(math_rule_thickness_mode_code) +#define math_flatten_mode_par int_par(math_flatten_mode_code) #define null_delimiter_space_par dimen_par(null_delimiter_space_code) #define disable_lig_par int_par(disable_lig_code) #define disable_kern_par int_par(disable_kern_code) @@ -757,12 +767,13 @@ extern halfword last_cs_name; #define suppress_ifcsname_error_par int_par(suppress_ifcsname_error_code) #define suppress_primitive_error_par int_par(suppress_primitive_error_code) #define error_context_lines_par int_par(error_context_lines_code) +#define copy_lua_input_nodes_par int_par(copy_lua_input_nodes_code) #define math_old_par mathoption_int_par(c_mathoption_old_code) -#define math_no_italic_compensation_par mathoption_int_par(c_mathoption_no_italic_compensation_code) -#define math_no_char_italic_par mathoption_int_par(c_mathoption_no_char_italic_code) -#define math_use_old_fraction_scaling_par mathoption_int_par(c_mathoption_use_old_fraction_scaling_code) + +/* #define math_umathcode_meaning_par mathoption_int_par(c_mathoption_umathcode_meaning_code) +*/ #define math_pre_display_gap_factor_par int_par(math_pre_display_gap_factor_code) @@ -790,11 +801,15 @@ extern halfword last_cs_name; #define automatic_hyphen_penalty_par int_par(automatic_hyphen_penalty_code) #define explicit_hyphen_penalty_par int_par(explicit_hyphen_penalty_code) #define automatic_hyphen_mode_par int_par(automatic_hyphen_mode_code) +#define compound_hyphen_mode_par int_par(compound_hyphen_mode_code) #define break_after_dir_mode_par int_par(break_after_dir_mode_code) +#define exception_penalty_par int_par(exception_penalty_code) #define cur_lang_par int_par(cur_lang_code) #define cur_font_par equiv(cur_font_loc) +#define fixup_boxes_par int_par(fixup_boxes_code) + /* */ #define math_use_current_family_code 7 diff --git a/Build/source/texk/web2c/luatexdir/tex/extensions.h b/Build/source/texk/web2c/luatexdir/tex/extensions.h index b6839534439..5e22ddf26c3 100644 --- a/Build/source/texk/web2c/luatexdir/tex/extensions.h +++ b/Build/source/texk/web2c/luatexdir/tex/extensions.h @@ -136,9 +136,12 @@ typedef enum { 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 diff --git a/Build/source/texk/web2c/luatexdir/tex/inputstack.h b/Build/source/texk/web2c/luatexdir/tex/inputstack.h index 378fabe24b8..8c139a8332e 100644 --- a/Build/source/texk/web2c/luatexdir/tex/inputstack.h +++ b/Build/source/texk/web2c/luatexdir/tex/inputstack.h @@ -306,6 +306,7 @@ typedef enum { mark_text = 14, /* |token_type| code for \.{\\topmark}, etc. */ every_eof_text = 15, /* |token_type| code for \.{\\everyeof} */ write_text = 16, /* |token_type| code for \.{\\write} */ + local_text = 17, /* |token_type| code for special purposed */ } token_types; extern pointer *param_stack; diff --git a/Build/source/texk/web2c/luatexdir/tex/linebreak.h b/Build/source/texk/web2c/luatexdir/tex/linebreak.h index 1f49278314b..d1e1768f704 100644 --- a/Build/source/texk/web2c/luatexdir/tex/linebreak.h +++ b/Build/source/texk/web2c/luatexdir/tex/linebreak.h @@ -20,9 +20,6 @@ #ifndef LINEBREAK_H # define LINEBREAK_H -# define left_side 0 -# define right_side 1 - extern halfword just_box; /* the |hlist_node| for the last line of the new paragraph */ extern void line_break(boolean d, int line_break_context); diff --git a/Build/source/texk/web2c/luatexdir/tex/mainbody.h b/Build/source/texk/web2c/luatexdir/tex/mainbody.h index 4a5cb93a164..245535120c8 100644 --- a/Build/source/texk/web2c/luatexdir/tex/mainbody.h +++ b/Build/source/texk/web2c/luatexdir/tex/mainbody.h @@ -139,6 +139,9 @@ extern int filelineerrorstylep; extern int haltonerrorp; extern boolean quoted_filename; +extern int total_pages; +extern int dead_cycles; + /* In order to make efficient use of storage space, \TeX\ bases its major data structures on a |memory_word|, which contains either a (signed) integer, diff --git a/Build/source/texk/web2c/luatexdir/tex/maincontrol.h b/Build/source/texk/web2c/luatexdir/tex/maincontrol.h index 13e3c6ff3b0..04608c11e9b 100644 --- a/Build/source/texk/web2c/luatexdir/tex/maincontrol.h +++ b/Build/source/texk/web2c/luatexdir/tex/maincontrol.h @@ -151,6 +151,7 @@ extern void do_endv(void); extern void cs_error(void); extern void prefixed_command(void); extern void fixup_directions(void); +extern void fixup_directions_only(void); /* Assignments from Lua need helpers. */ @@ -205,5 +206,12 @@ extern void show_whatever(void); extern void initialize(void); /* this procedure gets things started properly */ +/*extern int local_level;*/ + +extern void local_control(void); +extern halfword local_scan_box(void); +extern int current_local_level(void); +extern void end_local_control(void); +extern void local_control_message(const char *s); #endif diff --git a/Build/source/texk/web2c/luatexdir/tex/mlist.h b/Build/source/texk/web2c/luatexdir/tex/mlist.h index bd156212220..1a15afe3c04 100644 --- a/Build/source/texk/web2c/luatexdir/tex/mlist.h +++ b/Build/source/texk/web2c/luatexdir/tex/mlist.h @@ -31,5 +31,6 @@ extern void fixup_math_parameters(int fam_id, int size_id, int f, int lvl); extern scaled get_math_quad_style(int a); extern scaled get_math_quad_size(int a); +extern pointer make_extensible(internal_font_number fnt, halfword chr, scaled v, scaled min_overlap, int horizontal, halfword att); #endif diff --git a/Build/source/texk/web2c/luatexdir/tex/packaging.h b/Build/source/texk/web2c/luatexdir/tex/packaging.h index 6a0802e4676..9353afeaf20 100644 --- a/Build/source/texk/web2c/luatexdir/tex/packaging.h +++ b/Build/source/texk/web2c/luatexdir/tex/packaging.h @@ -143,7 +143,8 @@ latter two are used denote \.{\\vbox} and \.{\\hbox}, respectively. # define global_box_flag (box_flag+number_regs) /* context code for `\.{\\global\\setbox0}' */ # define max_global_box_flag (global_box_flag+number_regs) # define ship_out_flag (max_global_box_flag+1) /* context code for `\.{\\shipout}' */ -# define leader_flag ship_out_flag+1 /* context code for `\.{\\leaders}' */ +# define lua_scan_flag (max_global_box_flag+2) /* context code for |scan_list| */ +# define leader_flag (max_global_box_flag+3) /* context code for `\.{\\leaders}' */ extern void begin_box(int box_context); diff --git a/Build/source/texk/web2c/luatexdir/tex/printing.h b/Build/source/texk/web2c/luatexdir/tex/printing.h index 1619c6072de..79ca524ef6f 100644 --- a/Build/source/texk/web2c/luatexdir/tex/printing.h +++ b/Build/source/texk/web2c/luatexdir/tex/printing.h @@ -77,7 +77,7 @@ extern void print_esc(str_number s); extern void print_the_digs(eight_bits k); extern void print_int(longinteger n); extern void print_two(int n); -extern void print_hex(int n); +extern void print_qhex(int n); extern void print_roman_int(int n); extern void print_current_string(void); diff --git a/Build/source/texk/web2c/luatexdir/tex/scanning.h b/Build/source/texk/web2c/luatexdir/tex/scanning.h index f5f620c6746..e4189a0f67a 100644 --- a/Build/source/texk/web2c/luatexdir/tex/scanning.h +++ b/Build/source/texk/web2c/luatexdir/tex/scanning.h @@ -63,9 +63,13 @@ extern void scan_fifty_one_bit_int(void); # define hex_token (other_token+'"') /* double quote, indicates a hex constant */ # define alpha_token (other_token+'`') /* reverse apostrophe, precedes alpha constants */ # define point_token (other_token+'.') /* decimal point */ +# define comma_token (other_token+',') /* decimal comma */ +# define plus_token (other_token + '+') +# define minus_token (other_token + '-') # define continental_point_token (other_token+',') /* decimal point, Eurostyle */ # define infinity 017777777777 /* the largest positive value that \TeX\ knows */ # define zero_token (other_token+'0') /* zero, the smallest digit */ +# define nine_token (other_token+'9') /* zero, the smallest digit */ # define A_token (letter_token+'A') /* the smallest special hex digit */ # define other_A_token (other_token+'A') /* special hex digit of type |other_char| */ extern int radix; @@ -78,7 +82,6 @@ extern int cur_order; extern void scan_dimen(boolean mu, boolean inf, boolean shortcut); extern void scan_glue(int level); -extern void scan_scaled(void); extern halfword the_toks(void); extern str_number the_scanned_result(void); diff --git a/Build/source/texk/web2c/luatexdir/tex/stringpool.h b/Build/source/texk/web2c/luatexdir/tex/stringpool.h index a969547e763..2ba156046fd 100644 --- a/Build/source/texk/web2c/luatexdir/tex/stringpool.h +++ b/Build/source/texk/web2c/luatexdir/tex/stringpool.h @@ -1,5 +1,5 @@ /* stringpool.h - + Copyright 2009 Taco Hoekwater <taco@luatex.org> This file is part of LuaTeX. @@ -43,9 +43,10 @@ extern str_number init_str_ptr; # define get_nullstr() STRING_OFFSET -# define biggest_char 1114111 -# define number_chars 1114112 -# define special_char 1114113 /* |biggest_char+2| */ +# define biggest_char 1114111 /* 0x10FFFF, the largest allowed character number; must be |< max_halfword| */ +# define too_big_char (biggest_char+1) /* 1114112, |biggest_char+1| */ +# define special_char (biggest_char+2) /* 1114113, |biggest_char+2| */ +# define number_chars (biggest_char+3) /* 1114112, |biggest_char+1| */ /* Several of the elementary string operations are performed using diff --git a/Build/source/texk/web2c/luatexdir/tex/texmath.h b/Build/source/texk/web2c/luatexdir/tex/texmath.h index 24bb34dc977..23fc5a0e42e 100644 --- a/Build/source/texk/web2c/luatexdir/tex/texmath.h +++ b/Build/source/texk/web2c/luatexdir/tex/texmath.h @@ -38,22 +38,6 @@ extern halfword new_sub_box(halfword); # define default_code 010000000000 /* denotes |default_rule_thickness| */ -typedef enum { - ord_noad_type = 0, - op_noad_type_normal, - op_noad_type_limits, - op_noad_type_no_limits, - bin_noad_type, - rel_noad_type, - open_noad_type, - close_noad_type, - punct_noad_type, - inner_noad_type, - under_noad_type, - over_noad_type, - vcenter_noad_type, -} noad_types; - extern void initialize_math(void); extern void initialize_math_spacing(void); extern halfword math_vcenter_group(halfword); diff --git a/Build/source/texk/web2c/luatexdir/tex/texnodes.h b/Build/source/texk/web2c/luatexdir/tex/texnodes.h index eb9b2da4a48..e77e2916e71 100644 --- a/Build/source/texk/web2c/luatexdir/tex/texnodes.h +++ b/Build/source/texk/web2c/luatexdir/tex/texnodes.h @@ -97,8 +97,30 @@ extern halfword do_set_attribute(halfword p, int i, int val); # define list_offset 6 typedef enum { + user_skip_glue, + line_skip_glue, + baseline_skip_glue, + par_skip_glue, + above_display_skip_glue, + below_display_skip_glue, + above_display_short_skip_glue, + below_display_short_skip_glue, + left_skip_glue, + right_skip_glue, + top_skip_glue, + split_top_skip_glue, + tab_skip_glue, + space_skip_glue, + xspace_skip_glue, + par_fill_skip_glue, + math_skip_glue, + thin_mu_skip_glue, + med_mu_skip_glue, + thick_mu_skip_glue, + /* math */ cond_math_glue = 98, /* special |subtype| to suppress glue in the next node */ mu_glue, /* |subtype| for math glue */ + /* leaders */ a_leaders, /* |subtype| for aligned leaders */ c_leaders, /* |subtype| for centered leaders */ x_leaders, /* |subtype| for expanded leaders */ @@ -199,7 +221,7 @@ typedef enum { # define disc_penalty(a) vlink((a)+2) # define pre_break(a) vinfo((a)+3) # define post_break(a) vlink((a)+3) -# define no_break(a) vlink((a)+4) +# define no_break(a) vlink((a)+4) /* we have vinfo((a)+4) for later usage */ # define vlink_pre_break(a) vlink(pre_break_head(a)) # define vlink_post_break(a) vlink(post_break_head(a)) @@ -264,14 +286,17 @@ typedef enum { math_under_rule, math_fraction_rule, math_radical_rule, + outline_rule, } rule_subtypes; -# define rule_node_size 8 +# define rule_node_size 9 # define rule_dir(a) vlink((a)+5) # define rule_index(a) vinfo((a)+6) # define rule_transform(a) vlink((a)+6) -# define synctex_tag_rule(a) vinfo((a)+7) -# define synctex_line_rule(a) vlink((a)+7) +# define rule_left(a) vinfo((a)+7) +# define rule_right(a) vlink((a)+7) +# define synctex_tag_rule(a) vinfo((a)+8) +# define synctex_line_rule(a) vlink((a)+8) # define rule_math_size rule_index # define rule_math_font rule_transform @@ -292,7 +317,7 @@ typedef enum { # define x_displace(a) vinfo((a)+4) # define y_displace(a) vlink((a)+4) # define ex_glyph(a) vinfo((a)+5) /* expansion factor (hz) */ -# define x_advance(a) vlink((a)+5) /* obsolete, can become user field */ +# define glyph_node_data(a) vlink((a)+5) # define synctex_tag_glyph(a) vinfo((a)+6) # define synctex_line_glyph(a) vlink((a)+6) @@ -318,11 +343,15 @@ typedef enum { /*@# {|subtype| of marginal kerns}*/ -# define left_side 0 -# define right_side 1 +typedef enum { + left_side = 0, + right_side +} margin_kern_subtypes ; -# define before 0 /* |subtype| for math node that introduces a formula */ -# define after 1 /* |subtype| for math node that winds up a formula */ +typedef enum { + before = 0, + after +} math_subtypes ; # define math_node_size 7 /* define width(a) vinfo((a)+2) */ @@ -487,6 +516,24 @@ typedef enum { # define noadextra3(a) vlink((a)+7) /* see (!) below */ # define noadextra4(a) vinfo((a)+7) /* used to store samesize */ +# define noad_fam(a) vlink((a)+6) /* noadextra1 */ + +typedef enum { + ord_noad_type = 0, + op_noad_type_normal, + op_noad_type_limits, + op_noad_type_no_limits, + bin_noad_type, + rel_noad_type, + open_noad_type, + close_noad_type, + punct_noad_type, + inner_noad_type, + under_noad_type, + over_noad_type, + vcenter_noad_type, +} noad_types; + /* accent noads */ # define accent_noad_size 8 @@ -495,6 +542,13 @@ typedef enum { # define overlay_accent_chr(a) vinfo((a)+7) /* the |overlay_accent_chr| field of an accent noad */ # define accentfraction(a) vlink((a)+7) +typedef enum { + bothflexible_accent, + fixedtop_accent, + fixedbottom_accent, + fixedboth_accent, +} math_accent_subtypes ; + /* left and right noads */ # define fence_noad_size 8 /* needs to match noad size */ @@ -540,22 +594,36 @@ typedef enum { noad_delimiter_mode_noshift = 0x01, noad_delimiter_mode_italics = 0x02, noad_delimiter_mode_ordinal = 0x04, + noad_delimiter_mode_samenos = 0x08, + noad_delimiter_mode_charnos = 0x10, } delimiter_modes ; # define delimitermodenoshift ((math_delimiters_mode_par & noad_delimiter_mode_noshift) == noad_delimiter_mode_noshift) # define delimitermodeitalics ((math_delimiters_mode_par & noad_delimiter_mode_italics) == noad_delimiter_mode_italics) # define delimitermodeordinal ((math_delimiters_mode_par & noad_delimiter_mode_ordinal) == noad_delimiter_mode_ordinal) +# define delimitermodesamenos ((math_delimiters_mode_par & noad_delimiter_mode_samenos) == noad_delimiter_mode_samenos) +# define delimitermodecharnos ((math_delimiters_mode_par & noad_delimiter_mode_charnos) == noad_delimiter_mode_charnos) /* subtype of fence noads */ +/* # define left_noad_side 1 # define middle_noad_side 2 # define right_noad_side 3 # define no_noad_side 4 +*/ + +typedef enum { + unset_noad_side = 0, + left_noad_side = 1, + middle_noad_side = 2, + right_noad_side = 3, + no_noad_side = 4, +} fence_subtypes ; /* fraction noads */ -# define fraction_noad_size 7 +# define fraction_noad_size 8 # define thickness(a) vlink((a)+2) /* |thickness| field in a fraction noad */ # define numerator(a) vlink((a)+3) /* |numerator| field in a fraction noad */ # define denominator(a) vinfo((a)+3) /* |denominator| field in a fraction noad */ @@ -563,6 +631,7 @@ typedef enum { # define right_delimiter(a) vinfo((a)+5) /* second delimiter field of a fraction noad */ # define middle_delimiter(a) vlink((a)+6) # define fractionoptions(a) vinfo((a)+6) +# define fraction_fam(a) vlink((a)+7) # define fractionoptionset(a) ((fractionoptions(a) & noad_option_set ) == noad_option_set ) # define fractionexact(a) ((fractionoptions(a) & noad_option_exact ) == noad_option_exact ) @@ -582,6 +651,16 @@ typedef enum { # define radicalmiddle(a) ((radicaloptions(a) & noad_option_middle) == noad_option_middle) # define radicalright(a) ((radicaloptions(a) & noad_option_right ) == noad_option_right) +typedef enum { + radical_noad_type, + uradical_noad_type, + uroot_noad_type, + uunderdelimiter_noad_type, + uoverdelimiter_noad_type, + udelimiterunder_noad_type, + udelimiterover_noad_type, +} radical_subtypes; + /* accessors for the |nucleus|-style node fields */ # define math_kernel_node_size 3 @@ -659,6 +738,15 @@ typedef enum { # define GLYPH_LEFT (1 << 3) # define GLYPH_RIGHT (1 << 4) +typedef enum { + glyph_unset = 0, + glyph_character = GLYPH_CHARACTER, + glyph_ligature = GLYPH_LIGATURE, + glyph_ghost = GLYPH_GHOST, + glyph_left = GLYPH_LEFT, + glyph_right = GLYPH_RIGHT, +} glyph_subtypes; + # define is_character(p) ((subtype(p)) & GLYPH_CHARACTER) # define is_ligature(p) ((subtype(p)) & GLYPH_LIGATURE ) # define is_ghost(p) ((subtype(p)) & GLYPH_GHOST ) @@ -698,6 +786,11 @@ typedef enum { # define special_node_size 3 +typedef enum { + normal_dir = 0, + cancel_dir, +} dir_subtypes ; + # define dir_node_size 5 # define dir_dir(a) vinfo((a)+2) # define dir_level(a) vlink((a)+2) @@ -737,6 +830,7 @@ typedef enum { /* type of literal data */ # define lua_refid_literal 1 /* not a |normal| string */ +# define lua_refid_call 2 /* not a |normal| string */ /* begin of pdf backend nodes */ @@ -899,40 +993,60 @@ extern void print_short_node_contents(halfword n); extern void show_node_list(int i); extern pointer actual_box_width(pointer r, scaled base_width); -/* from luanode.c */ +typedef struct _subtype_info { + int id; + const char *name; + int lua; +} subtype_info; + +typedef struct _field_info { + const char *name; + int lua; +} field_info; typedef struct _node_info { int id; int size; - const char **fields; + subtype_info *subtypes; + field_info *fields; const char *name; int etex; + int lua; } node_info; extern node_info node_data[]; extern node_info whatsit_node_data[]; -extern const char *node_subtypes_glue[]; -extern const char *node_subtypes_mathglue[]; -extern const char *node_subtypes_leader[]; -extern const char *node_subtypes_fill[]; -extern const char *node_subtypes_boundary[]; -extern const char *node_subtypes_penalty[]; -extern const char *node_subtypes_kern[]; -extern const char *node_subtypes_rule[]; -extern const char *node_subtypes_glyph[]; -extern const char *node_subtypes_disc[]; -extern const char *node_subtypes_marginkern[]; -extern const char *node_subtypes_list[]; -extern const char *node_subtypes_adjust[]; -extern const char *node_subtypes_math[]; -extern const char *node_subtypes_noad[]; -extern const char *node_subtypes_radical[]; -extern const char *node_subtypes_accent[]; -extern const char *node_subtypes_fence[]; - -extern const char *node_subtypes_pdf_destination[]; -extern const char *node_subtypes_pdf_literal[]; +extern subtype_info node_subtypes_dir[]; +extern subtype_info node_subtypes_glue[]; +extern subtype_info node_subtypes_mathglue[]; +extern subtype_info node_subtypes_leader[]; +extern subtype_info node_subtypes_boundary[]; +extern subtype_info node_subtypes_penalty[]; +extern subtype_info node_subtypes_kern[]; +extern subtype_info node_subtypes_rule[]; +extern subtype_info node_subtypes_glyph[]; +extern subtype_info node_subtypes_disc[]; +extern subtype_info node_subtypes_marginkern[]; +extern subtype_info node_subtypes_list[]; +extern subtype_info node_subtypes_adjust[]; +extern subtype_info node_subtypes_math[]; +extern subtype_info node_subtypes_noad[]; +extern subtype_info node_subtypes_radical[]; +extern subtype_info node_subtypes_accent[]; +extern subtype_info node_subtypes_fence[]; + +extern subtype_info node_values_pdf_destination[]; +extern subtype_info node_values_pdf_literal[]; +extern subtype_info node_values_pdf_literal[]; +extern subtype_info node_values_pdf_action[]; +extern subtype_info node_values_pdf_window[]; + +extern subtype_info node_values_fill[]; +extern subtype_info node_values_dir[]; +extern subtype_info node_values_color_stack[]; + +extern subtype_info other_values_page_states[]; extern halfword new_node(int i, int j); extern void flush_node_list(halfword); @@ -958,7 +1072,7 @@ extern void show_node_wrapup_dvi(halfword); extern void show_node_wrapup_pdf(halfword); typedef enum { - normal_g = 0, + normal_g = 0, /* normal */ sfi, fil, fill, @@ -1037,5 +1151,8 @@ extern void synctex_set_no_files(int flag); extern int synctex_get_no_files(void); extern int synctex_get_line(void); +extern void l_set_node_data(void) ; +extern void l_set_whatsit_data(void) ; + #endif diff --git a/Build/source/texk/web2c/luatexdir/tex/textoken.h b/Build/source/texk/web2c/luatexdir/tex/textoken.h index 4f46a48c819..4b33b099ab3 100644 --- a/Build/source/texk/web2c/luatexdir/tex/textoken.h +++ b/Build/source/texk/web2c/luatexdir/tex/textoken.h @@ -25,19 +25,19 @@ # define null 0 # define cs_token_flag 0x1FFFFFFF -# define left_brace_token 0x200000 /* $2^{21}\cdot|left_brace|$ */ -# define right_brace_token 0x400000 /* $2^{21}\cdot|right_brace|$ */ -# define left_brace_limit 0x400000 /* $2^{21}\cdot(|left_brace|+1)$ */ -# define right_brace_limit 0x600000 /* $2^{21}\cdot(|right_brace|+1)$ */ -# define math_shift_token 0x600000 /* $2^{21}\cdot|math_shift|$ */ -# define tab_token 0x800000 /* $2^{21}\cdot|tab_mark|$ */ -# define out_param_token 0xA00000 /* $2^{21}\cdot|out_param|$ */ -# define space_token 0x1400020 /* $2^{21}\cdot|spacer|+|" "|$ */ -# define letter_token 0x1600000 /* $2^{21}\cdot|letter|$ */ -# define other_token 0x1800000 /* $2^{21}\cdot|other_char|$ */ -# define match_token 0x1A00000 /* $2^{21}\cdot|match|$ */ -# define end_match_token 0x1C00000 /* $2^{21}\cdot|end_match|$ */ -# define protected_token 0x1C00001 /* $2^{21}\cdot|end_match|+1$ */ +# define left_brace_token 0x0200000 /* $2^{21}\cdot|left_brace|$ */ +# define right_brace_token 0x0400000 /* $2^{21}\cdot|right_brace|$ */ +# define left_brace_limit 0x0400000 /* $2^{21}\cdot(|left_brace|+1)$ */ +# define right_brace_limit 0x0600000 /* $2^{21}\cdot(|right_brace|+1)$ */ +# define math_shift_token 0x0600000 /* $2^{21}\cdot|math_shift|$ */ +# define tab_token 0x0800000 /* $2^{21}\cdot|tab_mark|$ */ +# define out_param_token 0x0A00000 /* $2^{21}\cdot|out_param|$ */ +# define space_token 0x1400020 /* $2^{21}\cdot|spacer|+|" "|$ */ +# define letter_token 0x1600000 /* $2^{21}\cdot|letter|$ */ +# define other_token 0x1800000 /* $2^{21}\cdot|other_char|$ */ +# define match_token 0x1A00000 /* $2^{21}\cdot|match|$ */ +# define end_match_token 0x1C00000 /* $2^{21}\cdot|end_match|$ */ +# define protected_token 0x1C00001 /* $2^{21}\cdot|end_match|+1$ */ # include "tex/stringpool.h" @@ -126,6 +126,7 @@ extern void make_token_table(lua_State * L, int cmd, int chr, int cs); extern void get_next(void); extern void check_outer_validity(void); extern boolean scan_keyword(const char *); +extern boolean scan_keyword_case_sensitive(const char *); extern halfword active_to_cs(int, int); extern void get_token_lua(void); halfword string_to_toks(const char *); @@ -183,4 +184,6 @@ extern void free_lstring(lstring * ls); # define token_chr(A) ((A) & (STRING_OFFSET - 1)) # define token_val(A,B) (((A)<<STRING_OFFSET_BITS)+(B)) +extern void l_set_token_data(void) ; + #endif |