1
4
5# ifndef LMT_LCALLBACKLIB_H
6# define LMT_LCALLBACKLIB_H
7
8# include "lapi.h"
9
10typedef enum callback_callback_types {
11 find_log_file_callback = 1,
12 find_format_file_callback,
13 open_data_file_callback,
14 process_jobname_callback,
15 start_run_callback,
16 stop_run_callback,
17 define_font_callback,
18 quality_font_callback,
19 pre_output_filter_callback,
20 buildpage_filter_callback,
21 hpack_filter_callback,
22 vpack_filter_callback,
23 hyphenate_callback,
24 ligaturing_callback,
25 kerning_callback,
26 glyph_run_callback,
27 pre_linebreak_filter_callback,
28 linebreak_filter_callback,
29 post_linebreak_filter_callback,
30 append_to_vlist_filter_callback,
31 alignment_filter_callback,
32 local_box_filter_callback,
33 packed_vbox_filter_callback,
34 mlist_to_hlist_callback,
35 pre_dump_callback,
36 start_file_callback,
37 stop_file_callback,
38 intercept_tex_error_callback,
39 intercept_lua_error_callback,
40 show_error_message_callback,
41 show_warning_message_callback,
42 hpack_quality_callback,
43 vpack_quality_callback,
44 show_break_callback,
45 show_build_callback,
46 insert_par_callback,
47 append_line_filter_callback,
48 insert_distance_callback,
49
50 wrapup_run_callback,
51 begin_paragraph_callback,
52 paragraph_context_callback,
53
54 math_rule_callback,
55 make_extensible_callback,
56 register_extensible_callback,
57 show_whatsit_callback,
58 get_attribute_callback,
59 get_noad_class_callback,
60 get_math_dictionary_callback,
61 show_lua_call_callback,
62 trace_memory_callback,
63 handle_overload_callback,
64 missing_character_callback,
65 process_character_callback,
66 linebreak_quality_callback,
67 paragraph_pass_callback,
68 handle_uleader_callback,
69 italic_correction_callback,
70 total_callbacks,
71} callback_callback_types;
72
73typedef struct callback_state_info {
74 int metatable_id;
75 int padding;
76 int values[total_callbacks];
77} callback_state_info;
78
79extern callback_state_info lmt_callback_state;
80
81typedef enum callback_keys {
82 callback_boolean_key = 'b',
83 callback_charnum_key = 'c',
84 callback_integer_key = 'd',
85 callback_line_key = 'l',
86 callback_strnumber_key = 's',
87 callback_lstring_key = 'L',
88 callback_node_key = 'N',
89 callback_string_key = 'S',
90 callback_result_s_key = 'R',
91 callback_result_i_key = 'r',
92} callback_keys;
93
94static inline int lmt_callback_defined (int a) { return lmt_callback_state.values[a]; }
95static inline int lmt_callback_call (lua_State *L, int i, int o, int top) { return lua_pcallk(L, i, o, top + 2, 0, NULL); }
96
97extern int lmt_callback_okay (lua_State *L, int i, int *top);
98extern void lmt_callback_error (lua_State *L, int top, int i);
99static inline void lmt_callback_wrapup (lua_State *L, int top) { lua_settop(L, top); }
100
101extern int lmt_run_callback (lua_State *L, int i, const char *values, ...);
102extern int lmt_run_and_save_callback (lua_State *L, int i, const char *values, ...);
103extern int lmt_run_saved_callback_line (lua_State *L, int i, int firstpos);
104extern int lmt_run_saved_callback_close (lua_State *L, int i);
105
106extern void lmt_destroy_saved_callback (lua_State *L, int i);
107
108extern void lmt_run_memory_callback (const char *what, int success);
109
110extern void lmt_push_callback_usage (lua_State *L);
111
112# endif
113
114 |