summaryrefslogtreecommitdiff
path: root/source/luametatex/source/tex/texmainbody.h
blob: d0d329e8a8719e642f70249820f99e0e9cd1dd81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
    See license.txt in the root of this project.
*/

# ifndef LMT_MAINBODY_H
# define LMT_MAINBODY_H

/* Global variables */

typedef enum run_states {
    initializing_state,
    updating_state,
    production_state,
} run_states;

typedef enum ready_states {
    output_disabled_state,
    output_enabled_state,
} ready_states;

typedef struct main_state_info {
    int    run_state;       /*tex Are we |INITEX|? */
    int    ready_already;   /*tex A typical \TEX\ variable name. */
    double start_time;
} main_state_info ;

extern main_state_info lmt_main_state ;

/*tex

    The following procedure, which is called just before \TEX\ initializes its input and output,
    establishes the initial values of the date and time. It calls a macro-defined |dateandtime|
    routine. |dateandtime| in turn is also a |CCODE\ macro, which calls |get_date_and_time|,
    passing it the addresses of the day, month, etc., so they can be set by the routine.
    |get_date_and_time| also sets up interrupt catching if that is conditionally compiled in the
    \CCODE\ code.

*/

extern void tex_main_body                 (void);
extern void tex_close_files_and_terminate (int error);

# endif