summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/runtime/c/teyjus/simulator/builtins/builtins.h132
1 files changed, 132 insertions, 0 deletions
diff --git a/src/runtime/c/teyjus/simulator/builtins/builtins.h b/src/runtime/c/teyjus/simulator/builtins/builtins.h
new file mode 100644
index 000000000..bac897678
--- /dev/null
+++ b/src/runtime/c/teyjus/simulator/builtins/builtins.h
@@ -0,0 +1,132 @@
+//////////////////////////////////////////////////////////////////////////////
+//Copyright 2008
+// Andrew Gacek, Steven Holte, Gopalan Nadathur, Xiaochu Qi, Zach Snow
+//////////////////////////////////////////////////////////////////////////////
+// This file is part of Teyjus. //
+// //
+// Teyjus is free software: you can redistribute it and/or modify //
+// it under the terms of the GNU General Public License as published by //
+// the Free Software Foundation, either version 3 of the License, or //
+// (at your option) any later version. //
+// //
+// Teyjus is distributed in the hope that it will be useful, //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of //
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
+// GNU General Public License for more details. //
+// //
+// You should have received a copy of the GNU General Public License //
+// along with Teyjus. If not, see <http://www.gnu.org/licenses/>. //
+//////////////////////////////////////////////////////////////////////////////
+
+/*****************************************************************************/
+/* */
+/* File builtins.h. This files defines the indexes of the builtin table, and */
+/* provides signature for the function indexing into the builtin table and */
+/* invokes the appropriate function. */
+/*****************************************************************************/
+
+#ifndef BUILTINS_H
+#define BUILTINS_H
+
+#include "../../system/error.h"
+
+/***********************************************************************/
+/* Builtin Dispatch Table Index */
+/***********************************************************************/
+typedef enum
+{
+ BI_SOLVE = 0,
+ BI_EVAL = 1,
+ BI_NOT = 2,
+ BI_UNIFY = 3,
+ // comparison operations
+ BI_INT_LT = 4,
+ BI_INT_GT = 5,
+ BI_INT_LE = 6,
+ BI_INT_GE = 7,
+ BI_FLOAT_LT = 8,
+ BI_FLOAT_GT = 9,
+ BI_FLOAT_LE = 10,
+ BI_FLOAT_GE = 11,
+ BI_STR_LT = 12,
+ BI_STR_GT = 13,
+ BI_STR_LE = 14,
+ BI_STR_GE = 15,
+ //IO
+ BI_IO_OPEN_IN = 16,
+ BI_IO_OPEN_OUT = 17,
+ BI_IO_OPEN_APP = 18,
+ BI_IO_CLOSE_IN = 19,
+ BI_IO_CLOSE_OUT = 20,
+ BI_IO_OPEN_STR = 21,
+ BI_IO_INPUT = 22,
+ BI_IO_OUTPUT = 23,
+ BI_IO_INPUT_LINE = 24,
+ BI_IO_LOOKAHEAD = 25,
+ BI_IO_EOF = 26,
+ BI_IO_FLUSH = 27,
+ BI_IO_PRINT = 28,
+ BI_IO_READ = 29,
+ BI_IO_PRINTTERM = 30,
+ BI_IO_TERM_TO_STR = 31,
+ BI_IO_STR_TO_TERM = 32,
+ BI_IO_READTERM = 33,
+ BI_IO_GETENV = 34,
+ BI_IO_OPEN_SOCKET = 35,
+ BI_UNIX_TIME = 36,
+ BI_SYSTEM = 37
+} BI_BuiltinTabIndex;
+
+/*****************************************************************************/
+/* Dispatching function for the builtin table */
+/*****************************************************************************/
+void BI_dispatch(int number);
+
+/* builtin index "register"*/
+extern BI_BuiltinTabIndex BI_number;
+
+/***************************######********************************************
+ * ERROR INFORMATION
+ *********************************######**************************************/
+
+#define BI_NUM_ERROR_MESSAGES 28
+enum
+{
+ BI_ERROR = BI_FIRST_ERR_INDEX,
+ BI_ERROR_TERM,
+ BI_ERROR_NOT_IMPLEMENTED,
+ BI_ERROR_FVAR_CAP,
+ BI_ERROR_TYFVAR_CAP,
+ BI_ERROR_DIV_BY_ZERO,
+ BI_ERROR_NEG_SQRT,
+ BI_ERROR_NEG_LOG,
+ BI_ERROR_CONST_IND,
+ BI_ERROR_FLEX_HEAD, /* takes term */
+ BI_ERROR_ILLEGAL_ARG, /* takes term */
+ BI_ERROR_EVAL_TYPE,
+ BI_ERROR_ILLEGAL_STREAM,
+ BI_ERROR_FLEX_GOAL,
+ BI_ERROR_NON_VAR_TERM, /* takes term */
+ BI_ERROR_INDEX_OUT_OF_BOUNDS,
+ BI_ERROR_NEGATIVE_VALUE,
+ BI_ERROR_UNBOUND_VARIABLE, /* takes string indicating desired arg. */
+ BI_ERROR_NON_STREAM_TERM, /* takes term */
+ BI_ERROR_STREAM_ALREADY_CLOSED,
+ BI_ERROR_CANNOT_OPEN_STREAM, /* takes filename */
+ BI_ERROR_STREAM, /* takes term (stream) */
+ BI_ERROR_READING_STREAM, /* takes term (stream) */
+ BI_ERROR_WRITING_STREAM, /* takes term (stream) */
+ BI_ERROR_FLUSHING_STREAM, /* takes term (stream) */
+ BI_ERROR_OPENING_STRING, /* takes string */
+ BI_ERROR_INTEGER_EXPECTED, /* takes term */
+ BI_ERROR_SUBSTRING
+};
+
+
+
+/***************************######********************************************
+ * Initialization
+ *********************************######**************************************/
+void BI_init();
+
+#endif //BUILTINS_H