Pristine Ack-5.5
[Ack-5.5.git] / util / ack / trans.h
1 /*
2  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3  * See the copyright notice in the ACK home directory, in the file "Copyright".
4  */
5 #ifndef NORCSID
6 #define RCS_TRANS "$Id: trans.h,v 2.6 1994/06/24 10:13:18 ceriel Exp $"
7 #endif
8
9 /* This structure is the center of all actions */
10 /* It contains the description of all phases,
11    the suffices they consume and produce and various properties */
12
13 typedef struct transform trf;
14
15 struct transform {
16         char    *t_in ;         /* Suffices in '.o.k' */
17         char    *t_out ;        /* Result '.suffix' */
18         char    *t_outfile ;    /* Resulting output file */
19         char    *t_name ;       /* The name of this transformation */
20         list_head t_mapf ;      /* Mapflags argument, uses varrep */
21         char    *t_argd ;       /* Argument descriptor, uses varrep */
22         char    *t_needed ;     /* Suffix indicating the libraries needed */
23         char    *t_rts ;        /* Suffix indicating the major language used*/
24         int     t_stdin:1 ;     /* The input is taken on stdin */
25         int     t_stdout:1 ;    /* The output comes on stdout */
26         int     t_combine:1 ;   /* Transform several files to one result */
27         int     t_visited:1 ;   /* NO before setup, YES after */
28         int     t_prep:2 ;      /* Needs preprocessor YES/NO/MAYBE */
29         int     t_isprep:1 ;    /* Is preprocessor */
30         int     t_keep:1 ;      /* Keep the output file */
31         int     t_scan:1 ;      /* Used while finding path's */
32         int     t_bscan:1 ;     /* Best scan so far, while finding path's */
33         int     t_linker:1 ;    /* The linker usurps all unrecognized flags */
34         int     t_do:1 ;        /* Is in a path to execute */
35         int     t_blocked:1 ;   /* An input file could not be produced */
36         short   t_optim ;       /* Is optimizer, + optimizer level */
37         short   t_priority ;    /* Importance of including phase in scan */
38         list_head t_inputs ;    /* The input 'path's of a combiner */
39         char    *t_origname ;   /* The basename of the output file */
40         trf     *t_next ;       /* The transformation to be executed next */
41         char    *t_prog ;       /* Pathname for load file */
42         list_head t_flags ;     /* List of flags */
43         list_head t_args ;      /* List of arguments */
44 } ;
45
46 #define t_cont(elem) ((trf *)l_content(elem))