Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/tools/build/jam_src/command.h @ 12

Last change on this file since 12 was 12, checked in by landauf, 17 years ago

added boost

File size: 1.6 KB
Line 
1/*
2 * Copyright 1994 Christopher Seiwald.
3 *
4 * This file is part of Jam - see jam.c for Copyright information.
5 */
6
7/*
8 * command.h - the CMD structure and routines to manipulate them
9 *
10 * Both ACTION and CMD contain a rule, targets, and sources.  An
11 * ACTION describes a rule to be applied to the given targets and
12 * sources; a CMD is what actually gets executed by the shell.  The
13 * differences are due to:
14 *
15 *      ACTIONS must be combined if 'actions together' is given.
16 *      ACTIONS must be split if 'actions piecemeal' is given.
17 *      ACTIONS must have current sources omitted for 'actions updated'.
18 *
19 * The CMD datatype holds a single command that is to be executed
20 * against a target, and they can chain together to represent the
21 * full collection of commands used to update a target.
22 *
23 * Structures:
24 *
25 *      CMD - an action, ready to be formatted into a buffer and executed
26 *
27 * External routines:
28 *
29 *      cmd_new() - return a new CMD or 0 if too many args
30 *      cmd_free() - delete CMD and its parts
31 *      cmd_next() - walk the CMD chain
32 */
33
34/*
35 * CMD - an action, ready to be formatted into a buffer and executed
36 */
37
38typedef struct _cmd CMD;
39
40struct _cmd
41{
42        CMD     *next;
43        CMD     *tail;          /* valid on in head */
44        RULE    *rule;          /* rule->actions contains shell script */
45        LIST    *shell;         /* $(SHELL) value */
46        LOL     args;           /* LISTs for $(<), $(>) */
47        char*   buf;    /* actual commands */
48} ;
49
50CMD *cmd_new(
51        RULE    *rule,          /* rule (referenced) */
52        LIST    *targets,       /* $(<) (freed) */
53        LIST    *sources,       /* $(>) (freed) */
54        LIST    *shell );       /* $(SHELL) (freed) */
55
56void cmd_free( CMD *cmd );
57
58# define cmd_next( c ) ((c)->next)
Note: See TracBrowser for help on using the repository browser.