/* tectonic_xetex_format engine header for version 33 */
/* This file is automatically generated by the `xetex_format` `emit` example. Do not modify. */

#ifndef __TECTONIC_XETEX_FORMAT_ENGINE_HEADER__
#define __TECTONIC_XETEX_FORMAT_ENGINE_HEADER__

#undef IGNORE /* Windows OS headers sometimes define this */

/* The format version associated with these symbols. */

#define TECTONIC_FORMAT_VERSION 33 /* = 0x21 */

/* Parameters associated with the multiletter control string hash table. */

#define HASH_SIZE 15000 /* = 0x3a98 */
#define HASH_EXTRA 600000 /* = 0x927c0 */
#define HASH_OFFSET 514 /* = 0x202 */
#define HASH_PRIME 8501 /* = 0x2135 */

/* Constants associated with "characters" (namely, Unicode Scalar Values). */

#define TOO_BIG_USV 1114112 /* = 0x110000 */
#define SPECIAL_CHAR 1114113 /* = 0x110001 */

/* Fixed array sizes. */

#define PRIM_SIZE 2100 /* = 0x834 */
#define PRIM_PRIME 1777 /* = 0x6f1 */
#define MAX_FONT_MAX 9000 /* = 0x2328 */
#define MEM_TOP 4999999 /* = 0x4c4b3f */
#define NUMBER_MATH_FAMILIES 256 /* = 0x100 */

/* Offsets for the integer parameters. */

#define INT_PAR__pretolerance 0 /* = 0x0 */
#define INT_PAR__tolerance 1 /* = 0x1 */
#define INT_PAR__line_penalty 2 /* = 0x2 */
#define INT_PAR__hyphen_penalty 3 /* = 0x3 */
#define INT_PAR__ex_hyphen_penalty 4 /* = 0x4 */
#define INT_PAR__club_penalty 5 /* = 0x5 */
#define INT_PAR__widow_penalty 6 /* = 0x6 */
#define INT_PAR__display_widow_penalty 7 /* = 0x7 */
#define INT_PAR__broken_penalty 8 /* = 0x8 */
#define INT_PAR__bin_op_penalty 9 /* = 0x9 */
#define INT_PAR__rel_penalty 10 /* = 0xa */
#define INT_PAR__pre_display_penalty 11 /* = 0xb */
#define INT_PAR__post_display_penalty 12 /* = 0xc */
#define INT_PAR__inter_line_penalty 13 /* = 0xd */
#define INT_PAR__double_hyphen_demerits 14 /* = 0xe */
#define INT_PAR__final_hyphen_demerits 15 /* = 0xf */
#define INT_PAR__adj_demerits 16 /* = 0x10 */
#define INT_PAR__mag 17 /* = 0x11 */
#define INT_PAR__delimiter_factor 18 /* = 0x12 */
#define INT_PAR__looseness 19 /* = 0x13 */
#define INT_PAR__time 20 /* = 0x14 */
#define INT_PAR__day 21 /* = 0x15 */
#define INT_PAR__month 22 /* = 0x16 */
#define INT_PAR__year 23 /* = 0x17 */
#define INT_PAR__show_box_breadth 24 /* = 0x18 */
#define INT_PAR__show_box_depth 25 /* = 0x19 */
#define INT_PAR__hbadness 26 /* = 0x1a */
#define INT_PAR__vbadness 27 /* = 0x1b */
#define INT_PAR__pausing 28 /* = 0x1c */
#define INT_PAR__tracing_online 29 /* = 0x1d */
#define INT_PAR__tracing_macros 30 /* = 0x1e */
#define INT_PAR__tracing_stats 31 /* = 0x1f */
#define INT_PAR__tracing_paragraphs 32 /* = 0x20 */
#define INT_PAR__tracing_pages 33 /* = 0x21 */
#define INT_PAR__tracing_output 34 /* = 0x22 */
#define INT_PAR__tracing_lost_chars 35 /* = 0x23 */
#define INT_PAR__tracing_commands 36 /* = 0x24 */
#define INT_PAR__tracing_restores 37 /* = 0x25 */
#define INT_PAR__uc_hyph 38 /* = 0x26 */
#define INT_PAR__output_penalty 39 /* = 0x27 */
#define INT_PAR__max_dead_cycles 40 /* = 0x28 */
#define INT_PAR__hang_after 41 /* = 0x29 */
#define INT_PAR__floating_penalty 42 /* = 0x2a */
#define INT_PAR__global_defs 43 /* = 0x2b */
#define INT_PAR__cur_fam 44 /* = 0x2c */
#define INT_PAR__escape_char 45 /* = 0x2d */
#define INT_PAR__default_hyphen_char 46 /* = 0x2e */
#define INT_PAR__default_skew_char 47 /* = 0x2f */
#define INT_PAR__end_line_char 48 /* = 0x30 */
#define INT_PAR__new_line_char 49 /* = 0x31 */
#define INT_PAR__language 50 /* = 0x32 */
#define INT_PAR__left_hyphen_min 51 /* = 0x33 */
#define INT_PAR__right_hyphen_min 52 /* = 0x34 */
#define INT_PAR__holding_inserts 53 /* = 0x35 */
#define INT_PAR__error_context_lines 54 /* = 0x36 */
#define INT_PAR__tracing_stack_levels 55 /* = 0x37 */
#define INT_PAR__tracing_assigns 56 /* = 0x38 */
#define INT_PAR__tracing_groups 57 /* = 0x39 */
#define INT_PAR__tracing_ifs 58 /* = 0x3a */
#define INT_PAR__tracing_scan_tokens 59 /* = 0x3b */
#define INT_PAR__tracing_nesting 60 /* = 0x3c */
#define INT_PAR__pre_display_direction 61 /* = 0x3d */
#define INT_PAR__last_line_fit 62 /* = 0x3e */
#define INT_PAR__saving_vdiscards 63 /* = 0x3f */
#define INT_PAR__saving_hyph_codes 64 /* = 0x40 */
#define INT_PAR__suppress_fontnotfound_error 65 /* = 0x41 */
#define INT_PAR__xetex_linebreak_locale 66 /* = 0x42 */
#define INT_PAR__xetex_linebreak_penalty 67 /* = 0x43 */
#define INT_PAR__xetex_protrude_chars 68 /* = 0x44 */
#define INT_PAR__texxet 69 /* = 0x45 */
#define INT_PAR__xetex_dash_break 70 /* = 0x46 */
#define INT_PAR__xetex_upwards 71 /* = 0x47 */
#define INT_PAR__xetex_use_glyph_metrics 72 /* = 0x48 */
#define INT_PAR__xetex_inter_char_tokens 73 /* = 0x49 */
#define INT_PAR__xetex_input_normalization 74 /* = 0x4a */
#define INT_PAR__xetex_default_input_mode 75 /* = 0x4b */
#define INT_PAR__xetex_default_input_encoding 76 /* = 0x4c */
#define INT_PAR__xetex_tracing_fonts 77 /* = 0x4d */
#define INT_PAR__xetex_interword_space_shaping 78 /* = 0x4e */
#define INT_PAR__xetex_generate_actual_text 79 /* = 0x4f */
#define INT_PAR__xetex_hyphenatable_length 80 /* = 0x50 */
#define INT_PAR__synctex 81 /* = 0x51 */
#define INT_PAR__pdfoutput 82 /* = 0x52 */
#define INT_PARS 83 /* = 0x53 */

/* Offsets for the dimensional parameters. */

#define DIMEN_PAR__par_indent 0 /* = 0x0 */
#define DIMEN_PAR__math_surround 1 /* = 0x1 */
#define DIMEN_PAR__line_skip_limit 2 /* = 0x2 */
#define DIMEN_PAR__hsize 3 /* = 0x3 */
#define DIMEN_PAR__vsize 4 /* = 0x4 */
#define DIMEN_PAR__max_depth 5 /* = 0x5 */
#define DIMEN_PAR__split_max_depth 6 /* = 0x6 */
#define DIMEN_PAR__box_max_depth 7 /* = 0x7 */
#define DIMEN_PAR__hfuzz 8 /* = 0x8 */
#define DIMEN_PAR__vfuzz 9 /* = 0x9 */
#define DIMEN_PAR__delimiter_shortfall 10 /* = 0xa */
#define DIMEN_PAR__null_delimiter_space 11 /* = 0xb */
#define DIMEN_PAR__script_space 12 /* = 0xc */
#define DIMEN_PAR__pre_display_size 13 /* = 0xd */
#define DIMEN_PAR__display_width 14 /* = 0xe */
#define DIMEN_PAR__display_indent 15 /* = 0xf */
#define DIMEN_PAR__overfull_rule 16 /* = 0x10 */
#define DIMEN_PAR__hang_indent 17 /* = 0x11 */
#define DIMEN_PAR__h_offset 18 /* = 0x12 */
#define DIMEN_PAR__v_offset 19 /* = 0x13 */
#define DIMEN_PAR__emergency_stretch 20 /* = 0x14 */
#define DIMEN_PAR__pdf_page_width 21 /* = 0x15 */
#define DIMEN_PAR__pdf_page_height 22 /* = 0x16 */
#define DIMEN_PARS 23 /* = 0x17 */

/* Offsets for the glue parameters. */

#define GLUE_PAR__line_skip 0 /* = 0x0 */
#define GLUE_PAR__baseline_skip 1 /* = 0x1 */
#define GLUE_PAR__par_skip 2 /* = 0x2 */
#define GLUE_PAR__above_display_skip 3 /* = 0x3 */
#define GLUE_PAR__below_display_skip 4 /* = 0x4 */
#define GLUE_PAR__above_display_short_skip 5 /* = 0x5 */
#define GLUE_PAR__below_display_short_skip 6 /* = 0x6 */
#define GLUE_PAR__left_skip 7 /* = 0x7 */
#define GLUE_PAR__right_skip 8 /* = 0x8 */
#define GLUE_PAR__top_skip 9 /* = 0x9 */
#define GLUE_PAR__split_top_skip 10 /* = 0xa */
#define GLUE_PAR__tab_skip 11 /* = 0xb */
#define GLUE_PAR__space_skip 12 /* = 0xc */
#define GLUE_PAR__xspace_skip 13 /* = 0xd */
#define GLUE_PAR__par_fill_skip 14 /* = 0xe */
#define GLUE_PAR__xetex_linebreak_skip 15 /* = 0xf */
#define GLUE_PAR__thin_mu_skip 16 /* = 0x10 */
#define GLUE_PAR__med_mu_skip 17 /* = 0x11 */
#define GLUE_PAR__thick_mu_skip 18 /* = 0x12 */
#define GLUE_PARS 19 /* = 0x13 */

/* Offsets for the "local" parameters. */

#define LOCAL__par_shape 0 /* = 0x0 */
#define LOCAL__output_routine 1 /* = 0x1 */
#define LOCAL__every_par 2 /* = 0x2 */
#define LOCAL__every_math 3 /* = 0x3 */
#define LOCAL__every_display 4 /* = 0x4 */
#define LOCAL__every_hbox 5 /* = 0x5 */
#define LOCAL__every_vbox 6 /* = 0x6 */
#define LOCAL__every_job 7 /* = 0x7 */
#define LOCAL__every_cr 8 /* = 0x8 */
#define LOCAL__err_help 9 /* = 0x9 */
#define LOCAL__every_eof 10 /* = 0xa */
#define LOCAL__xetex_inter_char_toks 11 /* = 0xb */
#define LOCAL__tectonic_coda_tokens 12 /* = 0xc */
#define NUM_LOCALS 13 /* = 0xd */

/* Offsets for the e-TeX penalties parameters. */

#define ETEX_PENALTIES_PAR__inter_line_penalties 0 /* = 0x0 */
#define ETEX_PENALTIES_PAR__club_penalties 1 /* = 0x1 */
#define ETEX_PENALTIES_PAR__widow_penalties 2 /* = 0x2 */
#define ETEX_PENALTIES_PAR__display_widow_penalties 3 /* = 0x3 */
#define NUM_ETEX_PENALTIES 4 /* = 0x4 */

/* Offsets in the equivalents table. */

#define ACTIVE_BASE 1 /* = 0x1 */
#define SINGLE_BASE 1114113 /* = 0x110001 */
#define NULL_CS 2228225 /* = 0x220001 */
#define HASH_BASE 2228226 /* = 0x220002 */
#define FROZEN_CONTROL_SEQUENCE 2243226 /* = 0x223a9a */
#define PRIM_EQTB_BASE 2243238 /* = 0x223aa6 */
#define FROZEN_NULL_FONT 2245338 /* = 0x2242da */
#define UNDEFINED_CONTROL_SEQUENCE 2254339 /* = 0x226603 */
#define GLUE_BASE 2254340 /* = 0x226604 */
#define SKIP_BASE 2254359 /* = 0x226617 */
#define MU_SKIP_BASE 2254615 /* = 0x226717 */
#define LOCAL_BASE 2254871 /* = 0x226817 */
#define TOKS_BASE 2254884 /* = 0x226824 */
#define ETEX_PEN_BASE 2255140 /* = 0x226924 */
#define BOX_BASE 2255144 /* = 0x226928 */
#define CUR_FONT_LOC 2255400 /* = 0x226a28 */
#define MATH_FONT_BASE 2255401 /* = 0x226a29 */
#define CAT_CODE_BASE 2256169 /* = 0x226d29 */
#define LC_CODE_BASE 3370281 /* = 0x336d29 */
#define UC_CODE_BASE 4484393 /* = 0x446d29 */
#define SF_CODE_BASE 5598505 /* = 0x556d29 */
#define MATH_CODE_BASE 6712617 /* = 0x666d29 */
#define INT_BASE 7826729 /* = 0x776d29 */
#define COUNT_BASE 7826812 /* = 0x776d7c */
#define DEL_CODE_BASE 7827068 /* = 0x776e7c */
#define DIMEN_BASE 8941180 /* = 0x886e7c */
#define SCALED_BASE 8941203 /* = 0x886e93 */
#define EQTB_SIZE 8941458 /* = 0x886f92 */
#define EQTB_TOP 9541458 /* = 0x919752 */

/* Codes for core engine commands. */

#define RELAX 0 /* = 0x0 */
#define ESCAPE 0 /* = 0x0 */
#define LEFT_BRACE 1 /* = 0x1 */
#define RIGHT_BRACE 2 /* = 0x2 */
#define MATH_SHIFT 3 /* = 0x3 */
#define TAB_MARK 4 /* = 0x4 */
#define CAR_RET 5 /* = 0x5 */
#define OUT_PARAM 5 /* = 0x5 */
#define MAC_PARAM 6 /* = 0x6 */
#define SUP_MARK 7 /* = 0x7 */
#define SUB_MARK 8 /* = 0x8 */
#define ENDV 9 /* = 0x9 */
#define IGNORE 9 /* = 0x9 */
#define SPACER 10 /* = 0xa */
#define LETTER 11 /* = 0xb */
#define OTHER_CHAR 12 /* = 0xc */
#define PAR_END 13 /* = 0xd */
#define ACTIVE_CHAR 13 /* = 0xd */
#define MATCH 13 /* = 0xd */
#define STOP 14 /* = 0xe */
#define COMMENT 14 /* = 0xe */
#define END_MATCH 14 /* = 0xe */
#define DELIM_NUM 15 /* = 0xf */
#define INVALID_CHAR 15 /* = 0xf */
#define CHAR_NUM 16 /* = 0x10 */
#define MAX_CHAR_CODE 15 /* = 0xf */
#define MATH_CHAR_NUM 17 /* = 0x11 */
#define MARK 18 /* = 0x12 */
#define XRAY 19 /* = 0x13 */
#define MAKE_BOX 20 /* = 0x14 */
#define HMOVE 21 /* = 0x15 */
#define VMOVE 22 /* = 0x16 */
#define UN_HBOX 23 /* = 0x17 */
#define UN_VBOX 24 /* = 0x18 */
#define REMOVE_ITEM 25 /* = 0x19 */
#define HSKIP 26 /* = 0x1a */
#define VSKIP 27 /* = 0x1b */
#define MSKIP 28 /* = 0x1c */
#define KERN 29 /* = 0x1d */
#define MKERN 30 /* = 0x1e */
#define LEADER_SHIP 31 /* = 0x1f */
#define HALIGN 32 /* = 0x20 */
#define VALIGN 33 /* = 0x21 */
#define NO_ALIGN 34 /* = 0x22 */
#define VRULE 35 /* = 0x23 */
#define HRULE 36 /* = 0x24 */
#define INSERT 37 /* = 0x25 */
#define VADJUST 38 /* = 0x26 */
#define IGNORE_SPACES 39 /* = 0x27 */
#define AFTER_ASSIGNMENT 40 /* = 0x28 */
#define AFTER_GROUP 41 /* = 0x29 */
#define BREAK_PENALTY 42 /* = 0x2a */
#define START_PAR 43 /* = 0x2b */
#define ITAL_CORR 44 /* = 0x2c */
#define ACCENT 45 /* = 0x2d */
#define MATH_ACCENT 46 /* = 0x2e */
#define DISCRETIONARY 47 /* = 0x2f */
#define EQ_NO 48 /* = 0x30 */
#define LEFT_RIGHT 49 /* = 0x31 */
#define MATH_COMP 50 /* = 0x32 */
#define LIMIT_SWITCH 51 /* = 0x33 */
#define ABOVE 52 /* = 0x34 */
#define MATH_STYLE 53 /* = 0x35 */
#define MATH_CHOICE 54 /* = 0x36 */
#define NON_SCRIPT 55 /* = 0x37 */
#define VCENTER 56 /* = 0x38 */
#define CASE_SHIFT 57 /* = 0x39 */
#define MESSAGE 58 /* = 0x3a */
#define EXTENSION 59 /* = 0x3b */
#define IN_STREAM 60 /* = 0x3c */
#define BEGIN_GROUP 61 /* = 0x3d */
#define END_GROUP 62 /* = 0x3e */
#define OMIT 63 /* = 0x3f */
#define EX_SPACE 64 /* = 0x40 */
#define NO_BOUNDARY 65 /* = 0x41 */
#define RADICAL 66 /* = 0x42 */
#define END_CS_NAME 67 /* = 0x43 */
#define CHAR_GIVEN 68 /* = 0x44 */
#define MIN_INTERNAL 68 /* = 0x44 */
#define MATH_GIVEN 69 /* = 0x45 */
#define XETEX_MATH_GIVEN 70 /* = 0x46 */
#define LAST_ITEM 71 /* = 0x47 */
#define TOKS_REGISTER 72 /* = 0x48 */
#define MAX_NON_PREFIXED_COMMAND 71 /* = 0x47 */
#define ASSIGN_TOKS 73 /* = 0x49 */
#define ASSIGN_INT 74 /* = 0x4a */
#define ASSIGN_DIMEN 75 /* = 0x4b */
#define ASSIGN_GLUE 76 /* = 0x4c */
#define ASSIGN_MU_GLUE 77 /* = 0x4d */
#define ASSIGN_FONT_DIMEN 78 /* = 0x4e */
#define ASSIGN_FONT_INT 79 /* = 0x4f */
#define SET_AUX 80 /* = 0x50 */
#define SET_PREV_GRAF 81 /* = 0x51 */
#define SET_PAGE_DIMEN 82 /* = 0x52 */
#define SET_PAGE_INT 83 /* = 0x53 */
#define SET_BOX_DIMEN 84 /* = 0x54 */
#define SET_SHAPE 85 /* = 0x55 */
#define DEF_CODE 86 /* = 0x56 */
#define XETEX_DEF_CODE 87 /* = 0x57 */
#define DEF_FAMILY 88 /* = 0x58 */
#define SET_FONT 89 /* = 0x59 */
#define DEF_FONT 90 /* = 0x5a */
#define REGISTER 91 /* = 0x5b */
#define ADVANCE 92 /* = 0x5c */
#define MAX_INTERNAL 91 /* = 0x5b */
#define MULTIPLY 93 /* = 0x5d */
#define DIVIDE 94 /* = 0x5e */
#define PREFIX 95 /* = 0x5f */
#define LET 96 /* = 0x60 */
#define SHORTHAND_DEF 97 /* = 0x61 */
#define READ_TO_CS 98 /* = 0x62 */
#define DEF 99 /* = 0x63 */
#define SET_BOX 100 /* = 0x64 */
#define HYPH_DATA 101 /* = 0x65 */
#define SET_INTERACTION 102 /* = 0x66 */
#define UNDEFINED_CS 103 /* = 0x67 */
#define MAX_COMMAND 102 /* = 0x66 */
#define EXPAND_AFTER 104 /* = 0x68 */
#define NO_EXPAND 105 /* = 0x69 */
#define INPUT 106 /* = 0x6a */
#define IF_TEST 107 /* = 0x6b */
#define FI_OR_ELSE 108 /* = 0x6c */
#define CS_NAME 109 /* = 0x6d */
#define CONVERT 110 /* = 0x6e */
#define THE 111 /* = 0x6f */
#define TOP_BOT_MARK 112 /* = 0x70 */
#define CALL 113 /* = 0x71 */
#define LONG_CALL 114 /* = 0x72 */
#define OUTER_CALL 115 /* = 0x73 */
#define LONG_OUTER_CALL 116 /* = 0x74 */
#define END_TEMPLATE 117 /* = 0x75 */
#define DONT_EXPAND 118 /* = 0x76 */
#define GLUE_REF 119 /* = 0x77 */
#define SHAPE_REF 120 /* = 0x78 */
#define BOX_REF 121 /* = 0x79 */
#define DATA 122 /* = 0x7a */

/* Major modes of the engine. */

#define VMODE 1 /* = 0x1 */
#define HMODE 104 /* = 0x68 */
#define MMODE 207 /* = 0xcf */

/* Math font sizes. */

#define TEXT_SIZE 0 /* = 0x0 */
#define SCRIPT_SIZE 256 /* = 0x100 */
#define SCRIPT_SCRIPT_SIZE 512 /* = 0x200 */

/* Types of nodes that can occur in general lists. */

#define HLIST_NODE 0 /* = 0x0 */
#define VLIST_NODE 1 /* = 0x1 */
#define RULE_NODE 2 /* = 0x2 */
#define INS_NODE 3 /* = 0x3 */
#define MARK_NODE 4 /* = 0x4 */
#define ADJUST_NODE 5 /* = 0x5 */
#define LIGATURE_NODE 6 /* = 0x6 */
#define DISC_NODE 7 /* = 0x7 */
#define WHATSIT_NODE 8 /* = 0x8 */
#define MATH_NODE 9 /* = 0x9 */
#define GLUE_NODE 10 /* = 0xa */
#define KERN_NODE 11 /* = 0xb */
#define PENALTY_NODE 12 /* = 0xc */
#define UNSET_NODE 13 /* = 0xd */
#define STYLE_NODE 14 /* = 0xe */
#define CHOICE_NODE 15 /* = 0xf */
#define MARGIN_KERN_NODE 40 /* = 0x28 */

/* Additional types of "noads" that can occur in math lists. */

#define TT_LEFT_RIGHT_MIDDLE_MODE 1 /* = 0x1 */
#define ORD_NOAD 16 /* = 0x10 */
#define OP_NOAD 17 /* = 0x11 */
#define BIN_NOAD 18 /* = 0x12 */
#define REL_NOAD 19 /* = 0x13 */
#define OPEN_NOAD 20 /* = 0x14 */
#define CLOSE_NOAD 21 /* = 0x15 */
#define PUNCT_NOAD 22 /* = 0x16 */
#define INNER_NOAD 23 /* = 0x17 */
#define RADICAL_NOAD 24 /* = 0x18 */
#define FRACTION_NOAD 25 /* = 0x19 */
#define UNDER_NOAD 26 /* = 0x1a */
#define OVER_NOAD 27 /* = 0x1b */
#define ACCENT_NOAD 28 /* = 0x1c */
#define VCENTER_NOAD 29 /* = 0x1d */
#define LEFT_NOAD 30 /* = 0x1e */
#define RIGHT_NOAD 31 /* = 0x1f */

/* Subtypes for glue nodes. */

#define NORMAL 0 /* = 0x0 */
#define MU_GLUE 99 /* = 0x63 */
#define A_LEADERS 100 /* = 0x64 */
#define C_LEADERS 101 /* = 0x65 */
#define X_LEADERS 102 /* = 0x66 */

/* Subtypes for kern nodes. */

#define EXPLICIT 1 /* = 0x1 */
#define ACC_KERN 2 /* = 0x2 */
#define SPACE_ADJUSTMENT 3 /* = 0x3 */

/* Subtypes for math nodes. */

#define BEFORE 0 /* = 0x0 */
#define AFTER 1 /* = 0x1 */
#define BEGIN_M_CODE 2 /* = 0x2 */
#define END_M_CODE 3 /* = 0x3 */
#define BEGIN_L_CODE 6 /* = 0x6 */
#define END_L_CODE 7 /* = 0x7 */
#define BEGIN_R_CODE 10 /* = 0xa */
#define END_R_CODE 11 /* = 0xb */

/* Subtypes for math style nodes. */

#define DISPLAY_STYLE 0 /* = 0x0 */
#define TEXT_STYLE 2 /* = 0x2 */
#define SCRIPT_STYLE 4 /* = 0x4 */
#define SCRIPT_SCRIPT_STYLE 6 /* = 0x6 */

/* Subtypes for math OP noads. */

#define LIMITS 1 /* = 0x1 */
#define NO_LIMITS 2 /* = 0x2 */

/* Subtypes for whatsit nodes. */

#define OPEN_NODE 0 /* = 0x0 */
#define WRITE_NODE 1 /* = 0x1 */
#define CLOSE_NODE 2 /* = 0x2 */
#define SPECIAL_NODE 3 /* = 0x3 */
#define LANGUAGE_NODE 4 /* = 0x4 */
#define PDF_SAVE_POS_NODE 21 /* = 0x15 */
#define NATIVE_WORD_NODE 40 /* = 0x28 */
#define NATIVE_WORD_NODE_AT 41 /* = 0x29 */
#define GLYPH_NODE 42 /* = 0x2a */
#define PIC_NODE 43 /* = 0x2b */
#define PDF_NODE 44 /* = 0x2c */

/* Subcommand codes for the ABOVE command. */

#define ABOVE_CODE 0 /* = 0x0 */
#define OVER_CODE 1 /* = 0x1 */
#define ATOP_CODE 2 /* = 0x2 */
#define TT_ABOVE_WITH_DELIMS 3 /* = 0x3 */
#define TT_OVER_WITH_DELIMS 4 /* = 0x4 */
#define TT_ATOP_WITH_DELIMS 5 /* = 0x5 */

/* Subcommand codes for box-related commands. */

#define BOX_CODE 0 /* = 0x0 */
#define COPY_CODE 1 /* = 0x1 */
#define LAST_BOX_CODE 2 /* = 0x2 */
#define VSPLIT_CODE 3 /* = 0x3 */
#define VTOP_CODE 4 /* = 0x4 */
#define TT_VBOX_CODE 5 /* = 0x5 */
#define TT_HBOX_CODE 108 /* = 0x6c */

/* Subcommand codes for the CONVERT command. */

#define NUMBER_CODE 0 /* = 0x0 */
#define ROMAN_NUMERAL_CODE 1 /* = 0x1 */
#define STRING_CODE 2 /* = 0x2 */
#define MEANING_CODE 3 /* = 0x3 */
#define FONT_NAME_CODE 4 /* = 0x4 */
#define ETEX_CONVERT_BASE 5 /* = 0x5 */
#define ETEX_REVISION_CODE 5 /* = 0x5 */
#define ETEX_CONVERT_CODES 6 /* = 0x6 */
#define EXPANDED_CODE 6 /* = 0x6 */
#define PDFTEX_FIRST_EXPAND_CODE 7 /* = 0x7 */
#define LEFT_MARGIN_KERN_CODE 16 /* = 0x10 */
#define RIGHT_MARGIN_KERN_CODE 17 /* = 0x11 */
#define PDF_STRCMP_CODE 18 /* = 0x12 */
#define PDF_CREATION_DATE_CODE 22 /* = 0x16 */
#define PDF_FILE_MOD_DATE_CODE 23 /* = 0x17 */
#define PDF_FILE_SIZE_CODE 24 /* = 0x18 */
#define PDF_MDFIVE_SUM_CODE 25 /* = 0x19 */
#define PDF_FILE_DUMP_CODE 26 /* = 0x1a */
#define UNIFORM_DEVIATE_CODE 29 /* = 0x1d */
#define NORMAL_DEVIATE_CODE 30 /* = 0x1e */
#define PDFTEX_CONVERT_CODES 33 /* = 0x21 */
#define XETEX_FIRST_EXPAND_CODE 33 /* = 0x21 */
#define XETEX_REVISION_CODE 33 /* = 0x21 */
#define XETEX_VARIATION_NAME_CODE 34 /* = 0x22 */
#define XETEX_FEATURE_NAME_CODE 35 /* = 0x23 */
#define XETEX_SELECTOR_NAME_CODE 36 /* = 0x24 */
#define XETEX_GLYPH_NAME_CODE 37 /* = 0x25 */
#define XETEX_UCHAR_CODE 38 /* = 0x26 */
#define XETEX_UCHARCAT_CODE 39 /* = 0x27 */
#define JOB_NAME_CODE 40 /* = 0x28 */
#define XETEX_CONVERT_CODES 40 /* = 0x28 */

/* Subcommand codes for the EXTENSION command. */

#define IMMEDIATE_CODE 4 /* = 0x4 */
#define SET_LANGUAGE_CODE 5 /* = 0x5 */
#define RESET_TIMER_CODE 31 /* = 0x1f */
#define SET_RANDOM_SEED_CODE 33 /* = 0x21 */
#define PIC_FILE_CODE 41 /* = 0x29 */
#define PDF_FILE_CODE 42 /* = 0x2a */
#define GLYPH_CODE 43 /* = 0x2b */
#define XETEX_INPUT_ENCODING_EXTENSION_CODE 44 /* = 0x2c */
#define XETEX_DEFAULT_ENCODING_EXTENSION_CODE 45 /* = 0x2d */
#define XETEX_LINEBREAK_LOCALE_EXTENSION_CODE 46 /* = 0x2e */

/* Subcommand codes for the FI_OR_ELSE command. */

#define FI_CODE 2 /* = 0x2 */
#define ELSE_CODE 3 /* = 0x3 */
#define OR_CODE 4 /* = 0x4 */

/* Subcommand codes for the IF_TEST command. */

#define IF_CHAR_CODE 0 /* = 0x0 */
#define IF_CAT_CODE 1 /* = 0x1 */
#define IF_INT_CODE 2 /* = 0x2 */
#define IF_DIM_CODE 3 /* = 0x3 */
#define IF_ODD_CODE 4 /* = 0x4 */
#define IF_VMODE_CODE 5 /* = 0x5 */
#define IF_HMODE_CODE 6 /* = 0x6 */
#define IF_MMODE_CODE 7 /* = 0x7 */
#define IF_INNER_CODE 8 /* = 0x8 */
#define IF_VOID_CODE 9 /* = 0x9 */
#define IF_HBOX_CODE 10 /* = 0xa */
#define IF_VBOX_CODE 11 /* = 0xb */
#define IFX_CODE 12 /* = 0xc */
#define IF_EOF_CODE 13 /* = 0xd */
#define IF_TRUE_CODE 14 /* = 0xe */
#define IF_FALSE_CODE 15 /* = 0xf */
#define IF_CASE_CODE 16 /* = 0x10 */
#define IF_DEF_CODE 17 /* = 0x11 */
#define IF_CS_CODE 18 /* = 0x12 */
#define IF_FONT_CHAR_CODE 19 /* = 0x13 */
#define IF_IN_CSNAME_CODE 20 /* = 0x14 */
#define IF_PRIMITIVE_CODE 21 /* = 0x15 */

/* Subcommand codes for the LAST_ITEM command. */

#define INT_VAL 0 /* = 0x0 */
#define DIMEN_VAL 1 /* = 0x1 */
#define GLUE_VAL 2 /* = 0x2 */
#define LAST_NODE_TYPE_CODE 3 /* = 0x3 */
#define INPUT_LINE_NO_CODE 4 /* = 0x4 */
#define BADNESS_CODE 5 /* = 0x5 */
#define PDFTEX_FIRST_RINT_CODE 6 /* = 0x6 */
#define PDF_LAST_X_POS_CODE 12 /* = 0xc */
#define PDF_LAST_Y_POS_CODE 13 /* = 0xd */
#define ELAPSED_TIME_CODE 16 /* = 0x10 */
#define PDF_SHELL_ESCAPE_CODE 17 /* = 0x11 */
#define RANDOM_SEED_CODE 18 /* = 0x12 */
#define ETEX_INT 19 /* = 0x13 */
#define ETEX_VERSION_CODE 19 /* = 0x13 */
#define CURRENT_GROUP_LEVEL_CODE 20 /* = 0x14 */
#define CURRENT_GROUP_TYPE_CODE 21 /* = 0x15 */
#define CURRENT_IF_LEVEL_CODE 22 /* = 0x16 */
#define CURRENT_IF_TYPE_CODE 23 /* = 0x17 */
#define CURRENT_IF_BRANCH_CODE 24 /* = 0x18 */
#define GLUE_STRETCH_ORDER_CODE 25 /* = 0x19 */
#define GLUE_SHRINK_ORDER_CODE 26 /* = 0x1a */
#define XETEX_INT 27 /* = 0x1b */
#define XETEX_VERSION_CODE 27 /* = 0x1b */
#define XETEX_COUNT_GLYPHS_CODE 28 /* = 0x1c */
#define XETEX_COUNT_VARIATIONS_CODE 29 /* = 0x1d */
#define XETEX_VARIATION_CODE 30 /* = 0x1e */
#define XETEX_FIND_VARIATION_BY_NAME_CODE 31 /* = 0x1f */
#define XETEX_VARIATION_MIN_CODE 32 /* = 0x20 */
#define XETEX_VARIATION_MAX_CODE 33 /* = 0x21 */
#define XETEX_VARIATION_DEFAULT_CODE 34 /* = 0x22 */
#define XETEX_COUNT_FEATURES_CODE 35 /* = 0x23 */
#define XETEX_FEATURE_CODE_CODE 36 /* = 0x24 */
#define XETEX_FIND_FEATURE_BY_NAME_CODE 37 /* = 0x25 */
#define XETEX_IS_EXCLUSIVE_FEATURE_CODE 38 /* = 0x26 */
#define XETEX_COUNT_SELECTORS_CODE 39 /* = 0x27 */
#define XETEX_SELECTOR_CODE_CODE 40 /* = 0x28 */
#define XETEX_FIND_SELECTOR_BY_NAME_CODE 41 /* = 0x29 */
#define XETEX_IS_DEFAULT_SELECTOR_CODE 42 /* = 0x2a */
#define XETEX_OT_COUNT_SCRIPTS_CODE 43 /* = 0x2b */
#define XETEX_OT_COUNT_LANGUAGES_CODE 44 /* = 0x2c */
#define XETEX_OT_COUNT_FEATURES_CODE 45 /* = 0x2d */
#define XETEX_OT_SCRIPT_CODE 46 /* = 0x2e */
#define XETEX_OT_LANGUAGE_CODE 47 /* = 0x2f */
#define XETEX_OT_FEATURE_CODE 48 /* = 0x30 */
#define XETEX_MAP_CHAR_TO_GLYPH_CODE 49 /* = 0x31 */
#define XETEX_GLYPH_INDEX_CODE 50 /* = 0x32 */
#define XETEX_FONT_TYPE_CODE 51 /* = 0x33 */
#define XETEX_FIRST_CHAR_CODE 52 /* = 0x34 */
#define XETEX_LAST_CHAR_CODE 53 /* = 0x35 */
#define XETEX_PDF_PAGE_COUNT_CODE 54 /* = 0x36 */
#define XETEX_LAST_ITEM_CODES 54 /* = 0x36 */
#define XETEX_DIM 55 /* = 0x37 */
#define XETEX_GLYPH_BOUNDS_CODE 55 /* = 0x37 */
#define XETEX_LAST_DIM_CODES 55 /* = 0x37 */
#define ETEX_DIM 56 /* = 0x38 */
#define FONT_CHAR_WD_CODE 56 /* = 0x38 */
#define FONT_CHAR_HT_CODE 57 /* = 0x39 */
#define FONT_CHAR_DP_CODE 58 /* = 0x3a */
#define FONT_CHAR_IC_CODE 59 /* = 0x3b */
#define PAR_SHAPE_LENGTH_CODE 60 /* = 0x3c */
#define PAR_SHAPE_INDENT_CODE 61 /* = 0x3d */
#define PAR_SHAPE_DIMEN_CODE 62 /* = 0x3e */
#define GLUE_STRETCH_CODE 63 /* = 0x3f */
#define GLUE_SHRINK_CODE 64 /* = 0x40 */
#define ETEX_GLUE 65 /* = 0x41 */
#define MU_TO_GLUE_CODE 65 /* = 0x41 */
#define ETEX_MU 66 /* = 0x42 */
#define GLUE_TO_MU_CODE 66 /* = 0x42 */
#define ETEX_EXPR 67 /* = 0x43 */
#define TT_ETEX_NUM_EXPR_CODE 67 /* = 0x43 */
#define TT_ETEX_DIM_EXPR_CODE 68 /* = 0x44 */
#define TT_ETEX_GLUE_EXPR_CODE 69 /* = 0x45 */
#define TT_ETEX_MU_EXPR_CODE 70 /* = 0x46 */

/* Subcommand codes for the SET_INTERACTION command. */

#define BATCH_MODE 0 /* = 0x0 */
#define NONSTOP_MODE 1 /* = 0x1 */
#define SCROLL_MODE 2 /* = 0x2 */
#define ERROR_STOP_MODE 3 /* = 0x3 */

/* Subcommand codes for the SET_BOX_DIMEN command. */

#define WIDTH_OFFSET 1 /* = 0x1 */
#define DEPTH_OFFSET 2 /* = 0x2 */
#define HEIGHT_OFFSET 3 /* = 0x3 */

/* Subcommand codes for the SHORTHAND_DEF command. */

#define CHAR_DEF_CODE 0 /* = 0x0 */
#define MATH_CHAR_DEF_CODE 1 /* = 0x1 */
#define COUNT_DEF_CODE 2 /* = 0x2 */
#define DIMEN_DEF_CODE 3 /* = 0x3 */
#define SKIP_DEF_CODE 4 /* = 0x4 */
#define MU_SKIP_DEF_CODE 5 /* = 0x5 */
#define TOKS_DEF_CODE 6 /* = 0x6 */
#define CHAR_SUB_DEF_CODE 7 /* = 0x7 */
#define XETEX_MATH_CHAR_NUM_DEF_CODE 8 /* = 0x8 */
#define XETEX_MATH_CHAR_DEF_CODE 9 /* = 0x9 */

/* Subcommand codes for skip-related command. */

#define FIL_CODE 0 /* = 0x0 */
#define FILL_CODE 1 /* = 0x1 */
#define SS_CODE 2 /* = 0x2 */
#define FIL_NEG_CODE 3 /* = 0x3 */
#define SKIP_CODE 4 /* = 0x4 */
#define MSKIP_CODE 5 /* = 0x5 */

/* Subcommand codes for the TAB_MARK and CAR_RET commands. */

#define SPAN_CODE 1114113 /* = 0x110001 */
#define CR_CODE 1114114 /* = 0x110002 */
#define CR_CR_CODE 1114115 /* = 0x110003 */

/* Subcommand codes for the TOP_BOT_MARK command. */

#define TOP_MARK_CODE 0 /* = 0x0 */
#define FIRST_MARK_CODE 1 /* = 0x1 */
#define BOT_MARK_CODE 2 /* = 0x2 */
#define SPLIT_FIRST_MARK_CODE 3 /* = 0x3 */
#define SPLIT_BOT_MARK_CODE 4 /* = 0x4 */
#define TT_TOP_MARKS_CODE 5 /* = 0x5 */
#define TT_FIRST_MARKS_CODE 6 /* = 0x6 */
#define TT_BOT_MARKS_CODE 7 /* = 0x7 */
#define TT_SPLIT_FIRST_MARKS_CODE 8 /* = 0x8 */
#define TT_SPLIT_BOT_MARKS_CODE 9 /* = 0x9 */

/* Subcommand codes for the XRAY command. */

#define SHOW_CODE 0 /* = 0x0 */
#define SHOW_BOX_CODE 1 /* = 0x1 */
#define SHOW_THE_CODE 2 /* = 0x2 */
#define SHOW_LISTS 3 /* = 0x3 */
#define SHOW_GROUPS 4 /* = 0x4 */
#define SHOW_TOKENS 5 /* = 0x5 */
#define SHOW_IFS 6 /* = 0x6 */

/* Primitives */

enum xetex_format_primitive_extra_init_t {
    xf_prim_init_none = 0,
    xf_prim_init_par = 1,
    xf_prim_init_write = 2
    /* Other values should be used to set up a "frozen" primitive */
};

typedef struct xetex_format_primitive_def_t {
    char const *name;
    eight_bits cmd;
    int32_t chr;
    int32_t extra_init;
} xetex_format_primitive_def_t;

#define XETEX_FORMAT_PRIMITIVE_INITIALIZERS \
    { "relax", RELAX, TOO_BIG_USV, FROZEN_RELAX }, \
    { "span", TAB_MARK, SPAN_CODE, xf_prim_init_none }, \
    { "cr", CAR_RET, CR_CODE, FROZEN_CR }, \
    { "crcr", CAR_RET, CR_CR_CODE, xf_prim_init_none }, \
    { "par", PAR_END, TOO_BIG_USV, xf_prim_init_par }, \
    { "end", STOP, 0, xf_prim_init_none }, \
    { "dump", STOP, 1, xf_prim_init_none }, \
    { "delimiter", DELIM_NUM, 0, xf_prim_init_none }, \
    { "Udelimiter", DELIM_NUM, 1, xf_prim_init_none }, \
    { "XeTeXdelimiter", DELIM_NUM, 1, xf_prim_init_none }, \
    { "char", CHAR_NUM, 0, xf_prim_init_none }, \
    { "mathchar", MATH_CHAR_NUM, 0, xf_prim_init_none }, \
    { "Umathcharnum", MATH_CHAR_NUM, 1, xf_prim_init_none }, \
    { "XeTeXmathcharnum", MATH_CHAR_NUM, 1, xf_prim_init_none }, \
    { "Umathchar", MATH_CHAR_NUM, 2, xf_prim_init_none }, \
    { "XeTeXmathchar", MATH_CHAR_NUM, 2, xf_prim_init_none }, \
    { "mark", MARK, 0, xf_prim_init_none }, \
    { "marks", MARK, 5, xf_prim_init_none }, \
    { "show", XRAY, SHOW_CODE, xf_prim_init_none }, \
    { "showbox", XRAY, SHOW_BOX_CODE, xf_prim_init_none }, \
    { "showthe", XRAY, SHOW_THE_CODE, xf_prim_init_none }, \
    { "showlists", XRAY, SHOW_LISTS, xf_prim_init_none }, \
    { "showgroups", XRAY, SHOW_GROUPS, xf_prim_init_none }, \
    { "showtokens", XRAY, SHOW_TOKENS, xf_prim_init_none }, \
    { "showifs", XRAY, SHOW_IFS, xf_prim_init_none }, \
    { "box", MAKE_BOX, BOX_CODE, xf_prim_init_none }, \
    { "copy", MAKE_BOX, COPY_CODE, xf_prim_init_none }, \
    { "lastbox", MAKE_BOX, LAST_BOX_CODE, xf_prim_init_none }, \
    { "vsplit", MAKE_BOX, VSPLIT_CODE, xf_prim_init_none }, \
    { "vtop", MAKE_BOX, VTOP_CODE, xf_prim_init_none }, \
    { "vbox", MAKE_BOX, TT_VBOX_CODE, xf_prim_init_none }, \
    { "hbox", MAKE_BOX, TT_HBOX_CODE, xf_prim_init_none }, \
    { "moveright", HMOVE, 0, xf_prim_init_none }, \
    { "moveleft", HMOVE, 1, xf_prim_init_none }, \
    { "lower", VMOVE, 0, xf_prim_init_none }, \
    { "raise", VMOVE, 1, xf_prim_init_none }, \
    { "unhbox", UN_HBOX, BOX_CODE, xf_prim_init_none }, \
    { "unhcopy", UN_HBOX, COPY_CODE, xf_prim_init_none }, \
    { "unvbox", UN_VBOX, BOX_CODE, xf_prim_init_none }, \
    { "unvcopy", UN_VBOX, COPY_CODE, xf_prim_init_none }, \
    { "pagediscards", UN_VBOX, LAST_BOX_CODE, xf_prim_init_none }, \
    { "splitdiscards", UN_VBOX, VSPLIT_CODE, xf_prim_init_none }, \
    { "unskip", REMOVE_ITEM, GLUE_NODE, xf_prim_init_none }, \
    { "unkern", REMOVE_ITEM, KERN_NODE, xf_prim_init_none }, \
    { "unpenalty", REMOVE_ITEM, PENALTY_NODE, xf_prim_init_none }, \
    { "hfil", HSKIP, FIL_CODE, xf_prim_init_none }, \
    { "hfill", HSKIP, FILL_CODE, xf_prim_init_none }, \
    { "hss", HSKIP, SS_CODE, xf_prim_init_none }, \
    { "hfilneg", HSKIP, FIL_NEG_CODE, xf_prim_init_none }, \
    { "hskip", HSKIP, SKIP_CODE, xf_prim_init_none }, \
    { "vfil", VSKIP, FIL_CODE, xf_prim_init_none }, \
    { "vfill", VSKIP, FILL_CODE, xf_prim_init_none }, \
    { "vss", VSKIP, SS_CODE, xf_prim_init_none }, \
    { "vfilneg", VSKIP, FIL_NEG_CODE, xf_prim_init_none }, \
    { "vskip", VSKIP, SKIP_CODE, xf_prim_init_none }, \
    { "mskip", MSKIP, MSKIP_CODE, xf_prim_init_none }, \
    { "kern", KERN, EXPLICIT, xf_prim_init_none }, \
    { "mkern", MKERN, MU_GLUE, xf_prim_init_none }, \
    { "shipout", LEADER_SHIP, MU_GLUE, xf_prim_init_none }, \
    { "leaders", LEADER_SHIP, A_LEADERS, xf_prim_init_none }, \
    { "cleaders", LEADER_SHIP, C_LEADERS, xf_prim_init_none }, \
    { "xleaders", LEADER_SHIP, X_LEADERS, xf_prim_init_none }, \
    { "halign", HALIGN, 0, xf_prim_init_none }, \
    { "valign", VALIGN, BEFORE, xf_prim_init_none }, \
    { "beginL", VALIGN, BEGIN_L_CODE, xf_prim_init_none }, \
    { "endL", VALIGN, END_L_CODE, xf_prim_init_none }, \
    { "beginR", VALIGN, BEGIN_R_CODE, xf_prim_init_none }, \
    { "endR", VALIGN, END_R_CODE, xf_prim_init_none }, \
    { "noalign", NO_ALIGN, 0, xf_prim_init_none }, \
    { "vrule", VRULE, 0, xf_prim_init_none }, \
    { "hrule", HRULE, 0, xf_prim_init_none }, \
    { "insert", INSERT, 0, xf_prim_init_none }, \
    { "vadjust", VADJUST, 0, xf_prim_init_none }, \
    { "ignorespaces", IGNORE_SPACES, 0, xf_prim_init_none }, \
    { "afterassignment", AFTER_ASSIGNMENT, 0, xf_prim_init_none }, \
    { "aftergroup", AFTER_GROUP, 0, xf_prim_init_none }, \
    { "penalty", BREAK_PENALTY, 0, xf_prim_init_none }, \
    { "noindent", START_PAR, 0, xf_prim_init_none }, \
    { "indent", START_PAR, 1, xf_prim_init_none }, \
    { "/", ITAL_CORR, 0, xf_prim_init_none }, \
    { "accent", ACCENT, 0, xf_prim_init_none }, \
    { "mathaccent", MATH_ACCENT, 0, xf_prim_init_none }, \
    { "Umathaccent", MATH_ACCENT, 1, xf_prim_init_none }, \
    { "XeTeXmathaccent", MATH_ACCENT, 1, xf_prim_init_none }, \
    { "discretionary", DISCRETIONARY, 0, xf_prim_init_none }, \
    { "-", DISCRETIONARY, 1, xf_prim_init_none }, \
    { "eqno", EQ_NO, 0, xf_prim_init_none }, \
    { "leqno", EQ_NO, 1, xf_prim_init_none }, \
    { "middle", LEFT_RIGHT, TT_LEFT_RIGHT_MIDDLE_MODE, xf_prim_init_none }, \
    { "left", LEFT_RIGHT, LEFT_NOAD, xf_prim_init_none }, \
    { "right", LEFT_RIGHT, RIGHT_NOAD, FROZEN_RIGHT }, \
    { "mathord", MATH_COMP, ORD_NOAD, xf_prim_init_none }, \
    { "mathop", MATH_COMP, OP_NOAD, xf_prim_init_none }, \
    { "mathbin", MATH_COMP, BIN_NOAD, xf_prim_init_none }, \
    { "mathrel", MATH_COMP, REL_NOAD, xf_prim_init_none }, \
    { "mathopen", MATH_COMP, OPEN_NOAD, xf_prim_init_none }, \
    { "mathclose", MATH_COMP, CLOSE_NOAD, xf_prim_init_none }, \
    { "mathpunct", MATH_COMP, PUNCT_NOAD, xf_prim_init_none }, \
    { "mathinner", MATH_COMP, INNER_NOAD, xf_prim_init_none }, \
    { "underline", MATH_COMP, UNDER_NOAD, xf_prim_init_none }, \
    { "overline", MATH_COMP, OVER_NOAD, xf_prim_init_none }, \
    { "displaylimits", LIMIT_SWITCH, NORMAL, xf_prim_init_none }, \
    { "limits", LIMIT_SWITCH, LIMITS, xf_prim_init_none }, \
    { "nolimits", LIMIT_SWITCH, NO_LIMITS, xf_prim_init_none }, \
    { "above", ABOVE, ABOVE_CODE, xf_prim_init_none }, \
    { "over", ABOVE, OVER_CODE, xf_prim_init_none }, \
    { "atop", ABOVE, ATOP_CODE, xf_prim_init_none }, \
    { "abovewithdelims", ABOVE, TT_ABOVE_WITH_DELIMS, xf_prim_init_none }, \
    { "overwithdelims", ABOVE, TT_OVER_WITH_DELIMS, xf_prim_init_none }, \
    { "atopwithdelims", ABOVE, TT_ATOP_WITH_DELIMS, xf_prim_init_none }, \
    { "displaystyle", MATH_STYLE, DISPLAY_STYLE, xf_prim_init_none }, \
    { "textstyle", MATH_STYLE, TEXT_STYLE, xf_prim_init_none }, \
    { "scriptstyle", MATH_STYLE, SCRIPT_STYLE, xf_prim_init_none }, \
    { "scriptscriptstyle", MATH_STYLE, SCRIPT_SCRIPT_STYLE, xf_prim_init_none }, \
    { "mathchoice", MATH_CHOICE, 0, xf_prim_init_none }, \
    { "nonscript", NON_SCRIPT, 0, xf_prim_init_none }, \
    { "vcenter", VCENTER, 0, xf_prim_init_none }, \
    { "lowercase", CASE_SHIFT, LC_CODE_BASE, xf_prim_init_none }, \
    { "uppercase", CASE_SHIFT, UC_CODE_BASE, xf_prim_init_none }, \
    { "message", MESSAGE, 0, xf_prim_init_none }, \
    { "errmessage", MESSAGE, 1, xf_prim_init_none }, \
    { "openout", EXTENSION, OPEN_NODE, xf_prim_init_none }, \
    { "write", EXTENSION, WRITE_NODE, xf_prim_init_write }, \
    { "closeout", EXTENSION, CLOSE_NODE, xf_prim_init_none }, \
    { "special", EXTENSION, SPECIAL_NODE, FROZEN_SPECIAL }, \
    { "immediate", EXTENSION, IMMEDIATE_CODE, xf_prim_init_none }, \
    { "setlanguage", EXTENSION, SET_LANGUAGE_CODE, xf_prim_init_none }, \
    { "pdfsavepos", EXTENSION, PDF_SAVE_POS_NODE, xf_prim_init_none }, \
    { "resettimer", EXTENSION, RESET_TIMER_CODE, xf_prim_init_none }, \
    { "setrandomseed", EXTENSION, SET_RANDOM_SEED_CODE, xf_prim_init_none }, \
    { "XeTeXpicfile", EXTENSION, PIC_FILE_CODE, xf_prim_init_none }, \
    { "XeTeXpdffile", EXTENSION, PDF_FILE_CODE, xf_prim_init_none }, \
    { "XeTeXglyph", EXTENSION, GLYPH_CODE, xf_prim_init_none }, \
    { "XeTeXinputencoding", EXTENSION, XETEX_INPUT_ENCODING_EXTENSION_CODE, xf_prim_init_none }, \
    { "XeTeXdefaultencoding", EXTENSION, XETEX_DEFAULT_ENCODING_EXTENSION_CODE, xf_prim_init_none }, \
    { "XeTeXlinebreaklocale", EXTENSION, XETEX_LINEBREAK_LOCALE_EXTENSION_CODE, xf_prim_init_none }, \
    { "closein", IN_STREAM, 0, xf_prim_init_none }, \
    { "openin", IN_STREAM, 1, xf_prim_init_none }, \
    { "begingroup", BEGIN_GROUP, 0, xf_prim_init_none }, \
    { "endgroup", END_GROUP, 0, FROZEN_END_GROUP }, \
    { "omit", OMIT, 0, xf_prim_init_none }, \
    { " ", EX_SPACE, 0, xf_prim_init_none }, \
    { "noboundary", NO_BOUNDARY, 0, xf_prim_init_none }, \
    { "radical", RADICAL, 0, xf_prim_init_none }, \
    { "Uradical", RADICAL, 1, xf_prim_init_none }, \
    { "XeTeXradical", RADICAL, 1, xf_prim_init_none }, \
    { "endcsname", END_CS_NAME, 0, xf_prim_init_none }, \
    { "lastpenalty", LAST_ITEM, INT_VAL, xf_prim_init_none }, \
    { "lastkern", LAST_ITEM, DIMEN_VAL, xf_prim_init_none }, \
    { "lastskip", LAST_ITEM, GLUE_VAL, xf_prim_init_none }, \
    { "lastnodetype", LAST_ITEM, LAST_NODE_TYPE_CODE, xf_prim_init_none }, \
    { "inputlineno", LAST_ITEM, INPUT_LINE_NO_CODE, xf_prim_init_none }, \
    { "badness", LAST_ITEM, BADNESS_CODE, xf_prim_init_none }, \
    { "pdflastxpos", LAST_ITEM, PDF_LAST_X_POS_CODE, xf_prim_init_none }, \
    { "pdflastypos", LAST_ITEM, PDF_LAST_Y_POS_CODE, xf_prim_init_none }, \
    { "elapsedtime", LAST_ITEM, ELAPSED_TIME_CODE, xf_prim_init_none }, \
    { "shellescape", LAST_ITEM, PDF_SHELL_ESCAPE_CODE, xf_prim_init_none }, \
    { "randomseed", LAST_ITEM, RANDOM_SEED_CODE, xf_prim_init_none }, \
    { "eTeXversion", LAST_ITEM, ETEX_VERSION_CODE, xf_prim_init_none }, \
    { "currentgrouplevel", LAST_ITEM, CURRENT_GROUP_LEVEL_CODE, xf_prim_init_none }, \
    { "currentgrouptype", LAST_ITEM, CURRENT_GROUP_TYPE_CODE, xf_prim_init_none }, \
    { "currentiflevel", LAST_ITEM, CURRENT_IF_LEVEL_CODE, xf_prim_init_none }, \
    { "currentiftype", LAST_ITEM, CURRENT_IF_TYPE_CODE, xf_prim_init_none }, \
    { "currentifbranch", LAST_ITEM, CURRENT_IF_BRANCH_CODE, xf_prim_init_none }, \
    { "gluestretchorder", LAST_ITEM, GLUE_STRETCH_ORDER_CODE, xf_prim_init_none }, \
    { "glueshrinkorder", LAST_ITEM, GLUE_SHRINK_ORDER_CODE, xf_prim_init_none }, \
    { "XeTeXversion", LAST_ITEM, XETEX_VERSION_CODE, xf_prim_init_none }, \
    { "XeTeXcountglyphs", LAST_ITEM, XETEX_COUNT_GLYPHS_CODE, xf_prim_init_none }, \
    { "XeTeXcountvariations", LAST_ITEM, XETEX_COUNT_VARIATIONS_CODE, xf_prim_init_none }, \
    { "XeTeXvariation", LAST_ITEM, XETEX_VARIATION_CODE, xf_prim_init_none }, \
    { "XeTeXfindvariationbyname", LAST_ITEM, XETEX_FIND_VARIATION_BY_NAME_CODE, xf_prim_init_none }, \
    { "XeTeXvariationmin", LAST_ITEM, XETEX_VARIATION_MIN_CODE, xf_prim_init_none }, \
    { "XeTeXvariationmax", LAST_ITEM, XETEX_VARIATION_MAX_CODE, xf_prim_init_none }, \
    { "XeTeXvariationdefault", LAST_ITEM, XETEX_VARIATION_DEFAULT_CODE, xf_prim_init_none }, \
    { "XeTeXcountfeatures", LAST_ITEM, XETEX_COUNT_FEATURES_CODE, xf_prim_init_none }, \
    { "XeTeXfeaturecode", LAST_ITEM, XETEX_FEATURE_CODE_CODE, xf_prim_init_none }, \
    { "XeTeXfindfeaturebyname", LAST_ITEM, XETEX_FIND_FEATURE_BY_NAME_CODE, xf_prim_init_none }, \
    { "XeTeXisexclusivefeature", LAST_ITEM, XETEX_IS_EXCLUSIVE_FEATURE_CODE, xf_prim_init_none }, \
    { "XeTeXcountselectors", LAST_ITEM, XETEX_COUNT_SELECTORS_CODE, xf_prim_init_none }, \
    { "XeTeXselectorcode", LAST_ITEM, XETEX_SELECTOR_CODE_CODE, xf_prim_init_none }, \
    { "XeTeXfindselectorbyname", LAST_ITEM, XETEX_FIND_SELECTOR_BY_NAME_CODE, xf_prim_init_none }, \
    { "XeTeXisdefaultselector", LAST_ITEM, XETEX_IS_DEFAULT_SELECTOR_CODE, xf_prim_init_none }, \
    { "XeTeXOTcountscripts", LAST_ITEM, XETEX_OT_COUNT_SCRIPTS_CODE, xf_prim_init_none }, \
    { "XeTeXOTcountlanguages", LAST_ITEM, XETEX_OT_COUNT_LANGUAGES_CODE, xf_prim_init_none }, \
    { "XeTeXOTcountfeatures", LAST_ITEM, XETEX_OT_COUNT_FEATURES_CODE, xf_prim_init_none }, \
    { "XeTeXOTscripttag", LAST_ITEM, XETEX_OT_SCRIPT_CODE, xf_prim_init_none }, \
    { "XeTeXOTlanguagetag", LAST_ITEM, XETEX_OT_LANGUAGE_CODE, xf_prim_init_none }, \
    { "XeTeXOTfeaturetag", LAST_ITEM, XETEX_OT_FEATURE_CODE, xf_prim_init_none }, \
    { "XeTeXcharglyph", LAST_ITEM, XETEX_MAP_CHAR_TO_GLYPH_CODE, xf_prim_init_none }, \
    { "XeTeXglyphindex", LAST_ITEM, XETEX_GLYPH_INDEX_CODE, xf_prim_init_none }, \
    { "XeTeXfonttype", LAST_ITEM, XETEX_FONT_TYPE_CODE, xf_prim_init_none }, \
    { "XeTeXfirstfontchar", LAST_ITEM, XETEX_FIRST_CHAR_CODE, xf_prim_init_none }, \
    { "XeTeXlastfontchar", LAST_ITEM, XETEX_LAST_CHAR_CODE, xf_prim_init_none }, \
    { "XeTeXpdfpagecount", LAST_ITEM, XETEX_PDF_PAGE_COUNT_CODE, xf_prim_init_none }, \
    { "XeTeXglyphbounds", LAST_ITEM, XETEX_GLYPH_BOUNDS_CODE, xf_prim_init_none }, \
    { "fontcharwd", LAST_ITEM, FONT_CHAR_WD_CODE, xf_prim_init_none }, \
    { "fontcharht", LAST_ITEM, FONT_CHAR_HT_CODE, xf_prim_init_none }, \
    { "fontchardp", LAST_ITEM, FONT_CHAR_DP_CODE, xf_prim_init_none }, \
    { "fontcharic", LAST_ITEM, FONT_CHAR_IC_CODE, xf_prim_init_none }, \
    { "parshapelength", LAST_ITEM, PAR_SHAPE_LENGTH_CODE, xf_prim_init_none }, \
    { "parshapeindent", LAST_ITEM, PAR_SHAPE_INDENT_CODE, xf_prim_init_none }, \
    { "parshapedimen", LAST_ITEM, PAR_SHAPE_DIMEN_CODE, xf_prim_init_none }, \
    { "gluestretch", LAST_ITEM, GLUE_STRETCH_CODE, xf_prim_init_none }, \
    { "glueshrink", LAST_ITEM, GLUE_SHRINK_CODE, xf_prim_init_none }, \
    { "mutoglue", LAST_ITEM, MU_TO_GLUE_CODE, xf_prim_init_none }, \
    { "gluetomu", LAST_ITEM, GLUE_TO_MU_CODE, xf_prim_init_none }, \
    { "numexpr", LAST_ITEM, TT_ETEX_NUM_EXPR_CODE, xf_prim_init_none }, \
    { "dimexpr", LAST_ITEM, TT_ETEX_DIM_EXPR_CODE, xf_prim_init_none }, \
    { "glueexpr", LAST_ITEM, TT_ETEX_GLUE_EXPR_CODE, xf_prim_init_none }, \
    { "muexpr", LAST_ITEM, TT_ETEX_MU_EXPR_CODE, xf_prim_init_none }, \
    { "toks", TOKS_REGISTER, 0, xf_prim_init_none }, \
    { "fontdimen", ASSIGN_FONT_DIMEN, 0, xf_prim_init_none }, \
    { "hyphenchar", ASSIGN_FONT_INT, 0, xf_prim_init_none }, \
    { "skewchar", ASSIGN_FONT_INT, 1, xf_prim_init_none }, \
    { "lpcode", ASSIGN_FONT_INT, 2, xf_prim_init_none }, \
    { "rpcode", ASSIGN_FONT_INT, 3, xf_prim_init_none }, \
    { "prevdepth", SET_AUX, VMODE, xf_prim_init_none }, \
    { "spacefactor", SET_AUX, HMODE, xf_prim_init_none }, \
    { "prevgraf", SET_PREV_GRAF, 0, xf_prim_init_none }, \
    { "pagegoal", SET_PAGE_DIMEN, 0, xf_prim_init_none }, \
    { "pagetotal", SET_PAGE_DIMEN, 1, xf_prim_init_none }, \
    { "pagestretch", SET_PAGE_DIMEN, 2, xf_prim_init_none }, \
    { "pagefilstretch", SET_PAGE_DIMEN, 3, xf_prim_init_none }, \
    { "pagefillstretch", SET_PAGE_DIMEN, 4, xf_prim_init_none }, \
    { "pagefilllstretch", SET_PAGE_DIMEN, 5, xf_prim_init_none }, \
    { "pageshrink", SET_PAGE_DIMEN, 6, xf_prim_init_none }, \
    { "pagedepth", SET_PAGE_DIMEN, 7, xf_prim_init_none }, \
    { "deadcycles", SET_PAGE_INT, 0, xf_prim_init_none }, \
    { "insertpenalties", SET_PAGE_INT, 1, xf_prim_init_none }, \
    { "interactionmode", SET_PAGE_INT, 2, xf_prim_init_none }, \
    { "wd", SET_BOX_DIMEN, WIDTH_OFFSET, xf_prim_init_none }, \
    { "dp", SET_BOX_DIMEN, DEPTH_OFFSET, xf_prim_init_none }, \
    { "ht", SET_BOX_DIMEN, HEIGHT_OFFSET, xf_prim_init_none }, \
    { "catcode", DEF_CODE, CAT_CODE_BASE, xf_prim_init_none }, \
    { "lccode", DEF_CODE, LC_CODE_BASE, xf_prim_init_none }, \
    { "uccode", DEF_CODE, UC_CODE_BASE, xf_prim_init_none }, \
    { "sfcode", DEF_CODE, SF_CODE_BASE, xf_prim_init_none }, \
    { "mathcode", DEF_CODE, MATH_CODE_BASE, xf_prim_init_none }, \
    { "delcode", DEF_CODE, DEL_CODE_BASE, xf_prim_init_none }, \
    { "XeTeXcharclass", XETEX_DEF_CODE, SF_CODE_BASE, xf_prim_init_none }, \
    { "Umathcodenum", XETEX_DEF_CODE, MATH_CODE_BASE, xf_prim_init_none }, \
    { "XeTeXmathcodenum", XETEX_DEF_CODE, MATH_CODE_BASE, xf_prim_init_none }, \
    { "Umathcode", XETEX_DEF_CODE, 6712618, xf_prim_init_none }, \
    { "XeTeXmathcode", XETEX_DEF_CODE, 6712618, xf_prim_init_none }, \
    { "Udelcodenum", XETEX_DEF_CODE, DEL_CODE_BASE, xf_prim_init_none }, \
    { "XeTeXdelcodenum", XETEX_DEF_CODE, DEL_CODE_BASE, xf_prim_init_none }, \
    { "Udelcode", XETEX_DEF_CODE, 7827069, xf_prim_init_none }, \
    { "XeTeXdelcode", XETEX_DEF_CODE, 7827069, xf_prim_init_none }, \
    { "textfont", DEF_FAMILY, 2255401, xf_prim_init_none }, \
    { "scriptfont", DEF_FAMILY, 2255657, xf_prim_init_none }, \
    { "scriptscriptfont", DEF_FAMILY, 2255913, xf_prim_init_none }, \
    { "nullfont", SET_FONT, 0, FROZEN_NULL_FONT }, \
    { "font", DEF_FONT, 0, xf_prim_init_none }, \
    { "count", REGISTER, 0, xf_prim_init_none }, \
    { "dimen", REGISTER, 1, xf_prim_init_none }, \
    { "skip", REGISTER, 2, xf_prim_init_none }, \
    { "muskip", REGISTER, 3, xf_prim_init_none }, \
    { "advance", ADVANCE, 0, xf_prim_init_none }, \
    { "multiply", MULTIPLY, 0, xf_prim_init_none }, \
    { "divide", DIVIDE, 0, xf_prim_init_none }, \
    { "long", PREFIX, 1, xf_prim_init_none }, \
    { "outer", PREFIX, 2, xf_prim_init_none }, \
    { "global", PREFIX, 4, xf_prim_init_none }, \
    { "protected", PREFIX, 8, xf_prim_init_none }, \
    { "let", LET, 0, xf_prim_init_none }, \
    { "futurelet", LET, 1, xf_prim_init_none }, \
    { "chardef", SHORTHAND_DEF, CHAR_DEF_CODE, xf_prim_init_none }, \
    { "mathchardef", SHORTHAND_DEF, MATH_CHAR_DEF_CODE, xf_prim_init_none }, \
    { "countdef", SHORTHAND_DEF, COUNT_DEF_CODE, xf_prim_init_none }, \
    { "dimendef", SHORTHAND_DEF, DIMEN_DEF_CODE, xf_prim_init_none }, \
    { "skipdef", SHORTHAND_DEF, SKIP_DEF_CODE, xf_prim_init_none }, \
    { "muskipdef", SHORTHAND_DEF, MU_SKIP_DEF_CODE, xf_prim_init_none }, \
    { "toksdef", SHORTHAND_DEF, TOKS_DEF_CODE, xf_prim_init_none }, \
    { "Umathcharnumdef", SHORTHAND_DEF, XETEX_MATH_CHAR_NUM_DEF_CODE, xf_prim_init_none }, \
    { "XeTeXmathcharnumdef", SHORTHAND_DEF, XETEX_MATH_CHAR_NUM_DEF_CODE, xf_prim_init_none }, \
    { "Umathchardef", SHORTHAND_DEF, XETEX_MATH_CHAR_DEF_CODE, xf_prim_init_none }, \
    { "XeTeXmathchardef", SHORTHAND_DEF, XETEX_MATH_CHAR_DEF_CODE, xf_prim_init_none }, \
    { "read", READ_TO_CS, 0, xf_prim_init_none }, \
    { "readline", READ_TO_CS, 1, xf_prim_init_none }, \
    { "def", DEF, 0, xf_prim_init_none }, \
    { "gdef", DEF, 1, xf_prim_init_none }, \
    { "edef", DEF, 2, xf_prim_init_none }, \
    { "xdef", DEF, 3, xf_prim_init_none }, \
    { "setbox", SET_BOX, 0, xf_prim_init_none }, \
    { "hyphenation", HYPH_DATA, 0, xf_prim_init_none }, \
    { "patterns", HYPH_DATA, 1, xf_prim_init_none }, \
    { "batchmode", SET_INTERACTION, BATCH_MODE, xf_prim_init_none }, \
    { "nonstopmode", SET_INTERACTION, NONSTOP_MODE, xf_prim_init_none }, \
    { "scrollmode", SET_INTERACTION, SCROLL_MODE, xf_prim_init_none }, \
    { "errorstopmode", SET_INTERACTION, ERROR_STOP_MODE, xf_prim_init_none }, \
    { "expandafter", EXPAND_AFTER, 0, xf_prim_init_none }, \
    { "unless", EXPAND_AFTER, 1, xf_prim_init_none }, \
    { "noexpand", NO_EXPAND, 0, xf_prim_init_none }, \
    { "primitive", NO_EXPAND, 1, xf_prim_init_none }, \
    { "input", INPUT, 0, xf_prim_init_none }, \
    { "endinput", INPUT, 1, xf_prim_init_none }, \
    { "scantokens", INPUT, 2, xf_prim_init_none }, \
    { "if", IF_TEST, IF_CHAR_CODE, xf_prim_init_none }, \
    { "ifcat", IF_TEST, IF_CAT_CODE, xf_prim_init_none }, \
    { "ifnum", IF_TEST, IF_INT_CODE, xf_prim_init_none }, \
    { "ifdim", IF_TEST, IF_DIM_CODE, xf_prim_init_none }, \
    { "ifodd", IF_TEST, IF_ODD_CODE, xf_prim_init_none }, \
    { "ifvmode", IF_TEST, IF_VMODE_CODE, xf_prim_init_none }, \
    { "ifhmode", IF_TEST, IF_HMODE_CODE, xf_prim_init_none }, \
    { "ifmmode", IF_TEST, IF_MMODE_CODE, xf_prim_init_none }, \
    { "ifinner", IF_TEST, IF_INNER_CODE, xf_prim_init_none }, \
    { "ifvoid", IF_TEST, IF_VOID_CODE, xf_prim_init_none }, \
    { "ifhbox", IF_TEST, IF_HBOX_CODE, xf_prim_init_none }, \
    { "ifvbox", IF_TEST, IF_VBOX_CODE, xf_prim_init_none }, \
    { "ifx", IF_TEST, IFX_CODE, xf_prim_init_none }, \
    { "ifeof", IF_TEST, IF_EOF_CODE, xf_prim_init_none }, \
    { "iftrue", IF_TEST, IF_TRUE_CODE, xf_prim_init_none }, \
    { "iffalse", IF_TEST, IF_FALSE_CODE, xf_prim_init_none }, \
    { "ifcase", IF_TEST, IF_CASE_CODE, xf_prim_init_none }, \
    { "ifdefined", IF_TEST, IF_DEF_CODE, xf_prim_init_none }, \
    { "ifcsname", IF_TEST, IF_CS_CODE, xf_prim_init_none }, \
    { "iffontchar", IF_TEST, IF_FONT_CHAR_CODE, xf_prim_init_none }, \
    { "ifincsname", IF_TEST, IF_IN_CSNAME_CODE, xf_prim_init_none }, \
    { "ifprimitive", IF_TEST, IF_PRIMITIVE_CODE, xf_prim_init_none }, \
    { "fi", FI_OR_ELSE, FI_CODE, FROZEN_FI }, \
    { "else", FI_OR_ELSE, ELSE_CODE, xf_prim_init_none }, \
    { "or", FI_OR_ELSE, OR_CODE, xf_prim_init_none }, \
    { "csname", CS_NAME, 0, xf_prim_init_none }, \
    { "number", CONVERT, NUMBER_CODE, xf_prim_init_none }, \
    { "romannumeral", CONVERT, ROMAN_NUMERAL_CODE, xf_prim_init_none }, \
    { "string", CONVERT, STRING_CODE, xf_prim_init_none }, \
    { "meaning", CONVERT, MEANING_CODE, xf_prim_init_none }, \
    { "fontname", CONVERT, FONT_NAME_CODE, xf_prim_init_none }, \
    { "eTeXrevision", CONVERT, ETEX_REVISION_CODE, xf_prim_init_none }, \
    { "expanded", CONVERT, EXPANDED_CODE, xf_prim_init_none }, \
    { "leftmarginkern", CONVERT, LEFT_MARGIN_KERN_CODE, xf_prim_init_none }, \
    { "rightmarginkern", CONVERT, RIGHT_MARGIN_KERN_CODE, xf_prim_init_none }, \
    { "strcmp", CONVERT, PDF_STRCMP_CODE, xf_prim_init_none }, \
    { "creationdate", CONVERT, PDF_CREATION_DATE_CODE, xf_prim_init_none }, \
    { "filemoddate", CONVERT, PDF_FILE_MOD_DATE_CODE, xf_prim_init_none }, \
    { "filesize", CONVERT, PDF_FILE_SIZE_CODE, xf_prim_init_none }, \
    { "mdfivesum", CONVERT, PDF_MDFIVE_SUM_CODE, xf_prim_init_none }, \
    { "filedump", CONVERT, PDF_FILE_DUMP_CODE, xf_prim_init_none }, \
    { "uniformdeviate", CONVERT, UNIFORM_DEVIATE_CODE, xf_prim_init_none }, \
    { "normaldeviate", CONVERT, NORMAL_DEVIATE_CODE, xf_prim_init_none }, \
    { "XeTeXrevision", CONVERT, XETEX_REVISION_CODE, xf_prim_init_none }, \
    { "XeTeXvariationname", CONVERT, XETEX_VARIATION_NAME_CODE, xf_prim_init_none }, \
    { "XeTeXfeaturename", CONVERT, XETEX_FEATURE_NAME_CODE, xf_prim_init_none }, \
    { "XeTeXselectorname", CONVERT, XETEX_SELECTOR_NAME_CODE, xf_prim_init_none }, \
    { "XeTeXglyphname", CONVERT, XETEX_GLYPH_NAME_CODE, xf_prim_init_none }, \
    { "Uchar", CONVERT, XETEX_UCHAR_CODE, xf_prim_init_none }, \
    { "Ucharcat", CONVERT, XETEX_UCHARCAT_CODE, xf_prim_init_none }, \
    { "jobname", CONVERT, JOB_NAME_CODE, xf_prim_init_none }, \
    { "the", THE, SHOW_CODE, xf_prim_init_none }, \
    { "unexpanded", THE, SHOW_BOX_CODE, xf_prim_init_none }, \
    { "detokenize", THE, SHOW_TOKENS, xf_prim_init_none }, \
    { "topmark", TOP_BOT_MARK, TOP_MARK_CODE, xf_prim_init_none }, \
    { "firstmark", TOP_BOT_MARK, FIRST_MARK_CODE, xf_prim_init_none }, \
    { "botmark", TOP_BOT_MARK, BOT_MARK_CODE, xf_prim_init_none }, \
    { "splitfirstmark", TOP_BOT_MARK, SPLIT_FIRST_MARK_CODE, xf_prim_init_none }, \
    { "splitbotmark", TOP_BOT_MARK, SPLIT_BOT_MARK_CODE, xf_prim_init_none }, \
    { "topmarks", TOP_BOT_MARK, TT_TOP_MARKS_CODE, xf_prim_init_none }, \
    { "firstmarks", TOP_BOT_MARK, TT_FIRST_MARKS_CODE, xf_prim_init_none }, \
    { "botmarks", TOP_BOT_MARK, TT_BOT_MARKS_CODE, xf_prim_init_none }, \
    { "splitfirstmarks", TOP_BOT_MARK, TT_SPLIT_FIRST_MARKS_CODE, xf_prim_init_none }, \
    { "splitbotmarks", TOP_BOT_MARK, TT_SPLIT_BOT_MARKS_CODE, xf_prim_init_none }, \
    { "pretolerance", ASSIGN_INT, INT_BASE + INT_PAR__pretolerance, xf_prim_init_none }, \
    { "tolerance", ASSIGN_INT, INT_BASE + INT_PAR__tolerance, xf_prim_init_none }, \
    { "linepenalty", ASSIGN_INT, INT_BASE + INT_PAR__line_penalty, xf_prim_init_none }, \
    { "hyphenpenalty", ASSIGN_INT, INT_BASE + INT_PAR__hyphen_penalty, xf_prim_init_none }, \
    { "exhyphenpenalty", ASSIGN_INT, INT_BASE + INT_PAR__ex_hyphen_penalty, xf_prim_init_none }, \
    { "clubpenalty", ASSIGN_INT, INT_BASE + INT_PAR__club_penalty, xf_prim_init_none }, \
    { "widowpenalty", ASSIGN_INT, INT_BASE + INT_PAR__widow_penalty, xf_prim_init_none }, \
    { "displaywidowpenalty", ASSIGN_INT, INT_BASE + INT_PAR__display_widow_penalty, xf_prim_init_none }, \
    { "brokenpenalty", ASSIGN_INT, INT_BASE + INT_PAR__broken_penalty, xf_prim_init_none }, \
    { "binoppenalty", ASSIGN_INT, INT_BASE + INT_PAR__bin_op_penalty, xf_prim_init_none }, \
    { "relpenalty", ASSIGN_INT, INT_BASE + INT_PAR__rel_penalty, xf_prim_init_none }, \
    { "predisplaypenalty", ASSIGN_INT, INT_BASE + INT_PAR__pre_display_penalty, xf_prim_init_none }, \
    { "postdisplaypenalty", ASSIGN_INT, INT_BASE + INT_PAR__post_display_penalty, xf_prim_init_none }, \
    { "interlinepenalty", ASSIGN_INT, INT_BASE + INT_PAR__inter_line_penalty, xf_prim_init_none }, \
    { "doublehyphendemerits", ASSIGN_INT, INT_BASE + INT_PAR__double_hyphen_demerits, xf_prim_init_none }, \
    { "finalhyphendemerits", ASSIGN_INT, INT_BASE + INT_PAR__final_hyphen_demerits, xf_prim_init_none }, \
    { "adjdemerits", ASSIGN_INT, INT_BASE + INT_PAR__adj_demerits, xf_prim_init_none }, \
    { "mag", ASSIGN_INT, INT_BASE + INT_PAR__mag, xf_prim_init_none }, \
    { "delimiterfactor", ASSIGN_INT, INT_BASE + INT_PAR__delimiter_factor, xf_prim_init_none }, \
    { "looseness", ASSIGN_INT, INT_BASE + INT_PAR__looseness, xf_prim_init_none }, \
    { "time", ASSIGN_INT, INT_BASE + INT_PAR__time, xf_prim_init_none }, \
    { "day", ASSIGN_INT, INT_BASE + INT_PAR__day, xf_prim_init_none }, \
    { "month", ASSIGN_INT, INT_BASE + INT_PAR__month, xf_prim_init_none }, \
    { "year", ASSIGN_INT, INT_BASE + INT_PAR__year, xf_prim_init_none }, \
    { "showboxbreadth", ASSIGN_INT, INT_BASE + INT_PAR__show_box_breadth, xf_prim_init_none }, \
    { "showboxdepth", ASSIGN_INT, INT_BASE + INT_PAR__show_box_depth, xf_prim_init_none }, \
    { "hbadness", ASSIGN_INT, INT_BASE + INT_PAR__hbadness, xf_prim_init_none }, \
    { "vbadness", ASSIGN_INT, INT_BASE + INT_PAR__vbadness, xf_prim_init_none }, \
    { "pausing", ASSIGN_INT, INT_BASE + INT_PAR__pausing, xf_prim_init_none }, \
    { "tracingonline", ASSIGN_INT, INT_BASE + INT_PAR__tracing_online, xf_prim_init_none }, \
    { "tracingmacros", ASSIGN_INT, INT_BASE + INT_PAR__tracing_macros, xf_prim_init_none }, \
    { "tracingstats", ASSIGN_INT, INT_BASE + INT_PAR__tracing_stats, xf_prim_init_none }, \
    { "tracingparagraphs", ASSIGN_INT, INT_BASE + INT_PAR__tracing_paragraphs, xf_prim_init_none }, \
    { "tracingpages", ASSIGN_INT, INT_BASE + INT_PAR__tracing_pages, xf_prim_init_none }, \
    { "tracingoutput", ASSIGN_INT, INT_BASE + INT_PAR__tracing_output, xf_prim_init_none }, \
    { "tracinglostchars", ASSIGN_INT, INT_BASE + INT_PAR__tracing_lost_chars, xf_prim_init_none }, \
    { "tracingcommands", ASSIGN_INT, INT_BASE + INT_PAR__tracing_commands, xf_prim_init_none }, \
    { "tracingrestores", ASSIGN_INT, INT_BASE + INT_PAR__tracing_restores, xf_prim_init_none }, \
    { "uchyph", ASSIGN_INT, INT_BASE + INT_PAR__uc_hyph, xf_prim_init_none }, \
    { "outputpenalty", ASSIGN_INT, INT_BASE + INT_PAR__output_penalty, xf_prim_init_none }, \
    { "maxdeadcycles", ASSIGN_INT, INT_BASE + INT_PAR__max_dead_cycles, xf_prim_init_none }, \
    { "hangafter", ASSIGN_INT, INT_BASE + INT_PAR__hang_after, xf_prim_init_none }, \
    { "floatingpenalty", ASSIGN_INT, INT_BASE + INT_PAR__floating_penalty, xf_prim_init_none }, \
    { "globaldefs", ASSIGN_INT, INT_BASE + INT_PAR__global_defs, xf_prim_init_none }, \
    { "fam", ASSIGN_INT, INT_BASE + INT_PAR__cur_fam, xf_prim_init_none }, \
    { "escapechar", ASSIGN_INT, INT_BASE + INT_PAR__escape_char, xf_prim_init_none }, \
    { "defaulthyphenchar", ASSIGN_INT, INT_BASE + INT_PAR__default_hyphen_char, xf_prim_init_none }, \
    { "defaultskewchar", ASSIGN_INT, INT_BASE + INT_PAR__default_skew_char, xf_prim_init_none }, \
    { "endlinechar", ASSIGN_INT, INT_BASE + INT_PAR__end_line_char, xf_prim_init_none }, \
    { "newlinechar", ASSIGN_INT, INT_BASE + INT_PAR__new_line_char, xf_prim_init_none }, \
    { "language", ASSIGN_INT, INT_BASE + INT_PAR__language, xf_prim_init_none }, \
    { "lefthyphenmin", ASSIGN_INT, INT_BASE + INT_PAR__left_hyphen_min, xf_prim_init_none }, \
    { "righthyphenmin", ASSIGN_INT, INT_BASE + INT_PAR__right_hyphen_min, xf_prim_init_none }, \
    { "holdinginserts", ASSIGN_INT, INT_BASE + INT_PAR__holding_inserts, xf_prim_init_none }, \
    { "errorcontextlines", ASSIGN_INT, INT_BASE + INT_PAR__error_context_lines, xf_prim_init_none }, \
    { "tracingstacklevels", ASSIGN_INT, INT_BASE + INT_PAR__tracing_stack_levels, xf_prim_init_none }, \
    { "tracingassigns", ASSIGN_INT, INT_BASE + INT_PAR__tracing_assigns, xf_prim_init_none }, \
    { "tracinggroups", ASSIGN_INT, INT_BASE + INT_PAR__tracing_groups, xf_prim_init_none }, \
    { "tracingifs", ASSIGN_INT, INT_BASE + INT_PAR__tracing_ifs, xf_prim_init_none }, \
    { "tracingscantokens", ASSIGN_INT, INT_BASE + INT_PAR__tracing_scan_tokens, xf_prim_init_none }, \
    { "tracingnesting", ASSIGN_INT, INT_BASE + INT_PAR__tracing_nesting, xf_prim_init_none }, \
    { "predisplaydirection", ASSIGN_INT, INT_BASE + INT_PAR__pre_display_direction, xf_prim_init_none }, \
    { "lastlinefit", ASSIGN_INT, INT_BASE + INT_PAR__last_line_fit, xf_prim_init_none }, \
    { "savingvdiscards", ASSIGN_INT, INT_BASE + INT_PAR__saving_vdiscards, xf_prim_init_none }, \
    { "savinghyphcodes", ASSIGN_INT, INT_BASE + INT_PAR__saving_hyph_codes, xf_prim_init_none }, \
    { "suppressfontnotfounderror", ASSIGN_INT, INT_BASE + INT_PAR__suppress_fontnotfound_error, xf_prim_init_none }, \
    { "XeTeXlinebreakpenalty", ASSIGN_INT, INT_BASE + INT_PAR__xetex_linebreak_penalty, xf_prim_init_none }, \
    { "XeTeXprotrudechars", ASSIGN_INT, INT_BASE + INT_PAR__xetex_protrude_chars, xf_prim_init_none }, \
    { "TeXXeTstate", ASSIGN_INT, INT_BASE + INT_PAR__texxet, xf_prim_init_none }, \
    { "XeTeXdashbreakstate", ASSIGN_INT, INT_BASE + INT_PAR__xetex_dash_break, xf_prim_init_none }, \
    { "XeTeXupwardsmode", ASSIGN_INT, INT_BASE + INT_PAR__xetex_upwards, xf_prim_init_none }, \
    { "XeTeXuseglyphmetrics", ASSIGN_INT, INT_BASE + INT_PAR__xetex_use_glyph_metrics, xf_prim_init_none }, \
    { "XeTeXinterchartokenstate", ASSIGN_INT, INT_BASE + INT_PAR__xetex_inter_char_tokens, xf_prim_init_none }, \
    { "XeTeXinputnormalization", ASSIGN_INT, INT_BASE + INT_PAR__xetex_input_normalization, xf_prim_init_none }, \
    { "XeTeXtracingfonts", ASSIGN_INT, INT_BASE + INT_PAR__xetex_tracing_fonts, xf_prim_init_none }, \
    { "XeTeXinterwordspaceshaping", ASSIGN_INT, INT_BASE + INT_PAR__xetex_interword_space_shaping, xf_prim_init_none }, \
    { "XeTeXgenerateactualtext", ASSIGN_INT, INT_BASE + INT_PAR__xetex_generate_actual_text, xf_prim_init_none }, \
    { "XeTeXhyphenatablelength", ASSIGN_INT, INT_BASE + INT_PAR__xetex_hyphenatable_length, xf_prim_init_none }, \
    { "synctex", ASSIGN_INT, INT_BASE + INT_PAR__synctex, xf_prim_init_none }, \
    { "pdfoutput", ASSIGN_INT, INT_BASE + INT_PAR__pdfoutput, xf_prim_init_none }, \
    { "parindent", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__par_indent, xf_prim_init_none }, \
    { "mathsurround", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__math_surround, xf_prim_init_none }, \
    { "lineskiplimit", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__line_skip_limit, xf_prim_init_none }, \
    { "hsize", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__hsize, xf_prim_init_none }, \
    { "vsize", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__vsize, xf_prim_init_none }, \
    { "maxdepth", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__max_depth, xf_prim_init_none }, \
    { "splitmaxdepth", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__split_max_depth, xf_prim_init_none }, \
    { "boxmaxdepth", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__box_max_depth, xf_prim_init_none }, \
    { "hfuzz", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__hfuzz, xf_prim_init_none }, \
    { "vfuzz", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__vfuzz, xf_prim_init_none }, \
    { "delimitershortfall", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__delimiter_shortfall, xf_prim_init_none }, \
    { "nulldelimiterspace", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__null_delimiter_space, xf_prim_init_none }, \
    { "scriptspace", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__script_space, xf_prim_init_none }, \
    { "predisplaysize", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__pre_display_size, xf_prim_init_none }, \
    { "displaywidth", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__display_width, xf_prim_init_none }, \
    { "displayindent", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__display_indent, xf_prim_init_none }, \
    { "overfullrule", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__overfull_rule, xf_prim_init_none }, \
    { "hangindent", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__hang_indent, xf_prim_init_none }, \
    { "hoffset", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__h_offset, xf_prim_init_none }, \
    { "voffset", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__v_offset, xf_prim_init_none }, \
    { "emergencystretch", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__emergency_stretch, xf_prim_init_none }, \
    { "pdfpagewidth", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__pdf_page_width, xf_prim_init_none }, \
    { "pdfpageheight", ASSIGN_DIMEN, DIMEN_BASE + DIMEN_PAR__pdf_page_height, xf_prim_init_none }, \
    { "lineskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__line_skip, xf_prim_init_none }, \
    { "baselineskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__baseline_skip, xf_prim_init_none }, \
    { "parskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__par_skip, xf_prim_init_none }, \
    { "abovedisplayskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__above_display_skip, xf_prim_init_none }, \
    { "belowdisplayskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__below_display_skip, xf_prim_init_none }, \
    { "abovedisplayshortskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__above_display_short_skip, xf_prim_init_none }, \
    { "belowdisplayshortskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__below_display_short_skip, xf_prim_init_none }, \
    { "leftskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__left_skip, xf_prim_init_none }, \
    { "rightskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__right_skip, xf_prim_init_none }, \
    { "topskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__top_skip, xf_prim_init_none }, \
    { "splittopskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__split_top_skip, xf_prim_init_none }, \
    { "tabskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__tab_skip, xf_prim_init_none }, \
    { "spaceskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__space_skip, xf_prim_init_none }, \
    { "xspaceskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__xspace_skip, xf_prim_init_none }, \
    { "parfillskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__par_fill_skip, xf_prim_init_none }, \
    { "XeTeXlinebreakskip", ASSIGN_GLUE, GLUE_BASE + GLUE_PAR__xetex_linebreak_skip, xf_prim_init_none }, \
    { "thinmuskip", ASSIGN_MU_GLUE, GLUE_BASE + GLUE_PAR__thin_mu_skip, xf_prim_init_none }, \
    { "medmuskip", ASSIGN_MU_GLUE, GLUE_BASE + GLUE_PAR__med_mu_skip, xf_prim_init_none }, \
    { "thickmuskip", ASSIGN_MU_GLUE, GLUE_BASE + GLUE_PAR__thick_mu_skip, xf_prim_init_none }, \
    { "parshape", SET_SHAPE, LOCAL_BASE + LOCAL__par_shape, xf_prim_init_none }, \
    { "output", ASSIGN_TOKS, LOCAL_BASE + LOCAL__output_routine, xf_prim_init_none }, \
    { "everypar", ASSIGN_TOKS, LOCAL_BASE + LOCAL__every_par, xf_prim_init_none }, \
    { "everymath", ASSIGN_TOKS, LOCAL_BASE + LOCAL__every_math, xf_prim_init_none }, \
    { "everydisplay", ASSIGN_TOKS, LOCAL_BASE + LOCAL__every_display, xf_prim_init_none }, \
    { "everyhbox", ASSIGN_TOKS, LOCAL_BASE + LOCAL__every_hbox, xf_prim_init_none }, \
    { "everyvbox", ASSIGN_TOKS, LOCAL_BASE + LOCAL__every_vbox, xf_prim_init_none }, \
    { "everyjob", ASSIGN_TOKS, LOCAL_BASE + LOCAL__every_job, xf_prim_init_none }, \
    { "everycr", ASSIGN_TOKS, LOCAL_BASE + LOCAL__every_cr, xf_prim_init_none }, \
    { "errhelp", ASSIGN_TOKS, LOCAL_BASE + LOCAL__err_help, xf_prim_init_none }, \
    { "everyeof", ASSIGN_TOKS, LOCAL_BASE + LOCAL__every_eof, xf_prim_init_none }, \
    { "XeTeXinterchartoks", ASSIGN_TOKS, LOCAL_BASE + LOCAL__xetex_inter_char_toks, xf_prim_init_none }, \
    { "TectonicCodaTokens", ASSIGN_TOKS, LOCAL_BASE + LOCAL__tectonic_coda_tokens, xf_prim_init_none }, \
    { "interlinepenalties", SET_SHAPE, ETEX_PEN_BASE + ETEX_PENALTIES_PAR__inter_line_penalties, xf_prim_init_none }, \
    { "clubpenalties", SET_SHAPE, ETEX_PEN_BASE + ETEX_PENALTIES_PAR__club_penalties, xf_prim_init_none }, \
    { "widowpenalties", SET_SHAPE, ETEX_PEN_BASE + ETEX_PENALTIES_PAR__widow_penalties, xf_prim_init_none }, \
    { "displaywidowpenalties", SET_SHAPE, ETEX_PEN_BASE + ETEX_PENALTIES_PAR__display_widow_penalties, xf_prim_init_none }, \
    { NULL, 0, 0, 0 }
#endif
