lmtcallbacklib.h /size: 3962 b    last modification: 2024-01-16 10:22
1/*
2    See license.txt in the root of this project.
3*/
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 /* fire_up_output_callback, */
50    wrapup_run_callback,
51    begin_paragraph_callback,
52    paragraph_context_callback,
53 /* get_math_char_callback, */
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', /*tex a boolean (int) */
83    callback_charnum_key   = 'c', /*tex a byte (char) */
84    callback_integer_key   = 'd', /*tex an integer */
85    callback_line_key      = 'l', /*tex a buffer section, with implied start */
86    callback_strnumber_key = 's', /*tex a \TEX\ string (index) */
87    callback_lstring_key   = 'L', /*tex a \LUA\ string (struct) */
88    callback_node_key      = 'N', /*tex a \TEX\ node (halfword) */
89    callback_string_key    = 'S', /*tex a \CCODE\ string */
90    callback_result_s_key  = 'R', /*tex a string (return value) but nil is also okay */
91    callback_result_i_key  = 'r', /*tex a number (return value) but nil is also okay */
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