summaryrefslogtreecommitdiff
path: root/tools/build/src/engine/frames.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build/src/engine/frames.h')
-rw-r--r--tools/build/src/engine/frames.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/tools/build/src/engine/frames.h b/tools/build/src/engine/frames.h
new file mode 100644
index 000000000..2e99f1737
--- /dev/null
+++ b/tools/build/src/engine/frames.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2001-2004 David Abrahams.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+#ifndef FRAMES_DWA20011021_H
+#define FRAMES_DWA20011021_H
+
+#include "lists.h"
+#include "modules.h"
+#include "object.h"
+
+
+typedef struct frame FRAME;
+
+struct frame
+{
+ FRAME * prev;
+ FRAME * prev_user; /* The nearest enclosing frame for which
+ module->user_module is true. */
+ LOL args[ 1 ];
+ module_t * module;
+ OBJECT * file;
+ int line;
+ char const * rulename;
+};
+
+
+/* When a call into Python is in progress, this variable points to the bjam
+ * frame that was current at the moment of the call. When the call completes,
+ * the variable is not defined. Furthermore, if Jam calls Python which calls Jam
+ * and so on, this variable only keeps the most recent Jam frame.
+ */
+extern FRAME * frame_before_python_call;
+
+
+void frame_init( FRAME * );
+void frame_free( FRAME * );
+
+#endif