/*
 *  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
