blob: 025a3b34c8a96aed1bf9c6db591540a61a47918f [file] [log] [blame]
/*
* *****************************************************************************
*
* Copyright 2018 Gavin D. Howard
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* *****************************************************************************
*
* All bc status codes.
*
*/
#ifndef BC_STATUS_H
#define BC_STATUS_H
typedef enum BcStatus {
BC_STATUS_SUCCESS = 0,
BC_STATUS_ERROR,
BC_STATUS_EOF,
BC_STATUS_EMPTY_EXPR,
BC_STATUS_SIGNAL,
BC_STATUS_QUIT,
} BcStatus;
typedef enum BcError {
BC_ERROR_VM_ALLOC_ERR,
BC_ERROR_VM_IO_ERR,
BC_ERROR_VM_BIN_FILE,
BC_ERROR_VM_PATH_DIR,
// ** Exclude start. **
BC_ERROR_VM_OPTION,
// ** Exclude end. **
BC_ERROR_PARSE_EOF,
BC_ERROR_PARSE_CHAR,
BC_ERROR_PARSE_STRING,
BC_ERROR_PARSE_COMMENT,
BC_ERROR_PARSE_TOKEN,
BC_ERROR_EXEC_NUM_LEN,
BC_ERROR_EXEC_NAME_LEN,
BC_ERROR_EXEC_STRING_LEN,
#if BC_ENABLED
BC_ERROR_PARSE_EXPR,
BC_ERROR_PARSE_EMPTY_EXPR,
BC_ERROR_PARSE_PRINT,
BC_ERROR_PARSE_FUNC,
BC_ERROR_PARSE_ASSIGN,
BC_ERROR_PARSE_NO_AUTO,
BC_ERROR_PARSE_DUP_LOCAL,
BC_ERROR_PARSE_BLOCK,
BC_ERROR_PARSE_RET_VOID,
#if BC_ENABLE_REFERENCES
BC_ERROR_PARSE_REF_VAR,
#endif // BC_ENABLE_REFERENCES
#endif // BC_ENABLED
BC_ERROR_MATH_NEGATIVE,
BC_ERROR_MATH_NON_INTEGER,
BC_ERROR_MATH_OVERFLOW,
BC_ERROR_MATH_DIVIDE_BY_ZERO,
#if BC_ENABLE_EXTRA_MATH
BC_ERROR_MATH_UNDERFLOW,
#endif // BC_ENABLE_EXTRA_MATH
BC_ERROR_EXEC_FILE_ERR,
BC_ERROR_EXEC_ARRAY_LEN,
BC_ERROR_EXEC_IBASE,
BC_ERROR_EXEC_OBASE,
BC_ERROR_EXEC_SCALE,
BC_ERROR_EXEC_READ_EXPR,
BC_ERROR_EXEC_REC_READ,
BC_ERROR_EXEC_TYPE,
#if DC_ENABLED
BC_ERROR_EXEC_STACK,
#endif // DC_ENABLED
#if BC_ENABLED
BC_ERROR_EXEC_PARAMS,
BC_ERROR_EXEC_UNDEF_FUNC,
BC_ERROR_EXEC_VOID_VAL,
#endif // BC_ENABLED
BC_ERROR_POSIX_START,
#if BC_ENABLED
BC_ERROR_POSIX_NAME_LEN = BC_ERROR_POSIX_START,
BC_ERROR_POSIX_COMMENT,
BC_ERROR_POSIX_KW,
BC_ERROR_POSIX_DOT,
BC_ERROR_POSIX_RET,
BC_ERROR_POSIX_BOOL,
BC_ERROR_POSIX_REL_POS,
BC_ERROR_POSIX_MULTIREL,
BC_ERROR_POSIX_FOR1,
BC_ERROR_POSIX_FOR2,
BC_ERROR_POSIX_FOR3,
BC_ERROR_POSIX_BRACE,
BC_ERROR_POSIX_REF,
#endif // BC_ENABLED
} BcError;
#define BC_ERR_IDX_VM (0)
#define BC_ERR_IDX_PARSE (1)
#define BC_ERR_IDX_MATH (2)
#define BC_ERR_IDX_EXEC (3)
#if BC_ENABLED
#define BC_ERR_IDX_POSIX (4)
#endif // BC_ENABLED
#define BC_UNUSED(e) ((void) (e))
#endif // BC_STATUS_H