summaryrefslogtreecommitdiff
path: root/jam-files/engine/frames.h
diff options
context:
space:
mode:
Diffstat (limited to 'jam-files/engine/frames.h')
-rw-r--r--jam-files/engine/frames.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/jam-files/engine/frames.h b/jam-files/engine/frames.h
new file mode 100644
index 00000000..693d77fa
--- /dev/null
+++ b/jam-files/engine/frames.h
@@ -0,0 +1,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