Moved files to include.
[egate.git] / include / fml.h
1 /*
2  * FML interpreter. Europagate, 1995
3  *
4  * $Log: fml.h,v $
5  * Revision 1.1  1995/02/20 21:15:46  adam
6  * Moved files to include.
7  *
8  * Revision 1.3  1995/02/10  15:50:55  adam
9  * MARC interface implemented. Minor bugs fixed. fmltest can
10  * be used to format single MARC records. New function '\list'
11  * implemented.
12  *
13  * Revision 1.2  1995/02/09  16:06:06  adam
14  * FML can be called from the outside multiple times by the functions:
15  * fml_exec_call and fml_exec_call_str.
16  * An interactive parameter (-i) to fmltest starts a shell-like
17  * interface to FML by using the fml_exec_call_str function.
18  *
19  * Revision 1.1.1.1  1995/02/06  13:48:10  adam
20  * First version of the FML interpreter. It's slow and memory isn't
21  * freed properly. In particular, the FML nodes aren't released yet.
22  *
23  */
24
25 #ifndef FML_H
26 #define FML_H
27 typedef struct Fml_record {
28     struct fml_node *list;
29     struct fml_sym_tab *sym_tab;
30
31     struct fml_atom *atom_free_list;
32     struct fml_node *node_free_list;
33
34     int escape_char;
35     int eof_mark;
36     char *white_chars;
37     char comment_char;
38     int (*read_func)(void);
39     void (*err_handle)(int no);
40
41     int debug;
42 } *Fml;
43
44 Fml fml_open (void);
45 int fml_preprocess (Fml fml);
46
47 void fml_exec (Fml fml);
48 void fml_exec_call (Fml fml);
49 void fml_exec_call_str (Fml fml, const char *str);
50 void fml_exec_call_argv (Fml fml, const char **argv);
51
52 #define FML_ERR_NOMEM 1
53
54 #endif