summaryrefslogtreecommitdiff
path: root/jam-files/engine/frames.h
blob: 693d77fa0a347058cb9503caf58868c46a26df32 (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
/*
 *  Copyright 2001-2004 David Abrahams.
 *  Distributed under the Boost Software License, Version 1.0.
 *  (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 */
#ifndef FRAMES_DWA20011021_H
#define FRAMES_DWA20011021_H

#include "lists.h"
#include "modules.h"

typedef struct _PARSE PARSE;
typedef struct frame FRAME;

struct frame
{
    FRAME    * prev;
    /* The nearest enclosing frame for which module->user_module is true. */
    FRAME    * prev_user;
    LOL        args[ 1 ];
    module_t * module;
    PARSE    * procedure;
    char     * rulename;
};


/* When call into Python is in progress, this variable points to the bjam frame
 * that was current at the moment of call. When the call completes, the variable
 * is not defined. Further, if Jam calls Python which calls Jam and so on, this
 * variable only keeps the most recent Jam frame.
 */
extern struct frame * frame_before_python_call;

void frame_init( FRAME * );  /* implemented in compile.c */
void frame_free( FRAME * );  /* implemented in compile.c */

#endif