/* ERRORS.H * * MIDAS Sound System error codes and error message strings * * Copyright 1994 Petteri Kangaslampi and Jarno Paananen * * This file is part of the MIDAS Sound System, and may only be * used, modified and distributed under the terms of the MIDAS * Sound System license, LICENSE.TXT. By continuing to use, * modify or distribute this file you indicate that you have * read the license and understand and accept it fully. */ #ifndef __ERRORS_H #define __ERRORS_H #define MAXERRORS 256 /* maximum number of errors to store */ /****************************************************************************\ * enum ErrorCodes * --------------- * Description: MIDAS Sound System error codes \****************************************************************************/ enum ErrorCodes { OK = 0, /* no error */ errUndefined, /* undefined error */ errOutOfMemory, /* out of (conventional) memory */ errHeapCorrupted, /* (conventional memory) heap corrupted */ errInvalidBlock, /* invalid memory block */ errOutOfEMS, /* out of EMS memory */ errEMSHeapCorrupted, /* EMS heap corrupted */ errInvalidEMSBlock, /* invalid EMS memory block */ errEMMFailure, /* Expanded Memory Manager failure */ errOutOfCardMemory, /* out of soundcard memory */ errCardHeapCorrupted, /* soundcard heap corrupted */ errInvalidCardBlock, /* invalid soundcard memory block */ errNoInstHandles, /* out of instrument handles */ errFileOpen, /* unable to open file */ errFileRead, /* unable to read file */ errInvalidModule, /* invalid module file */ errInvalidInst, /* invalid instrument in module */ errInvalidPatt, /* invalid pattern data in module */ errInvalidChanNumber, /* invalid channel number */ errInvalidInstHandle, /* invalid instrument handle */ errNoChannels, /* Sound Device channels not open */ errSDFailure, /* Sound Device hardware failure */ errInvalidArguments, /* invalid function arguments */ errFileNotFound, /* file does not exist */ errInvalidFileHandle, /* invalid file handle */ errAccessDenied, /* access denied */ errFileExists, /* file exists */ errTooManyFiles, /* too many open files */ errDiskFull, /* disk full */ errEndOfFile, /* unexpected end of file */ errInvalidPath, /* invalid path */ errFileWrite /* unable to write file */ }; /****************************************************************************\ * enum FunctionIDs * ---------------- * Description: ID numbers for first functions in all modules \****************************************************************************/ enum FunctionIDs { ID_error = 0, /* error handling */ ID_dma = 100, /* DMA handling routines */ ID_dsm = 200, /* Digital Sound Mixer */ ID_ems = 300, /* EMS heap manager */ ID_mem = 400, /* Conventional memory management */ ID_mod = 500, /* Protracker Module Player */ ID_s3m = 600, /* Scream Tracker 3 Module Player */ ID_tmr = 700, /* TempoTimer */ ID_vu = 800, /* Real VU meters */ ID_rf = 900, /* Raw file I/O */ ID_file = 1000, /* High-level file I/O */ ID_gus = 2000, /* GUS Sound Device */ ID_pas = 2100, /* PAS Sound Device */ ID_wss = 2200, /* WSS Sound Device */ ID_sb = 2300, /* SB Sound Device */ ID_nsnd = 2900 /* No Sound Sound Device */ }; #ifdef DEBUG /****************************************************************************\ * struct errRecord * ---------------- * Description: Error record for error list \****************************************************************************/ typedef struct { int errorCode; /* error code number */ unsigned functID; /* ID for function that caused the error */ } errRecord; extern errRecord errorList[MAXERRORS]; /* error list */ extern unsigned numErrors; /* number of errors in list */ #ifdef __cplusplus extern "C" { #endif /****************************************************************************\ * * Function: void errAdd(int errorCode, unsigned functID); * * Description: Add an error to error list * * Input: int errorCode error code * unsigned functID ID for function that caused the error * \****************************************************************************/ void CALLING errAdd(int errorCode, unsigned functID); /****************************************************************************\ * * Function: void errPrintList(void); * * Description: Prints the error list to stderr * \****************************************************************************/ void CALLING errPrintList(void); #ifdef __cplusplus } #endif #endif extern char *errorMsg[]; /* error message strings */ /* ERROR - adds an error to the MIDAS error list if DEBUG is defined. Does nothing otherwise. */ #ifdef DEBUG #define ERROR(errCode, functID) errAdd(errCode, functID) #else #define ERROR(errCode, functID) #endif /* PASSERROR - passes error value in variable error on */ #ifdef DEBUG #define PASSERROR(functID) { errAdd(error, functID); return error; } #else #define PASSERROR(functID) return error; #endif #endif