/* Error handling
   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
   James Bowman, Craig Franklin

This file is part of gputils.

gputils 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, or (at your option)
any later version.

gputils 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 gputils; see the file COPYING.  If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.  */

#ifndef __GPERROR_H__
#define __GPERROR_H__

void gperror(unsigned int code, char *message);
void gpwarning(unsigned int code, char *message);
void gpmessage(unsigned int code, char *message);

/* Alternate message functions. Only the prototypes are provided, the user
   must link their own function into gpasm. */
void user_error(unsigned int code, char *message);
void user_warning(unsigned int code, char *message);
void user_message(unsigned int code, char *message);

void add_code(int code);

/* Error codes
 *
 * The error codes gpasm defines here are identical to MPASM's
 * definitions. Additional gpasm definitions follow the last 
 * MPASM definition.
 *
 */
enum GPE_codes {
  GPE_USER             = 101,
  GPE_NOMEM            = 102,
  GPE_SYMFULL          = 103,
  GPE_TEMPFILE         = 104,
  GPE_NOENT            = 105,  /* File or directory not found */
  GPE_STRCPLX          = 106,
  GPE_BADDIGIT         = 107,
  GPE_BADCHAR          = 108,
  GPE_OPENPAR          = 109,  /* Mis-matched open parenthesis */
  GPE_CLOSEPAR         = 110,  /* Mis-matched closed parenthesis */
  GPE_MISSYM           = 111,  /* No symbol in an EQU or SET */
  GPE_NOOP             = 112,  /* Missing an arithmetic operator */
  GPE_NOSYM            = 113,  /* Symbol has not been defined */
  GPE_DIVBY0           = 114,
  GPE_DUPLAB           = 115,
  GPE_DIFFLAB          = 116,
  GPE_ADDROVF          = 117,  /* address overflow */
  GPE_ADDROVR          = 118,  /* overwriting a previously written address */
  GPE_BAD_CALL_ADDR    = 120,
  GPE_ILLEGAL_LABEL    = 121,
  GPE_ILLEGAL_DIR      = 123,
  GPE_ILLEGAL_ARGU     = 124,
  GPE_ILLEGAL_COND     = 125,
  GPE_RANGE            = 126,  /* Argument out of range */
  GPE_TOO_MANY_ARGU    = 127,
  GPE_MISSING_ARGU     = 128,
  GPE_EXPECTED         = 129,
  GPE_EXTRA_PROC       = 130,
  GPE_UNDEF_PROC       = 131,
  GPE_UNKNOWN_PROC     = 132,
  GPE_IHEX             = 133,  /* Hex file format is too small for code */
  GPE_NO_MACRO_NAME    = 135,
  GPE_DUPLICATE_MACRO  = 136,
  GPE_BAD_WHILE_LOOP   = 140,
  GPE_ILLEGAL_NESTING  = 143,
  GPE_UNMATCHED_ENDM   = 145,
  GPE_OBJECT_ONLY      = 149,
  GPE_UNRESOLVABLE     = 151,
  GPE_WRONG_SECTION    = 152,
  GPE_CONTIG_SECTION   = 154,
  GPE_MUST_BE_LABEL    = 156,
  GPE_FILL_ODD         = 159,
  GPE_CONTIG_CONFIG    = 163,
  GPE_CONTIG_IDLOC     = 164,
  GPE_MISSING_BRACKET  = 168,
  GPE_UNKNOWN          = 174
};

/* Warning codes
 *
 * The warning codes gpasm defines here are identical to MPASM's
 * definitions. Additional gpasm definitions follow the last 
 * MPASM definition.
 *
 */
enum GPW_codes {
  GPW_NOT_DEFINED      = 201,
  GPW_RANGE            = 202,  /* Argument out of range */
  GPW_OP_COLUMN_ONE    = 203,
  GPW_DIR_COLUMN_ONE   = 205,
  GPW_MACRO_COLUMN_ONE = 206,
  GPW_LABEL_COLUMN     = 207,
  GPW_MISSING_QUOTE    = 209,
  GPW_EXTRANEOUS       = 211,
  GPW_EXPECTED         = 212,
  GPW_CMDLINE_PROC     = 215,
  GPW_CMDLINE_RADIX    = 216,
  GPW_CMDLINE_HEXFMT   = 217,
  GPW_RADIX            = 218,
  GPW_INVALID_RAM      = 219,
  GPW_DISABLE_ERROR    = 222,
  GPW_REDEFINING_PROC  = 223,
  GPW_NOT_RECOMMENDED  = 224,
  GPW_INVALID_ROM      = 228,
  GPW_UNKNOWN          = 230
};

/* Message codes
 *
 * The message codes gpasm defines here are identical to MPASM's
 * definitions. Additional gpasm definitions follow the last 
 * MPASM definition.
 *
 */
enum GPM_codes {
  GPM_USER             = 301,  /* User supplied message */
  GPM_BANK             = 302,
  GPM_RANGE            = 303,
  GPM_IDLOC            = 304,
  GPM_NOF              = 305,
  GPM_PAGE             = 306,
  GPM_PAGEBITS         = 307,
  GPM_SUPVAL           = 308,
  GPM_SUPLIN           = 309,
  GPM_SUPRAM           = 310,
  GPM_EXTPAGE          = 312,
  GPM_CBLOCK           = 313,
  GPM_W_MODIFIED       = 316,
  GPM_SPECIAL_MNEMONIC = 318,
  GPM_UNKNOWN          = 319
};

#endif


syntax highlighted by Code2HTML, v. 0.9.1