1
4
5# ifndef LMT_LINTERFACE_H
6# define LMT_LINTERFACE_H
7
8# define lmt_linterface_inline 1
9
10
16
17# include "lua.h"
18# include "lauxlib.h"
19# include "lualib.h"
20
21
22
23extern int tex_formatted_error (const char *t, const char *fmt, ...);
24extern void tex_formatted_warning (const char *t, const char *fmt, ...);
25extern void tex_emergency_message (const char *t, const char *fmt, ...);
26
27
33
34typedef struct lua_state_info {
35 lua_State *lua_instance;
36 int used_bytes;
37 int used_bytes_max;
38 int function_table_id;
39 int function_callback_count;
40 int value_callback_count;
41 int bytecode_callback_count;
42 int local_callback_count;
43 int saved_callback_count;
44 int file_callback_count;
45 int direct_callback_count;
46 int message_callback_count;
47 int function_table_size;
48 int bytecode_bytes;
49 int bytecode_max;
50 int version_number;
51 int release_number;
52 luaL_Buffer *used_buffer;
53 int integer_size;
54} lua_state_info ;
55
56extern lua_state_info lmt_lua_state;
57
58
59
60extern int luaopen_aes (lua_State *L);
61extern int luaopen_basexx (lua_State *L);
62extern int luaopen_callback (lua_State *L);
63extern int luaopen_filelib (lua_State *L);
64extern int luaopen_fio (lua_State *L);
65extern int luaopen_font (lua_State *L);
66extern int luaopen_language (lua_State *L);
67extern int luaopen_library (lua_State *L);
68extern int luaopen_lpeg (lua_State *L);
69extern int luaopen_lua (lua_State *L);
70extern int luaopen_luac (lua_State *L);
71extern int luaopen_md5 (lua_State *L);
72extern int luaopen_mime_core (lua_State *L);
73extern int luaopen_mplib (lua_State *L);
74extern int luaopen_node (lua_State *L);
75extern int luaopen_optional (lua_State *L);
76extern int luaopen_pdfdecode (lua_State *L);
77extern int luaopen_pdfe (lua_State *L);
78extern int luaopen_pngdecode (lua_State *L);
79extern int luaopen_posit (lua_State *L);
80extern int luaopen_potrace (lua_State *L);
81extern int luaopen_sha2 (lua_State *L);
82extern int luaopen_sio (lua_State *L);
83extern int luaopen_socket_core (lua_State *L);
84extern int luaopen_sparse (lua_State *L);
85extern int luaopen_status (lua_State *L);
86extern int luaopen_tex (lua_State *L);
87extern int luaopen_texio (lua_State *L);
88extern int luaopen_token (lua_State *L);
89extern int luaopen_xcomplex (lua_State *L);
90extern int luaopen_xdecimal (lua_State *L);
91extern int luaopen_xmath (lua_State *L);
92extern int luaopen_xzip (lua_State *L);
93
94extern int luaextend_io (lua_State *L);
95extern int luaextend_os (lua_State *L);
96extern int luaextend_string (lua_State *L);
97extern int luaextend_xcomplex (lua_State *L);
98
99
107
108# if !defined(LUAI_HASHLIMIT)
109# define LUAI_HASHLIMIT 6
110# endif
111
112
132
133
134
135# define lua_key_eq(a,b) (a == lmt_keys.ptr_##b)
136# define lua_key_index(a) lmt_keys.idx_##a
137# define lua_key(a) lmt_keys.ptr_##a
138
139# define init_lua_key(L,a) \
140 lua_pushliteral(L, #a); \
141 lmt_keys.ptr_##a = lua_tolstring(L, -1, NULL); \
142 lmt_keys.idx_##a = luaL_ref(L, LUA_REGISTRYINDEX);
143
144# define init_lua_key_alias(L,a,b) \
145 lua_pushliteral(L, b); \
146 lmt_keys.ptr_##a = lua_tolstring(L, -1, NULL); \
147 lmt_keys.idx_##a = luaL_ref(L, LUA_REGISTRYINDEX);
148
149# define make_lua_key_ptr(L,a) const char *ptr_##a
150# define make_lua_key_idx(L,a) int idx_##a
151
152# define make_lua_key_ptr_alias(L,a,b) const char *ptr_##a
153# define make_lua_key_idx_alias(L,a,b) int idx_##a
154
155# define make_lua_key
156# define make_lua_key_alias
157
158# define lua_push_key(a) lua_rawgeti(L, LUA_REGISTRYINDEX, lua_key_index(a));
159# define lua_push_key_by_index(a) lua_rawgeti(L, LUA_REGISTRYINDEX, a);
160
161# define lua_get_metatablelua(a) do { \
162 lua_rawgeti(L, LUA_REGISTRYINDEX, lua_key_index(a)); \
163 lua_gettable(L, LUA_REGISTRYINDEX); \
164} while (0)
165
166# define lua_push_number(L,x) lua_pushnumber (L, (lua_Number) (x))
167# define lua_push_integer(L,x) lua_pushinteger(L, (int) (x))
168# define lua_push_halfword(L,x) lua_pushinteger(L, (lua_Integer) (x))
169
170# define lua_push_number_at_index(L,i,x) \
171 lua_pushnumber(L, (lua_Number) (x)); \
172 lua_rawseti(L, -2, i);
173
174# define lua_push_integer_at_index(L,i,x) \
175 lua_pushinteger(L, (x)); \
176 lua_rawseti(L, -2, i);
177
178# define lua_push_string_at_index(L,i,s) \
179 lua_pushstring(L, s); \
180 lua_rawseti(L, -2, i);
181
182
183
184# define lua_push_key_at_index(L,k,i) \
185 lua_pushinteger(L, i); \
186 lua_push_key(k); \
187 lua_rawset(L, -3);
188
189# define lua_push_nil_at_key(L,k) \
190 lua_push_key(k); \
191 lua_pushnil(L); \
192 lua_rawset(L, -3);
193
194# define lua_push_number_at_key(L,k,x) \
195 lua_push_key(k); \
196 lua_pushnumber(L, (lua_Number) (x)); \
197 lua_rawset(L, -3);
198
199# define lua_push_integer_at_key(L,k,x) \
200 lua_push_key(k); \
201 lua_pushinteger(L, (x)); \
202 lua_rawset(L, -3);
203
204# define lua_push_string_at_key(L,k,s) \
205 lua_push_key(k); \
206 lua_pushstring(L, s); \
207 lua_rawset(L, -3);
208
209# define mlua_push_lstring_at_key(L,k,s,l) \
210 lua_push_key(k); \
211 lua_pushlstring(L, s, l); \
212 lua_rawset(L, -3);
213
214# define lua_push_boolean_at_key(L,k,b) \
215 lua_push_key(k); \
216 lua_pushboolean(L, b); \
217 lua_rawset(L, -3);
218
219# define lua_push_value_at_key(L,k,v) \
220 lua_push_key(k); \
221 lua_push_key(v); \
222 lua_rawset(L, -3);
223
224# define lua_push_svalue_at_key(L,k,v) \
225 lua_push_key(k); \
226 lua_push_key_by_index(v); \
227 lua_rawset(L, -3);
228
229# define lua_push_specification_at_key(L,k,x) \
230 lua_push_key(k); \
231 lmt_push_specification(L, x, 0); \
232 lua_rawset(L, -3);
233
234
235
236
237
238# define NODE_METATABLE_INSTANCE "node.instance"
239# define NODE_PROPERTIES_DIRECT "node.properties"
240# define NODE_PROPERTIES_INDIRECT "node.properties.indirect"
241# define NODE_PROPERTIES_INSTANCE "node.properties.instance"
242
243
244
245# define TOKEN_METATABLE_INSTANCE "token.instance"
246# define TOKEN_METATABLE_PACKAGE "token.package"
247
248
249
250# define PDFE_METATABLE_INSTANCE "pdfe.instance"
251# define PDFE_METATABLE_DICTIONARY "pdfe.dictionary"
252# define PDFE_METATABLE_ARRAY "pdfe.array"
253# define PDFE_METATABLE_STREAM "pdfe.stream"
254# define PDFE_METATABLE_REFERENCE "pdfe.reference"
255
256
257
258# define MP_METATABLE_INSTANCE "mp.instance"
259# define MP_METATABLE_FIGURE "mp.figure"
260# define MP_METATABLE_OBJECT "mp.object"
261
262
263
264# define SPARSE_METATABLE_INSTANCE "sparse.instance"
265
266
270
271
287
288
296
297typedef struct value_info {
298 union {
299 int id;
300 int type;
301 int value;
302 };
303 int lua;
304 const char *name;
305} value_info;
306
307typedef struct node_info {
308 int id;
309 int size;
310 value_info *subtypes;
311 value_info *fields;
312 const char *name;
313 int lua;
314 int visible;
315 int first;
316 int last;
317} node_info;
318
319typedef struct command_item {
320 int id;
321 int lua;
322 const char *name;
323 int kind;
324 int min;
325 int max;
326 int base;
327 int fixedvalue;
328} command_item;
329
330# define unknown_node 0xFFFF
331# define unknown_subtype 0xFFFF
332# define unknown_field 0xFFFF
333# define unknown_value 0xFFFF
334
335# define set_value_entry_nop(target,n) target[n].lua = 0; target[n].name = NULL; target[n].value = unknown_value;
336# define set_value_entry_key(target,n,k) target[n].lua = lua_key_index(k); target[n].name = lua_key(k); target[n].value = n;
337# define set_value_entry_lua(target,n,k) target[n].lua = lua_key_index(k); target[n].name = lua_key(k);
338# define set_value_entry_val(target,n,v,k) target[n].lua = lua_key_index(k); target[n].name = lua_key(k); target[n].value = v;
339
340extern value_info *lmt_aux_allocate_value_info(size_t last);
341
342typedef struct lmt_interface_info {
343
344 value_info *pack_type_values;
345 value_info *group_code_values;
346 value_info *par_context_values;
347 value_info *page_context_values;
348 value_info *append_line_context_values;
349 value_info *alignment_context_values;
350 value_info *break_context_values;
351 value_info *build_context_values;
352 value_info *par_trigger_values;
353 value_info *par_mode_values;
354 value_info *math_style_name_values;
355 value_info *math_style_variant_values;
356
357
358
359 value_info *lua_function_values;
360 value_info *direction_values;
361 value_info *node_fill_values;
362 value_info *page_contribute_values;
363 value_info *math_style_values;
364 value_info *math_parameter_values;
365 value_info *math_font_parameter_values;
366 value_info *math_indirect_values;
367 value_info *field_type_values;
368
369 node_info *node_data;
370
371 command_item *command_names;
372} lmt_interface_info ;
373
374extern lmt_interface_info lmt_interface;
375
376# define lmt_push_pack_type(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.pack_type_values [n].lua)
377# define lmt_push_group_code(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.group_code_values [n].lua)
378# define lmt_push_par_context(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.par_context_values [n].lua)
379# define lmt_push_page_context(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.page_context_values [n].lua)
380# define lmt_push_append_line_context(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.append_line_context_values[n].lua)
381# define lmt_push_alignment_context(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.alignment_context_values [n].lua)
382# define lmt_push_par_trigger(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.par_trigger_values [n].lua)
383# define lmt_push_par_mode(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.par_mode_values [n].lua)
384# define lmt_push_math_style_name(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.math_style_name_values [n].lua)
385# define lmt_push_math_style_variant(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.math_style_variant_values [n].lua)
386# define lmt_push_math_noad_option(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.math_noad_option_values [n].lua)
387# define lmt_push_lua_function_values(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.lua_function_values [n].lua)
388# define lmt_push_direction(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.direction_values [n].lua)
389# define lmt_push_node_fill(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.node_fill_values [n].lua)
390# define lmt_push_page_contribute(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.page_contribute_values [n].lua)
391# define lmt_push_math_style(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.math_style_values [n].lua)
392# define lmt_push_math_parameter(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.math_parameter_values [n].lua)
393# define lmt_push_math_font_parameter(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.math_font_parameter_values[n].lua)
394# define lmt_push_math_indirect(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.math_indirect_values [n].lua)
395# define lmt_push_field_type(L,n) lua_rawgeti(L, LUA_REGISTRYINDEX, lmt_interface.field_type_values [n].lua)
396
397# define lmt_name_of_pack_type(n) lmt_interface.pack_type_values [n].name
398# define lmt_name_of_group_code(n) lmt_interface.group_code_values [n].name
399# define lmt_name_of_par_context(n) lmt_interface.par_context_values [n].name
400# define lmt_name_of_page_context(n) lmt_interface.page_context_values [n].name
401# define lmt_name_of_append_line_context(n) lmt_interface.append_line_context_values[n].name
402# define lmt_name_of_alignment_context(n) lmt_interface.alignment_context_values [n].name
403# define lmt_name_of_trigger_begin(n) lmt_interface.par_trigger_values [n].name
404# define lmt_name_of_par_mode(n) lmt_interface.par_mode_values [n].name
405# define lmt_name_of_math_style_name(n) lmt_interface.math_style_name_values [n].name
406# define lmt_name_of_math_style_variant(n) lmt_interface.math_style_variant_values [n].name
407# define lmt_name_of_math_noad_option(n) lmt_interface.math_noad_option_values [n].name
408# define lmt_name_of_lua_function_values(n) lmt_interface.lua_function_values [n].name
409# define lmt_name_of_direction(n) lmt_interface.direction_values [n].name
410# define lmt_name_of_node_fill(n) lmt_interface.node_fill_values [n].name
411# define lmt_name_of_page_contribute(n) lmt_interface.page_contribute_values [n].name
412# define lmt_name_of_math_style(n) lmt_interface.math_style_values [n].name
413# define lmt_name_of_math_parameter(n) lmt_interface.math_parameter_values [n].name
414# define lmt_name_of_math_font_parameter(n) lmt_interface.math_font_parameter_values[n].name
415# define lmt_name_of_math_indirect(n) lmt_interface.math_indirect_values [n].name
416# define lmt_name_of_field_type(n) lmt_interface.field_type_values [n].name
417
418
423
424# undef quad
425
426# define declare_shared_lua_keys(L) \
427\
428make_lua_key(L, __index);\
429make_lua_key(L, above);\
430make_lua_key(L, abovedisplayshortskip);\
431make_lua_key(L, abovedisplayskip);\
432make_lua_key(L, accent);\
433make_lua_key(L, AccentBaseDepth);\
434make_lua_key(L, accentbasedepth);\
435make_lua_key(L, AccentBaseHeight);\
436make_lua_key(L, accentbaseheight);\
437make_lua_key(L, AccentBottomOvershoot);\
438make_lua_key(L, accentbottomovershoot);\
439make_lua_key(L, AccentBottomShiftDown);\
440make_lua_key(L, accentbottomshiftdown);\
441make_lua_key(L, AccentExtendMargin);\
442make_lua_key(L, accentextendmargin);\
443make_lua_key(L, accentkern);\
444make_lua_key(L, AccentSuperscriptDrop);\
445make_lua_key(L, accentsuperscriptdrop);\
446make_lua_key(L, AccentSuperscriptPercent);\
447make_lua_key(L, accentsuperscriptpercent);\
448make_lua_key(L, AccentTopOvershoot);\
449make_lua_key(L, accenttopovershoot);\
450make_lua_key(L, AccentTopShiftUp);\
451make_lua_key(L, accenttopshiftup);\
452make_lua_key(L, accentvariant);\
453make_lua_key(L, active);\
454make_lua_key(L, active_char);\
455make_lua_key(L, adapted);\
456make_lua_key(L, adapttoleftsize);\
457make_lua_key(L, adapttorightsize);\
458make_lua_key(L, additional);\
459make_lua_key(L, adjdemerits);\
460make_lua_key(L, adjust);\
461make_lua_key(L, adjustedhbox);\
462make_lua_key(L, adjustspacing);\
463make_lua_key(L, adjustspacingshrink);\
464make_lua_key(L, adjustspacingstep);\
465make_lua_key(L, adjustspacingstretch);\
466make_lua_key(L, advance);\
467make_lua_key(L, after_output);\
468make_lua_key(L, after_something);\
469make_lua_key(L, afterdisplay);\
470make_lua_key(L, afterdisplaypenalty);\
471make_lua_key(L, afteroutput);\
472make_lua_key(L, aliased);\
473make_lua_key(L, align);\
474make_lua_key(L, alignhead);\
475make_lua_key(L, alignment);\
476make_lua_key(L, alignment_tab);\
477make_lua_key(L, alignrecord);\
478make_lua_key(L, alignset);\
479make_lua_key(L, alignstack);\
480make_lua_key(L, alsosimple);\
481make_lua_key(L, anchor);\
482make_lua_key(L, argument);\
483make_lua_key(L, arithmic);\
484make_lua_key(L, association);\
485make_lua_key(L, attr);\
486make_lua_key(L, attribute);\
487make_lua_key(L, attribute_list);\
488make_lua_key(L, attributelist);\
489make_lua_key(L, auto);\
490make_lua_key(L, autobase);\
491make_lua_key(L, automatic);\
492make_lua_key(L, automaticpenalty);\
493make_lua_key(L, automiddle);\
494make_lua_key(L, auxiliary);\
495make_lua_key(L, axis);\
496make_lua_key(L, AxisHeight);\
497make_lua_key(L, baselineskip);\
498make_lua_key(L, beforedisplay);\
499make_lua_key(L, beforedisplaypenalty);\
500make_lua_key(L, begin_group);\
501make_lua_key(L, begin_local);\
502make_lua_key(L, begin_paragraph);\
503make_lua_key(L, beginmath);\
504make_lua_key(L, beginparagraph);\
505make_lua_key(L, belowdisplayshortskip);\
506make_lua_key(L, belowdisplayskip);\
507make_lua_key(L, bend_tolerance);\
508make_lua_key(L, bestinsert);\
509make_lua_key(L, bestpagebreak);\
510make_lua_key(L, bestsize);\
511make_lua_key(L, binary);\
512make_lua_key(L, boolean);\
513make_lua_key(L, bothflexible);\
514make_lua_key(L, bottom);\
515make_lua_key(L, bottomaccent);\
516make_lua_key(L, bottomaccentvariant);\
517make_lua_key(L, bottomanchor);\
518make_lua_key(L, bottomleft);\
519make_lua_key(L, bottomlevel);\
520make_lua_key(L, bottommargin);\
521make_lua_key(L, bottomovershoot);\
522make_lua_key(L, bottomright);\
523make_lua_key(L, boundary);\
524make_lua_key(L, box);\
525make_lua_key(L, box_property);\
526make_lua_key(L, broken);\
527make_lua_key(L, brokeninsert);\
528make_lua_key(L, brokenpenalty);\
529make_lua_key(L, bytecode);\
530make_lua_key(L, call);\
531make_lua_key(L, callback);\
532make_lua_key(L, cancel);\
533make_lua_key(L, cardinal);\
534make_lua_key(L, case_shift);\
535make_lua_key(L, catalog);\
536make_lua_key(L, Catalog);\
537make_lua_key(L, catcode_table);\
538make_lua_key(L, category);\
539make_lua_key(L, cell);\
540make_lua_key(L, center);\
541make_lua_key(L, char);\
542make_lua_key(L, char_given);\
543make_lua_key(L, char_number);\
544make_lua_key(L, character);\
545make_lua_key(L, characters);\
546make_lua_key(L, check);\
547make_lua_key(L, choice);\
548make_lua_key(L, class);\
549make_lua_key(L, cleaders);\
550make_lua_key(L, close);\
551make_lua_key(L, clubpenalties);\
552make_lua_key(L, clubpenalty);\
553make_lua_key(L, cmd);\
554make_lua_key(L, cmdname);\
555make_lua_key(L, collapse);\
556make_lua_key(L, collect);\
557make_lua_key(L, combine_toks);\
558make_lua_key(L, command);\
559make_lua_key(L, comment);\
560make_lua_key(L, compactmath);\
561make_lua_key(L, compound);\
562make_lua_key(L, compression);\
563make_lua_key(L, condition);\
564make_lua_key(L, conditional);\
565make_lua_key(L, conditionalmathskip);\
566make_lua_key(L, connectoroverlapmin);\
567make_lua_key(L, constant);\
568make_lua_key(L, constant_call);\
569make_lua_key(L, container);\
570make_lua_key(L, contributehead);\
571make_lua_key(L, convert);\
572make_lua_key(L, correctionskip);\
573make_lua_key(L, cost);\
574make_lua_key(L, count);\
575make_lua_key(L, cramped);\
576make_lua_key(L, crampeddisplay);\
577make_lua_key(L, crampedscript);\
578make_lua_key(L, crampedscriptscript);\
579make_lua_key(L, crampedtext);\
580make_lua_key(L, cs_name);\
581make_lua_key(L, csname);\
582make_lua_key(L, current);\
583make_lua_key(L, data);\
584make_lua_key(L, dbox);\
585make_lua_key(L, deep_frozen_dont_expand);\
586make_lua_key(L, deep_frozen_end_template);\
587make_lua_key(L, deep_frozen_keep_constant);\
588make_lua_key(L, def);\
589make_lua_key(L, deferred);\
590make_lua_key(L, define_char_code);\
591make_lua_key(L, define_family);\
592make_lua_key(L, define_font);\
593make_lua_key(L, define_lua_call);\
594make_lua_key(L, degree);\
595make_lua_key(L, degreevariant);\
596make_lua_key(L, delete);\
597make_lua_key(L, delimited);\
598make_lua_key(L, DelimitedSubFormulaMinHeight);\
599make_lua_key(L, delimiter);\
600make_lua_key(L, delimiter_number);\
601make_lua_key(L, delimiterextendmargin);\
602make_lua_key(L, DelimiterExtendMargin);\
603make_lua_key(L, delimiterover);\
604make_lua_key(L, delimiterovervariant);\
605make_lua_key(L, DelimiterDisplayPercent);\
606make_lua_key(L, DelimiterPercent);\
607make_lua_key(L, delimiterpercent);\
608make_lua_key(L, DelimiterDisplayShortfall);\
609make_lua_key(L, DelimiterShortfall);\
610make_lua_key(L, delimitershortfall);\
611make_lua_key(L, delimiterunder);\
612make_lua_key(L, delimiterundervariant);\
613make_lua_key(L, delta);\
614make_lua_key(L, demerits);\
615make_lua_key(L, denominator);\
616make_lua_key(L, denominatorvariant);\
617make_lua_key(L, depth);\
618make_lua_key(L, designsize);\
619make_lua_key(L, dimension);\
620make_lua_key(L, dir);\
621make_lua_key(L, direct);\
622make_lua_key(L, direction);\
623make_lua_key(L, directory);\
624make_lua_key(L, disc);\
625make_lua_key(L, discpart);\
626make_lua_key(L, discretionary);\
627make_lua_key(L, display);\
628make_lua_key(L, DisplayOperatorMinHeight);\
629make_lua_key(L, displaywidowpenalties);\
630make_lua_key(L, displaywidowpenalty);\
631make_lua_key(L, doffset);\
632make_lua_key(L, doubleadjdemerits);\
633make_lua_key(L, doublehyphendemerits);\
634make_lua_key(L, doublesuperscript);\
635make_lua_key(L, emergencyextrastretch);\
636make_lua_key(L, emergencyleftskip);\
637make_lua_key(L, emergencyrightskip);\
638make_lua_key(L, emergencystretch);\
639make_lua_key(L, empty);\
640make_lua_key(L, end);\
641make_lua_key(L, end_cs_name);\
642make_lua_key(L, end_file);\
643make_lua_key(L, end_group);\
644make_lua_key(L, end_job);\
645make_lua_key(L, end_line);\
646make_lua_key(L, end_local);\
647make_lua_key(L, end_match);\
648make_lua_key(L, end_paragraph);\
649make_lua_key(L, end_template);\
650make_lua_key(L, endmath);\
651make_lua_key(L, equation);\
652make_lua_key(L, equation_number);\
653make_lua_key(L, equationnumber);\
654make_lua_key(L, equationnumberpenalty);\
655make_lua_key(L, escape);\
656make_lua_key(L, etex);\
657make_lua_key(L, exact);\
658make_lua_key(L, exactly);\
659make_lua_key(L, exheight);\
660make_lua_key(L, expand_after);\
661make_lua_key(L, expandable);\
662make_lua_key(L, expanded);\
663make_lua_key(L, expansion);\
664make_lua_key(L, explicit);\
665make_lua_key(L, explicit_space);\
666make_lua_key(L, explicitpenalty);\
667make_lua_key(L, expression);\
668make_lua_key(L, extender);\
669make_lua_key(L, extensible);\
670make_lua_key(L, extrahyphenpenalty);\
671make_lua_key(L, extraspace);\
672make_lua_key(L, extrasubprescriptshift);\
673make_lua_key(L, extrasubprescriptspace);\
674make_lua_key(L, extrasubscriptshift);\
675make_lua_key(L, extrasubscriptspace);\
676make_lua_key(L, extrasuperprescriptshift);\
677make_lua_key(L, extrasuperprescriptspace);\
678make_lua_key(L, extrasuperscriptshift);\
679make_lua_key(L, extrasuperscriptspace);\
680make_lua_key(L, fam);\
681make_lua_key(L, feedbackcompound);\
682make_lua_key(L, fence);\
683make_lua_key(L, fenced);\
684make_lua_key(L, fi);\
685make_lua_key(L, fil);\
686make_lua_key(L, file);\
687make_lua_key(L, fill);\
688make_lua_key(L, filll);\
689make_lua_key(L, finalhyphendemerits);\
690make_lua_key(L, finalpenalty);\
691make_lua_key(L, finishrow);\
692make_lua_key(L, fireup);\
693make_lua_key(L, first);\
694make_lua_key(L, fixedboth);\
695make_lua_key(L, fixedbottom);\
696make_lua_key(L, fixedsuperandsubscript);\
697make_lua_key(L, fixedsuperorsubscript);\
698make_lua_key(L, fixedtop);\
699make_lua_key(L, flags);\
700make_lua_key(L, flataccent);\
701make_lua_key(L, FlattenedAccentBaseDepth);\
702make_lua_key(L, flattenedaccentbasedepth);\
703make_lua_key(L, FlattenedAccentBaseHeight);\
704make_lua_key(L, flattenedaccentbaseheight);\
705make_lua_key(L, FlattenedAccentBottomShiftDown);\
706make_lua_key(L, flattenedaccentbottomshiftdown);\
707make_lua_key(L, flattenedaccenttopshiftup);\
708make_lua_key(L, FlattenedAccentTopShiftUp);\
709make_lua_key(L, float);\
710make_lua_key(L, followedbyspace);\
711make_lua_key(L, font);\
712make_lua_key(L, font_property);\
713make_lua_key(L, fontkern);\
714make_lua_key(L, fontspec);\
715make_lua_key(L, force);\
716make_lua_key(L, forcecheck);\
717make_lua_key(L, forcehandler);\
718make_lua_key(L, forcerulethickness);\
719make_lua_key(L, fraction);\
720make_lua_key(L, FractionDelimiterDisplayStyleSize);\
721make_lua_key(L, FractionDelimiterSize);\
722make_lua_key(L, fractiondelsize);\
723make_lua_key(L, fractiondenomdown);\
724make_lua_key(L, FractionDenominatorDisplayStyleGapMin);\
725make_lua_key(L, FractionDenominatorDisplayStyleShiftDown);\
726make_lua_key(L, FractionDenominatorGapMin);\
727make_lua_key(L, FractionDenominatorShiftDown);\
728make_lua_key(L, fractiondenomvgap);\
729make_lua_key(L, FractionNumeratorDisplayStyleGapMin);\
730make_lua_key(L, FractionNumeratorDisplayStyleShiftUp);\
731make_lua_key(L, FractionNumeratorGapMin);\
732make_lua_key(L, FractionNumeratorShiftUp);\
733make_lua_key(L, fractionnumup);\
734make_lua_key(L, fractionnumvgap);\
735make_lua_key(L, fractionrule);\
736make_lua_key(L, FractionRuleThickness);\
737make_lua_key(L, fractionvariant);\
738make_lua_key(L, frozen);\
739make_lua_key(L, function);\
740make_lua_key(L, geometry);\
741make_lua_key(L, get_mark);\
742make_lua_key(L, ghost);\
743make_lua_key(L, gleaders);\
744make_lua_key(L, global);\
745make_lua_key(L, glue);\
746make_lua_key(L, glueorder);\
747make_lua_key(L, glueset);\
748make_lua_key(L, gluesign);\
749make_lua_key(L, gluespec);\
750make_lua_key(L, glyph);\
751make_lua_key(L, group);\
752make_lua_key(L, h);\
753make_lua_key(L, halign);\
754make_lua_key(L, hangafter);\
755make_lua_key(L, hangindent);\
756make_lua_key(L, hbox);\
757make_lua_key(L, hdelimiter);\
758make_lua_key(L, head);\
759make_lua_key(L, height);\
760make_lua_key(L, hextensible);\
761make_lua_key(L, hextensiblevariant);\
762make_lua_key(L, hlist);\
763make_lua_key(L, hmodepar);\
764make_lua_key(L, hmove);\
765make_lua_key(L, hoffset);\
766make_lua_key(L, holdhead);\
767make_lua_key(L, horizontal);\
768make_lua_key(L, horizontalmathkern);\
769make_lua_key(L, hrule);\
770make_lua_key(L, hsize);\
771make_lua_key(L, hskip);\
772make_lua_key(L, hyphenate);\
773make_lua_key(L, hyphenated);\
774make_lua_key(L, hyphenation);\
775make_lua_key(L, hyphenationmode);\
776make_lua_key(L, hyphenchar);\
777make_lua_key(L, id);\
778make_lua_key(L, if_test);\
779make_lua_key(L, ifstack);\
780make_lua_key(L, ignore);\
781make_lua_key(L, ignore_something);\
782make_lua_key(L, ignorebounds);\
783make_lua_key(L, ignored);\
784make_lua_key(L, image);\
785make_lua_key(L, immediate);\
786make_lua_key(L, immutable);\
787make_lua_key(L, indent);\
788make_lua_key(L, indentskip);\
789make_lua_key(L, index);\
790make_lua_key(L, Info);\
791make_lua_key(L, info);\
792make_lua_key(L, inherited);\
793make_lua_key(L, initialize);\
794make_lua_key(L, inner);\
795make_lua_key(L, innerlocation);\
796make_lua_key(L, innerxoffset);\
797make_lua_key(L, inneryoffset);\
798make_lua_key(L, input);\
799make_lua_key(L, insert);\
800make_lua_key(L, insertheights);\
801make_lua_key(L, insertpenalties);\
802make_lua_key(L, instance);\
803make_lua_key(L, integer);\
804make_lua_key(L, interaction);\
805make_lua_key(L, interlinepenalties);\
806make_lua_key(L, interlinepenalty);\
807make_lua_key(L, intermathskip);\
808make_lua_key(L, internal_attribute);\
809make_lua_key(L, internal_attribute_reference);\
810make_lua_key(L, internal_box_reference);\
811make_lua_key(L, internal_dimension);\
812make_lua_key(L, internal_dimension_reference);\
813make_lua_key(L, internal_glue);\
814make_lua_key(L, internal_glue_reference);\
815make_lua_key(L, internal_integer);\
816make_lua_key(L, internal_integer_reference);\
817make_lua_key(L, internal_muglue);\
818make_lua_key(L, internal_muglue_reference);\
819make_lua_key(L, internal_posit);\
820make_lua_key(L, internal_posit_reference);\
821make_lua_key(L, internal_toks);\
822make_lua_key(L, internal_toks_reference);\
823make_lua_key(L, internaldimension);\
824make_lua_key(L, internalgluespec);\
825make_lua_key(L, internalinteger);\
826make_lua_key(L, internalmugluespec);\
827make_lua_key(L, invalid_char);\
828make_lua_key(L, italic);\
829make_lua_key(L, italic_correction);\
830make_lua_key(L, italiccorrection);\
831make_lua_key(L, iterator_value);\
832make_lua_key(L, keepbase);\
833make_lua_key(L, kern);\
834make_lua_key(L, kerns);\
835make_lua_key(L, language);\
836make_lua_key(L, largechar);\
837make_lua_key(L, largefamily);\
838make_lua_key(L, last);\
839make_lua_key(L, lastinsert);\
840make_lua_key(L, lastlinefit);\
841make_lua_key(L, lazyligatures);\
842make_lua_key(L, leader);\
843make_lua_key(L, leaders);\
844make_lua_key(L, leastpagecost);\
845make_lua_key(L, left);\
846make_lua_key(L, left_brace);\
847make_lua_key(L, leftboundary);\
848make_lua_key(L, leftbox);\
849make_lua_key(L, leftboxwidth);\
850make_lua_key(L, leftcorrectionkern);\
851make_lua_key(L, lefthangskip);\
852make_lua_key(L, leftmargin);\
853make_lua_key(L, leftmarginkern);\
854make_lua_key(L, leftprotrusion);\
855make_lua_key(L, leftskip);\
856make_lua_key(L, lefttoright);\
857make_lua_key(L, legacy);\
858make_lua_key(L, let);\
859make_lua_key(L, letter);\
860make_lua_key(L, level);\
861make_lua_key(L, lhmin);\
862make_lua_key(L, ligature);\
863make_lua_key(L, ligatures);\
864make_lua_key(L, limitabovebgap);\
865make_lua_key(L, limitabovekern);\
866make_lua_key(L, limitabovevgap);\
867make_lua_key(L, limitbelowbgap);\
868make_lua_key(L, limitbelowkern);\
869make_lua_key(L, limitbelowvgap);\
870make_lua_key(L, limits);\
871make_lua_key(L, line);\
872make_lua_key(L, linebreakcriterion);\
873make_lua_key(L, linebreakoptional);\
874make_lua_key(L, linebreakpenalty);\
875make_lua_key(L, linepenalty);\
876make_lua_key(L, lineskip);\
877make_lua_key(L, lineskiplimit);\
878make_lua_key(L, list);\
879make_lua_key(L, local);\
880make_lua_key(L, local_box);\
881make_lua_key(L, localbox);\
882make_lua_key(L, log);\
883make_lua_key(L, logfile);\
884make_lua_key(L, loopstate);\
885make_lua_key(L, looseness);\
886make_lua_key(L, LowerLimitBaselineDropMin);\
887make_lua_key(L, LowerLimitGapMin);\
888make_lua_key(L, lua);\
889make_lua_key(L, lua_call);\
890make_lua_key(L, lua_function_call);\
891make_lua_key(L, lua_local_call);\
892make_lua_key(L, lua_protected_call);\
893make_lua_key(L, lua_semiprotected_call);\
894make_lua_key(L, lua_value);\
895make_lua_key(L, luatex);\
896make_lua_key(L, macro);\
897make_lua_key(L, make_box);\
898make_lua_key(L, mark);\
899make_lua_key(L, match);\
900make_lua_key(L, math);\
901make_lua_key(L, math_accent);\
902make_lua_key(L, math_char_number);\
903make_lua_key(L, math_choice);\
904make_lua_key(L, math_component);\
905make_lua_key(L, math_fence);\
906make_lua_key(L, math_fraction);\
907make_lua_key(L, math_modifier);\
908make_lua_key(L, math_parameter);\
909make_lua_key(L, math_radical);\
910make_lua_key(L, math_script);\
911make_lua_key(L, math_shift);\
912make_lua_key(L, math_shift_cs);\
913make_lua_key(L, math_style);\
914make_lua_key(L, mathchar);\
915make_lua_key(L, mathchoice);\
916make_lua_key(L, mathcomponent);\
917make_lua_key(L, MathConstants);\
918make_lua_key(L, mathcontrol);\
919make_lua_key(L, mathdir);\
920make_lua_key(L, mathdisplay);\
921make_lua_key(L, mathfence);\
922make_lua_key(L, mathfraction);\
923make_lua_key(L, mathinline);\
924make_lua_key(L, mathkern);\
925make_lua_key(L, mathkerns);\
926make_lua_key(L, MathLeading);\
927make_lua_key(L, mathnumber);\
928make_lua_key(L, mathoperator);\
929make_lua_key(L, mathpack);\
930make_lua_key(L, mathpostpenalty);\
931make_lua_key(L, mathprepenalty);\
932make_lua_key(L, mathradical);\
933make_lua_key(L, mathshapekern);\
934make_lua_key(L, mathsimple);\
935make_lua_key(L, mathskip);\
936make_lua_key(L, mathspec);\
937make_lua_key(L, mathstack);\
938make_lua_key(L, mathstyle);\
939make_lua_key(L, mathsubformula);\
940make_lua_key(L, mathtextchar);\
941make_lua_key(L, medmuskip);\
942make_lua_key(L, message);\
943make_lua_key(L, middle);\
944make_lua_key(L, middlebox);\
945make_lua_key(L, MinConnectorOverlap);\
946make_lua_key(L, mirror);\
947make_lua_key(L, mkern);\
948make_lua_key(L, mode);\
949make_lua_key(L, modeline);\
950make_lua_key(L, modifier);\
951make_lua_key(L, move);\
952make_lua_key(L, move_tolerance);\
953make_lua_key(L, mrule);\
954make_lua_key(L, mskip);\
955make_lua_key(L, muglue);\
956make_lua_key(L, mugluespec);\
957make_lua_key(L, mutable);\
958make_lua_key(L, name);\
959make_lua_key(L, nestedlist);\
960make_lua_key(L, new);\
961make_lua_key(L, next);\
962make_lua_key(L, nil);\
963make_lua_key(L, no);\
964make_lua_key(L, no_expand);\
965make_lua_key(L, noad);\
966make_lua_key(L, noadstate);\
967make_lua_key(L, noalign);\
968make_lua_key(L, noaligned);\
969make_lua_key(L, noaxis);\
970make_lua_key(L, nocheck);\
971make_lua_key(L, node);\
972make_lua_key(L, nodelist);\
973make_lua_key(L, noindent);\
974make_lua_key(L, nolimits);\
975make_lua_key(L, NoLimitSubFactor);\
976make_lua_key(L, nolimitsubfactor);\
977make_lua_key(L, nolimitsupfactor);\
978make_lua_key(L, NoLimitSupFactor);\
979make_lua_key(L, nomath);\
980make_lua_key(L, none);\
981make_lua_key(L, nooverflow);\
982make_lua_key(L, normal);\
983make_lua_key(L, norule);\
984make_lua_key(L, noruling);\
985make_lua_key(L, noscript);\
986make_lua_key(L, nosubprescript);\
987make_lua_key(L, nosubscript);\
988make_lua_key(L, nosuperprescript);\
989make_lua_key(L, nosuperscript);\
990make_lua_key(L, nucleus);\
991make_lua_key(L, number);\
992make_lua_key(L, numerator);\
993make_lua_key(L, numeratorvariant);\
994make_lua_key(L, open);\
995make_lua_key(L, openupdepth);\
996make_lua_key(L, openupheight);\
997make_lua_key(L, operator);\
998make_lua_key(L, operatorsize);\
999make_lua_key(L, optional);\
1000make_lua_key(L, options);\
1001make_lua_key(L, ordinary);\
1002make_lua_key(L, orientation);\
1003make_lua_key(L, original);\
1004make_lua_key(L, orphanpenalties);\
1005make_lua_key(L, orphanpenalty);\
1006make_lua_key(L, other_char);\
1007make_lua_key(L, outline);\
1008make_lua_key(L, output);\
1009make_lua_key(L, over);\
1010make_lua_key(L, OverbarExtraAscender);\
1011make_lua_key(L, overbarkern);\
1012make_lua_key(L, overbarrule);\
1013make_lua_key(L, OverbarRuleThickness);\
1014make_lua_key(L, OverbarVerticalGap);\
1015make_lua_key(L, overbarvgap);\
1016make_lua_key(L, overdelimiter);\
1017make_lua_key(L, overdelimiterbgap);\
1018make_lua_key(L, overdelimitervariant);\
1019make_lua_key(L, overdelimitervgap);\
1020make_lua_key(L, overlayaccent);\
1021make_lua_key(L, overlayaccentvariant);\
1022make_lua_key(L, overlinevariant);\
1023make_lua_key(L, overloaded);\
1024make_lua_key(L, package);\
1025make_lua_key(L, page);\
1026make_lua_key(L, page_property);\
1027make_lua_key(L, pagediscardshead);\
1028make_lua_key(L, pagehead);\
1029make_lua_key(L, pageinserthead);\
1030make_lua_key(L, pages);\
1031make_lua_key(L, Pages);\
1032make_lua_key(L, par);\
1033make_lua_key(L, parameter);\
1034make_lua_key(L, parameter_reference);\
1035make_lua_key(L, parameters);\
1036make_lua_key(L, parfillleftskip);\
1037make_lua_key(L, parfillrightskip);\
1038make_lua_key(L, parfillskip);\
1039make_lua_key(L, parindent);\
1040make_lua_key(L, parinitleftskip);\
1041make_lua_key(L, parinitrightskip);\
1042make_lua_key(L, parpasses);\
1043make_lua_key(L, parshape);\
1044make_lua_key(L, parskip);\
1045make_lua_key(L, parts);\
1046make_lua_key(L, partsitalic);\
1047make_lua_key(L, partsorientation);\
1048make_lua_key(L, passive);\
1049make_lua_key(L, pdfe);\
1050make_lua_key(L, penalty);\
1051make_lua_key(L, permanent);\
1052make_lua_key(L, permitall);\
1053make_lua_key(L, permitglue);\
1054make_lua_key(L, permitmathreplace);\
1055make_lua_key(L, phantom);\
1056make_lua_key(L, posit);\
1057make_lua_key(L, post);\
1058make_lua_key(L, post_linebreak);\
1059make_lua_key(L, postadjust);\
1060make_lua_key(L, postadjusthead);\
1061make_lua_key(L, postmigrate);\
1062make_lua_key(L, postmigratehead);\
1063make_lua_key(L, pre);\
1064make_lua_key(L, pre_align);\
1065make_lua_key(L, preadjust);\
1066make_lua_key(L, preadjusthead);\
1067make_lua_key(L, preamble);\
1068make_lua_key(L, prebox);\
1069make_lua_key(L, preferfontthickness);\
1070make_lua_key(L, prefix);\
1071make_lua_key(L, premigrate);\
1072make_lua_key(L, premigratehead);\
1073make_lua_key(L, prepost);\
1074make_lua_key(L, preroll);\
1075make_lua_key(L, presub);\
1076make_lua_key(L, presubscriptshiftdistance);\
1077make_lua_key(L, presup);\
1078make_lua_key(L, presuperscriptshiftdistance);\
1079make_lua_key(L, pretolerance);\
1080make_lua_key(L, prev);\
1081make_lua_key(L, prevdepth);\
1082make_lua_key(L, prevgraf);\
1083make_lua_key(L, prime);\
1084make_lua_key(L, PrimeBaselineDropMax);\
1085make_lua_key(L, primeraise);\
1086make_lua_key(L, primeraisecomposed);\
1087make_lua_key(L, PrimeRaiseComposedPercent);\
1088make_lua_key(L, PrimeRaisePercent);\
1089make_lua_key(L, primeshiftdrop);\
1090make_lua_key(L, primeshiftup);\
1091make_lua_key(L, PrimeShiftUp);\
1092make_lua_key(L, PrimeShiftUpCramped);\
1093make_lua_key(L, primespaceafter);\
1094make_lua_key(L, PrimeSpaceAfter);\
1095make_lua_key(L, primevariant);\
1096make_lua_key(L, primewidth);\
1097make_lua_key(L, PrimeWidthPercent);\
1098make_lua_key(L, primitive);\
1099make_lua_key(L, properties);\
1100make_lua_key(L, proportional);\
1101make_lua_key(L, protected);\
1102make_lua_key(L, protected_call);\
1103make_lua_key(L, protrudechars);\
1104make_lua_key(L, protrusion);\
1105make_lua_key(L, ptr);\
1106make_lua_key(L, punctuation);\
1107make_lua_key(L, quad);\
1108make_lua_key(L, radical);\
1109make_lua_key(L, radicaldegreeafter);\
1110make_lua_key(L, radicaldegreebefore);\
1111make_lua_key(L, RadicalDegreeBottomRaisePercent);\
1112make_lua_key(L, radicaldegreeraise);\
1113make_lua_key(L, RadicalDisplayStyleVerticalGap);\
1114make_lua_key(L, radicalextensibleafter);\
1115make_lua_key(L, radicalextensiblebefore);\
1116make_lua_key(L, RadicalExtraAscender);\
1117make_lua_key(L, radicalkern);\
1118make_lua_key(L, RadicalKernAfterDegree);\
1119make_lua_key(L, RadicalKernAfterExtensible);\
1120make_lua_key(L, RadicalKernBeforeDegree);\
1121make_lua_key(L, RadicalKernBeforeExtensible);\
1122make_lua_key(L, radicalrule);\
1123make_lua_key(L, RadicalRuleThickness);\
1124make_lua_key(L, radicalvariant);\
1125make_lua_key(L, RadicalVerticalGap);\
1126make_lua_key(L, radicalvgap);\
1127make_lua_key(L, reader);\
1128make_lua_key(L, register);\
1129make_lua_key(L, register_attribute);\
1130make_lua_key(L, register_attribute_reference);\
1131make_lua_key(L, register_box);\
1132make_lua_key(L, register_box_reference);\
1133make_lua_key(L, register_dimension);\
1134make_lua_key(L, register_dimension_reference);\
1135make_lua_key(L, register_glue);\
1136make_lua_key(L, register_glue_reference);\
1137make_lua_key(L, register_integer);\
1138make_lua_key(L, register_integer_reference);\
1139make_lua_key(L, register_muglue);\
1140make_lua_key(L, register_muglue_reference);\
1141make_lua_key(L, register_posit);\
1142make_lua_key(L, register_posit_reference);\
1143make_lua_key(L, register_toks);\
1144make_lua_key(L, register_toks_reference);\
1145make_lua_key(L, registerdimension);\
1146make_lua_key(L, registergluespec);\
1147make_lua_key(L, registerinteger);\
1148make_lua_key(L, registermugluespec);\
1149make_lua_key(L, regular);\
1150make_lua_key(L, relation);\
1151make_lua_key(L, relax);\
1152make_lua_key(L, remove_item);\
1153make_lua_key(L, repeat);\
1154make_lua_key(L, replace);\
1155make_lua_key(L, report);\
1156make_lua_key(L, reserved);\
1157make_lua_key(L, reset);\
1158make_lua_key(L, rhmin);\
1159make_lua_key(L, right);\
1160make_lua_key(L, right_brace);\
1161make_lua_key(L, rightboundary);\
1162make_lua_key(L, rightbox);\
1163make_lua_key(L, rightboxwidth);\
1164make_lua_key(L, rightcorrectionkern);\
1165make_lua_key(L, righthangskip);\
1166make_lua_key(L, rightmargin);\
1167make_lua_key(L, rightmarginkern);\
1168make_lua_key(L, rightprotrusion);\
1169make_lua_key(L, rightskip);\
1170make_lua_key(L, righttoleft);\
1171make_lua_key(L, root);\
1172make_lua_key(L, rooted);\
1173make_lua_key(L, rule);\
1174make_lua_key(L, rulebasedmathskip);\
1175make_lua_key(L, ruledepth);\
1176make_lua_key(L, ruleheight);\
1177make_lua_key(L, same);\
1178make_lua_key(L, saved);\
1179make_lua_key(L, scale);\
1180make_lua_key(L, script);\
1181make_lua_key(L, scriptorder);\
1182make_lua_key(L, ScriptPercentScaleDown);\
1183make_lua_key(L, scripts);\
1184make_lua_key(L, scriptscale);\
1185make_lua_key(L, scriptscript);\
1186make_lua_key(L, ScriptScriptPercentScaleDown);\
1187make_lua_key(L, scriptscriptscale);\
1188make_lua_key(L, second);\
1189make_lua_key(L, semi_protected_call);\
1190make_lua_key(L, semiprotected);\
1191make_lua_key(L, semisimple);\
1192make_lua_key(L, set);\
1193make_lua_key(L, set_box);\
1194make_lua_key(L, set_font);\
1195make_lua_key(L, shapingpenaltiesmode);\
1196make_lua_key(L, shapingpenalty);\
1197make_lua_key(L, shift);\
1198make_lua_key(L, shiftedsubprescript);\
1199make_lua_key(L, shiftedsubscript);\
1200make_lua_key(L, shiftedsuperprescript);\
1201make_lua_key(L, shiftedsuperscript);\
1202make_lua_key(L, shorthand_def);\
1203make_lua_key(L, shrink);\
1204make_lua_key(L, shrinkorder);\
1205make_lua_key(L, sign);\
1206make_lua_key(L, simple);\
1207make_lua_key(L, single);\
1208make_lua_key(L, singlelinepenalty);\
1209make_lua_key(L, size);\
1210make_lua_key(L, skewchar);\
1211make_lua_key(L, SkewedDelimiterTolerance);\
1212make_lua_key(L, skeweddelimitertolerance);\
1213make_lua_key(L, skewedfractionhgap);\
1214make_lua_key(L, SkewedFractionHorizontalGap);\
1215make_lua_key(L, SkewedFractionVerticalGap);\
1216make_lua_key(L, skewedfractionvgap);\
1217make_lua_key(L, skip);\
1218make_lua_key(L, slant);\
1219make_lua_key(L, small);\
1220make_lua_key(L, smallchar);\
1221make_lua_key(L, smaller);\
1222make_lua_key(L, smallfamily);\
1223make_lua_key(L, some_item);\
1224make_lua_key(L, source);\
1225make_lua_key(L, sourceonnucleus);\
1226make_lua_key(L, space);\
1227make_lua_key(L, SpaceAfterScript);\
1228make_lua_key(L, spaceafterscript);\
1229make_lua_key(L, spacebeforescript);\
1230make_lua_key(L, SpaceBeforeScript);\
1231make_lua_key(L, spacefactor);\
1232make_lua_key(L, spacefontkern);\
1233make_lua_key(L, spacer);\
1234make_lua_key(L, spaceshrink);\
1235make_lua_key(L, spaceskip);\
1236make_lua_key(L, spacestretch);\
1237make_lua_key(L, span);\
1238make_lua_key(L, spec);\
1239make_lua_key(L, specification);\
1240make_lua_key(L, specification_reference);\
1241make_lua_key(L, split);\
1242make_lua_key(L, split_insert);\
1243make_lua_key(L, splitbottom);\
1244make_lua_key(L, splitdiscardshead);\
1245make_lua_key(L, splitfirst);\
1246make_lua_key(L, splitkeep);\
1247make_lua_key(L, splitoff);\
1248make_lua_key(L, splittopskip);\
1249make_lua_key(L, stack);\
1250make_lua_key(L, StackBottomDisplayStyleShiftDown);\
1251make_lua_key(L, StackBottomShiftDown);\
1252make_lua_key(L, stackdenomdown);\
1253make_lua_key(L, StackDisplayStyleGapMin);\
1254make_lua_key(L, StackGapMin);\
1255make_lua_key(L, stacknumup);\
1256make_lua_key(L, StackTopDisplayStyleShiftUp);\
1257make_lua_key(L, StackTopShiftUp);\
1258make_lua_key(L, stackvariant);\
1259make_lua_key(L, stackvgap);\
1260make_lua_key(L, start);\
1261make_lua_key(L, state);\
1262make_lua_key(L, step);\
1263make_lua_key(L, stop);\
1264make_lua_key(L, stretch);\
1265make_lua_key(L, stretchorder);\
1266make_lua_key(L, StretchStackBottomShiftDown);\
1267make_lua_key(L, StretchStackGapAboveMin);\
1268make_lua_key(L, StretchStackGapBelowMin);\
1269make_lua_key(L, StretchStackTopShiftUp);\
1270make_lua_key(L, strictend);\
1271make_lua_key(L, strictstart);\
1272make_lua_key(L, string);\
1273make_lua_key(L, strut);\
1274make_lua_key(L, style);\
1275make_lua_key(L, sub);\
1276make_lua_key(L, subbox);\
1277make_lua_key(L, submlist);\
1278make_lua_key(L, subpre);\
1279make_lua_key(L, subscript);\
1280make_lua_key(L, SubscriptBaselineDropMin);\
1281make_lua_key(L, subscriptshiftdistance);\
1282make_lua_key(L, SubscriptShiftDown);\
1283make_lua_key(L, SubscriptShiftDownWithSuperscript);\
1284make_lua_key(L, SubscriptTopMax);\
1285make_lua_key(L, SubscriptSnap);\
1286make_lua_key(L, subscriptsnap);\
1287make_lua_key(L, subscriptvariant);\
1288make_lua_key(L, subshiftdown);\
1289make_lua_key(L, subshiftdrop);\
1290make_lua_key(L, substitute);\
1291make_lua_key(L, SubSuperscriptGapMin);\
1292make_lua_key(L, subsupshiftdown);\
1293make_lua_key(L, subsupvgap);\
1294make_lua_key(L, subtopmax);\
1295make_lua_key(L, subtype);\
1296make_lua_key(L, sup);\
1297make_lua_key(L, supbottommin);\
1298make_lua_key(L, superscript);\
1299make_lua_key(L, SuperscriptBaselineDropMax);\
1300make_lua_key(L, SuperscriptBottomMaxWithSubscript);\
1301make_lua_key(L, SuperscriptBottomMin);\
1302make_lua_key(L, superscriptshiftdistance);\
1303make_lua_key(L, SuperscriptShiftUp);\
1304make_lua_key(L, SuperscriptShiftUpCramped);\
1305make_lua_key(L, SuperscriptSnap);\
1306make_lua_key(L, superscriptsnap);\
1307make_lua_key(L, superscriptvariant);\
1308make_lua_key(L, suppre);\
1309make_lua_key(L, supshiftdrop);\
1310make_lua_key(L, supshiftup);\
1311make_lua_key(L, supsubbottommax);\
1312make_lua_key(L, surround);\
1313make_lua_key(L, syllable);\
1314make_lua_key(L, tabskip);\
1315make_lua_key(L, tag);\
1316make_lua_key(L, tail);\
1317make_lua_key(L, target);\
1318make_lua_key(L, temp);\
1319make_lua_key(L, temphead);\
1320make_lua_key(L, terminal);\
1321make_lua_key(L, terminal_and_logfile);\
1322make_lua_key(L, tex);\
1323make_lua_key(L, tex_nest);\
1324make_lua_key(L, text);\
1325make_lua_key(L, textcontrol);\
1326make_lua_key(L, textscale);\
1327make_lua_key(L, the);\
1328make_lua_key(L, thickmuskip);\
1329make_lua_key(L, thinmuskip);\
1330make_lua_key(L, tok);\
1331make_lua_key(L, token);\
1332make_lua_key(L, tokenlist);\
1333make_lua_key(L, tolerance);\
1334make_lua_key(L, tolerant);\
1335make_lua_key(L, tolerant_call);\
1336make_lua_key(L, tolerant_protected_call);\
1337make_lua_key(L, tolerant_semi_protected_call);\
1338make_lua_key(L, top);\
1339make_lua_key(L, topaccent);\
1340make_lua_key(L, topaccentvariant);\
1341make_lua_key(L, topanchor);\
1342make_lua_key(L, topleft);\
1343make_lua_key(L, topmargin);\
1344make_lua_key(L, topovershoot);\
1345make_lua_key(L, topright);\
1346make_lua_key(L, topskip);\
1347make_lua_key(L, total);\
1348make_lua_key(L, tracingparagraphs);\
1349make_lua_key(L, tracingpasses);\
1350make_lua_key(L, trailer);\
1351make_lua_key(L, Trailer);\
1352make_lua_key(L, triggered);\
1353make_lua_key(L, type);\
1354make_lua_key(L, uchyph);\
1355make_lua_key(L, uleaders);\
1356make_lua_key(L, un_hbox);\
1357make_lua_key(L, un_vbox);\
1358make_lua_key(L, undefined_cs);\
1359make_lua_key(L, under);\
1360make_lua_key(L, UnderbarExtraDescender);\
1361make_lua_key(L, underbarkern);\
1362make_lua_key(L, underbarrule);\
1363make_lua_key(L, UnderbarRuleThickness);\
1364make_lua_key(L, UnderbarVerticalGap);\
1365make_lua_key(L, underbarvgap);\
1366make_lua_key(L, underdelimiter);\
1367make_lua_key(L, underdelimiterbgap);\
1368make_lua_key(L, underdelimitervariant);\
1369make_lua_key(L, underdelimitervgap);\
1370make_lua_key(L, underlinevariant);\
1371make_lua_key(L, unhbox);\
1372make_lua_key(L, unhyphenated);\
1373make_lua_key(L, unit_reference);\
1374make_lua_key(L, unknown);\
1375make_lua_key(L, unpacklist);\
1376make_lua_key(L, unrolllist);\
1377make_lua_key(L, unset);\
1378make_lua_key(L, untraced);\
1379make_lua_key(L, unvbox);\
1380make_lua_key(L, uppercase);\
1381make_lua_key(L, UpperLimitBaselineRiseMin);\
1382make_lua_key(L, UpperLimitGapMin);\
1383make_lua_key(L, user);\
1384make_lua_key(L, userkern);\
1385make_lua_key(L, userpenalty);\
1386make_lua_key(L, userskip);\
1387make_lua_key(L, v);\
1388make_lua_key(L, vadjust);\
1389make_lua_key(L, valign);\
1390make_lua_key(L, value);\
1391make_lua_key(L, variable);\
1392make_lua_key(L, vbox);\
1393make_lua_key(L, vcenter);\
1394make_lua_key(L, vdelimiter);\
1395make_lua_key(L, vertical);\
1396make_lua_key(L, verticalmathkern);\
1397make_lua_key(L, vextensible);\
1398make_lua_key(L, vextensiblevariant);\
1399make_lua_key(L, virtual);\
1400make_lua_key(L, vlist);\
1401make_lua_key(L, vmode);\
1402make_lua_key(L, vmodepar);\
1403make_lua_key(L, vmove);\
1404make_lua_key(L, void);\
1405make_lua_key(L, vrule);\
1406make_lua_key(L, vskip);\
1407make_lua_key(L, vtop);\
1408make_lua_key(L, whatsit);\
1409make_lua_key(L, widowpenalties);\
1410make_lua_key(L, widowpenalty);\
1411make_lua_key(L, width);\
1412make_lua_key(L, weight);\
1413make_lua_key(L, woffset);\
1414make_lua_key(L, word);\
1415make_lua_key(L, wordpenalty);\
1416make_lua_key(L, wrapup);\
1417make_lua_key(L, xheight);\
1418make_lua_key(L, xleaders);\
1419make_lua_key(L, xoffset);\
1420make_lua_key(L, xray);\
1421make_lua_key(L, xscale);\
1422make_lua_key(L, xspaceskip);\
1423make_lua_key(L, yoffset);\
1424make_lua_key(L, yscale);\
1425make_lua_key(L, zerospaceskip);\
1426make_lua_key_alias(L, empty_string, "");\
1427 \
1428make_lua_key_alias(L, node_instance, NODE_METATABLE_INSTANCE);\
1429make_lua_key_alias(L, node_properties, NODE_PROPERTIES_DIRECT);\
1430make_lua_key_alias(L, node_properties_indirect, NODE_PROPERTIES_INDIRECT);\
1431 \
1432make_lua_key_alias(L, token_instance, TOKEN_METATABLE_INSTANCE);\
1433make_lua_key_alias(L, token_package, TOKEN_METATABLE_PACKAGE);\
1434 \
1435make_lua_key_alias(L, sparse_instance, SPARSE_METATABLE_INSTANCE);\
1436 \
1437make_lua_key_alias(L, pdfe_instance, PDFE_METATABLE_INSTANCE);\
1438make_lua_key_alias(L, pdfe_dictionary_instance, PDFE_METATABLE_DICTIONARY);\
1439make_lua_key_alias(L, pdfe_array_instance, PDFE_METATABLE_ARRAY);\
1440make_lua_key_alias(L, pdfe_stream_instance, PDFE_METATABLE_STREAM);\
1441make_lua_key_alias(L, pdfe_reference_instance, PDFE_METATABLE_REFERENCE);\
1442 \
1443make_lua_key_alias(L, file_handle_instance, LUA_FILEHANDLE);\
1444
1445
1446# define declare_metapost_lua_keys(L) \
1447\
1448\
1449make_lua_key(L, color);\
1450make_lua_key(L, curl);\
1451make_lua_key(L, curled);\
1452make_lua_key(L, curved);\
1453make_lua_key(L, cycle);\
1454make_lua_key(L, dash);\
1455make_lua_key(L, dashes);\
1456\
1457make_lua_key(L, direction_x);\
1458make_lua_key(L, direction_y);\
1459make_lua_key(L, elliptical);\
1460make_lua_key(L, end_cycle);\
1461make_lua_key(L, endpoint);\
1462make_lua_key(L, error);\
1463make_lua_key(L, error_line);\
1464\
1465make_lua_key(L, extensions);\
1466make_lua_key(L, fig);\
1467\
1468make_lua_key(L, find_file);\
1469\
1470make_lua_key(L, given);\
1471make_lua_key(L, halt_on_error);\
1472make_lua_key(L, hash);\
1473\
1474make_lua_key(L, htap);\
1475\
1476make_lua_key(L, internals);\
1477make_lua_key(L, job_name);\
1478make_lua_key(L, knots);\
1479make_lua_key(L, left_curl);\
1480make_lua_key(L, left_tension);\
1481make_lua_key(L, left_type);\
1482make_lua_key(L, left_x);\
1483make_lua_key(L, left_y);\
1484make_lua_key(L, linecap);\
1485make_lua_key(L, linejoin);\
1486make_lua_key(L, make_text);\
1487make_lua_key(L, math_mode);\
1488make_lua_key(L, memory);\
1489make_lua_key(L, miterlimit);\
1490make_lua_key(L, nodes);\
1491make_lua_key(L, offset);\
1492\
1493make_lua_key(L, open_file);\
1494\
1495make_lua_key(L, pairs);\
1496make_lua_key(L, path);\
1497make_lua_key(L, pen);\
1498make_lua_key(L, postscript);\
1499make_lua_key(L, prescript);\
1500make_lua_key(L, print_line);\
1501make_lua_key(L, random_seed);\
1502\
1503make_lua_key(L, right_curl);\
1504make_lua_key(L, right_tension);\
1505make_lua_key(L, right_type);\
1506make_lua_key(L, right_x);\
1507make_lua_key(L, right_y);\
1508make_lua_key(L, run_error);\
1509make_lua_key(L, run_internal);\
1510make_lua_key(L, run_logger);\
1511make_lua_key(L, run_overload);\
1512make_lua_key(L, run_script);\
1513make_lua_key(L, run_warning);\
1514make_lua_key(L, rx);\
1515make_lua_key(L, ry);\
1516make_lua_key(L, show_mode);\
1517make_lua_key(L, stacking);\
1518make_lua_key(L, start_bounds);\
1519make_lua_key(L, start_clip);\
1520make_lua_key(L, start_group);\
1521make_lua_key(L, status);\
1522make_lua_key(L, stop_bounds);\
1523make_lua_key(L, stop_clip);\
1524make_lua_key(L, stop_group);\
1525make_lua_key(L, strings);\
1526make_lua_key(L, sx);\
1527make_lua_key(L, sy);\
1528make_lua_key(L, symbols);\
1529\
1530make_lua_key(L, text_mode);\
1531make_lua_key(L, tokens);\
1532make_lua_key(L, transform);\
1533make_lua_key(L, tx);\
1534make_lua_key(L, ty);\
1535\
1536make_lua_key(L, utf8_mode);\
1537make_lua_key(L, warning);\
1538\
1539make_lua_key(L, writer);\
1540make_lua_key(L, x_coord);\
1541make_lua_key(L, y_coord);\
1542\
1543make_lua_key_alias(L, mplib_instance, MP_METATABLE_INSTANCE);\
1544make_lua_key_alias(L, mplib_figure, MP_METATABLE_FIGURE);\
1545make_lua_key_alias(L, mplib_object, MP_METATABLE_OBJECT);\
1546
1547
1548
1551
1552typedef struct lmt_keys {
1553# undef make_lua_key
1554# undef make_lua_key_alias
1555# define make_lua_key make_lua_key_ptr
1556# define make_lua_key_alias make_lua_key_ptr_alias
1557declare_shared_lua_keys(NULL)
1558declare_metapost_lua_keys(NULL)
1559# undef make_lua_key
1560# undef make_lua_key_alias
1561# define make_lua_key make_lua_key_idx
1562# define make_lua_key_alias make_lua_key_idx_alias
1563declare_shared_lua_keys(NULL)
1564declare_metapost_lua_keys(NULL)
1565# undef make_lua_key
1566# undef make_lua_key_alias
1567} lmt_keys_info ;
1568
1569extern lmt_keys_info lmt_keys;
1570
1571# define make_lua_key init_lua_key
1572# define make_lua_key_alias init_lua_key_alias
1573
1574# define lmt_initialize_shared_keys declare_shared_lua_keys
1575# define lmt_initialize_metapost_keys declare_metapost_lua_keys
1576
1577
1585
1586
1587
1588
1589# define lmt_rounded(d) (lua_Integer) (llround(d))
1590# define lmt_roundedfloat(f) (lua_Integer) (llround((double) f))
1591
1592# define lmt_tolong(L,i) (long) lua_tointeger(L,i)
1593# define lmt_checklong(L,i) (long) luaL_checkinteger(L,i)
1594# define lmt_optlong(L,i,j) (long) luaL_optinteger(L,i,j)
1595
1596# define lmt_tointeger(L,i) (int) lua_tointeger(L,i)
1597# define lmt_checkinteger(L,i) (int) luaL_checkinteger(L,i)
1598# define lmt_optinteger(L,i,j) (int) luaL_optinteger(L,i,j)
1599
1600# define lmt_tosizet(L,i) (size_t) lua_tointeger(L,i)
1601# define lmt_checksizet(L,i) (size_t) luaL_checkinteger(L,i)
1602# define lmt_optsizet(L,i,j) (size_t) luaL_optinteger(L,i,j)
1603
1604# define lmt_tohalfword(L,i) (halfword) lua_tointeger(L,i)
1605# define lmt_checkhalfword(L,i) (halfword) luaL_checkinteger(L,i)
1606# define lmt_opthalfword(L,i,j) (halfword) luaL_optinteger(L,i,j)
1607
1608# define lmt_tofullword(L,i) (fullword) lua_tointeger(L,i)
1609# define lmt_checkfullword(L,i) (fullword) luaL_checkinteger(L,i)
1610# define lmt_optfullword(L,i,j) (fullword) luaL_optinteger(L,i,j)
1611
1612# define lmt_toscaled(L,i) (scaled) lua_tointeger(L,i)
1613# define lmt_checkscaled(L,i) (scaled) luaL_checkinteger(L,i)
1614# define lmt_optscaled(L,i,j) (scaled) luaL_optinteger(L,i,j)
1615
1616# define lmt_toquarterword(L,i) (quarterword) lua_tointeger(L,i)
1617# define lmt_checkquarterword(L,i) (quarterword) luaL_checkinteger(L,i)
1618# define lmt_optquarterword(L,i,j) (quarterword) luaL_optinteger(L,i,j)
1619
1620# define lmt_tosingleword(L,i) (singleword) lua_tointeger(L,i)
1621# define lmt_checksingleword(L,i) (singleword) luaL_checkinteger(L,i)
1622# define lmt_optsingleword(L,i,j) (singleword) luaL_optinteger(L,i,j)
1623
1624# undef lround
1625# include <math.h>
1626
1627static inline int lmt_roundnumber(lua_State *L, int i)
1628{
1629 double n = lua_tonumber(L, i);
1630 return n == 0.0 ? 0 : lround(n);
1631}
1632
1633static inline unsigned int lmt_uroundnumber(lua_State *L, int i)
1634{
1635 double n = lua_tonumber(L, i);
1636 return n == 0.0 ? 0 : (unsigned int) lround(n);
1637}
1638
1639static inline int lmt_optroundnumber(lua_State *L, int i, int dflt)
1640{
1641 double n = luaL_optnumber(L, i, dflt);
1642 return n == 0.0 ? 0 : lround(n);
1643}
1644
1645static inline int lmt_opturoundnumber(lua_State *L, int i, int dflt)
1646{
1647 double n = luaL_optnumber(L, i, dflt);
1648 return n == 0.0 ? 0 : (unsigned int) lround(n);
1649}
1650
1651static inline double lmt_number_from_table(lua_State *L, int i, int j, lua_Number d)
1652{
1653 double n;
1654 lua_rawgeti(L, i, j);
1655 n = luaL_optnumber(L, -1, d);
1656 lua_pop(L, 1);
1657 return n;
1658}
1659
1660extern void lmt_initialize_interface(void);
1661
1662# define lmt_toroundnumber lmt_roundnumber
1663# define lmt_touroundnumber lmt_uroundnumber
1664
1665static inline void lua_set_string_by_key(lua_State *L, const char *a, const char *b)
1666{
1667 lua_pushstring(L, b ? b : "");
1668 lua_setfield(L, -2, a);
1669}
1670
1671static inline void lua_set_string_by_index(lua_State *L, lua_Integer a, const char *b)
1672{
1673 lua_pushstring(L, b ? b : "");
1674 lua_rawseti(L, -2, a);
1675}
1676
1677static inline void lua_set_integer_by_key(lua_State *L, const char *a, int b)
1678{
1679 lua_pushinteger(L, b);
1680 lua_setfield(L, -2, a);
1681}
1682
1683static inline void lua_set_integer_by_index(lua_State *L, int a, int b)
1684{
1685 lua_pushinteger(L, b);
1686 lua_rawseti(L, -2, a);
1687}
1688
1689static inline void lua_set_number_by_key(lua_State *L, const char *a, double b)
1690{
1691 lua_pushnumber(L, b);
1692 lua_setfield(L, -2, a);
1693}
1694
1695static inline void lua_set_number_by_index(lua_State *L, int a, double b)
1696{
1697 lua_pushnumber(L, b);
1698 lua_rawseti(L, -2, a);
1699}
1700
1701static inline void lua_set_cardinal_by_key(lua_State *L, const char *a, unsigned b)
1702{
1703 lua_pushinteger(L, b);
1704 lua_setfield(L, -2, a);
1705}
1706
1707static inline void lua_set_cardinal_by_index(lua_State *L, int a, unsigned b)
1708{
1709 lua_pushinteger(L, b);
1710 lua_rawseti(L, -2, a);
1711}
1712
1713static inline void lua_set_boolean_by_key(lua_State *L, const char *a, int b)
1714{
1715 lua_pushboolean(L, b);
1716 lua_setfield(L, -2, a);
1717}
1718
1719static inline void lua_set_boolean_by_index(lua_State *L, int a, int b)
1720{
1721 lua_pushboolean(L, b);
1722 lua_rawseti(L, -2, a);
1723}
1724
1725static inline void lmt_string_to_buffer(const char *str)
1726{
1727 luaL_addstring(lmt_lua_state.used_buffer, str);
1728}
1729
1730static inline void lmt_char_to_buffer(char c)
1731{
1732 luaL_addchar(lmt_lua_state.used_buffer, c);
1733}
1734
1735static inline void lmt_newline_to_buffer(void)
1736{
1737 luaL_addchar(lmt_lua_state.used_buffer, '\n');
1738}
1739
1740# endif
1741 |