summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/interact.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/asymptote/interact.h')
-rw-r--r--Build/source/utils/asymptote/interact.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/interact.h b/Build/source/utils/asymptote/interact.h
new file mode 100644
index 00000000000..4b7550986e9
--- /dev/null
+++ b/Build/source/utils/asymptote/interact.h
@@ -0,0 +1,55 @@
+/*****
+ * interact.h
+ *
+ * The glue between the lexical analyzer and the readline library.
+ *****/
+
+#ifndef INTERACT_H
+#define INTERACT_H
+
+#include "common.h"
+
+void interruptHandler(int);
+
+namespace interact {
+
+extern bool interactive;
+extern bool uptodate;
+extern int lines; // Interactive scroll count
+extern bool query; // Enable interactive scrolling;
+
+void init_interactive();
+
+// Read a line from the input, without any processing.
+string simpleline(string prompt);
+
+// Add a line of input to the readline history.
+void addToHistory(string line);
+
+// Functions to work with the most recently entered line in the history.
+string getLastHistoryLine();
+void setLastHistoryLine(string line);
+
+// Remove the line last added to the history.
+void deleteLastLine();
+
+// Write out the history of input lines to the history file.
+void cleanup_interactive();
+
+// This class is used to set a text completion function for readline. A class
+// is used instead the usual function pointer so that information such as the
+// current environment can be coded into the function (mimicking a closure).
+class completer {
+public:
+ virtual ~completer() {};
+ virtual char *operator () (const char *text, int state) = 0;
+};
+
+void setCompleter(completer *c);
+
+#define YY_READ_BUF_SIZE YY_BUF_SIZE
+
+void init_readline(bool tabcompletion);
+}
+
+#endif // INTERACT_H