1
0
forked from GitHub/gf-core

add teyjus/simulator/builtins/builtins.h

This commit is contained in:
kr.angelov
2012-10-11 11:10:17 +00:00
parent f0583bfd93
commit 28b58b6267

View File

@@ -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