1
4
5# ifndef LMT_LCALLBACKLIB_H
6# define LMT_LCALLBACKLIB_H
7
8# include "lapi.h"
9
10typedef enum 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 line_break_callback,
45 balance_callback,
46 show_vsplit_callback,
47 show_build_callback,
48 insert_par_callback,
49 append_line_filter_callback,
50 insert_distance_callback,
51
52 wrapup_run_callback,
53 begin_paragraph_callback,
54 paragraph_context_callback,
55
56 math_rule_callback,
57 make_extensible_callback,
58 register_extensible_callback,
59 show_whatsit_callback,
60 get_attribute_callback,
61 get_noad_class_callback,
62 get_math_dictionary_callback,
63 show_lua_call_callback,
64 trace_memory_callback,
65 handle_overload_callback,
66 missing_character_callback,
67 process_character_callback,
68 linebreak_quality_callback,
69 paragraph_pass_callback,
70 handle_uleader_callback,
71 handle_uinsert_callback,
72 italic_correction_callback,
73 show_loners_callback,
74 tail_append_callback,
75 balance_boundary_callback,
76 balance_insert_callback,
77 total_callbacks,
78} callback_types;
79
80
81
82typedef enum callback_states {
83 callback_set = 0x01,
84 callback_disabled = 0x02,
85 callback_frozen = 0x04,
86} callback_states;
87
88typedef struct callback_state_info {
89 int metatable_id;
90 int padding;
91 int values[total_callbacks];
92
93} callback_state_info;
94
95extern callback_state_info lmt_callback_state;
96
97typedef enum callback_keys {
98 callback_boolean_key = 'b',
99 callback_charnum_key = 'c',
100 callback_integer_key = 'd',
101 callback_line_key = 'l',
102 callback_strnumber_key = 's',
103 callback_lstring_key = 'L',
104 callback_node_key = 'N',
105 callback_string_key = 'S',
106 callback_result_s_key = 'R',
107 callback_result_i_key = 'r',
108} callback_keys;
109
110static inline int lmt_callback_defined (int i);
111
112static inline int lmt_callback_call (lua_State *L, int i, int o, int top);
113extern int lmt_callback_okay (lua_State *L, int i, int *top);
114extern void lmt_callback_error (lua_State *L, int top, int i);
115static inline void lmt_callback_wrapup (lua_State *L, int top);
116
117extern int lmt_run_callback (lua_State *L, int i, const char *values, ...);
118extern int lmt_run_and_save_callback (lua_State *L, int i, const char *values, ...);
119extern int lmt_run_saved_callback_line (lua_State *L, int i, int firstpos);
120extern int lmt_run_saved_callback_close (lua_State *L, int i);
121
122extern void lmt_destroy_saved_callback (lua_State *L, int i);
123
124extern void lmt_run_memory_callback (const char *what, int success);
125
126extern void lmt_push_callback_usage (lua_State *L);
127
128
129
130static inline int lmt_callback_defined(
131 int i
132) {
133 return lmt_callback_state.values[i];
134
135}
136
137static inline int lmt_callback_call(
138 lua_State *L,
139 int i,
140 int o,
141 int top
142) {
143 return lua_pcallk(L, i, o, top + 2, 0, NULL);
144}
145
146static inline void lmt_callback_wrapup(
147 lua_State *L,
148 int top
149)
150{
151 lua_settop(L, top);
152}
153
154
155# endif
156
157 |