3 Copyright 2006-2012 Taco Hoekwater <taco@luatex.org>
5 This file is part of LuaTeX.
7 LuaTeX is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2 of the License, or (at your
10 option) any later version.
12 LuaTeX is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15 License for more details.
17 You should have received a copy of the GNU General Public License along
18 with LuaTeX; if not, see <http://www.gnu.org/licenses/>. */
22 # define LUATEX_API_H 1
32 # define MyName "LuajitTeX"
33 # define my_name "luajittex"
35 # define MyName "LuaTeX"
36 # define my_name "luatex"
43 typedef struct LoadS
{
48 extern lua_State
*Luas
;
50 extern void make_table(lua_State
* L
, const char *tab
, const char *mttab
, const char *getfunc
,
53 extern int luac_main(int argc
, char *argv
[]);
55 extern int luaopen_tex(lua_State
* L
);
57 extern int luaopen_pdf(lua_State
* L
);
59 # define LUA_TEXFILEHANDLE "TEXFILE*"
61 extern int luaopen_texio(lua_State
* L
);
63 extern int luaopen_lang(lua_State
* L
);
65 extern lua_State
*luatex_error(lua_State
* L
, int fatal
);
67 extern int luaopen_unicode(lua_State
* L
);
68 extern int luaopen_zip(lua_State
* L
);
69 extern int luaopen_lfs(lua_State
* L
);
70 extern int luaopen_lpeg(lua_State
* L
);
71 extern int luaopen_md5(lua_State
* L
);
72 extern int luatex_md5_lua_open(lua_State
* L
);
74 extern int luaopen_zlib(lua_State
* L
);
75 extern int luaopen_gzip(lua_State
* L
);
76 extern int luaopen_ff(lua_State
* L
);
77 extern int luaopen_profiler(lua_State
* L
);
79 extern int luaopen_socket_core(lua_State
* L
);
80 extern int luaopen_mime_core(lua_State
* L
);
81 extern void luatex_socketlua_open(lua_State
* L
);
83 extern int luaopen_img(lua_State
* L
);
84 extern int l_new_image(lua_State
* L
);
85 extern int luaopen_epdf(lua_State
* L
);
86 extern int luaopen_pdfscanner(lua_State
* L
);
87 extern int luaopen_mplib(lua_State
* L
);
89 extern void open_oslibext(lua_State
* L
, int safer_option
);
90 extern int open_iolibext(lua_State
* L
);
91 extern void open_strlibext(lua_State
* L
);
92 extern void open_lfslibext(lua_State
* L
);
94 extern void initfilecallbackids(int max
);
95 extern void setinputfilecallbackid(int n
, int i
);
96 extern void setreadfilecallbackid(int n
, int i
);
97 extern int getinputfilecallbackid(int n
);
98 extern int getreadfilecallbackid(int n
);
100 extern void lua_initialize(int ac
, char **av
);
102 extern int luaopen_kpse(lua_State
* L
);
104 extern int luaopen_callback(lua_State
* L
);
106 extern int luaopen_lua(lua_State
* L
, char *fname
);
108 extern int luaopen_stats(lua_State
* L
);
110 extern int luaopen_font(lua_State
* L
);
111 extern int luaopen_vf(lua_State
* L
);
112 extern int font_to_lua(lua_State
* L
, int f
);
113 extern int font_from_lua(lua_State
* L
, int f
); /* return is boolean */
115 extern int luaopen_token(lua_State
* L
);
116 extern int luaopen_newtoken(lua_State
* L
);
117 extern void tokenlist_to_lua(lua_State
* L
, int p
);
118 extern void tokenlist_to_luastring(lua_State
* L
, int p
);
119 extern int tokenlist_from_lua(lua_State
* L
);
121 extern void lua_nodelib_push(lua_State
* L
);
122 extern int nodelib_getdir(lua_State
* L
, int n
, int absolute_only
);
124 extern int luaopen_node(lua_State
* L
);
125 extern void nodelist_to_lua(lua_State
* L
, int n
);
126 extern int nodelist_from_lua(lua_State
* L
);
128 extern int dimen_to_number(lua_State
* L
, const char *s
);
130 extern int get_command_id(const char *s
);
132 extern void dump_luac_registers(void);
134 extern void undump_luac_registers(void);
139 extern char *jithash_hashname
;
143 #if !defined(LUAI_HASHLIMIT)
144 #define LUAI_HASHLIMIT 5
146 extern unsigned char show_luahashchars
;
148 extern void unhide_lua_table(lua_State
* lua
, const char *name
, int r
);
149 extern int hide_lua_table(lua_State
* lua
, const char *name
);
151 extern void unhide_lua_value(lua_State
* lua
, const char *name
,
152 const char *item
, int r
);
153 extern int hide_lua_value(lua_State
* lua
, const char *name
, const char *item
);
155 typedef struct command_item_
{
156 const char *cmd_name
;
158 const char **commands
;
161 extern command_item command_names
[];
162 extern int callback_callbacks_id
;
164 extern void luainterpreter(void);
166 extern int luabytecode_max
;
167 extern unsigned int luabytecode_bytes
;
168 extern int luastate_bytes
;
170 extern int callback_count
;
171 extern int saved_callback_count
;
173 extern const char *luatex_banner
;
175 extern const char *last_lua_error
;
181 const char *name
; /* parameter name */
182 int idx
; /* index within img_parms array */
185 extern void preset_environment(lua_State
* L
, const parm_struct
* p
,
188 extern char *startup_filename
;
189 extern int safer_option
;
190 extern int nosocket_option
;
192 extern char *last_source_name
;
193 extern int last_lineno
;
195 extern int program_name_set
; /* in lkpselib.c */
201 extern int loader_C_luatex(lua_State
* L
, const char *name
,
202 const char *filename
);
203 extern int loader_Call_luatex(lua_State
* L
, const char *name
,
204 const char *filename
);
206 extern void init_tex_table(lua_State
* L
);
208 extern int tex_table_id
;
209 extern int pdf_table_id
;
210 extern int newtoken_table_id
;
211 extern int token_table_id
;
212 extern int node_table_id
;
213 extern int main_initialize(void);
215 extern int do_run_callback(int special
, const char *values
, va_list vl
);
216 extern int lua_traceback(lua_State
* L
);
221 extern char *luanames
[];
223 extern int ff_get_ttc_index(char *ffname
, char *psname
); /* luafontloader/src/luafflib.c */
224 extern int ff_createcff(char *, unsigned char **, int *); /* luafontloader/src/luafflib.c */
226 extern char *FindResourceTtfFont(char *filename
, char *fontname
); /* luafontloader/fontforge/fontforge/macbinary.c */
228 extern char charsetstr
[]; /* from mpdir/psout.w */
231 extern char **environ
;
239 Same as in lnodelib.c, but with prefix G_ for now.
240 These macros create and access pointers (indices) to keys which is faster. The
241 shortcuts are created as part of the initialization.
245 /*#define init_luaS_index(a) do { */
246 #define init_lua_key(a) do { \
247 lua_pushliteral(Luas,#a); \
248 luaS_##a##_ptr = lua_tostring(Luas,-1); \
249 luaS_##a##_index = luaL_ref (Luas,LUA_REGISTRYINDEX); \
252 /*#define init_luaS_index_s(a,b) do { */
253 #define init_lua_key_alias(a,b) do { \
254 lua_pushliteral(Luas,b); \
255 luaS_##a##_ptr = lua_tostring(Luas,-1); \
256 luaS_##a##_index = luaL_ref (Luas,LUA_REGISTRYINDEX); \
259 /*#define make_luaS_index(a) */
260 #define make_lua_key(a) \
261 int luaS_##a##_index = 0; \
262 const char * luaS_##a##_ptr = NULL
265 /*#define luaS_ptr_eq(a,b) (a==luaS_##b##_ptr)*/
266 #define lua_key_eq(a,b) (a==luaS_##b##_ptr)
268 #define luaS_index(a) luaS_##a##_index
269 #define lua_key_index(a) luaS_##a##_index
270 #define lua_key(a) luaS_##a##_ptr
271 #define use_lua_key(a) \
272 extern int luaS_##a##_index ; \
273 extern const char * luaS_##a##_ptr
276 #define lua_key_rawgeti(a) \
277 lua_rawgeti(L, LUA_REGISTRYINDEX, luaS_##a##_index);\
280 #define lua_key_rawgeti_n(a,n) \
281 lua_rawgeti(L, LUA_REGISTRYINDEX, luaS_##a##_index);\
285 Unfortunately floor is already redefined as
286 #define floor ((integer)floor((double)(a)))
288 #define lua_uroundnumber(a,b) (unsigned int)floor((double)(lua_tonumber(a,b)+0.5))
292 #define lua_roundnumber(a,b) (int)floor((double)lua_tonumber(a,b)+0.5)
293 #define lua_uroundnumber(a,b) (unsigned int)((double)(lua_tonumber(a,b)+0.5))
294 extern int lua_numeric_field_by_index(lua_State
*, int , int);
295 extern unsigned int lua_unsigned_numeric_field_by_index(lua_State
*, int , int);
298 /* Currently we sometimes use numbers and sometimes strings in node properties. We can
299 make that consistent by having a check on number and if not then assign a string. The
300 strings are prehashed and we make a bunch of lua tables that have these values. We can
301 preassign these at startup time. */
303 /* no need for L state argument */
305 #define PACK_TYPE_SIZE 4
306 #define GROUP_CODE_SIZE 23
307 #define MATH_STYLE_NAME_SIZE 8
308 #define DIR_PAR_SIZE 128
309 #define DIR_TEXT_SIZE 128
311 extern int l_pack_type_index
[PACK_TYPE_SIZE
] ;
312 extern int l_group_code_index
[GROUP_CODE_SIZE
];
313 extern int l_math_style_name_index
[MATH_STYLE_NAME_SIZE
];
314 extern int l_dir_par_index
[DIR_PAR_SIZE
];
315 extern int l_dir_text_index
[DIR_TEXT_SIZE
];
317 #define lua_push_pack_type(L,pack_type) lua_rawgeti(L, LUA_REGISTRYINDEX, l_pack_type_index [pack_type] );
318 #define lua_push_group_code(L,group_code) lua_rawgeti(L, LUA_REGISTRYINDEX, l_group_code_index [group_code]);
319 #define lua_push_math_style_name(L,style_name) lua_rawgeti(L, LUA_REGISTRYINDEX, l_math_style_name_index[style_name]);
320 #define lua_push_dir_par(L,dir) lua_rawgeti(L, LUA_REGISTRYINDEX, l_dir_par_index[dir+64])
321 #define lua_push_dir_text(L,dir) lua_rawgeti(L, LUA_REGISTRYINDEX, l_dir_text_index[dir+64])
324 #define lua_push_string_by_index(L,index) lua_rawgeti(L, LUA_REGISTRYINDEX, index)
325 #define lua_push_string_by_name(L,index) lua_rawgeti(L, LUA_REGISTRYINDEX, lua_key_index(index))
328 #define set_pack_type_index \
329 l_pack_type_index[0] = lua_key_index(exactly); \
330 l_pack_type_index[1] = lua_key_index(additional); \
331 l_pack_type_index[2] = lua_key_index(cal_expand_ratio);\
332 l_pack_type_index[3] = lua_key_index(subst_ex_font);
334 #define set_l_group_code_index \
335 l_group_code_index[0] = lua_key_index(empty_string);\
336 l_group_code_index[1] = lua_key_index(simple);\
337 l_group_code_index[2] = lua_key_index(hbox);\
338 l_group_code_index[3] = lua_key_index(adjusted_hbox);\
339 l_group_code_index[4] = lua_key_index(vbox);\
340 l_group_code_index[5] = lua_key_index(vtop);\
341 l_group_code_index[6] = lua_key_index(align);\
342 l_group_code_index[7] = lua_key_index(no_align);\
343 l_group_code_index[8] = lua_key_index(output);\
344 l_group_code_index[9] = lua_key_index(math);\
345 l_group_code_index[10] = lua_key_index(disc);\
346 l_group_code_index[11] = lua_key_index(insert);\
347 l_group_code_index[12] = lua_key_index(vcenter);\
348 l_group_code_index[13] = lua_key_index(math_choice);\
349 l_group_code_index[14] = lua_key_index(semi_simple);\
350 l_group_code_index[15] = lua_key_index(math_shift);\
351 l_group_code_index[16] = lua_key_index(math_left);\
352 l_group_code_index[17] = lua_key_index(local_box);\
353 l_group_code_index[18] = lua_key_index(split_off);\
354 l_group_code_index[19] = lua_key_index(split_keep);\
355 l_group_code_index[20] = lua_key_index(preamble);\
356 l_group_code_index[21] = lua_key_index(align_set);\
357 l_group_code_index[22] = lua_key_index(fin_row)
359 #define set_l_math_style_name_index \
360 l_math_style_name_index[0] = lua_key_index(display);\
361 l_math_style_name_index[1] = lua_key_index(crampeddisplay);\
362 l_math_style_name_index[2] = lua_key_index(text);\
363 l_math_style_name_index[3] = lua_key_index(crampedtext);\
364 l_math_style_name_index[4] = lua_key_index(script);\
365 l_math_style_name_index[5] = lua_key_index(crampedscript);\
366 l_math_style_name_index[6] = lua_key_index(scriptscript);\
367 l_math_style_name_index[7] = lua_key_index(crampedscriptscript)
369 #define set_l_dir_par_index \
370 l_dir_par_index[0] = lua_key_index(TLT);\
371 l_dir_par_index[4] = lua_key_index(TRT);\
372 l_dir_par_index[9] = lua_key_index(LTL);\
373 l_dir_par_index[24] = lua_key_index(RTT);\
374 l_dir_par_index[64] = lua_key_index(TLT);\
375 l_dir_par_index[68] = lua_key_index(TRT);\
376 l_dir_par_index[73] = lua_key_index(LTL);\
377 l_dir_par_index[88] = lua_key_index(RTT);\
379 #define set_l_dir_text_index \
380 l_dir_text_index[0] = lua_key_index(mTLT);\
381 l_dir_text_index[4] = lua_key_index(mTRT);\
382 l_dir_text_index[9] = lua_key_index(mLTL);\
383 l_dir_text_index[24] = lua_key_index(mRTT);\
384 l_dir_text_index[64] = lua_key_index(pTLT);\
385 l_dir_text_index[68] = lua_key_index(pTRT);\
386 l_dir_text_index[73] = lua_key_index(pLTL);\
387 l_dir_text_index[88] = lua_key_index(pRTT);\
390 #define set_make_keys \
391 make_lua_key(cmdname);make_lua_key(expandable);make_lua_key(protected);\
393 make_lua_key(MathConstants);\
397 make_lua_key(accent);\
398 make_lua_key(action);\
399 make_lua_key(action_id);\
400 make_lua_key(action_type);\
401 make_lua_key(active);\
402 make_lua_key(additional);\
403 make_lua_key(adjust);\
404 make_lua_key(adjust_head);\
405 make_lua_key(adjusted_hbox);\
406 make_lua_key(advance);\
407 make_lua_key(after_display);\
408 make_lua_key(after_output);\
409 make_lua_key(aleph);\
410 make_lua_key(align);\
411 make_lua_key(align_head);\
412 make_lua_key(align_set);\
413 make_lua_key(alignment);\
414 make_lua_key(annot);\
417 make_lua_key(attributes);\
418 make_lua_key(auto_expand);\
419 make_lua_key(before_display);\
420 make_lua_key(best_ins_ptr);\
421 make_lua_key(best_page_break);\
422 make_lua_key(best_size);\
424 make_lua_key(bot_accent);\
425 make_lua_key(bottom_left);\
426 make_lua_key(bottom_right);\
428 make_lua_key(box_left);\
429 make_lua_key(box_left_width);\
430 make_lua_key(box_right);\
431 make_lua_key(box_right_width);\
432 make_lua_key(broken_ins);\
433 make_lua_key(broken_ptr);\
434 make_lua_key(cache);\
435 make_lua_key(cal_expand_ratio);\
436 make_lua_key(catalog);\
438 make_lua_key(characters);\
439 make_lua_key(checksum);\
440 make_lua_key(cidinfo);\
441 make_lua_key(class);\
442 make_lua_key(command);\
443 make_lua_key(commands);\
444 make_lua_key(comment);\
445 make_lua_key(components);\
446 make_lua_key(compresslevel);\
447 make_lua_key(contrib_head);\
450 make_lua_key(count);\
451 make_lua_key(crampeddisplay);\
452 make_lua_key(crampedscript);\
453 make_lua_key(crampedscriptscript);\
454 make_lua_key(crampedtext);\
455 make_lua_key(csname);\
457 make_lua_key(degree);\
458 make_lua_key(delim);\
459 make_lua_key(delimptr);\
460 make_lua_key(denom);\
461 make_lua_key(depth);\
462 make_lua_key(designsize);\
463 make_lua_key(dest_id);\
464 make_lua_key(dest_type);\
466 make_lua_key(dir_h);\
467 make_lua_key(direct);\
468 make_lua_key(direction);\
471 make_lua_key(display);\
473 make_lua_key(dvi_ptr);\
474 make_lua_key(embedding);\
475 make_lua_key(empty_string);\
476 make_lua_key(encodingbytes);\
477 make_lua_key(encodingname);\
480 make_lua_key(exactly);\
481 make_lua_key(expansion_factor);\
483 make_lua_key(extend);\
484 make_lua_key(extender);\
485 make_lua_key(extensible);\
486 make_lua_key(extra_space);\
490 make_lua_key(filename);\
491 make_lua_key(fin_row);\
493 make_lua_key(fonts);\
494 make_lua_key(format);\
495 make_lua_key(fullname);\
496 make_lua_key(global);\
497 make_lua_key(glue_order);\
498 make_lua_key(glue_set);\
499 make_lua_key(glue_sign);\
500 make_lua_key(glyph);\
504 make_lua_key(height);\
505 make_lua_key(hmode_par);\
506 make_lua_key(hold_head);\
507 make_lua_key(horiz_variants);\
508 make_lua_key(hyphenchar);\
510 make_lua_key(image);\
511 make_lua_key(immediate);\
512 make_lua_key(index);\
514 make_lua_key(insert);\
515 make_lua_key(italic);\
517 make_lua_key(kerns);\
519 make_lua_key(large_char);\
520 make_lua_key(large_fam);\
521 make_lua_key(last_ins_ptr);\
522 make_lua_key(leader);\
523 make_lua_key(least_page_cost);\
525 make_lua_key(left_boundary);\
526 make_lua_key(left_protruding);\
527 make_lua_key(level);\
528 make_lua_key(ligatures);\
529 make_lua_key(link_attr);\
531 make_lua_key(local_box);\
534 make_lua_key(lua_functions);\
535 make_lua_key(luatex);\
536 make_lua_key(luatex_newtoken);\
537 make_lua_key(luatex_node);\
544 make_lua_key(math_choice);\
545 make_lua_key(math_left);\
546 make_lua_key(math_shift);\
547 make_lua_key(mathdir);\
548 make_lua_key(mathkern);\
549 make_lua_key(mathstyle);\
552 make_lua_key(modeline);\
554 make_lua_key(named_id);\
555 make_lua_key(names);\
556 make_lua_key(new_graf);\
557 make_lua_key(new_window);\
560 make_lua_key(no_align);\
563 make_lua_key(node_properties);\
564 make_lua_key(node_properties_indirect);\
565 make_lua_key(nomath);\
567 make_lua_key(nucleus);\
569 make_lua_key(number);\
570 make_lua_key(objcompression);\
571 make_lua_key(objnum);\
572 make_lua_key(omega);\
573 make_lua_key(ordering);\
574 make_lua_key(output);\
580 make_lua_key(page_head);\
581 make_lua_key(page_ins_head);\
582 make_lua_key(pageattributes);\
583 make_lua_key(pageresources);\
584 make_lua_key(pagesattributes);\
585 make_lua_key(parameters);\
586 make_lua_key(pdf_data);\
587 make_lua_key(pdftex);\
588 make_lua_key(pen_broken);\
589 make_lua_key(pen_inter);\
590 make_lua_key(penalty);\
594 make_lua_key(pre_adjust);\
595 make_lua_key(pre_adjust_head);\
596 make_lua_key(pre_align);\
597 make_lua_key(pre_box);\
598 make_lua_key(preamble);\
600 make_lua_key(prevdepth);\
601 make_lua_key(prevgraf);\
602 make_lua_key(psname);\
607 make_lua_key(ref_count);\
609 make_lua_key(registry);\
610 make_lua_key(renew);\
612 make_lua_key(replace);\
613 make_lua_key(right);\
614 make_lua_key(right_boundary);\
615 make_lua_key(right_protruding);\
617 make_lua_key(scale);\
618 make_lua_key(script);\
619 make_lua_key(scriptscript);\
620 make_lua_key(semi_simple);\
621 make_lua_key(shift);\
622 make_lua_key(shrink);\
623 make_lua_key(shrink_order);\
624 make_lua_key(simple);\
626 make_lua_key(skewchar);\
627 make_lua_key(slant);\
629 make_lua_key(small_char);\
630 make_lua_key(small_fam);\
631 make_lua_key(space);\
632 make_lua_key(space_shrink);\
633 make_lua_key(space_stretch);\
634 make_lua_key(spacefactor);\
636 make_lua_key(special);\
637 make_lua_key(split_keep);\
638 make_lua_key(split_off);\
639 make_lua_key(stack);\
640 make_lua_key(start);\
642 make_lua_key(stream);\
643 make_lua_key(streamfile);\
644 make_lua_key(stretch);\
645 make_lua_key(stretch_order);\
646 make_lua_key(string);\
647 make_lua_key(style);\
649 make_lua_key(subst_ex_font);\
650 make_lua_key(subtype);\
652 make_lua_key(supplement);\
653 make_lua_key(surround);\
655 make_lua_key(temp_head);\
657 make_lua_key(term_and_log);\
660 make_lua_key(thread_attr);\
661 make_lua_key(thread_id);\
663 make_lua_key(token);\
665 make_lua_key(top_accent);\
666 make_lua_key(top_left);\
667 make_lua_key(top_right);\
668 make_lua_key(tounicode);\
669 make_lua_key(trailer);\
670 make_lua_key(transform);\
672 make_lua_key(uchyph);\
673 make_lua_key(umath);\
674 make_lua_key(units_per_em);\
676 make_lua_key(user_id);\
678 make_lua_key(value);\
680 make_lua_key(vcenter);\
681 make_lua_key(version);\
682 make_lua_key(vert_variants);\
683 make_lua_key(vmode_par);\
685 make_lua_key(width);\
686 make_lua_key(writable);\
687 make_lua_key(x_height);\
688 make_lua_key(xoffset);\
689 make_lua_key(xyz_zoom);\
690 make_lua_key(yoffset)
693 #define set_init_keys \
694 init_lua_key(cmdname);init_lua_key(expandable);init_lua_key(protected);\
696 init_lua_key(MathConstants);\
700 init_lua_key(accent);\
701 init_lua_key(action);\
702 init_lua_key(action_id);\
703 init_lua_key(action_type);\
704 init_lua_key(active);\
705 init_lua_key(additional);\
706 init_lua_key(adjust);\
707 init_lua_key(adjust_head);\
708 init_lua_key(adjusted_hbox);\
709 init_lua_key(advance);\
710 init_lua_key(after_display);\
711 init_lua_key(after_output);\
712 init_lua_key(aleph);\
713 init_lua_key(align);\
714 init_lua_key(align_head);\
715 init_lua_key(align_set);\
716 init_lua_key(alignment);\
717 init_lua_key(annot);\
720 init_lua_key(attributes);\
721 init_lua_key(auto_expand);\
722 init_lua_key(before_display);\
723 init_lua_key(best_ins_ptr);\
724 init_lua_key(best_page_break);\
725 init_lua_key(best_size);\
727 init_lua_key(bot_accent);\
728 init_lua_key(bottom_left);\
729 init_lua_key(bottom_right);\
731 init_lua_key(box_left);\
732 init_lua_key(box_left_width);\
733 init_lua_key(box_right);\
734 init_lua_key(box_right_width);\
735 init_lua_key(broken_ins);\
736 init_lua_key(broken_ptr);\
737 init_lua_key(cache);\
738 init_lua_key(cal_expand_ratio);\
739 init_lua_key(catalog);\
741 init_lua_key(characters);\
742 init_lua_key(checksum);\
743 init_lua_key(cidinfo);\
744 init_lua_key(class);\
745 init_lua_key(command);\
746 init_lua_key(commands);\
747 init_lua_key(comment);\
748 init_lua_key(components);\
749 init_lua_key(compresslevel);\
750 init_lua_key(contrib_head);\
753 init_lua_key(count);\
754 init_lua_key(crampeddisplay);\
755 init_lua_key(crampedscript);\
756 init_lua_key(crampedscriptscript);\
757 init_lua_key(crampedtext);\
758 init_lua_key(csname);\
760 init_lua_key(degree);\
761 init_lua_key(delim);\
762 init_lua_key(delimptr);\
763 init_lua_key(denom);\
764 init_lua_key(depth);\
765 init_lua_key(designsize);\
766 init_lua_key(dest_id);\
767 init_lua_key(dest_type);\
769 init_lua_key(dir_h);\
770 init_lua_key(direct);\
771 init_lua_key(direction);\
774 init_lua_key(display);\
776 init_lua_key(dvi_ptr);\
777 init_lua_key(embedding);\
778 init_lua_key(encodingbytes);\
779 init_lua_key(encodingname);\
782 init_lua_key(exactly);\
783 init_lua_key(expansion_factor);\
785 init_lua_key(extend);\
786 init_lua_key(extender);\
787 init_lua_key(extensible);\
788 init_lua_key(extra_space);\
792 init_lua_key(filename);\
793 init_lua_key(fin_row);\
795 init_lua_key(fonts);\
796 init_lua_key(format);\
797 init_lua_key(fullname);\
798 init_lua_key(global);\
799 init_lua_key(glue_order);\
800 init_lua_key(glue_set);\
801 init_lua_key(glue_sign);\
802 init_lua_key(glyph);\
806 init_lua_key(height);\
807 init_lua_key(hmode_par);\
808 init_lua_key(hold_head);\
809 init_lua_key(horiz_variants);\
810 init_lua_key(hyphenchar);\
812 init_lua_key(image);\
813 init_lua_key(immediate);\
814 init_lua_key(index);\
816 init_lua_key(insert);\
817 init_lua_key(italic);\
819 init_lua_key(kerns);\
821 init_lua_key(large_char);\
822 init_lua_key(large_fam);\
823 init_lua_key(last_ins_ptr);\
824 init_lua_key(leader);\
825 init_lua_key(least_page_cost);\
827 init_lua_key(left_boundary);\
828 init_lua_key(left_protruding);\
829 init_lua_key(level);\
830 init_lua_key(ligatures);\
831 init_lua_key(link_attr);\
833 init_lua_key(local_box);\
836 init_lua_key(luatex);\
837 init_lua_key(luatex_newtoken);\
840 init_lua_key(math_choice);\
841 init_lua_key(math_left);\
842 init_lua_key(math_shift);\
843 init_lua_key(mathdir);\
844 init_lua_key(mathkern);\
845 init_lua_key(mathstyle);\
848 init_lua_key(modeline);\
850 init_lua_key(named_id);\
851 init_lua_key(names);\
852 init_lua_key(new_graf);\
853 init_lua_key(new_window);\
856 init_lua_key(no_align);\
859 init_lua_key(nomath);\
861 init_lua_key(nucleus);\
863 init_lua_key(number);\
864 init_lua_key(objcompression);\
865 init_lua_key(objnum);\
866 init_lua_key(omega);\
867 init_lua_key(ordering);\
868 init_lua_key(output);\
870 init_lua_key(page_head);\
871 init_lua_key(page_ins_head);\
872 init_lua_key(pageattributes);\
873 init_lua_key(pageresources);\
874 init_lua_key(pagesattributes);\
875 init_lua_key(parameters);\
876 init_lua_key(pdftex);\
877 init_lua_key(pen_broken);\
878 init_lua_key(pen_inter);\
879 init_lua_key(penalty);\
883 init_lua_key(pre_adjust);\
884 init_lua_key(pre_adjust_head);\
885 init_lua_key(pre_align);\
886 init_lua_key(pre_box);\
887 init_lua_key(preamble);\
889 init_lua_key(prevdepth);\
890 init_lua_key(prevgraf);\
891 init_lua_key(psname);\
896 init_lua_key(ref_count);\
898 init_lua_key(registry);\
899 init_lua_key(renew);\
901 init_lua_key(replace);\
902 init_lua_key(right);\
903 init_lua_key(right_boundary);\
904 init_lua_key(right_protruding);\
906 init_lua_key(scale);\
907 init_lua_key(script);\
908 init_lua_key(scriptscript);\
909 init_lua_key(semi_simple);\
910 init_lua_key(shift);\
911 init_lua_key(shrink);\
912 init_lua_key(shrink_order);\
913 init_lua_key(simple);\
915 init_lua_key(skewchar);\
916 init_lua_key(slant);\
918 init_lua_key(small_char);\
919 init_lua_key(small_fam);\
920 init_lua_key(space);\
921 init_lua_key(space_shrink);\
922 init_lua_key(space_stretch);\
923 init_lua_key(spacefactor);\
925 init_lua_key(special);\
926 init_lua_key(split_keep);\
927 init_lua_key(split_off);\
928 init_lua_key(stack);\
929 init_lua_key(start);\
931 init_lua_key(stream);\
932 init_lua_key(streamfile);\
933 init_lua_key(stretch);\
934 init_lua_key(stretch_order);\
935 init_lua_key(string);\
936 init_lua_key(style);\
938 init_lua_key(subst_ex_font);\
939 init_lua_key(subtype);\
941 init_lua_key(supplement);\
942 init_lua_key(surround);\
944 init_lua_key(temp_head);\
948 init_lua_key(thread_attr);\
949 init_lua_key(thread_id);\
951 init_lua_key(token);\
953 init_lua_key(top_accent);\
954 init_lua_key(top_left);\
955 init_lua_key(top_right);\
956 init_lua_key(tounicode);\
957 init_lua_key(trailer);\
958 init_lua_key(transform);\
960 init_lua_key(uchyph);\
961 init_lua_key(umath);\
962 init_lua_key(units_per_em);\
964 init_lua_key(user_id);\
966 init_lua_key(value);\
968 init_lua_key(vcenter);\
969 init_lua_key(version);\
970 init_lua_key(vert_variants);\
971 init_lua_key(vmode_par);\
973 init_lua_key(width);\
974 init_lua_key(writable);\
975 init_lua_key(x_height);\
976 init_lua_key(xoffset);\
977 init_lua_key(xyz_zoom);\
978 init_lua_key(yoffset);\
979 init_lua_key_alias(empty_string,"");\
980 init_lua_key_alias(lua_functions,"lua.functions");\
981 init_lua_key_alias(luatex_node, "luatex.node");\
982 init_lua_key_alias(mLTL,"-LTL");\
983 init_lua_key_alias(mRTT,"-RTT");\
984 init_lua_key_alias(mTLT,"-TLT");\
985 init_lua_key_alias(mTRT,"-TRT");\
986 init_lua_key_alias(node_properties,"node.properties");\
987 init_lua_key_alias(node_properties_indirect,"node.properties.indirect");\
988 init_lua_key_alias(pLTL,"+LTL");\
989 init_lua_key_alias(pRTT,"+RTT");\
990 init_lua_key_alias(pTLT,"+TLT");\
991 init_lua_key_alias(pTRT,"+TRT");\
992 init_lua_key_alias(pdf_data,"pdf.data");\
993 init_lua_key_alias(term_and_log,"term and log")
996 #define assign_math_style(L,n,target) do { \
997 if (lua_isnumber(L,n)) { \
998 /* new, often same as subtype anyway */ \
999 target = lua_tonumber(L,n); \
1000 } else if (lua_isstring(L,n)) { \
1001 const char *s = lua_tostring(L, n); \
1002 if (lua_key_eq(s,display)) { \
1004 } else if (lua_key_eq(s,crampeddisplay)) { \
1006 } else if (lua_key_eq(s,text)) { \
1008 } else if (lua_key_eq(s,crampedtext)) { \
1010 } else if (lua_key_eq(s,script)) { \
1012 } else if (lua_key_eq(s,crampedscript)) { \
1014 } else if (lua_key_eq(s,scriptscript)) { \
1016 } else if (lua_key_eq(s,crampedscriptscript)) { \
1022 target = 2; /* text by default */ \
1030 extern FILE *_cairo_win32_tmpfile( void );
1031 #define tmpfile() _cairo_win32_tmpfile()
1032 #endif /* __MINGW32__ */
1037 * experimental code (no primitive):
1040 1 = retain math nodes
1044 #define max_experimental_code 1
1045 #define MAX_EXPERIMENTAL_CODE_SIZE max_experimental_code+1
1046 /* to be indexed by i with 1<= i <=max_experimental_code */
1047 extern int experimental_code
[MAX_EXPERIMENTAL_CODE_SIZE
] ;
1050 #endif /* LUATEX_API_H */
1056 /* These keys have to available to different files */
1060 use_lua_key(cmdname
);use_lua_key(expandable
);use_lua_key(protected);
1063 use_lua_key(MathConstants
);
1067 use_lua_key(accent
);
1068 use_lua_key(action
);
1069 use_lua_key(action_id
);
1070 use_lua_key(action_type
);
1071 use_lua_key(active
);
1072 use_lua_key(additional
);
1073 use_lua_key(adjust
);
1074 use_lua_key(adjust_head
);
1075 use_lua_key(adjusted_hbox
);
1076 use_lua_key(advance
);
1077 use_lua_key(after_display
);
1078 use_lua_key(after_output
);
1081 use_lua_key(align_head
);
1082 use_lua_key(align_set
);
1083 use_lua_key(alignment
);
1087 use_lua_key(attributes
);
1088 use_lua_key(auto_expand
);
1089 use_lua_key(before_display
);
1090 use_lua_key(best_ins_ptr
);
1091 use_lua_key(best_page_break
);
1092 use_lua_key(best_size
);
1094 use_lua_key(bot_accent
);
1095 use_lua_key(bottom_left
);
1096 use_lua_key(bottom_right
);
1098 use_lua_key(box_left
);
1099 use_lua_key(box_left_width
);
1100 use_lua_key(box_right
);
1101 use_lua_key(box_right_width
);
1102 use_lua_key(broken_ins
);
1103 use_lua_key(broken_ptr
);
1105 use_lua_key(cal_expand_ratio
);
1106 use_lua_key(catalog
);
1108 use_lua_key(characters
);
1109 use_lua_key(checksum
);
1110 use_lua_key(cidinfo
);
1112 use_lua_key(command
);
1113 use_lua_key(commands
);
1114 use_lua_key(comment
);
1115 use_lua_key(components
);
1116 use_lua_key(compresslevel
);
1117 use_lua_key(contrib_head
);
1121 use_lua_key(crampeddisplay
);
1122 use_lua_key(crampedscript
);
1123 use_lua_key(crampedscriptscript
);
1124 use_lua_key(crampedtext
);
1125 use_lua_key(csname
);
1127 use_lua_key(degree
);
1129 use_lua_key(delimptr
);
1132 use_lua_key(designsize
);
1133 use_lua_key(dest_id
);
1134 use_lua_key(dest_type
);
1137 use_lua_key(direct
);
1138 use_lua_key(direction
);
1141 use_lua_key(display
);
1143 use_lua_key(dvi_ptr
);
1144 use_lua_key(embedding
);
1145 use_lua_key(empty_string
);
1146 use_lua_key(encodingbytes
);
1147 use_lua_key(encodingname
);
1150 use_lua_key(exactly
);
1151 use_lua_key(expansion_factor
);
1153 use_lua_key(extend
);
1154 use_lua_key(extender
);
1155 use_lua_key(extensible
);
1156 use_lua_key(extra_space
);
1160 use_lua_key(filename
);
1161 use_lua_key(fin_row
);
1164 use_lua_key(format
);
1165 use_lua_key(fullname
);
1166 use_lua_key(global
);
1167 use_lua_key(glue_order
);
1168 use_lua_key(glue_set
);
1169 use_lua_key(glue_sign
);
1174 use_lua_key(height
);
1175 use_lua_key(hmode_par
);
1176 use_lua_key(hold_head
);
1177 use_lua_key(horiz_variants
);
1178 use_lua_key(hyphenchar
);
1181 use_lua_key(immediate
);
1184 use_lua_key(insert
);
1185 use_lua_key(italic
);
1189 use_lua_key(large_char
);
1190 use_lua_key(large_fam
);
1191 use_lua_key(last_ins_ptr
);
1192 use_lua_key(leader
);
1193 use_lua_key(least_page_cost
);
1195 use_lua_key(left_boundary
);
1196 use_lua_key(left_protruding
);
1198 use_lua_key(ligatures
);
1199 use_lua_key(link_attr
);
1201 use_lua_key(local_box
);
1204 use_lua_key(lua_functions
);
1205 use_lua_key(luatex
);
1206 use_lua_key(luatex_newtoken
);
1207 use_lua_key(luatex_node
);
1214 use_lua_key(math_choice
);
1215 use_lua_key(math_left
);
1216 use_lua_key(math_shift
);
1217 use_lua_key(mathdir
);
1218 use_lua_key(mathkern
);
1219 use_lua_key(mathstyle
);
1222 use_lua_key(modeline
);
1224 use_lua_key(named_id
);
1226 use_lua_key(new_graf
);
1227 use_lua_key(new_window
);
1230 use_lua_key(no_align
);
1233 use_lua_key(node_properties
);
1234 use_lua_key(node_properties_indirect
);
1235 use_lua_key(nomath
);
1237 use_lua_key(nucleus
);
1239 use_lua_key(number
);
1240 use_lua_key(objcompression
);
1241 use_lua_key(objnum
);
1243 use_lua_key(ordering
);
1244 use_lua_key(output
);
1250 use_lua_key(page_head
);
1251 use_lua_key(page_ins_head
);
1252 use_lua_key(pageattributes
);
1253 use_lua_key(pageresources
);
1254 use_lua_key(pagesattributes
);
1255 use_lua_key(parameters
);
1256 use_lua_key(pdf_data
);
1257 use_lua_key(pdftex
);
1258 use_lua_key(pen_broken
);
1259 use_lua_key(pen_inter
);
1260 use_lua_key(penalty
);
1264 use_lua_key(pre_adjust
);
1265 use_lua_key(pre_adjust_head
);
1266 use_lua_key(pre_align
);
1267 use_lua_key(pre_box
);
1268 use_lua_key(preamble
);
1270 use_lua_key(prevdepth
);
1271 use_lua_key(prevgraf
);
1272 use_lua_key(psname
);
1277 use_lua_key(ref_count
);
1279 use_lua_key(registry
);
1282 use_lua_key(replace
);
1284 use_lua_key(right_boundary
);
1285 use_lua_key(right_protruding
);
1288 use_lua_key(script
);
1289 use_lua_key(scriptscript
);
1290 use_lua_key(semi_simple
);
1292 use_lua_key(shrink
);
1293 use_lua_key(shrink_order
);
1294 use_lua_key(simple
);
1296 use_lua_key(skewchar
);
1299 use_lua_key(small_char
);
1300 use_lua_key(small_fam
);
1302 use_lua_key(space_shrink
);
1303 use_lua_key(space_stretch
);
1304 use_lua_key(spacefactor
);
1306 use_lua_key(special
);
1307 use_lua_key(split_keep
);
1308 use_lua_key(split_off
);
1312 use_lua_key(stream
);
1313 use_lua_key(streamfile
);
1314 use_lua_key(stretch
);
1315 use_lua_key(stretch_order
);
1316 use_lua_key(string
);
1319 use_lua_key(subst_ex_font
);
1320 use_lua_key(subtype
);
1322 use_lua_key(supplement
);
1323 use_lua_key(surround
);
1325 use_lua_key(temp_head
);
1327 use_lua_key(term_and_log
);
1330 use_lua_key(thread_attr
);
1331 use_lua_key(thread_id
);
1335 use_lua_key(top_accent
);
1336 use_lua_key(top_left
);
1337 use_lua_key(top_right
);
1338 use_lua_key(tounicode
);
1339 use_lua_key(trailer
);
1340 use_lua_key(transform
);
1342 use_lua_key(uchyph
);
1344 use_lua_key(units_per_em
);
1346 use_lua_key(user_id
);
1350 use_lua_key(vcenter
);
1351 use_lua_key(version
);
1352 use_lua_key(vert_variants
);
1353 use_lua_key(vmode_par
);
1356 use_lua_key(writable
);
1357 use_lua_key(x_height
);
1358 use_lua_key(xoffset
);
1359 use_lua_key(xyz_zoom
);
1360 use_lua_key(yoffset
);