/*
 * $Id$
 */

/*
 * Harbour Project source code:
 * Header file for error hanlding
 *
 * Copyright 1999 {list of individual authors and e-mail addresses}
 * www - http://www.harbour-project.org
 *
 * This program 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 2 of the License, or
 * (at your option) any later version, with one exception:
 *
 * The exception is that if you link the Harbour Runtime Library (HRL)
 * and/or the Harbour Virtual Machine (HVM) with other files to produce
 * an executable, this does not by itself cause the resulting executable
 * to be covered by the GNU General Public License. Your use of that
 * executable is in no way restricted on account of linking the HRL
 * and/or HVM code into it.
 *
 * This program 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 this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit
 * their web site at http://www.gnu.org/).
 *
 */

/* NOTE: This file is also used by C code. */

#ifndef _ERROR_CH
#define _ERROR_CH

/* Severity levels (oError:severity) */
#define ES_WHOCARES     0
#define ES_WARNING      1
#define ES_ERROR        2
#define ES_CATASTROPHIC 3

/* Generic error codes (oError:genCode) */
#define EG_ARG          1
#define EG_BOUND        2
#define EG_STROVERFLOW  3
#define EG_NUMOVERFLOW  4
#define EG_ZERODIV      5
#define EG_NUMERR       6
#define EG_SYNTAX       7
#define EG_COMPLEXITY   8

#define EG_MEM          11
#define EG_NOFUNC       12
#define EG_NOMETHOD     13
#define EG_NOVAR        14
#define EG_NOALIAS      15
#define EG_NOVARMETHOD  16
#define EG_BADALIAS     17
#define EG_DUPALIAS     18

#define EG_CREATE       20
#define EG_OPEN         21
#define EG_CLOSE        22
#define EG_READ         23
#define EG_WRITE        24
#define EG_PRINT        25

#define EG_UNSUPPORTED  30
#define EG_LIMIT        31
#define EG_CORRUPTION   32
#define EG_DATATYPE     33
#define EG_DATAWIDTH    34
#define EG_NOTABLE      35
#define EG_NOORDER      36
#define EG_SHARED       37
#define EG_UNLOCKED     38
#define EG_READONLY     39

#define EG_APPENDLOCK   40
#define EG_LOCK         41

#define EG_ARRACCESS    46      /* Harbour special */
#define EG_ARRASSIGN    47      /* Harbour special */
#define EG_ARRDIMENSION 48      /* Harbour special */
#define EG_NOTARRAY     49      /* Harbour special */
#define EG_CONDITION    50      /* Harbour special */

/* Internal errors */
#define IE_ERRUNRECOV           9000 // "Unrecoverable error %lu: "
#define IE_ERRRECFAILURE        9001 // "Error recovery failure"
#define IE_ERRNOBLOCK           9002 // "No ERRORBLOCK() for error"
#define IE_ERRTOOMANY           9003 // "Too many recursive error handler calls"
#define IE_RDDINVALID           9004 // "RDD invalid or failed to load"
#define IE_CLSINVMETHOD         9005 // "Invalid method type from %s"
#define IE_XGRABALLOC           9006 // "hb_xgrab can't allocate memory"
#define IE_XREALLOCNULL         9007 // "hb_xrealloc called with a NULL pointer"
#define IE_XREALLOCINV          9008 // "hb_xrealloc called with an invalid pointer"
#define IE_XREALLOC             9009 // "hb_xrealloc can't reallocate memory"
#define IE_XFREEINV             9010 // "hb_xfree called with an invalid pointer"
#define IE_XFREENULL            9011 // "hb_xfree called with a NULL pointer"
#define IE_VMBADSTARTUP         9012 // "Can\'t locate the starting procedure: \'%s\'"
#define IE_VMNOSTARTUP          9013 // "No starting procedure"
#define IE_VMBADOPCODE          9014 // "Unsupported VM opcode"
#define IE_VMNOTSYMBOL          9015 // "Symbol item expected from %s"
#define IE_VMINVSYMBOL          9016 // "Invalid symbol type for self from %s"
#define IE_VMNOTCBLOCK          9017 // "Codeblock expected from %s"
#define IE_VMPOPINVITEM         9018 // "Incorrect item type on the stack trying to pop from %s"
#define IE_STACKUFLOW           9019 // "Stack underflow"
#define IE_ITEMBADCOPY          9020 // "An item was going to be copied to itself from %s"
#define IE_MVBADSYMBOL          9021 // "Invalid symbol item passed as memvar %s"

#endif /* _ERROR_CH */

