
#include "qrt.h"

extern int linenumber;

/**********************************************************

         Here if pointer to fn goes astray
         (from ObjInfo structure)

 **********************************************************/

Err() {
  Error(INTERNAL_ERROR,9999);
}


/**********************************************************

      Error reporting routine. Dumps user back DOS

 **********************************************************/

Error(num,code)
  int num,code;
{

  if (linenumber >= 0)
    printf("\nInput line number %d\n",linenumber);

  printf("\nFatal error code %d: ",code);

  switch (num) {
    case ILLEGAL_PARAMETER: printf("illegal parameter\n");
                            break;
    case TOO_FEW_PARMS    : printf("too few parameters\n");
                            break;
    case ILLEGAL_OBJECT   : printf("illegal object type\n");
                            break;
    case MALLOC_FAILURE   : printf("malloc failure\n");
                            break;
    case SYNTAX_ERROR     : printf("syntax error\n");
                            break;
    case INTERNAL_ERROR   : printf("programmer confusion error\n");
                            break;
    case FILE_ERROR       : printf("file error\n");
                            break;
    case PATTERN_NOT_FOUND: printf("pattern not found\n");
                            break;
    case PATTERN_EXISTS   : printf("pattern already defined\n");
                            break;
    case NO_OBSERVER      : printf("no observer defined\n");
                            break;
    case UNDEFINED_PARAM  : printf("undefined parameter\n");
                            break;
    case NON_HOMOGENIOUS  : printf("world contains non-homogenious object\n");
                            break;
    case ZERO_INDEX       : printf("an index of refraction is 0\n");
                            break;
    case COLOR_VALUE_ERR  : printf("illegal color_info value\n");
                            break;
    case LESS_THAN_ZERO   : printf("parameter should be >= 0\n");
                            break;
    case ZERO_MULTIPLIER  : printf("a pattern multiplier is 0\n");
                            break;
    case UNDEFINED_NAME   : printf("undefined name\n");
                            break;
    case LPAREN_EXPECTED  : printf("left paren expected\n");
                            break;
    case RPAREN_EXPECTED  : printf("right paren expected\n");
                            break;
    case ILLEGAL_VECTOR   : printf("illegal vector structure\n");
                            break;
    case ILLEGAL_SVECTOR  : printf("illegal color triple\n");
                            break;

    default               : printf("programmer stupidity error\n");

  }
  exit(1);
}

