/* errors.h
*
* MIDAS Sound System error codes and error message strings
*
* $Id: errors.h,v 1.6 1996/10/20 20:53:36 pekangas Exp $
*
* Copyright 1996 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 */
errNoSampleHandles, /* out of sample 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 */
errInvalidSampleHandle, /* invalid sample 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 */
errVDSLock, /* unable to lock VDS DMA buffer */
errVDSUsage, /* unable to use Virtual DMA */
errBadVDS, /* invalid VDS version */
errDPMIFailure, /* DPMI failure */
errInvalidDescriptor, /* invalid segment descriptor */
errOutOfResources, /* out of system resources */
errInvalidDevice, /* invalid device used */
errUnsupported, /* unsupported function used */
errDeviceNotAvailable, /* device not available */
errDeviceBusy, /* device is busy */
errBadMode, /* unsupported output mode used */
errUnableToLock, /* unable to lock memory */
errNumErrorCodes
};
/****************************************************************************\
* 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_mtm = 700, /* Multitracker Module Player */
ID_tmr = 1000, /* TempoTimer */
ID_vu = 1100, /* Real VU meters */
ID_rf = 1200, /* Raw file I/O */
ID_file = 1300, /* High-level file I/O */
ID_dpmi = 1400, /* DPMI functions */
ID_gmp = 1500, /* Generic Module Player */
ID_fx = 1600, /* Sound effects library */
ID_str = 1700, /* Stream library */
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_winw = 2400, /* Windows Wave Sound Device */
ID_oss = 2500, /* OSS Sound Device */
ID_gdc = 2600, /* GUS Mixing Sound Device */
ID_awe = 2700, /* AWE32 Sound Device */
ID_nsnd = 2900, /* No Sound Sound Device */
ID_mixsd = 3000 /* Common mixing Sound Device
functions */
};
#ifdef __cplusplus
extern "C" {
#endif
#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 GLOBALVAR errorList[MAXERRORS]; /* error list */
extern unsigned GLOBALVAR numErrors; /* number of errors in list */
/****************************************************************************\
*
* 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 errClearList(void)
*
* Description: Clears the error list. Can be called if a error has been
* handled without exiting the program to avoid filling the
* error list with handled errors.
*
\****************************************************************************/
void CALLING errClearList(void);
/****************************************************************************\
*
* Function: void errPrintList(void);
*
* Description: Prints the error list to stderr
*
\****************************************************************************/
void CALLING errPrintList(void);
#endif
/****************************************************************************\
*
* Function: void errErrorExit(char *msg)
*
* Description: Set up standard text mode, print an error message and exit
*
* Input: char *msg pointer to error message, ASCIIZ
*
\****************************************************************************/
void CALLING errErrorExit(char *msg);
/* error message string pointers: */
extern char * GLOBALVAR errorMsg[errNumErrorCodes];
#ifdef __cplusplus
}
#endif
//win-
#ifdef ERROR
#undef ERROR
#endif
/* 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
/* CLEARERRORLIST - clear the MIDAS error list if DEBUG is defined. */
#ifdef DEBUG
#define CLEARERRORLIST errClearList();
#else
#define CLEARERRORLIST ;
#endif
#endif /* #ifndef __errors_h */
/*
* $Log: errors.h,v $
* Revision 1.6 1996/10/20 20:53:36 pekangas
* Added AWE32 Sound Device ID
*
* Revision 1.5 1996/09/22 23:15:33 pekangas
* Added ID_fx and ID_str
*
* Revision 1.4 1996/09/21 16:38:00 jpaana
* Changed uss to oss
*
* Revision 1.3 1996/06/05 19:40:35 jpaana
* Changed usswave to uss
*
* Revision 1.2 1996/05/24 20:40:12 jpaana
* Added USSWave
*
* Revision 1.1 1996/05/22 20:49:33 pekangas
* Initial revision
*
*/